From c36f44aacaf94341d244bbf7bff0dd4a62227441 Mon Sep 17 00:00:00 2001 From: Blake Mizerany Date: Sun, 25 Nov 2007 17:20:20 -0800 Subject: [PATCH] * fixed reloading and warnings. * still get warnings when running tests with rake. need to fix this --- lib/sinatra.rb | 26 +++++++++++++++----------- lib/sinatra/test.rb | 18 +++++++++++++++++- test/helper.rb | 4 ---- 3 files changed, 32 insertions(+), 16 deletions(-) diff --git a/lib/sinatra.rb b/lib/sinatra.rb index f61c119..6c314de 100644 --- a/lib/sinatra.rb +++ b/lib/sinatra.rb @@ -135,6 +135,12 @@ module Sinatra end end + + def setup_logger + self.logger = Sinatra::Logger.new( + config[:root] + "/#{Sinatra.config[:env]}.log" + ) + end def setup_default_events! error 500 do @@ -178,7 +184,7 @@ module Sinatra :port => 4567, :raise_errors => false, :env => :development, - :root => File.dirname($0), + :root => Dir.pwd, :default_static_mime_type => 'text/plain', :default_params => { :format => 'html' } } @@ -261,10 +267,10 @@ module Sinatra end def reload! - config[:reloading] = true reset! + self.config[:reloading] = true load $0 - config[:reloading] = false + self.config[:reloading] = false end protected @@ -311,13 +317,12 @@ module Sinatra URI_CHAR = '[^/?:,&#]'.freeze unless defined?(URI_CHAR) PARAM = /:(#{URI_CHAR}+)/.freeze unless defined?(PARAM) - Result = Struct.new(:path, :block, :params, :default_status) - attr_reader :block, :path def initialize(path, &b) @path, @block = path, b @param_keys = [] + @struct = Struct.new(:path, :block, :params, :default_status) regex = path.to_s.gsub(PARAM) do @param_keys << $1.intern "(#{URI_CHAR}+)" @@ -333,7 +338,7 @@ module Sinatra def match(path) return nil unless path =~ @pattern params = @param_keys.zip($~.captures.compact.map(&:from_param)).to_hash - Result.new(@path, @block, include_format(params), 200) + @struct.new(@path, @block, include_format(params), 200) end def include_format(h) @@ -402,16 +407,15 @@ def helpers(&b) end def configures(*envs) - yield if (envs.include?(Sinatra.config[:env]) || - envs.empty?) && - !Sinatra.config[:reloading] + return if Sinatra.config[:reloading] + yield if (envs.include?(Sinatra.config[:env]) || envs.empty?) end - -Sinatra.logger = Sinatra::Logger.new("#{Sinatra.config[:env]}.log") +alias :configure :configures Sinatra.setup_default_events! at_exit do raise $! if $! + Sinatra.setup_logger Sinatra.run if Sinatra.config[:run] end \ No newline at end of file diff --git a/lib/sinatra/test.rb b/lib/sinatra/test.rb index cc70bb2..c0b0a7e 100644 --- a/lib/sinatra/test.rb +++ b/lib/sinatra/test.rb @@ -1,8 +1,24 @@ require 'test/unit' + +def silence_warnings + old_verbose, $VERBOSE = $VERBOSE, nil + yield +ensure + $VERBOSE = old_verbose +end + +silence_warnings do + require File.dirname(__FILE__) + '/../sinatra' +end + require File.dirname(__FILE__) + "/test/methods" Test::Unit::TestCase.send :include, Sinatra::Test::Methods - + Sinatra.default_config[:raise_errors] = true Sinatra.default_config[:env] = :test Sinatra.default_config[:run] = false + +Sinatra.config = nil + +Sinatra.setup_logger diff --git a/test/helper.rb b/test/helper.rb index f26f6e7..4eac0fe 100644 --- a/test/helper.rb +++ b/test/helper.rb @@ -1,7 +1,3 @@ -require File.dirname(__FILE__) + '/../lib/sinatra' require File.dirname(__FILE__) + '/../lib/sinatra/test/spec' require 'mocha' -# class Test::Spec::TestCase -# alias :run_without_reset :run -# end -- 2.11.4.GIT