diff options
author | Lars Gierth <lars.gierth@gmail.com> | 2011-12-28 21:44:45 +0100 |
---|---|---|
committer | Lars Gierth <lars@soundcloud.com> | 2012-03-31 20:23:55 +0200 |
commit | 761bc5472c0b447937ef31b0b81528cfec5f8766 (patch) | |
tree | 8ac3629c618af703eb7d640de4754a68e7b3ca85 /test/spec_lock.rb | |
parent | 0cb39b04c578ce3a510635b4a169379a1e0d5fd5 (diff) | |
download | rack-761bc5472c0b447937ef31b0b81528cfec5f8766.tar.gz |
Wrap test apps in Rack::Lint and fix uncovered errors (fourth pass)
Update tests for Lobster, Lock, Logger and MethodOverride.
Diffstat (limited to 'test/spec_lock.rb')
-rw-r--r-- | test/spec_lock.rb | 57 |
1 files changed, 36 insertions, 21 deletions
diff --git a/test/spec_lock.rb b/test/spec_lock.rb index 64849096..548cbe5a 100644 --- a/test/spec_lock.rb +++ b/test/spec_lock.rb @@ -1,3 +1,5 @@ +require 'enumerator' +require 'rack/lint' require 'rack/lock' require 'rack/mock' @@ -22,10 +24,24 @@ class Lock end end +module LockHelpers + def lock_app(app, lock = Lock.new) + app = if lock + Rack::Lock.new app, lock + else + Rack::Lock.new app + end + Rack::Lint.new app + end +end + describe Rack::Lock do + extend LockHelpers + describe 'Proxy' do + extend LockHelpers + should 'delegate each' do - lock = Lock.new env = Rack::MockRequest.env_for("/") response = Class.new { attr_accessor :close_called @@ -33,7 +49,7 @@ describe Rack::Lock do def each; %w{ hi mom }.each { |x| yield x }; end }.new - app = Rack::Lock.new(lambda { |inner_env| [200, {}, response] }, lock) + app = lock_app(lambda { |inner_env| [200, {"Content-Type" => "text/plain"}, response] }) response = app.call(env)[2] list = [] response.each { |x| list << x } @@ -47,7 +63,7 @@ describe Rack::Lock do res = ['Hello World'] def res.to_path ; "/tmp/hello.txt" ; end - app = Rack::Lock.new(lambda { |inner_env| [200, {}, res] }, lock) + app = Rack::Lock.new(lambda { |inner_env| [200, {"Content-Type" => "text/plain"}, res] }, lock) body = app.call(env)[2] body.should.respond_to :to_path @@ -55,12 +71,11 @@ describe Rack::Lock do end should 'not delegate to_path if body does not implement it' do - lock = Lock.new env = Rack::MockRequest.env_for("/") res = ['Hello World'] - app = Rack::Lock.new(lambda { |inner_env| [200, {}, res] }, lock) + app = lock_app(lambda { |inner_env| [200, {"Content-Type" => "text/plain"}, res] }) body = app.call(env)[2] body.should.not.respond_to :to_path @@ -68,7 +83,6 @@ describe Rack::Lock do end should 'call super on close' do - lock = Lock.new env = Rack::MockRequest.env_for("/") response = Class.new { attr_accessor :close_called @@ -76,7 +90,7 @@ describe Rack::Lock do def close; @close_called = true; end }.new - app = Rack::Lock.new(lambda { |inner_env| [200, {}, response] }, lock) + app = lock_app(lambda { |inner_env| [200, {"Content-Type" => "text/plain"}, response] }) app.call(env) response.close_called.should.equal false response.close @@ -87,7 +101,7 @@ describe Rack::Lock do lock = Lock.new env = Rack::MockRequest.env_for("/") response = Object.new - app = Rack::Lock.new(lambda { |inner_env| [200, {}, response] }, lock) + app = lock_app(lambda { |inner_env| [200, {"Content-Type" => "text/plain"}, response] }, lock) lock.synchronized.should.equal false response = app.call(env)[2] lock.synchronized.should.equal true @@ -96,19 +110,20 @@ describe Rack::Lock do end should "return value from app" do - lock = Lock.new env = Rack::MockRequest.env_for("/") - body = [200, {}, %w{ hi mom }] - app = Rack::Lock.new(lambda { |inner_env| body }, lock) - app.call(env).should.equal body + body = [200, {"Content-Type" => "text/plain"}, %w{ hi mom }] + app = lock_app(lambda { |inner_env| body }) + app.call(env).tap do |res| + res[0].should.equal body[0] + res[1].should.equal body[1] + Enumerator.new(res[2]).to_a.should.equal ["hi", "mom"] + end end should "call synchronize on lock" do lock = Lock.new env = Rack::MockRequest.env_for("/") - app = Rack::Lock.new(lambda { |inner_env| - [200, {}, %w{ a b c }] - }, lock) + app = lock_app(lambda { |inner_env| [200, {"Content-Type" => "text/plain"}, %w{ a b c }] }, lock) lock.synchronized.should.equal false app.call(env) lock.synchronized.should.equal true @@ -117,16 +132,16 @@ describe Rack::Lock do should "unlock if the app raises" do lock = Lock.new env = Rack::MockRequest.env_for("/") - app = Rack::Lock.new(lambda { raise Exception }, lock) + app = lock_app(lambda { raise Exception }) lambda { app.call(env) }.should.raise(Exception) lock.synchronized.should.equal false end should "set multithread flag to false" do - app = Rack::Lock.new(lambda { |env| + app = lock_app(lambda { |env| env['rack.multithread'].should.equal false - [200, {}, %w{ a b c }] - }) + [200, {"Content-Type" => "text/plain"}, %w{ a b c }] + }, false) app.call(Rack::MockRequest.env_for("/")) end @@ -136,7 +151,7 @@ describe Rack::Lock do env['rack.multithread'].should.equal true super end - }.new(lambda { |env| [200, {}, %w{ a b c }] }) - app.call(Rack::MockRequest.env_for("/")) + }.new(lambda { |env| [200, {"Content-Type" => "text/plain"}, %w{ a b c }] }) + Rack::Lint.new(app).call(Rack::MockRequest.env_for("/")) end end |