From c03879a1a0357c01558c07eff81c0b46d695538f Mon Sep 17 00:00:00 2001 From: Blake Mizerany Date: Mon, 22 Oct 2007 18:47:57 -0700 Subject: [PATCH] FIX: StaticEvents should ignore directories during path recognition --- lib/sinatra/dsl.rb | 6 +++--- lib/sinatra/event.rb | 3 ++- test/sinatra/static_files_test.rb | 7 +++++++ 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/lib/sinatra/dsl.rb b/lib/sinatra/dsl.rb index 1693136..3ae42f3 100644 --- a/lib/sinatra/dsl.rb +++ b/lib/sinatra/dsl.rb @@ -125,9 +125,9 @@ module Sinatra end # Execute block if in test mode (Used for configuration) - def test - yield if Sinatra::Options.environment == :test - end + # def test + # yield if Sinatra::Options.environment == :test + # end # Define named layouts (default name is :layout) # diff --git a/lib/sinatra/event.rb b/lib/sinatra/event.rb index 39631c7..d90545f 100644 --- a/lib/sinatra/event.rb +++ b/lib/sinatra/event.rb @@ -149,7 +149,8 @@ module Sinatra end def recognize(path) - File.exists?(physical_path_for(path)) + filename = physical_path_for(path) + File.exists?(filename) && File.file?(filename) end def physical_path_for(path) diff --git a/test/sinatra/static_files_test.rb b/test/sinatra/static_files_test.rb index b7a59b1..22c72af 100644 --- a/test/sinatra/static_files_test.rb +++ b/test/sinatra/static_files_test.rb @@ -9,6 +9,7 @@ context "StaticEvent" do specify "recognizes paths prefixed with it's path" do File.expects(:exists?).with('/x/bar/test.jpg').returns(true) + File.expects(:file?).with('/x/bar/test.jpg').returns(true) Sinatra::StaticEvent.new('/foo', '/x/bar').recognize('/foo/test.jpg').should.equal true File.expects(:exists?).with('/x/bar/test.jpg').returns(false) @@ -23,6 +24,12 @@ context "StaticEvent" do result.body.each { } end + specify "makes sure it is a file and not a directory" do + File.expects(:exists?).with('/x/bar').returns(true) + File.expects(:file?).with('/x/bar').returns(false) + Sinatra::StaticEvent.new('/foo', '/x').recognize('/foo/bar').should.equal false + end + end context "StaticEvent (In full context)" do -- 2.11.4.GIT