diff options
Diffstat (limited to 'spec/bundler/support/artifice/endpoint.rb')
-rw-r--r-- | spec/bundler/support/artifice/endpoint.rb | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/spec/bundler/support/artifice/endpoint.rb b/spec/bundler/support/artifice/endpoint.rb index 771d431f22..9afecff8e6 100644 --- a/spec/bundler/support/artifice/endpoint.rb +++ b/spec/bundler/support/artifice/endpoint.rb @@ -1,4 +1,5 @@ # frozen_string_literal: true + require File.expand_path("../../path.rb", __FILE__) require Spec::Path.root.join("lib/bundler/deprecate") include Spec::Path @@ -7,11 +8,37 @@ $LOAD_PATH.unshift(*Dir[Spec::Path.base_system_gems.join("gems/{artifice,rack,ti require "artifice" require "sinatra/base" +ALL_REQUESTS = [] # rubocop:disable Style/MutableConstant +ALL_REQUESTS_MUTEX = Mutex.new + +at_exit do + if expected = ENV["BUNDLER_SPEC_ALL_REQUESTS"] + expected = expected.split("\n").sort + actual = ALL_REQUESTS.sort + + unless expected == actual + raise "Unexpected requests!\nExpected:\n\t#{expected.join("\n\t")}\n\nActual:\n\t#{actual.join("\n\t")}" + end + end +end + class Endpoint < Sinatra::Base + def self.all_requests + @all_requests ||= [] + end + GEM_REPO = Pathname.new(ENV["BUNDLER_SPEC_GEM_REPO"] || Spec::Path.gem_repo1) set :raise_errors, true set :show_exceptions, false + def call!(*) + super.tap do + ALL_REQUESTS_MUTEX.synchronize do + ALL_REQUESTS << @request.url + end + end + end + helpers do def dependencies_for(gem_names, gem_repo = GEM_REPO) return [] if gem_names.nil? || gem_names.empty? @@ -19,7 +46,7 @@ class Endpoint < Sinatra::Base require "rubygems" require "bundler" Bundler::Deprecate.skip_during do - all_specs = %w(specs.4.8 prerelease_specs.4.8).map do |filename| + all_specs = %w[specs.4.8 prerelease_specs.4.8].map do |filename| Marshal.load(File.open(gem_repo.join(filename)).read) end.inject(:+) |