diff options
Diffstat (limited to 'spec/support/rubygems_ext.rb')
-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 |