aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--activesupport/lib/active_support/values/time_zone.rb6
-rw-r--r--activesupport/test/core_ext/time_with_zone_test.rb4
-rw-r--r--activesupport/test/time_zone_test.rb2
3 files changed, 7 insertions, 5 deletions
diff --git a/activesupport/lib/active_support/values/time_zone.rb b/activesupport/lib/active_support/values/time_zone.rb
index 0a08016522..05b40298d3 100644
--- a/activesupport/lib/active_support/values/time_zone.rb
+++ b/activesupport/lib/active_support/values/time_zone.rb
@@ -350,7 +350,11 @@ module ActiveSupport
def [](arg)
case arg
when String
- zones_map[arg] ||= lookup(arg)
+ begin
+ zones_map[arg] ||= lookup(arg).tap { |tz| tz.utc_offset }
+ rescue TZInfo::InvalidTimezoneIdentifier
+ nil
+ end
when Numeric, ActiveSupport::Duration
arg *= 3600 if arg.abs <= 13
all.find { |z| z.utc_offset == arg.to_i }
diff --git a/activesupport/test/core_ext/time_with_zone_test.rb b/activesupport/test/core_ext/time_with_zone_test.rb
index cf11f4d28f..5ce4277672 100644
--- a/activesupport/test/core_ext/time_with_zone_test.rb
+++ b/activesupport/test/core_ext/time_with_zone_test.rb
@@ -832,9 +832,7 @@ class TimeWithZoneMethodsForTimeAndDateTimeTest < Test::Unit::TestCase
def test_time_zone_setter_with_invalid_zone
Time.zone = 'foo'
- assert_not_nil Time.zone
- assert_equal 'foo', Time.zone.name
- assert_raise(TZInfo::InvalidTimezoneIdentifier) { Time.zone.utc_offset }
+ assert_nil Time.zone
Time.zone = -15.hours
assert_nil Time.zone
diff --git a/activesupport/test/time_zone_test.rb b/activesupport/test/time_zone_test.rb
index 922449988b..af6eee69e5 100644
--- a/activesupport/test/time_zone_test.rb
+++ b/activesupport/test/time_zone_test.rb
@@ -268,7 +268,7 @@ class TimeZoneTest < Test::Unit::TestCase
end
def test_index
- assert_not_nil ActiveSupport::TimeZone["bogus"]
+ assert_nil ActiveSupport::TimeZone["bogus"]
assert_instance_of ActiveSupport::TimeZone, ActiveSupport::TimeZone["Central Time (US & Canada)"]
assert_instance_of ActiveSupport::TimeZone, ActiveSupport::TimeZone[8]
assert_raise(ArgumentError) { ActiveSupport::TimeZone[false] }