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.

Signed-off-by: Dan Bode <[email protected]>
---
Local-branch: issue/2.7.x/7699
 lib/puppet/interface/action.rb                     |    3 ++-
 lib/puppet/interface/option_manager.rb             |    3 ++-
 .../things_that_declare_options.rb                 |    2 +-
 spec/unit/interface/action_spec.rb                 |   10 ++++++++++
 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 185302b..fe77a96 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 326a91d..a1f300e 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 ebf1b20..19bba66 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 cf8d61d..23216e7 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 8bbbcc8..4cb1f87 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
-- 
1.6.5.1

-- 
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.

Reply via email to