Add extention to obtain the missing constant from NameError instances

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4679 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
Nicholas Seckar
2006-08-05 22:23:58 +00:00
parent 822527102f
commit 196fab9b0d
3 changed files with 44 additions and 0 deletions

View File

@@ -1,5 +1,7 @@
*SVN*
* Add extention to obtain the missing constant from NameError instances. [Nicholas Seckar]
* Thoroughly document inflections. #5700 [petermichaux@gmail.com]
* Added Module#alias_attribute [Jamis/DHH]. Example:

View File

@@ -0,0 +1,15 @@
# Add a +missing_name+ method to NameError instances.
class NameError < StandardError
# Add a method to obtain the missing name from a NameError.
def missing_name
$1 if /((::)?([A-Z]\w*)(::[A-Z]\w*)*)$/ =~ message
end
# Was this exception raised because the given name was missing?
def missing_name?(name)
missing_name == name.to_s
end
end

View File

@@ -0,0 +1,27 @@
require 'test/unit'
require File.dirname(__FILE__) + '/../../lib/active_support/core_ext/name_error'
class NameErrorTest < Test::Unit::TestCase
def test_name_error_should_set_missing_name
begin
SomeNameThatNobodyWillUse____Really ? 1 : 0
flunk "?!?!"
rescue NameError => exc
assert_equal "SomeNameThatNobodyWillUse____Really", exc.missing_name
assert exc.missing_name?(:SomeNameThatNobodyWillUse____Really)
assert exc.missing_name?("SomeNameThatNobodyWillUse____Really")
end
end
def test_missing_method_should_ignore_missing_name
begin
some_method_that_does_not_exist
flunk "?!?!"
rescue NameError => exc
assert_equal nil, exc.missing_name
assert ! exc.missing_name?(:Foo)
end
end
end