Skip to content

Commit bc33e10

Browse files
committed
Add missing tests
1 parent 5fd6c4e commit bc33e10

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

tests/test_json_generate.rb

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#!/usr/bin/env ruby
22
# encoding: utf-8
3+
# frozen_string_literal: false
34

45
require 'test/unit'
56
require File.join(File.dirname(__FILE__), 'setup_variant')
@@ -334,4 +335,27 @@ def test_json_generate
334335
assert_equal true, JSON.generate(["\xea"])
335336
end
336337
end
338+
339+
def test_string_subclass
340+
s = Class.new(String) do
341+
def to_s; self; end
342+
undef to_json
343+
end
344+
assert_nothing_raised(SystemStackError) do
345+
assert_equal '[""]', JSON.generate([s.new])
346+
end
347+
end
348+
349+
if EnvUtil.gc_stress_to_class?
350+
def assert_no_memory_leak(code, *rest, **opt)
351+
code = "8.times {20_000.times {begin #{code}; rescue NoMemoryError; end}; GC.start}"
352+
super(["-rjson/ext/generator"],
353+
"GC.add_stress_to_class(JSON::Ext::Generator::State); "\
354+
"#{code}", code, *rest, rss: true, limit: 1.1, **opt)
355+
end
356+
357+
def test_no_memory_leak_allocate
358+
assert_no_memory_leak("JSON::Ext::Generator::State.allocate")
359+
end
360+
end
337361
end

0 commit comments

Comments
 (0)