summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Rodríguez <deivid.rodriguez@riseup.net>2020-03-04 13:38:58 +0100
committerDavid Rodríguez <deivid.rodriguez@riseup.net>2020-03-04 19:12:22 +0100
commit23dc5cbea0aaa8f4a6e3c9ce3e818e38d8b31e8f (patch)
tree7e04be254a3eabb7e34a65f5b9bf41a82d6ff1a4
parentc0fe575cce11c93ab81fecb24e4d270cb17ba02d (diff)
downloadbundler-skip_old_rubygems_issue.tar.gz
Install dev dependencies programmaticallyskip_old_rubygems_issue
Without shelling out. It should be faster, and it avoids a ruby 2.3 issue where gems installed through a subprocess are not picked up by the currently running rubygems. I'm also removing some unneeded `travis_retry` from the TravisCI configure. These steps shouldn't timeout and if they do, we should figure out why. Also, they could be hiding other issues not related to the network. In this case, `travis_retry bin/rake spec:parallel_deps` was hiding the issue installing dev dependencies being fixed by this commit.
-rw-r--r--.travis.yml6
-rw-r--r--spec/support/rubygems_ext.rb12
2 files changed, 11 insertions, 7 deletions
diff --git a/.travis.yml b/.travis.yml
index 1100b8981f..b8d711c6f3 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -7,11 +7,11 @@ script:
- BUNDLER_SPEC_PRE_RECORDED=1 bin/rake spec:realworld
before_script:
- - travis_retry bin/rake override_version
- - travis_retry bin/rake spec:parallel_deps
+ - bin/rake override_version
+ - bin/rake spec:parallel_deps
- if [ "$BUNDLER_SPEC_SUB_VERSION" = "" ];
then
- travis_retry sudo apt-get install graphviz -y;
+ sudo apt-get install graphviz -y;
fi
- if [ "$TRAVIS_RUBY_VERSION" = "2.3.8" ];
then
diff --git a/spec/support/rubygems_ext.rb b/spec/support/rubygems_ext.rb
index 5299a7b447..3c8d97b83c 100644
--- a/spec/support/rubygems_ext.rb
+++ b/spec/support/rubygems_ext.rb
@@ -105,10 +105,14 @@ module Spec
end
def install_gems(gems)
- deps = gems.map {|name, req| "'#{name}:#{req}'" }.join(" ")
- gem = ENV["GEM_COMMAND"] || "#{Gem.ruby} -S gem --backtrace"
- cmd = "#{gem} install #{deps} --no-document --conservative"
- system(cmd) || raise("Installing gems #{deps} for the tests to use failed!")
+ require "rubygems/dependency_installer"
+
+ gems.each do |name, req|
+ dependency = Gem::Dependency.new(name, req)
+ next unless dependency.matching_specs.empty?
+
+ Gem::DependencyInstaller.new(:document => false).install(dependency)
+ end
end
end
end