From 47aa6753396ba1709aaf59d1bcd7b7a64b6d0773 Mon Sep 17 00:00:00 2001 From: Blake Mizerany Date: Wed, 16 Jan 2008 18:16:41 -0800 Subject: [PATCH] Setting the env in test --- lib/sinatra.rb | 20 +++++++++++++------- lib/sinatra/test/unit.rb | 3 +++ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/lib/sinatra.rb b/lib/sinatra.rb index f20fc0f..e2bf3c8 100644 --- a/lib/sinatra.rb +++ b/lib/sinatra.rb @@ -260,7 +260,8 @@ module Sinatra class Application - attr_reader :events, :layouts, :default_options + attr_reader :events, :layouts, :default_options, :filters + attr_writer :options def self.default_options @@default_options ||= { @@ -286,6 +287,7 @@ module Sinatra def initialize @events = Hash.new { |hash, key| hash[key] = [] } + @filters = Hash.new { |hash, key| hash[key] = [] } @layouts = Hash.new load_options! end @@ -303,6 +305,10 @@ module Sinatra events[:errors][code] = Error.new(code, &b) end + def define_filter(type, &b) + filters[:before] << b + end + def static @static ||= Static.new end @@ -330,7 +336,7 @@ module Sinatra def options @options ||= OpenStruct.new(default_options) end - + def call(env) result = lookup(env) context = EventContext.new( @@ -341,6 +347,7 @@ module Sinatra begin context.status(result.status) returned = catch(:halt) do + filters[:before].each { |f| context.instance_eval(&f) } [:complete, context.instance_eval(&result.block)] end body = returned.to_result(context) @@ -380,6 +387,10 @@ def delete(path, options ={}, &b) Sinatra.application.define_event(:delete, path, options, &b) end +def before(&b) + Sinatra.application.define_filter(:before, &b) +end + def helpers(&b) Sinatra::EventContext.class_eval(&b) end @@ -516,11 +527,6 @@ at_exit do Sinatra.run if Sinatra.application.options.run end -ENV['SINATRA_ENV'] = 'test' if $0 =~ /_test\.rb$/ -Sinatra::Application.default_options.merge!( - :env => (ENV['SINATRA_ENV'] || 'development').to_sym -) - configures :development do get '/sinatra_custom_images/:image.png' do diff --git a/lib/sinatra/test/unit.rb b/lib/sinatra/test/unit.rb index dab139f..1bb0eb5 100644 --- a/lib/sinatra/test/unit.rb +++ b/lib/sinatra/test/unit.rb @@ -4,5 +4,8 @@ require File.dirname(__FILE__) + '/methods' Test::Unit::TestCase.send(:include, Sinatra::Test::Methods) Sinatra::Application.default_options.merge!( + :env => :test, :run => false ) + +Sinatra.application.options = nil -- 2.11.4.GIT