diff options
author | Samuel Giddins <segiddins@segiddins.me> | 2017-09-10 13:13:14 -0700 |
---|---|---|
committer | Samuel Giddins <segiddins@segiddins.me> | 2017-09-13 15:38:17 -0500 |
commit | aba4cd41b4bc1748f7f888362fb61e6ec80a3d4a (patch) | |
tree | 787f3b278afafdde8d2cf82c5be1b43275ee273e | |
parent | e060b6706895158c22a00bd5a2f1ea07bf807b98 (diff) | |
download | bundler-aba4cd41b4bc1748f7f888362fb61e6ec80a3d4a.tar.gz |
Add a way to assert that Artifice only gets certain requests
-rw-r--r-- | spec/support/artifice/endpoint.rb | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/spec/support/artifice/endpoint.rb b/spec/support/artifice/endpoint.rb index 0d52130263..9afecff8e6 100644 --- a/spec/support/artifice/endpoint.rb +++ b/spec/support/artifice/endpoint.rb @@ -8,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? |