tracks/vendor/gems/rack-1.0.1/test/spec_rack_lock.rb
Eric Allen 156862200b Vendoring Rack
Joyent hasn't upgraded their gem yet, and for many users this could be a
major installation pitfall. Rails is vendored, so why can't it boot?
Rack? What's that?
2009-12-14 11:40:57 -05:00

38 lines
925 B
Ruby

require 'test/spec'
require 'rack/mock'
require 'rack/lock'
context "Rack::Lock" do
class Lock
attr_reader :synchronized
def initialize
@synchronized = false
end
def synchronize
@synchronized = true
yield
end
end
specify "should call synchronize on lock" do
lock = Lock.new
env = Rack::MockRequest.env_for("/")
app = Rack::Lock.new(lambda { |env| }, lock)
lock.synchronized.should.equal false
app.call(env)
lock.synchronized.should.equal true
end
specify "should set multithread flag to false" do
app = Rack::Lock.new(lambda { |env| env['rack.multithread'] })
app.call(Rack::MockRequest.env_for("/")).should.equal false
end
specify "should reset original multithread flag when exiting lock" do
app = Rack::Lock.new(lambda { |env| env })
app.call(Rack::MockRequest.env_for("/"))['rack.multithread'].should.equal true
end
end