diff --git a/lib/rubygems/source/git.rb b/lib/rubygems/source/git.rb index ec2c371fa9..b76a068ed1 100644 --- a/lib/rubygems/source/git.rb +++ b/lib/rubygems/source/git.rb @@ -103,9 +103,11 @@ class Gem::Source::Git < Gem::Source success = system @git, 'reset', '--quiet', '--hard', rev_parse - success &&= - Gem::Util.silent_system @git, 'submodule', 'update', - '--quiet', '--init', '--recursive' if @need_submodules + if @need_submodules + _, status = Open3.capture2e(@git, 'submodule', 'update', '--quiet', '--init', '--recursive') + + success &&= status.success? + end success end diff --git a/test/rubygems/test_gem_source_git.rb b/test/rubygems/test_gem_source_git.rb index bcf97e367f..393190c9f5 100644 --- a/test/rubygems/test_gem_source_git.rb +++ b/test/rubygems/test_gem_source_git.rb @@ -69,8 +69,9 @@ class TestGemSourceGit < Gem::TestCase git_gem 'b' Dir.chdir 'git/a' do - Gem::Util.silent_system @git, 'submodule', '--quiet', - 'add', File.expand_path('../b'), 'b' + output, status = Open3.capture2e(@git, 'submodule', '--quiet', 'add', File.expand_path('../b'), 'b') + assert status.success?, output + system @git, 'commit', '--quiet', '-m', 'add submodule b' end