summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Giddins <segiddins@segiddins.me>2017-09-10 13:13:14 -0700
committerSamuel Giddins <segiddins@segiddins.me>2017-09-13 15:38:17 -0500
commitaba4cd41b4bc1748f7f888362fb61e6ec80a3d4a (patch)
tree787f3b278afafdde8d2cf82c5be1b43275ee273e
parente060b6706895158c22a00bd5a2f1ea07bf807b98 (diff)
downloadbundler-aba4cd41b4bc1748f7f888362fb61e6ec80a3d4a.tar.gz
Add a way to assert that Artifice only gets certain requests
-rw-r--r--spec/support/artifice/endpoint.rb26
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?