summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Giddins <segiddins@segiddins.me>2016-07-24 15:38:16 -0500
committerSamuel Giddins <segiddins@segiddins.me>2016-07-24 15:41:48 -0500
commita6a5d32f8e136117a1ca525e20957f68ff79d0e4 (patch)
tree081dbe684dc0b7e48fce4b35d4b8143bb6845f5b
parent94a7392a02c3e3c3cd8e0b641c4446f38b24c95a (diff)
downloadbundler-a6a5d32f8e136117a1ca525e20957f68ff79d0e4.tar.gz
Add support for checking source in should_be_installed
-rw-r--r--spec/support/matchers.rb27
1 files changed, 18 insertions, 9 deletions
diff --git a/spec/support/matchers.rb b/spec/support/matchers.rb
index 10e47691ab..3fe23665d3 100644
--- a/spec/support/matchers.rb
+++ b/spec/support/matchers.rb
@@ -52,17 +52,26 @@ module Spec
def should_be_installed(*names)
opts = names.last.is_a?(Hash) ? names.pop : {}
+ source = opts.delete(:source)
groups = Array(opts[:groups])
groups << opts
- names.each do |name|
- name, version, platform = name.split(/\s+/)
- version_const = name == "bundler" ? "Bundler::VERSION" : Spec::Builders.constantize(name)
- run! "require '#{name}.rb'; puts #{version_const}", *groups
- expect(out).not_to be_empty, "#{name} is not installed"
- out.gsub!(/#{MAJOR_DEPRECATION}.*$/, "")
- actual_version, actual_platform = out.strip.split(/\s+/, 2)
- expect(Gem::Version.new(actual_version)).to eq(Gem::Version.new(version))
- expect(actual_platform).to eq(platform)
+ aggregate_failures "should be installed" do
+ names.each do |name|
+ name, version, platform = name.split(/\s+/)
+ version_const = name == "bundler" ? "Bundler::VERSION" : Spec::Builders.constantize(name)
+ run! "require '#{name}.rb'; puts #{version_const}", *groups
+ expect(out).not_to be_empty, "#{name} is not installed"
+ out.gsub!(/#{MAJOR_DEPRECATION}.*$/, "")
+ actual_version, actual_platform = out.strip.split(/\s+/, 2)
+ expect(Gem::Version.new(actual_version)).to eq(Gem::Version.new(version))
+ expect(actual_platform).to eq(platform)
+ next unless source
+ source_const = "#{Spec::Builders.constantize(name)}_SOURCE"
+ run! "require '#{name}/source'; puts #{source_const}", *groups
+ out.gsub!(/#{MAJOR_DEPRECATION}.*$/, "")
+ expect(out.strip).to eq(source),
+ "Expected #{name} (#{version}) to be installed from `#{source}`, was actually from `#{out}`"
+ end
end
end