From 607a6c7a9a6fb3d8bd7d08d0307018b626105d83 Mon Sep 17 00:00:00 2001 From: Thomas Balthazar Date: Sat, 1 Oct 2016 13:26:15 +0200 Subject: Fix `ActiveSupport::TimeWithZone#localtime` Previously memoization in `localtime` wasn't taking the `utc_offset` parameter into account when returning a cached value. It now caches the computed value depending on the `utc_offset` parameter, e.g: Time.zone = "US/Eastern" t = Time.zone.local(2016,5,2,11) # => Mon, 02 May 2016 11:00:00 EDT -04:00 t.localtime(-7200) # => 2016-05-02 13:00:00 -0200 t.localtime(-3600) # => 2016-05-02 14:00:00 -0100 --- activesupport/test/core_ext/time_with_zone_test.rb | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'activesupport/test') diff --git a/activesupport/test/core_ext/time_with_zone_test.rb b/activesupport/test/core_ext/time_with_zone_test.rb index e35aa6e154..5c940da1e3 100644 --- a/activesupport/test/core_ext/time_with_zone_test.rb +++ b/activesupport/test/core_ext/time_with_zone_test.rb @@ -54,6 +54,12 @@ class TimeWithZoneTest < ActiveSupport::TestCase assert_instance_of Time, @dt_twz.localtime end + def test_localtime_with_offset + assert_equal 0, @twz.localtime.gmt_offset + assert_equal (-3600), @twz.localtime(-3600).gmt_offset + assert_equal (-7200), @twz.localtime(-7200).gmt_offset + end + def test_utc? assert_equal false, @twz.utc? -- cgit v1.2.3