summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Giddins <segiddins@segiddins.me>2017-01-02 17:14:26 -0600
committerSamuel Giddins <segiddins@segiddins.me>2017-01-02 17:14:26 -0600
commit3436818106a6955628dbeb33cda47f64ef309782 (patch)
treef3441da729eca908351bcd0cb03e7b607ee1f7ec
parent748b1ba655158372f8d91a7b8e2a3eac5feb7235 (diff)
downloadbundler-seg-cli-gem-override.tar.gz
[CLI] Fail gracefully when multiple names are passed to `bundle gem`seg-cli-gem-override
-rw-r--r--lib/bundler/cli.rb13
-rw-r--r--spec/commands/newgem_spec.rb8
2 files changed, 20 insertions, 1 deletions
diff --git a/lib/bundler/cli.rb b/lib/bundler/cli.rb
index 1fea6fdcb5..eb9362a500 100644
--- a/lib/bundler/cli.rb
+++ b/lib/bundler/cli.rb
@@ -418,8 +418,19 @@ module Bundler
commands["gem"].tap do |gem_command|
def gem_command.run(instance, args = [])
+ arity = 1 # name
+
require "bundler/cli/gem"
- Gem.new(instance.options, *args, instance).run
+ cmd_args = args + [instance]
+ cmd_args.unshift(instance.options)
+
+ cmd = begin
+ Gem.new(*cmd_args)
+ rescue ArgumentError => e
+ instance.class.handle_argument_error(self, e, args, arity)
+ end
+
+ cmd.run
end
end
diff --git a/spec/commands/newgem_spec.rb b/spec/commands/newgem_spec.rb
index 26dd3b4d96..766def1644 100644
--- a/spec/commands/newgem_spec.rb
+++ b/spec/commands/newgem_spec.rb
@@ -748,6 +748,14 @@ describe "bundle gem" do
bundle "gem 'foo bar'"
expect(out).to end_with("Invalid gem name foo bar -- `Foo bar` is an invalid constant name")
end
+
+ it "fails gracefully when multiple names are passed" do
+ bundle "gem foo bar baz"
+ expect(out).to eq(<<-E.strip)
+ERROR: "bundle gem" was called with arguments ["foo", "bar", "baz"]
+Usage: "bundle gem GEM [OPTIONS]"
+ E
+ end
end
describe "#ensure_safe_gem_name" do