Prevent you from making a mistake that I made in testing: Creating two "Application" objects with the same name can cause problems. Surprisingly, changing this led me to rediscover a bug in rspec.
Signed-off-by: Jesse Wolfe <[email protected]> --- lib/puppet/application.rb | 4 ++++ spec/unit/application.rb | 16 +++++++--------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/lib/puppet/application.rb b/lib/puppet/application.rb index 0f479b0..c5ddc22 100644 --- a/lib/puppet/application.rb +++ b/lib/puppet/application.rb @@ -255,6 +255,10 @@ class Puppet::Application @name = symbolize(name) + if @@applications[name] + raise Puppet::DevError, "There is already an application named #{name.inspect}" + end + init_default @options = {} diff --git a/spec/unit/application.rb b/spec/unit/application.rb index 87a9009..a290aba 100755 --- a/spec/unit/application.rb +++ b/spec/unit/application.rb @@ -8,8 +8,9 @@ require 'getoptlong' describe Puppet::Application do - before :each do - @app = Puppet::Application.new(:test) + before :all do + # Workaround due to rspec bug #819: This code is being called multiple times + @app = Puppet::Application[:test] || Puppet::Application.new(:test) end it "should have a run entry-point" do @@ -36,6 +37,10 @@ describe Puppet::Application do @app.get_command.should == :main end + it "should not allow you to create another application of the same name" do + lambda{ Puppet::Application.new(:test) }.should raise_error(Puppet::DevError) + end + describe 'when invoking clear!' do before :each do Puppet::Application.run_status = :stop_requested @@ -170,7 +175,6 @@ describe Puppet::Application do ARGV.clear Puppet.settings.stubs(:optparse_addargs).returns([]) - @app = Puppet::Application.new(:test) end after :each do @@ -288,7 +292,6 @@ describe Puppet::Application do describe "when calling default setup" do before :each do - @app = Puppet::Application.new(:test) @app.stubs(:should_parse_config?).returns(false) @app.options.stubs(:[]) end @@ -317,7 +320,6 @@ describe Puppet::Application do describe "when running" do before :each do - @app = Puppet::Application.new(:test) @app.stubs(:run_preinit) @app.stubs(:run_setup) @app.stubs(:parse_options) @@ -411,10 +413,6 @@ describe Puppet::Application do describe "when metaprogramming" do - before :each do - @app = Puppet::Application.new(:test) - end - it "should create a new method with command" do @app.command(:test) do end -- 1.6.3.3 -- You received this message because you are subscribed to the Google Groups "Puppet Developers" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/puppet-dev?hl=en.
