diff options
-rw-r--r-- | ext/json/lib/json/common.rb | 7 | ||||
-rwxr-xr-x | test/json/json_generator_test.rb | 8 |
2 files changed, 13 insertions, 2 deletions
diff --git a/ext/json/lib/json/common.rb b/ext/json/lib/json/common.rb index 3f1e5ce969..9094df00a5 100644 --- a/ext/json/lib/json/common.rb +++ b/ext/json/lib/json/common.rb @@ -152,10 +152,13 @@ module JSON end def detailed_message(...) + # Exception#detailed_message doesn't exist until Ruby 3.2 + super_message = defined?(super) ? super : message + if @invalid_object.nil? - super + super_message else - "#{super}\nInvalid object: #{@invalid_object.inspect}" + "#{super_message}\nInvalid object: #{@invalid_object.inspect}" end end end diff --git a/test/json/json_generator_test.rb b/test/json/json_generator_test.rb index c67cd3349c..4a92801fe1 100755 --- a/test/json/json_generator_test.rb +++ b/test/json/json_generator_test.rb @@ -410,6 +410,14 @@ class JSONGeneratorTest < Test::Unit::TestCase end end + def test_json_generate_error_detailed_message + error = assert_raise JSON::GeneratorError do + generate(["\xea"]) + end + + assert_not_nil(error.detailed_message) + end + def test_json_generate_unsupported_types assert_raise JSON::GeneratorError do generate(Object.new, strict: true) |