summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/puppet/application/string_base.rb6
-rwxr-xr-xspec/unit/application/string_base_spec.rb6
2 files changed, 11 insertions, 1 deletions
diff --git a/lib/puppet/application/string_base.rb b/lib/puppet/application/string_base.rb
index 8284a3185..06e5789be 100644
--- a/lib/puppet/application/string_base.rb
+++ b/lib/puppet/application/string_base.rb
@@ -71,7 +71,11 @@ class Puppet::Application::StringBase < Puppet::Application
option = @string.options.find { |a| item =~ /^-+#{a}\b/ }
if option then
option = @string.get_option(option)
- if option.takes_argument? then
+ # If we have an inline argument, just carry on. We don't need to
+ # care about optional vs mandatory in that case because we do a real
+ # parse later, and that will totally take care of raising the error
+ # when we get there. --daniel 2011-04-04
+ if option.takes_argument? and !item.index('=') then
index += 1 unless
(option.optional_argument? and command_line.args[index + 1] =~ /^-/)
end
diff --git a/spec/unit/application/string_base_spec.rb b/spec/unit/application/string_base_spec.rb
index 5cfb8352a..71e67283d 100755
--- a/spec/unit/application/string_base_spec.rb
+++ b/spec/unit/application/string_base_spec.rb
@@ -112,6 +112,12 @@ describe Puppet::Application::StringBase do
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 }.
+ should raise_error ArgumentError, /Unknown option "--bar"/
+ end
end
end