summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklós Fazekas <mfazekas@szemafor.com>2016-05-16 08:17:59 +0200
committerMiklós Fazekas <mfazekas@szemafor.com>2016-05-16 08:17:59 +0200
commite20060d8e0ae20c1ca1592a3477c268069ff3582 (patch)
tree1e2e5b0b1dffeb208c257d300ebb3428ba978a23
parent18678f4b188e8e99f8e06539d5d2e1e79d840632 (diff)
parentbfcc0fdbacd2f049b718bb8f204d07fb85520c43 (diff)
downloadnet-ssh-e20060d8e0ae20c1ca1592a3477c268069ff3582.tar.gz
Merge pull request #371 from KaneMorgan/default-options
set default options before checking for nils
-rw-r--r--lib/net/ssh.rb18
-rw-r--r--test/start/test_options.rb11
2 files changed, 20 insertions, 9 deletions
diff --git a/lib/net/ssh.rb b/lib/net/ssh.rb
index 0775fab..e1004ef 100644
--- a/lib/net/ssh.rb
+++ b/lib/net/ssh.rb
@@ -207,6 +207,8 @@ module Net
raise ArgumentError, "invalid option(s): #{invalid_options.join(', ')}"
end
+ assign_defaults(options)
+
if options.values.include? nil
nil_options = options.keys.select { |k| options[k].nil? }
raise ArgumentError, "Value(s) have been set to nil: #{nil_options.join(', ')}"
@@ -216,17 +218,10 @@ module Net
options = configuration_for(host, options.fetch(:config, true)).merge(options)
host = options.fetch(:host_name, host)
- if !options.key?(:logger)
- options[:logger] = Logger.new(STDERR)
- options[:logger].level = Logger::FATAL
- end
-
if options[:non_interactive]
options[:number_of_password_prompts] = 0
end
- options[:password_prompt] ||= Prompt.default(options)
-
if options[:verbose]
options[:logger].level = case options[:verbose]
when Fixnum then options[:verbose]
@@ -278,5 +273,14 @@ module Net
Net::SSH::Config.for(host, files)
end
+
+ def self.assign_defaults(options)
+ if !options[:logger]
+ options[:logger] = Logger.new(STDERR)
+ options[:logger].level = Logger::FATAL
+ end
+
+ options[:password_prompt] ||= Prompt.default(options)
+ end
end
end
diff --git a/test/start/test_options.rb b/test/start/test_options.rb
index ce911b5..fbce198 100644
--- a/test/start/test_options.rb
+++ b/test/start/test_options.rb
@@ -55,17 +55,24 @@ module NetSSH
def test_constructor_should_reject_options_set_to_nil
assert_raises(ArgumentError) do
- options = { :remote_user => nil}
+ options = { :remote_user => nil }
Net::SSH.start('localhost', 'testuser', options)
end
end
def test_constructor_should_reject_invalid_options
assert_raises(ArgumentError) do
- options = { :some_invalid_option => "some setting"}
+ options = { :some_invalid_option => "some setting" }
Net::SSH.start('localhost', 'testuser', options)
end
end
+
+ def test_constructor_should_set_default_options
+ options = { :logger => nil, :password_prompt => nil }
+ Net::SSH.start('localhost', 'testuser', options)
+ assert !options[:logger].nil?
+ assert !options[:password_prompt].nil?
+ end
end
end