summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/json/lib/json/common.rb7
-rwxr-xr-xtest/json/json_generator_test.rb8
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)