diff options
author | Samuel Giddins <segiddins@segiddins.me> | 2016-07-24 15:38:16 -0500 |
---|---|---|
committer | Samuel Giddins <segiddins@segiddins.me> | 2016-07-24 15:41:48 -0500 |
commit | a6a5d32f8e136117a1ca525e20957f68ff79d0e4 (patch) | |
tree | 081dbe684dc0b7e48fce4b35d4b8143bb6845f5b | |
parent | 94a7392a02c3e3c3cd8e0b641c4446f38b24c95a (diff) | |
download | bundler-a6a5d32f8e136117a1ca525e20957f68ff79d0e4.tar.gz |
Add support for checking source in should_be_installed
-rw-r--r-- | spec/support/matchers.rb | 27 |
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 |