diff options
| author | Dan Bode <dan@puppetlabs.com> | 2011-07-13 15:38:32 -0700 |
|---|---|---|
| committer | Dan Bode <dan@puppetlabs.com> | 2011-07-13 15:38:32 -0700 |
| commit | b82f29c61aa84a12fc208487e4b049cb24702261 (patch) | |
| tree | 13940fcc93d0409a648511b18478cf073717d58d | |
| parent | 8730b290c4f45f3f76d57d2648bfb642528d0762 (diff) | |
| download | puppet-b82f29c61aa84a12fc208487e4b049cb24702261.tar.gz puppet-b82f29c61aa84a12fc208487e4b049cb24702261.tar.xz puppet-b82f29c61aa84a12fc208487e4b049cb24702261.zip | |
(#7699) Help command should only list options once
The problem was caused by the fact that the
options method returns a list of options that
treated the aliases as seperate options.
The fix is to only maintain a list of options
and not add all aliases to the options list.
| -rw-r--r-- | lib/puppet/interface/action.rb | 3 | ||||
| -rw-r--r-- | lib/puppet/interface/option_manager.rb | 3 | ||||
| -rwxr-xr-x | spec/shared_behaviours/things_that_declare_options.rb | 2 | ||||
| -rwxr-xr-x | spec/unit/interface/action_spec.rb | 10 | ||||
| -rwxr-xr-x | spec/unit/interface_spec.rb | 8 |
5 files changed, 23 insertions, 3 deletions
diff --git a/lib/puppet/interface/action.rb b/lib/puppet/interface/action.rb index 185302b07..fe77a9658 100644 --- a/lib/puppet/interface/action.rb +++ b/lib/puppet/interface/action.rb @@ -227,8 +227,9 @@ WRAPPER end end + @options << option.name + option.aliases.each do |name| - @options << name @options_hash[name] = option end diff --git a/lib/puppet/interface/option_manager.rb b/lib/puppet/interface/option_manager.rb index 326a91d92..a1f300e8e 100644 --- a/lib/puppet/interface/option_manager.rb +++ b/lib/puppet/interface/option_manager.rb @@ -26,8 +26,9 @@ module Puppet::Interface::OptionManager end end + @options << option.name + option.aliases.each do |name| - @options << name @options_hash[name] = option end diff --git a/spec/shared_behaviours/things_that_declare_options.rb b/spec/shared_behaviours/things_that_declare_options.rb index ebf1b2071..19bba66c1 100755 --- a/spec/shared_behaviours/things_that_declare_options.rb +++ b/spec/shared_behaviours/things_that_declare_options.rb @@ -43,7 +43,7 @@ shared_examples_for "things that declare options" do option "-f" option "--baz" end - thing.options.should == [:foo, :bar, :b, :q, :quux, :f, :baz] + thing.options.should == [:foo, :bar, :quux, :f, :baz] end it "should detect conflicts in long options" do diff --git a/spec/unit/interface/action_spec.rb b/spec/unit/interface/action_spec.rb index cf8d61d51..23216e7b4 100755 --- a/spec/unit/interface/action_spec.rb +++ b/spec/unit/interface/action_spec.rb @@ -171,6 +171,16 @@ describe Puppet::Interface::Action do face.get_action(:foo).options.should =~ [:bar] end + it "should only list options and not aliases" do + face = Puppet::Interface.new(:action_level_options, '0.0.1') do + action :foo do + when_invoked do |options| true end + option "--bar", "-b", "--foo-bar" + end + end + face.get_action(:foo).options.should =~ [:bar] + end + describe "with both face and action options" do let :face do Puppet::Interface.new(:action_level_options, '0.0.1') do diff --git a/spec/unit/interface_spec.rb b/spec/unit/interface_spec.rb index 8bbbcc857..4cb1f8743 100755 --- a/spec/unit/interface_spec.rb +++ b/spec/unit/interface_spec.rb @@ -174,6 +174,14 @@ describe Puppet::Interface do face.get_action(:foo).options.should =~ [:quux] face.get_action(:bar).options.should =~ [:quux] end + + it "should only list options and not aliases" do + face = subject.new(:face_options, '0.0.1') do + option "--bar", "-b", "--foo-bar" + end + face.options.should =~ [:bar] + end + end describe "with inherited options" do |
