diff options
Diffstat (limited to 'test/did_you_mean/core_ext')
-rw-r--r-- | test/did_you_mean/core_ext/test_name_error_extension.rb | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/test/did_you_mean/core_ext/test_name_error_extension.rb b/test/did_you_mean/core_ext/test_name_error_extension.rb new file mode 100644 index 0000000000..dc571a8f4c --- /dev/null +++ b/test/did_you_mean/core_ext/test_name_error_extension.rb @@ -0,0 +1,48 @@ +require_relative '../helper' + +class NameErrorExtensionTest < Test::Unit::TestCase + SPELL_CHECKERS = DidYouMean::SPELL_CHECKERS + + class TestSpellChecker + def initialize(*); end + def corrections; ["does_exist"]; end + end + + def setup + @org, SPELL_CHECKERS['NameError'] = SPELL_CHECKERS['NameError'], TestSpellChecker + + @error = assert_raise(NameError){ doesnt_exist } + end + + def teardown + SPELL_CHECKERS['NameError'] = @org + end + + def test_message + assert_match(/Did you mean\? does_exist/, @error.to_s) + assert_match(/Did you mean\? does_exist/, @error.message) + end + + def test_to_s_does_not_make_disruptive_changes_to_error_message + error = assert_raise(NameError) do + raise NameError, "uninitialized constant Object" + end + + error.to_s + assert_equal 1, error.to_s.scan("Did you mean?").count + end + + def test_correctable_error_objects_are_dumpable + error = + begin + Dir.chdir(__dir__) { File.open('test_name_error_extension.rb').sizee } + rescue NoMethodError => e + e + end + + error.to_s + + assert_equal "undefined method `sizee' for #<File:test_name_error_extension.rb>", + Marshal.load(Marshal.dump(error)).original_message + end +end |