diff options
author | Florian Frank <flori@ping.de> | 2016-02-25 00:13:04 +0100 |
---|---|---|
committer | Florian Frank <flori@ping.de> | 2016-02-25 00:13:04 +0100 |
commit | bc33e102a6b8babc38f735ce22c973bd59c4588b (patch) | |
tree | f101193f4516300cc05e8e77662244ef2959c75c /tests | |
parent | 5fd6c4e168005c68995a97ef436725a01c42dfd9 (diff) | |
download | json-bc33e102a6b8babc38f735ce22c973bd59c4588b.tar.gz |
Add missing tests
Diffstat (limited to 'tests')
-rwxr-xr-x | tests/test_json_generate.rb | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/test_json_generate.rb b/tests/test_json_generate.rb index 8db0b78..3dea970 100755 --- a/tests/test_json_generate.rb +++ b/tests/test_json_generate.rb @@ -1,5 +1,6 @@ #!/usr/bin/env ruby # encoding: utf-8 +# frozen_string_literal: false require 'test/unit' require File.join(File.dirname(__FILE__), 'setup_variant') @@ -334,4 +335,27 @@ EOT assert_equal true, JSON.generate(["\xea"]) end end + + def test_string_subclass + s = Class.new(String) do + def to_s; self; end + undef to_json + end + assert_nothing_raised(SystemStackError) do + assert_equal '[""]', JSON.generate([s.new]) + end + end + + if EnvUtil.gc_stress_to_class? + def assert_no_memory_leak(code, *rest, **opt) + code = "8.times {20_000.times {begin #{code}; rescue NoMemoryError; end}; GC.start}" + super(["-rjson/ext/generator"], + "GC.add_stress_to_class(JSON::Ext::Generator::State); "\ + "#{code}", code, *rest, rss: true, limit: 1.1, **opt) + end + + def test_no_memory_leak_allocate + assert_no_memory_leak("JSON::Ext::Generator::State.allocate") + end + end end |