diff options
author | Jean Boussier <[email protected]> | 2024-11-05 19:57:46 +0100 |
---|---|---|
committer | Hiroshi SHIBATA <[email protected]> | 2024-11-26 15:11:05 +0900 |
commit | ee0de3fd4e02f95f42fd3fe9cb18bcfe3e7e2bf1 (patch) | |
tree | 4063efad59cae2b049ad2261e86bcffba78aca6e /test/json/json_common_interface_test.rb | |
parent | 519701657fad62799045f6230f79de1941cc3c76 (diff) |
[ruby/json] JSON.dump: write directly into the provided IO
Ref: https://github.com/ruby/json/issues/524
Rather than to buffer everything in memory.
Unfortunately Ruby doesn't provide an API to write into
and IO without first allocating a string, which is a bit
wasteful.
https://github.com/ruby/json/commit/f017af6c0a
Diffstat (limited to 'test/json/json_common_interface_test.rb')
-rw-r--r-- | test/json/json_common_interface_test.rb | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/test/json/json_common_interface_test.rb b/test/json/json_common_interface_test.rb index a5d62337e1..1f157da026 100644 --- a/test/json/json_common_interface_test.rb +++ b/test/json/json_common_interface_test.rb @@ -162,6 +162,17 @@ class JSONCommonInterfaceTest < Test::Unit::TestCase assert_equal too_deep, dump(obj, strict: false) end + def test_dump_in_io + io = StringIO.new + assert_same io, JSON.dump([1], io) + assert_equal "[1]", io.string + + big_object = ["a" * 10, "b" * 40, { foo: 1.23 }] * 5000 + io.rewind + assert_same io, JSON.dump(big_object, io) + assert_equal JSON.dump(big_object), io.string + end + def test_dump_should_modify_defaults max_nesting = JSON.dump_default_options[:max_nesting] dump([], StringIO.new, 10) |