diff options
Diffstat (limited to 'spec/bundler/support/matchers.rb')
-rw-r--r-- | spec/bundler/support/matchers.rb | 44 |
1 files changed, 17 insertions, 27 deletions
diff --git a/spec/bundler/support/matchers.rb b/spec/bundler/support/matchers.rb index a5e546d333..01e11eb94d 100644 --- a/spec/bundler/support/matchers.rb +++ b/spec/bundler/support/matchers.rb @@ -116,20 +116,17 @@ module Spec source = opts.delete(:source) groups = Array(opts[:groups]) exclude_from_load_path = opts.delete(:exclude_from_load_path) + opts[:raise_on_error] = false groups << opts @errors = names.map do |name| name, version, platform = name.split(/\s+/) require_path = name == "bundler" ? "#{lib_dir}/bundler" : name.tr("-", "/") version_const = name == "bundler" ? "Bundler::VERSION" : Spec::Builders.constantize(name) - begin - code = [] - code << "$LOAD_PATH.delete '#{exclude_from_load_path}'" if exclude_from_load_path - code << "require '#{require_path}.rb'" - code << "puts #{version_const}" - run! code.join("; "), *groups - rescue StandardError => e - next "#{name} is not installed:\n#{indent(e)}" - end + code = [] + code << "$LOAD_PATH.delete '#{exclude_from_load_path}'" if exclude_from_load_path + code << "require '#{require_path}.rb'" + code << "puts #{version_const}" + run code.join("; "), *groups actual_version, actual_platform = out.strip.split(/\s+/, 2) unless Gem::Version.new(actual_version) == Gem::Version.new(version) next "#{name} was expected to be at version #{version} but was #{actual_version}" @@ -138,12 +135,8 @@ module Spec next "#{name} was expected to be of platform #{platform} but was #{actual_platform}" end next unless source - begin - source_const = "#{Spec::Builders.constantize(name)}_SOURCE" - run! "require '#{require_path}/source'; puts #{source_const}", *groups - rescue StandardError - next "#{name} does not have a source defined:\n#{indent(e)}" - end + source_const = "#{Spec::Builders.constantize(name)}_SOURCE" + run "require '#{require_path}/source'; puts #{source_const}", *groups unless out.strip == source next "Expected #{name} (#{version}) to be installed from `#{source}`, was actually from `#{out}`" end @@ -155,20 +148,17 @@ module Spec match_when_negated do opts = names.last.is_a?(Hash) ? names.pop : {} groups = Array(opts[:groups]) || [] + opts[:raise_on_error] = false @errors = names.map do |name| name, version = name.split(/\s+/, 2) - begin - run <<-R, *(groups + [opts]) - begin - require '#{name}' - puts #{Spec::Builders.constantize(name)} - rescue LoadError, NameError - puts "WIN" - end - R - rescue StandardError => e - next "checking for #{name} failed:\n#{e}\n#{e.backtrace.join("\n")}" - end + run <<-R, *(groups + [opts]) + begin + require '#{name}' + puts #{Spec::Builders.constantize(name)} + rescue LoadError, NameError + puts "WIN" + end + R next if out == "WIN" next "expected #{name} to not be installed, but it was" if version.nil? if Gem::Version.new(out) == Gem::Version.new(version) |