From 5d037819ca80606638212f83de741cc2041db28f Mon Sep 17 00:00:00 2001 From: Xavier Noria Date: Tue, 18 Feb 2014 10:22:43 +0100 Subject: [PATCH] travel_to travels back and re-raises if the block raises --- .../lib/active_support/testing/time_helpers.rb | 9 ++++++--- activesupport/test/time_zone_test.rb | 12 ++++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/activesupport/lib/active_support/testing/time_helpers.rb b/activesupport/lib/active_support/testing/time_helpers.rb index b36f3cf94c..eefa84262e 100644 --- a/activesupport/lib/active_support/testing/time_helpers.rb +++ b/activesupport/lib/active_support/testing/time_helpers.rb @@ -10,7 +10,7 @@ module ActiveSupport def stub_object(object, method_name, return_value) key = [object.object_id, method_name] - if (stub = @stubs[key]) + if stub = @stubs[key] unstub_object(stub) end @@ -97,8 +97,11 @@ module ActiveSupport simple_stubs.stub_object(Date, :today, now.to_date) if block_given? - block.call - travel_back + begin + block.call + ensure + travel_back + end end end diff --git a/activesupport/test/time_zone_test.rb b/activesupport/test/time_zone_test.rb index 9fa2f45de5..79ec57af2b 100644 --- a/activesupport/test/time_zone_test.rb +++ b/activesupport/test/time_zone_test.rb @@ -138,6 +138,18 @@ class TimeZoneTest < ActiveSupport::TestCase end end + def test_travel_to_travels_back_and_reraises_if_the_block_raises + ts = Time.current - 1.second + + travel_to ts do + raise + end + + flunk # ensure travel_to re-raises + rescue + assert_not_equal ts, Time.current + end + def test_local time = ActiveSupport::TimeZone["Hawaii"].local(2007, 2, 5, 15, 30, 45) assert_equal Time.utc(2007, 2, 5, 15, 30, 45), time.time