diff --git a/lib/bundler/gem_helper.rb b/lib/bundler/gem_helper.rb index 33f1d515922..68f5e636ff9 100644 --- a/lib/bundler/gem_helper.rb +++ b/lib/bundler/gem_helper.rb @@ -106,7 +106,7 @@ def rubygem_push(path) unless allowed_push_host || Bundler.user_home.join(".gem/credentials").file? raise "Your rubygems.org credentials aren't set. Run `gem push` to set them." end - sh(gem_command) + sh_with_input(gem_command) Bundler.ui.confirm "Pushed #{name} #{version} to #{gem_push_host}" end @@ -180,6 +180,13 @@ def name gemspec.name end + def sh_with_input(cmd) + Bundler.ui.debug(cmd) + SharedHelpers.chdir(base) do + abort unless Kernel.system(*cmd) + end + end + def sh(cmd, &block) out, status = sh_with_status(cmd, &block) unless status.success? diff --git a/spec/bundler/gem_helper_spec.rb b/spec/bundler/gem_helper_spec.rb index 1452e20967e..1ef57c1d00c 100644 --- a/spec/bundler/gem_helper_spec.rb +++ b/spec/bundler/gem_helper_spec.rb @@ -233,6 +233,12 @@ def mock_build_message(name, version) Rake.application["release"].invoke end + + it "uses Kernel.system" do + expect(Kernel).to receive(:system).with("gem", "push", app_gem_path.to_s, "--host", "http://example.org").and_return(true) + + Rake.application["release"].invoke + end end it "even if tag already exists" do @@ -255,7 +261,7 @@ def mock_build_message(name, version) before(:each) do Rake.application = Rake::Application.new subject.install - allow(subject).to receive(:sh) + allow(subject).to receive(:sh_with_input) end after(:each) do