summaryrefslogtreecommitdiffstats
path: root/spec/unit
diff options
context:
space:
mode:
authorMax Martin <max@puppetlabs.com>2011-04-21 15:26:29 -0700
committerMax Martin <max@puppetlabs.com>2011-04-21 15:26:29 -0700
commite4b31b411a4b3d7cce7f45197491eebc36d047aa (patch)
treed8703468b9b598c196348b748fbe47333b31a745 /spec/unit
parent01f610bb223b435dc52f491260af3ea002930102 (diff)
parent2591a539481710e228e96c57b85434c1b9951c15 (diff)
downloadpuppet-e4b31b411a4b3d7cce7f45197491eebc36d047aa.tar.gz
puppet-e4b31b411a4b3d7cce7f45197491eebc36d047aa.tar.xz
puppet-e4b31b411a4b3d7cce7f45197491eebc36d047aa.zip
Merge branch '2.7.next' into next
* 2.7.next: (#6928) Don't blow up when the method is undefined... (#6928) backport Symbol#to_proc for Ruby < 1.8.7 (#7183) Implement "invisible glob" version matching for faces maint: better disabling of Signal#trap in our tests. maint: more robust listing of valid faces. maint: clean up testing code a fraction... maint: better error report for a missing version of a face. maint: handle face clear/reset sanely in the interface spec. maint: stop stubbing log level setting. Move tests from Puppet-acceptance repo (#7116) Handle application-level options in parse_options maint: fix gratuitous whitespace in the code. maint: remove redundant context from the test. (#7062) better argument handling in the action wrapper methods maint: move method comments outside the comment. Fixed #7166 - Replaced deprecated stomp "send" method with "publish" maint: Remove unused faces code
Diffstat (limited to 'spec/unit')
-rwxr-xr-xspec/unit/application/agent_spec.rb9
-rwxr-xr-xspec/unit/application/apply_spec.rb10
-rwxr-xr-xspec/unit/application/cert_spec.rb10
-rwxr-xr-x[-rw-r--r--]spec/unit/application/device_spec.rb10
-rwxr-xr-xspec/unit/application/doc_spec.rb8
-rwxr-xr-xspec/unit/application/face_base_spec.rb209
-rwxr-xr-xspec/unit/application/filebucket_spec.rb10
-rwxr-xr-xspec/unit/application/kick_spec.rb10
-rwxr-xr-xspec/unit/application/master_spec.rb10
-rwxr-xr-xspec/unit/application/queue_spec.rb9
-rwxr-xr-xspec/unit/application/resource_spec.rb10
-rwxr-xr-xspec/unit/application_spec.rb4
-rwxr-xr-xspec/unit/interface/action_spec.rb56
-rwxr-xr-xspec/unit/interface/face_collection_spec.rb72
-rwxr-xr-xspec/unit/interface_spec.rb33
15 files changed, 246 insertions, 224 deletions
diff --git a/spec/unit/application/agent_spec.rb b/spec/unit/application/agent_spec.rb
index 03cf14429..b30a8cc6c 100755
--- a/spec/unit/application/agent_spec.rb
+++ b/spec/unit/application/agent_spec.rb
@@ -18,7 +18,6 @@ describe Puppet::Application::Agent do
Puppet::Agent.stubs(:new).returns(@agent)
@puppetd.preinit
Puppet::Util::Log.stubs(:newdestination)
- Puppet::Util::Log.stubs(:level=)
Puppet::Node.indirection.stubs(:terminus_class=)
Puppet::Node.indirection.stubs(:cache_class=)
@@ -223,18 +222,14 @@ describe Puppet::Application::Agent do
it "should set log level to debug if --debug was passed" do
@puppetd.options.stubs(:[]).with(:debug).returns(true)
-
- Puppet::Util::Log.expects(:level=).with(:debug)
-
@puppetd.setup_logs
+ Puppet::Util::Log.level.should == :debug
end
it "should set log level to info if --verbose was passed" do
@puppetd.options.stubs(:[]).with(:verbose).returns(true)
-
- Puppet::Util::Log.expects(:level=).with(:info)
-
@puppetd.setup_logs
+ Puppet::Util::Log.level.should == :info
end
[:verbose, :debug].each do |level|
diff --git a/spec/unit/application/apply_spec.rb b/spec/unit/application/apply_spec.rb
index dca2a4156..ec3f083db 100755
--- a/spec/unit/application/apply_spec.rb
+++ b/spec/unit/application/apply_spec.rb
@@ -9,7 +9,6 @@ describe Puppet::Application::Apply do
before :each do
@apply = Puppet::Application[:apply]
Puppet::Util::Log.stubs(:newdestination)
- Puppet::Util::Log.stubs(:level=)
end
[:debug,:loadclasses,:verbose,:use_nodes,:detailed_exitcodes].each do |option|
@@ -51,7 +50,6 @@ describe Puppet::Application::Apply do
before :each do
Puppet::Log.stubs(:newdestination)
- Puppet::Log.stubs(:level=)
Puppet.stubs(:parse_config)
Puppet::FileBucket::Dipper.stubs(:new)
STDIN.stubs(:read)
@@ -84,18 +82,14 @@ describe Puppet::Application::Apply do
it "should set log level to debug if --debug was passed" do
@apply.options.stubs(:[]).with(:debug).returns(true)
-
- Puppet::Log.expects(:level=).with(:debug)
-
@apply.setup
+ Puppet::Log.level.should == :debug
end
it "should set log level to info if --verbose was passed" do
@apply.options.stubs(:[]).with(:verbose).returns(true)
-
- Puppet::Log.expects(:level=).with(:info)
-
@apply.setup
+ Puppet::Log.level.should == :info
end
it "should print puppet config if asked to in Puppet config" do
diff --git a/spec/unit/application/cert_spec.rb b/spec/unit/application/cert_spec.rb
index a1b5eb19a..4a91c1e6c 100755
--- a/spec/unit/application/cert_spec.rb
+++ b/spec/unit/application/cert_spec.rb
@@ -6,7 +6,6 @@ describe Puppet::Application::Cert do
before :each do
@cert_app = Puppet::Application[:cert]
Puppet::Util::Log.stubs(:newdestination)
- Puppet::Util::Log.stubs(:level=)
end
it "should operate in master run_mode" do
@@ -28,22 +27,17 @@ describe Puppet::Application::Cert do
end
it "should set log level to info with the --verbose option" do
-
- Puppet::Log.expects(:level=).with(:info)
-
@cert_app.handle_verbose(0)
+ Puppet::Log.level.should == :info
end
it "should set log level to debug with the --debug option" do
-
- Puppet::Log.expects(:level=).with(:debug)
-
@cert_app.handle_debug(0)
+ Puppet::Log.level.should == :debug
end
it "should set the fingerprint digest with the --digest option" do
@cert_app.handle_digest(:digest)
-
@cert_app.digest.should == :digest
end
diff --git a/spec/unit/application/device_spec.rb b/spec/unit/application/device_spec.rb
index 086e321e9..832b7e55b 100644..100755
--- a/spec/unit/application/device_spec.rb
+++ b/spec/unit/application/device_spec.rb
@@ -10,10 +10,8 @@ require 'puppet/configurer'
describe Puppet::Application::Device do
before :each do
@device = Puppet::Application[:device]
-# @device.stubs(:puts)
@device.preinit
Puppet::Util::Log.stubs(:newdestination)
- Puppet::Util::Log.stubs(:level=)
Puppet::Node.indirection.stubs(:terminus_class=)
Puppet::Node.indirection.stubs(:cache_class=)
@@ -144,18 +142,14 @@ describe Puppet::Application::Device do
it "should set log level to debug if --debug was passed" do
@device.options.stubs(:[]).with(:debug).returns(true)
-
- Puppet::Util::Log.expects(:level=).with(:debug)
-
@device.setup_logs
+ Puppet::Util::Log.level.should == :debug
end
it "should set log level to info if --verbose was passed" do
@device.options.stubs(:[]).with(:verbose).returns(true)
-
- Puppet::Util::Log.expects(:level=).with(:info)
-
@device.setup_logs
+ Puppet::Util::Log.level.should == :info
end
[:verbose, :debug].each do |level|
diff --git a/spec/unit/application/doc_spec.rb b/spec/unit/application/doc_spec.rb
index 66a833b9d..43a4b9849 100755
--- a/spec/unit/application/doc_spec.rb
+++ b/spec/unit/application/doc_spec.rb
@@ -11,7 +11,6 @@ describe Puppet::Application::Doc do
@doc.stubs(:puts)
@doc.preinit
Puppet::Util::Log.stubs(:newdestination)
- Puppet::Util::Log.stubs(:level=)
end
it "should ask Puppet::Application to not parse Puppet configuration file" do
@@ -186,7 +185,6 @@ describe Puppet::Application::Doc do
before :each do
@doc.options.stubs(:[]).returns(false)
Puppet.stubs(:parse_config)
- Puppet::Util::Log.stubs(:level=)
Puppet::Util::Log.stubs(:newdestination)
end
@@ -232,16 +230,14 @@ describe Puppet::Application::Doc do
it "should set log level to debug if --debug" do
@doc.options.stubs(:[]).with(:debug).returns(true)
- Puppet::Util::Log.expects(:level=).with(:debug)
-
@doc.setup_rdoc
+ Puppet::Util::Log.level.should == :debug
end
it "should set log level to info if --verbose" do
@doc.options.stubs(:[]).with(:verbose).returns(true)
- Puppet::Util::Log.expects(:level=).with(:info)
-
@doc.setup_rdoc
+ Puppet::Util::Log.level.should == :info
end
it "should set log destination to console if --verbose" do
diff --git a/spec/unit/application/face_base_spec.rb b/spec/unit/application/face_base_spec.rb
index 5403608cf..f7c55c556 100755
--- a/spec/unit/application/face_base_spec.rb
+++ b/spec/unit/application/face_base_spec.rb
@@ -40,127 +40,132 @@ describe Puppet::Application::FaceBase do
app.command_line.stubs(:args).returns %w{}
end
- describe "parsing the command line" do
- context "with just an action" do
- before :all do
- # We have to stub Signal.trap to avoid a crazy mess where we take
- # over signal handling and make it impossible to cancel the test
- # suite run.
- #
- # It would be nice to fix this elsewhere, but it is actually hard to
- # capture this in rspec 2.5 and all. :( --daniel 2011-04-08
- Signal.stubs(:trap)
- app.command_line.stubs(:args).returns %w{foo}
- app.preinit
- app.parse_options
- end
-
- it "should set the face based on the type" do
- app.face.name.should == :basetest
- end
-
- it "should find the action" do
- app.action.should be
- app.action.name.should == :foo
- end
+ describe "with just an action" do
+ before :all do
+ # We have to stub Signal.trap to avoid a crazy mess where we take
+ # over signal handling and make it impossible to cancel the test
+ # suite run.
+ #
+ # It would be nice to fix this elsewhere, but it is actually hard to
+ # capture this in rspec 2.5 and all. :( --daniel 2011-04-08
+ Signal.stubs(:trap)
+ app.command_line.stubs(:args).returns %w{foo}
+ app.preinit
+ app.parse_options
end
- it "should use the default action if not given any arguments" do
- app.command_line.stubs(:args).returns []
- action = stub(:options => [])
- Puppet::Face[:basetest, '0.0.1'].expects(:get_default_action).returns(action)
- app.stubs(:main)
- app.run
- app.action.should == action
- app.arguments.should == [ { } ]
+ it "should set the face based on the type" do
+ app.face.name.should == :basetest
end
- it "should use the default action if not given a valid one" do
- app.command_line.stubs(:args).returns %w{bar}
- action = stub(:options => [])
- Puppet::Face[:basetest, '0.0.1'].expects(:get_default_action).returns(action)
- app.stubs(:main)
- app.run
- app.action.should == action
- app.arguments.should == [ 'bar', { } ]
+ it "should find the action" do
+ app.action.should be
+ app.action.name.should == :foo
end
+ end
- it "should have no action if not given a valid one and there is no default action" do
- app.command_line.stubs(:args).returns %w{bar}
- Puppet::Face[:basetest, '0.0.1'].expects(:get_default_action).returns(nil)
- app.stubs(:main)
- app.run
- app.action.should be_nil
- app.arguments.should == [ 'bar', { } ]
- end
+ it "should use the default action if not given any arguments" do
+ app.command_line.stubs(:args).returns []
+ action = stub(:options => [])
+ Puppet::Face[:basetest, '0.0.1'].expects(:get_default_action).returns(action)
+ app.stubs(:main)
+ app.run
+ app.action.should == action
+ app.arguments.should == [ { } ]
+ end
- it "should report a sensible error when options with = fail" do
- app.command_line.stubs(:args).returns %w{--action=bar foo}
- expect { app.preinit; app.parse_options }.
- to raise_error OptionParser::InvalidOption, /invalid option: --action/
- end
+ it "should use the default action if not given a valid one" do
+ app.command_line.stubs(:args).returns %w{bar}
+ action = stub(:options => [])
+ Puppet::Face[:basetest, '0.0.1'].expects(:get_default_action).returns(action)
+ app.stubs(:main)
+ app.run
+ app.action.should == action
+ app.arguments.should == [ 'bar', { } ]
+ end
- it "should fail if an action option is before the action" do
- app.command_line.stubs(:args).returns %w{--action foo}
- expect { app.preinit; app.parse_options }.
- to raise_error OptionParser::InvalidOption, /invalid option: --action/
- end
+ it "should have no action if not given a valid one and there is no default action" do
+ app.command_line.stubs(:args).returns %w{bar}
+ Puppet::Face[:basetest, '0.0.1'].expects(:get_default_action).returns(nil)
+ app.stubs(:main)
+ app.run
+ app.action.should be_nil
+ app.arguments.should == [ 'bar', { } ]
+ end
- it "should fail if an unknown option is before the action" do
- app.command_line.stubs(:args).returns %w{--bar foo}
- expect { app.preinit; app.parse_options }.
- to raise_error OptionParser::InvalidOption, /invalid option: --bar/
- end
+ it "should report a sensible error when options with = fail" do
+ app.command_line.stubs(:args).returns %w{--action=bar foo}
+ expect { app.preinit; app.parse_options }.
+ to raise_error OptionParser::InvalidOption, /invalid option: --action/
+ end
- it "should fail if an unknown option is after the action" do
- app.command_line.stubs(:args).returns %w{foo --bar}
- expect { app.preinit; app.parse_options }.
- to raise_error OptionParser::InvalidOption, /invalid option: --bar/
- end
+ it "should fail if an action option is before the action" do
+ app.command_line.stubs(:args).returns %w{--action foo}
+ expect { app.preinit; app.parse_options }.
+ to raise_error OptionParser::InvalidOption, /invalid option: --action/
+ end
+
+ it "should fail if an unknown option is before the action" do
+ app.command_line.stubs(:args).returns %w{--bar foo}
+ expect { app.preinit; app.parse_options }.
+ to raise_error OptionParser::InvalidOption, /invalid option: --bar/
+ end
+
+ it "should fail if an unknown option is after the action" do
+ app.command_line.stubs(:args).returns %w{foo --bar}
+ expect { app.preinit; app.parse_options }.
+ to raise_error OptionParser::InvalidOption, /invalid option: --bar/
+ end
+
+ it "should accept --bar as an argument to a mandatory option after action" do
+ app.command_line.stubs(:args).returns %w{foo --mandatory --bar}
+ app.preinit
+ app.parse_options
+ app.action.name.should == :foo
+ app.options.should == { :mandatory => "--bar" }
+ end
+
+ it "should accept --bar as an argument to a mandatory option before action" do
+ app.command_line.stubs(:args).returns %w{--mandatory --bar foo}
+ app.preinit
+ app.parse_options
+ app.action.name.should == :foo
+ app.options.should == { :mandatory => "--bar" }
+ end
- it "should accept --bar as an argument to a mandatory option after action" do
- app.command_line.stubs(:args).returns %w{foo --mandatory --bar}
+ it "should not skip when --foo=bar is given" do
+ app.command_line.stubs(:args).returns %w{--mandatory=bar --bar foo}
+ expect { app.preinit; app.parse_options }.
+ to raise_error OptionParser::InvalidOption, /invalid option: --bar/
+ end
+
+ { "boolean options before" => %w{--trace foo},
+ "boolean options after" => %w{foo --trace}
+ }.each do |name, args|
+ it "should accept global boolean settings #{name} the action" do
+ app.command_line.stubs(:args).returns args
app.preinit
app.parse_options
- app.action.name.should == :foo
- app.options.should == { :mandatory => "--bar" }
+ Puppet[:trace].should be_true
end
+ end
- it "should accept --bar as an argument to a mandatory option before action" do
- app.command_line.stubs(:args).returns %w{--mandatory --bar foo}
+ { "before" => %w{--syslogfacility user1 foo},
+ " after" => %w{foo --syslogfacility user1}
+ }.each do |name, args|
+ it "should accept global settings with arguments #{name} the action" do
+ app.command_line.stubs(:args).returns args
app.preinit
app.parse_options
- app.action.name.should == :foo
- app.options.should == { :mandatory => "--bar" }
- end
-
- it "should not skip when --foo=bar is given" do
- app.command_line.stubs(:args).returns %w{--mandatory=bar --bar foo}
- expect { app.preinit; app.parse_options }.
- to raise_error OptionParser::InvalidOption, /invalid option: --bar/
- end
-
- { "boolean options before" => %w{--trace foo},
- "boolean options after" => %w{foo --trace}
- }.each do |name, args|
- it "should accept global boolean settings #{name} the action" do
- app.command_line.stubs(:args).returns args
- app.preinit
- app.parse_options
- Puppet[:trace].should be_true
- end
+ Puppet[:syslogfacility].should == "user1"
end
+ end
- { "before" => %w{--syslogfacility user1 foo},
- " after" => %w{foo --syslogfacility user1}
- }.each do |name, args|
- it "should accept global settings with arguments #{name} the action" do
- app.command_line.stubs(:args).returns args
- app.preinit
- app.parse_options
- Puppet[:syslogfacility].should == "user1"
- end
- end
+ it "should handle application-level options" do
+ app.command_line.stubs(:args).returns %w{help --verbose help}
+ app.preinit
+ app.parse_options
+ app.face.name.should == :basetest
end
end
diff --git a/spec/unit/application/filebucket_spec.rb b/spec/unit/application/filebucket_spec.rb
index 8ba86be9e..92bc0410a 100755
--- a/spec/unit/application/filebucket_spec.rb
+++ b/spec/unit/application/filebucket_spec.rb
@@ -41,7 +41,6 @@ describe Puppet::Application::Filebucket do
before :each do
Puppet::Log.stubs(:newdestination)
Puppet.stubs(:settraps)
- Puppet::Log.stubs(:level=)
Puppet.stubs(:parse_config)
Puppet::FileBucket::Dipper.stubs(:new)
@filebucket.options.stubs(:[]).with(any_parameters)
@@ -62,18 +61,14 @@ describe Puppet::Application::Filebucket do
it "should set log level to debug if --debug was passed" do
@filebucket.options.stubs(:[]).with(:debug).returns(true)
-
- Puppet::Log.expects(:level=).with(:debug)
-
@filebucket.setup
+ Puppet::Log.level.should == :debug
end
it "should set log level to info if --verbose was passed" do
@filebucket.options.stubs(:[]).with(:verbose).returns(true)
-
- Puppet::Log.expects(:level=).with(:info)
-
@filebucket.setup
+ Puppet::Log.level.should == :info
end
it "should Parse puppet config" do
@@ -140,7 +135,6 @@ describe Puppet::Application::Filebucket do
before :each do
Puppet::Log.stubs(:newdestination)
Puppet.stubs(:settraps)
- Puppet::Log.stubs(:level=)
Puppet.stubs(:parse_config)
Puppet::FileBucket::Dipper.stubs(:new)
@filebucket.options.stubs(:[]).with(any_parameters)
diff --git a/spec/unit/application/kick_spec.rb b/spec/unit/application/kick_spec.rb
index 29e4caea4..742c0fff6 100755
--- a/spec/unit/application/kick_spec.rb
+++ b/spec/unit/application/kick_spec.rb
@@ -10,7 +10,6 @@ describe Puppet::Application::Kick, :if => Puppet.features.posix? do
Puppet::Util::Ldap::Connection.stubs(:new).returns(stub_everything)
@kick = Puppet::Application[:kick]
Puppet::Util::Log.stubs(:newdestination)
- Puppet::Util::Log.stubs(:level=)
end
describe ".new" do
@@ -120,7 +119,6 @@ describe Puppet::Application::Kick, :if => Puppet.features.posix? do
@kick.classes = []
@kick.tags = []
@kick.hosts = []
- Puppet::Log.stubs(:level=)
@kick.stubs(:trap)
@kick.stubs(:puts)
Puppet.stubs(:parse_config)
@@ -130,18 +128,14 @@ describe Puppet::Application::Kick, :if => Puppet.features.posix? do
it "should set log level to debug if --debug was passed" do
@kick.options.stubs(:[]).with(:debug).returns(true)
-
- Puppet::Log.expects(:level=).with(:debug)
-
@kick.setup
+ Puppet::Log.level.should == :debug
end
it "should set log level to info if --verbose was passed" do
@kick.options.stubs(:[]).with(:verbose).returns(true)
-
- Puppet::Log.expects(:level=).with(:info)
-
@kick.setup
+ Puppet::Log.level.should == :info
end
it "should Parse puppet config" do
diff --git a/spec/unit/application/master_spec.rb b/spec/unit/application/master_spec.rb
index ea5d3f518..2a24086f3 100755
--- a/spec/unit/application/master_spec.rb
+++ b/spec/unit/application/master_spec.rb
@@ -11,7 +11,6 @@ describe Puppet::Application::Master do
@daemon = stub_everything 'daemon'
Puppet::Daemon.stubs(:new).returns(@daemon)
Puppet::Util::Log.stubs(:newdestination)
- Puppet::Util::Log.stubs(:level=)
Puppet::Node.indirection.stubs(:terminus_class=)
Puppet::Node.indirection.stubs(:cache_class=)
@@ -111,7 +110,6 @@ describe Puppet::Application::Master do
before :each do
Puppet::Log.stubs(:newdestination)
Puppet.stubs(:settraps)
- Puppet::Log.stubs(:level=)
Puppet::SSL::CertificateAuthority.stubs(:instance)
Puppet::SSL::CertificateAuthority.stubs(:ca?)
Puppet.settings.stubs(:use)
@@ -121,18 +119,14 @@ describe Puppet::Application::Master do
it "should set log level to debug if --debug was passed" do
@master.options.stubs(:[]).with(:debug).returns(true)
-
- Puppet::Log.expects(:level=).with(:debug)
-
@master.setup
+ Puppet::Log.level.should == :debug
end
it "should set log level to info if --verbose was passed" do
@master.options.stubs(:[]).with(:verbose).returns(true)
-
- Puppet::Log.expects(:level=).with(:info)
-
@master.setup
+ Puppet::Log.level.should == :info
end
it "should set console as the log destination if no --logdest and --daemonize" do
diff --git a/spec/unit/application/queue_spec.rb b/spec/unit/application/queue_spec.rb
index 87713ca97..d71c879a9 100755
--- a/spec/unit/application/queue_spec.rb
+++ b/spec/unit/application/queue_spec.rb
@@ -10,7 +10,6 @@ describe Puppet::Application::Queue do
@queue.stubs(:puts)
@daemon = stub_everything 'daemon', :daemonize => nil
Puppet::Util::Log.stubs(:newdestination)
- Puppet::Util::Log.stubs(:level=)
Puppet::Resource::Catalog.indirection.stubs(:terminus_class=)
end
@@ -113,18 +112,14 @@ describe Puppet::Application::Queue do
it "should set log level to debug if --debug was passed" do
@queue.options.stubs(:[]).with(:debug).returns(true)
-
- Puppet::Util::Log.expects(:level=).with(:debug)
-
@queue.setup_logs
+ Puppet::Util::Log.level.should == :debug
end
it "should set log level to info if --verbose was passed" do
@queue.options.stubs(:[]).with(:verbose).returns(true)
-
- Puppet::Util::Log.expects(:level=).with(:info)
-
@queue.setup_logs
+ Puppet::Util::Log.level.should == :info
end
[:verbose, :debug].each do |level|
diff --git a/spec/unit/application/resource_spec.rb b/spec/unit/application/resource_spec.rb
index 673bd65d7..af60f12c1 100755
--- a/spec/unit/application/resource_spec.rb
+++ b/spec/unit/application/resource_spec.rb
@@ -7,7 +7,6 @@ describe Puppet::Application::Resource do
before :each do
@resource = Puppet::Application[:resource]
Puppet::Util::Log.stubs(:newdestination)
- Puppet::Util::Log.stubs(:level=)
Puppet::Resource.indirection.stubs(:terminus_class=)
end
@@ -95,7 +94,6 @@ describe Puppet::Application::Resource do
describe "during setup" do
before :each do
Puppet::Log.stubs(:newdestination)
- Puppet::Log.stubs(:level=)
Puppet.stubs(:parse_config)
end
@@ -108,19 +106,15 @@ describe Puppet::Application::Resource do
it "should set log level to debug if --debug was passed" do
@resource.options.stubs(:[]).with(:debug).returns(true)
-
- Puppet::Log.expects(:level=).with(:debug)
-
@resource.setup
+ Puppet::Log.level.should == :debug
end
it "should set log level to info if --verbose was passed" do
@resource.options.stubs(:[]).with(:debug).returns(false)
@resource.options.stubs(:[]).with(:verbose).returns(true)
-
- Puppet::Log.expects(:level=).with(:info)
-
@resource.setup
+ Puppet::Log.level.should == :info
end
it "should Parse puppet config" do
diff --git a/spec/unit/application_spec.rb b/spec/unit/application_spec.rb
index f46959092..de1ca1257 100755
--- a/spec/unit/application_spec.rb
+++ b/spec/unit/application_spec.rb
@@ -369,10 +369,8 @@ describe Puppet::Application do
it "should honor option #{level}" do
@app.options.stubs(:[]).with(level).returns(true)
Puppet::Util::Log.stubs(:newdestination)
-
- Puppet::Util::Log.expects(:level=).with(level == :verbose ? :info : :debug)
-
@app.setup
+ Puppet::Util::Log.level.should == (level == :verbose ? :info : :debug)
end
end
diff --git a/spec/unit/interface/action_spec.rb b/spec/unit/interface/action_spec.rb
index 0eb450ee2..24826a6ef 100755
--- a/spec/unit/interface/action_spec.rb
+++ b/spec/unit/interface/action_spec.rb
@@ -12,6 +12,62 @@ describe Puppet::Interface::Action do
end
end
+ describe "#when_invoked=" do
+ it "should fail if the block has arity 0" do
+ pending "Ruby 1.8 (painfully) treats argument-free blocks as arity -1" if
+ RUBY_VERSION =~ /^1\.8/
+
+ expect {
+ Puppet::Interface.new(:action_when_invoked, '1.0.0') do
+ action :foo do
+ when_invoked do
+ end
+ end
+ end
+ }.to raise_error ArgumentError, /foobra/
+ end
+
+ it "should work with arity 1 blocks" do
+ face = Puppet::Interface.new(:action_when_invoked, '1.0.0') do
+ action :foo do
+ when_invoked {|one| }
+ end
+ end
+ # -1, because we use option defaulting. :(
+ face.method(:foo).arity.should == -1
+ end
+
+ it "should work with arity 2 blocks" do
+ face = Puppet::Interface.new(:action_when_invoked, '1.0.0') do
+ action :foo do
+ when_invoked {|one, two| }
+ end
+ end
+ # -2, because we use option defaulting. :(
+ face.method(:foo).arity.should == -2
+ end
+
+ it "should work with arity 1 blocks that collect arguments" do
+ face = Puppet::Interface.new(:action_when_invoked, '1.0.0') do
+ action :foo do
+ when_invoked {|*one| }
+ end
+ end
+ # -1, because we use only varargs
+ face.method(:foo).arity.should == -1
+ end
+
+ it "should work with arity 2 blocks that collect arguments" do
+ face = Puppet::Interface.new(:action_when_invoked, '1.0.0') do
+ action :foo do
+ when_invoked {|one, *two| }
+ end
+ end
+ # -2, because we take one mandatory argument, and one varargs
+ face.method(:foo).arity.should == -2
+ end
+ end
+
describe "when invoking" do
it "should be able to call other actions on the same object" do
face = Puppet::Interface.new(:my_face, '0.0.1') do
diff --git a/spec/unit/interface/face_collection_spec.rb b/spec/unit/interface/face_collection_spec.rb
index f9498cbb8..890e06a9e 100755
--- a/spec/unit/interface/face_collection_spec.rb
+++ b/spec/unit/interface/face_collection_spec.rb
@@ -24,29 +24,33 @@ describe Puppet::Interface::FaceCollection do
$".clear ; @original_required.each do |item| $" << item end
end
- describe "::validate_version" do
- it 'should permit three number versions' do
- subject.validate_version('10.10.10').should == true
- end
-
- it 'should permit versions with appended descriptions' do
- subject.validate_version('10.10.10beta').should == true
- end
-
- it 'should not permit versions with more than three numbers' do
- subject.validate_version('1.2.3.4').should == false
- end
-
- it 'should not permit versions with only two numbers' do
- subject.validate_version('10.10').should == false
- end
-
- it 'should not permit versions with only one number' do
- subject.validate_version('123').should == false
+ describe "::prefix_match?" do
+ # want have
+ { ['1.0.0', '1.0.0'] => true,
+ ['1.0', '1.0.0'] => true,
+ ['1', '1.0.0'] => true,
+ ['1.0.0', '1.1.0'] => false,
+ ['1.0', '1.1.0'] => false,
+ ['1', '1.1.0'] => true,
+ ['1.0.1', '1.0.0'] => false,
+ }.each do |data, result|
+ it "should return #{result.inspect} for prefix_match?(#{data.join(', ')})" do
+ subject.prefix_match?(*data).should == result
+ end
end
+ end
- it 'should not permit versions with text in any position but at the end' do
- subject.validate_version('v1.1.1').should == false
+ describe "::validate_version" do
+ { '10.10.10' => true,
+ '1.2.3.4' => false,
+ '10.10.10beta' => true,
+ '10.10' => false,
+ '123' => false,
+ 'v1.1.1' => false,
+ }.each do |input, result|
+ it "should#{result ? '' : ' not'} permit #{input.inspect}" do
+ subject.validate_version(input).should(result ? be_true : be_false)
+ end
end
end
@@ -68,12 +72,10 @@ describe Puppet::Interface::FaceCollection do
subject.expects(:require).with('puppet/face/fozzie')
subject['fozzie', :current]
end
- end
- describe "::face?" do
it "should return true if the face specified is registered" do
subject.instance_variable_get("@faces")[:foo]['0.0.1'] = 10
- subject.face?("foo", '0.0.1').should == true
+ subject["foo", '0.0.1'].should == 10
end
it "should attempt to require the face if it is not registered" do
@@ -81,24 +83,18 @@ describe Puppet::Interface::FaceCollection do
subject.instance_variable_get("@faces")[:bar]['0.0.1'] = true
file == 'puppet/face/bar'
end
- subject.face?("bar", '0.0.1').should == true
- end
-
- it "should return true if requiring the face registered it" do
- subject.stubs(:require).with do
- subject.instance_variable_get("@faces")[:bar]['0.0.1'] = 20
- end
+ subject["bar", '0.0.1'].should be_true
end
it "should return false if the face is not registered" do
subject.stubs(:require).returns(true)
- subject.face?("bar", '0.0.1').should be_false
+ subject["bar", '0.0.1'].should be_false
end
it "should return false if the face file itself is missing" do
subject.stubs(:require).
raises(LoadError, 'no such file to load -- puppet/face/bar')
- subject.face?("bar", '0.0.1').should be_false
+ subject["bar", '0.0.1'].should be_false
end
it "should register the version loaded by `:current` as `:current`" do
@@ -106,26 +102,26 @@ describe Puppet::Interface::FaceCollection do
subject.instance_variable_get("@faces")[:huzzah]['2.0.1'] = :huzzah_face
file == 'puppet/face/huzzah'
end
- subject.face?("huzzah", :current)
+ subject["huzzah", :current]
subject.instance_variable_get("@faces")[:huzzah][:current].should == :huzzah_face
end
context "with something on disk" do
it "should register the version loaded from `puppet/face/{name}` as `:current`" do
- subject.should be_face "huzzah", '2.0.1'
- subject.should be_face "huzzah", :current
+ subject["huzzah", '2.0.1'].should be
+ subject["huzzah", :current].should be
Puppet::Face[:huzzah, '2.0.1'].should == Puppet::Face[:huzzah, :current]
end
it "should index :current when the code was pre-required" do
subject.instance_variable_get("@faces")[:huzzah].should_not be_key :current
require 'puppet/face/huzzah'
- subject.face?(:huzzah, :current).should be_true
+ subject[:huzzah, :current].should be_true
end
end
it "should not cause an invalid face to be enumerated later" do
- subject.face?(:there_is_no_face, :current).should be_false
+ subject[:there_is_no_face, :current].should be_false
subject.faces.should_not include :there_is_no_face
end
end
diff --git a/spec/unit/interface_spec.rb b/spec/unit/interface_spec.rb
index b4fef0307..a1d70cf64 100755
--- a/spec/unit/interface_spec.rb
+++ b/spec/unit/interface_spec.rb
@@ -5,16 +5,17 @@ require 'puppet/interface'
describe Puppet::Interface do
subject { Puppet::Interface }
- before :all do
- @faces = Puppet::Interface::FaceCollection.instance_variable_get("@faces").dup
- end
-
before :each do
+ @faces = Puppet::Interface::FaceCollection.
+ instance_variable_get("@faces").dup
+ @dq = $".dup
+ $".delete_if do |path| path =~ %r{/face/.*\.rb$} end
Puppet::Interface::FaceCollection.instance_variable_get("@faces").clear
end
- after :all do
+ after :each do
Puppet::Interface::FaceCollection.instance_variable_set("@faces", @faces)
+ $".clear ; @dq.each do |item| $" << item end
end
describe "#[]" do
@@ -29,6 +30,28 @@ describe Puppet::Interface do
it "should raise an exception when the requested face doesn't exist" do
expect { subject[:burrble_toot, :current] }.should raise_error, Puppet::Error
end
+
+ describe "version matching" do
+ { '1' => '1.1.1',
+ '1.0' => '1.0.1',
+ '1.0.1' => '1.0.1',
+ '1.1' => '1.1.1',
+ '1.1.1' => '1.1.1'
+ }.each do |input, expect|
+ it "should match #{input.inspect} to #{expect.inspect}" do
+ face = subject[:version_matching, input]
+ face.should be
+ face.version.should == expect
+ end
+ end
+
+ %w{1.0.2 1.2}.each do |input|
+ it "should not match #{input.inspect} to any version" do
+ expect { subject[:version_matching, input] }.
+ to raise_error Puppet::Error, /Could not find version/
+ end
+ end
+ end
end
describe "#define" do