aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/test/core_ext/time_with_zone_test.rb
diff options
context:
space:
mode:
authorYves Senn <yves.senn@gmail.com>2013-03-18 16:24:40 +0100
committerYves Senn <yves.senn@gmail.com>2013-03-18 17:41:34 +0100
commit836ea9fb425dc012cb0f6d57fdc2d8a28fcccc05 (patch)
tree86750509ee081ca23b4e40cb19c0fa4a8adac0e6 /activesupport/test/core_ext/time_with_zone_test.rb
parentc4a7c31581c8386198317a2385f9c7d462c18497 (diff)
downloadrails-836ea9fb425dc012cb0f6d57fdc2d8a28fcccc05.tar.gz
rails-836ea9fb425dc012cb0f6d57fdc2d8a28fcccc05.tar.bz2
rails-836ea9fb425dc012cb0f6d57fdc2d8a28fcccc05.zip
`TimeWithZone` raises `NoMethodError` in proper context.
Closes #9772. `TimeWithZone` delegates everything to the wrapped `Time` object using `method_missing`. The result is that `NoMethodError` error will be raised in the context of `Time` which leads to a misleading debug output.
Diffstat (limited to 'activesupport/test/core_ext/time_with_zone_test.rb')
-rw-r--r--activesupport/test/core_ext/time_with_zone_test.rb8
1 files changed, 8 insertions, 0 deletions
diff --git a/activesupport/test/core_ext/time_with_zone_test.rb b/activesupport/test/core_ext/time_with_zone_test.rb
index 0f5699fd63..98a87ab9e6 100644
--- a/activesupport/test/core_ext/time_with_zone_test.rb
+++ b/activesupport/test/core_ext/time_with_zone_test.rb
@@ -779,6 +779,14 @@ class TimeWithZoneTest < ActiveSupport::TestCase
assert_equal "Sun, 15 Jul 2007 10:30:00 EDT -04:00", (twz - 1.year).inspect
end
+ def test_no_method_error_has_proper_context
+ e = assert_raises(NoMethodError) {
+ @twz.this_method_does_not_exist
+ }
+ assert_equal "undefined method `this_method_does_not_exist' for Fri, 31 Dec 1999 19:00:00 EST -05:00:Time", e.message
+ assert_no_match "rescue", e.backtrace.first
+ end
+
protected
def with_env_tz(new_tz = 'US/Eastern')
old_tz, ENV['TZ'] = ENV['TZ'], new_tz