diff options
author | Samuel Giddins <segiddins@segiddins.me> | 2016-08-29 12:09:35 -0500 |
---|---|---|
committer | Samuel Giddins <segiddins@segiddins.me> | 2016-08-29 12:09:35 -0500 |
commit | 584327075d9662387660053082acf7f603516916 (patch) | |
tree | d5f783aba3344e756aa56f3f8f1bb203126570fb | |
parent | 289040eef20b194b795541ea994d4f7043d40fc9 (diff) | |
download | bundler-seg-update-compact-index.tar.gz |
Speed up test gem installationseg-update-compact-index
-rw-r--r-- | spec/support/rubygems_ext.rb | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/spec/support/rubygems_ext.rb b/spec/support/rubygems_ext.rb index df0880a95d..e2b8c6a45e 100644 --- a/spec/support/rubygems_ext.rb +++ b/spec/support/rubygems_ext.rb @@ -37,7 +37,7 @@ module Spec FileUtils.rm_rf(Path.base_system_gems) FileUtils.mkdir_p(Path.base_system_gems) puts "installing gems for the tests to use..." - DEPS.sort {|a, _| a[1].nil? ? 1 : -1 }.each {|n, v| install_gem(n, v) } + install_gems(DEPS) File.open(manifest_path, "w") {|f| f << manifest.join } end @@ -46,10 +46,14 @@ module Spec Gem::DefaultUserInteraction.ui = Gem::SilentUI.new end - def self.install_gem(name, version = nil) - cmd = "gem install #{name} --no-rdoc --no-ri" - cmd += " --version '#{version}'" if version - system(cmd) || raise("Installing gem #{name} for the tests to use failed!") + def self.install_gems(gems) + reqs, no_reqs = gems.partition {|_, req| !req.nil? && !req.split(" ").empty? } + no_reqs.map!(&:first) + reqs.map! {|name, req| "'#{name}:#{req}'" } + deps = reqs.concat(no_reqs).join(" ") + cmd = "gem install #{deps} --no-rdoc --no-ri" + puts cmd + system(cmd) || raise("Installing gems #{deps} for the tests to use failed!") end end end |