From 6f315b619c5f3a61be3507d1a89b6bfb0862f4d7 Mon Sep 17 00:00:00 2001 From: Nathan Esquenazi Date: Wed, 13 Mar 2013 11:39:12 -0700 Subject: [PATCH] Adds failing test for after filters --- test/filter_test.rb | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/test/filter_test.rb b/test/filter_test.rb index 45e0a1d5..5919cd0d 100644 --- a/test/filter_test.rb +++ b/test/filter_test.rb @@ -434,4 +434,33 @@ class AfterFilterTest < Test::Unit::TestCase get('/', {}, { 'HTTP_ACCEPT' => '*/*' }) assert_body 'txt' end + + it 'can catch exceptions in after filters and handle them properly' do + doodle = '' + mock_app do + after do + doodle += ' and after' + raise StandardError, "after" + end + get :foo do + doodle = 'Been now' + raise StandardError, "now" + end + get :index do + doodle = 'Been now' + end + error 500 do + "We broke #{env['sinatra.error'].message}" + end + end + + get '/foo' + assert_equal 'We broke now', body + assert_equal 'Been now', doodle + + doodle = '' + get '/' + assert_equal 'We broke after', body + assert_equal 'Been now and after', doodle + end end