lib/rspec/terraform/logging.rb in rspec-terraform-0.1.0.pre.39 vs lib/rspec/terraform/logging.rb in rspec-terraform-0.1.0.pre.40

- old
+ new

@@ -3,30 +3,48 @@ module RSpec module Terraform module Logging class << self def resolve_streams(opts = {}) - streams = opts[:streams] || [] + opts = resolve_opts(opts) + streams = opts[:streams] + level = opts[:level] devices = devices(opts) + resolve_opts(opts) + { - logger: resolve_logger(opts[:logger], streams, devices), + logger: resolve_logger(opts[:logger], streams, devices, level), stdout: resolve_stdout(opts[:stdout], streams, devices), stderr: resolve_stderr(opts[:stderr], streams, devices) } end private - def resolve_logger(logger, streams, devices) + def resolve_opts(opts) + streams = opts[:streams] || [] + level = opts[:level] || Logger::INFO + + if streams.include?(:file) && !opts[:file_path] + raise( + ArgumentError, + 'File logging requested but no file path provided' + ) + end + + opts.merge(streams: streams, level: level) + end + + def resolve_logger(logger, streams, devices, level) return logger if logger log_devices = [] log_devices << devices[:file] if streams.include?(:file) log_devices << devices[:stdout] if streams.include?(:standard) - multi_io(log_devices) + Logger.new(multi_io(log_devices), level: level) end def resolve_stdout(stdout, streams, devices) return stdout if stdout @@ -48,10 +66,10 @@ end def devices(opts) { file: log_device(opts[:file_path] || File::NULL), - stdout: log_device($stdout), + stdout: log_device(opts[:stdout] || $stdout), stderr: log_device($stderr) } end def log_device(io)