summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/rubygems/source/git.rb8
-rw-r--r--test/rubygems/test_gem_source_git.rb5
2 files changed, 8 insertions, 5 deletions
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