oj 3.13.21 → 3.13.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +2 -0
- data/ext/oj/custom.c +21 -40
- data/ext/oj/fast.c +15 -13
- data/ext/oj/intern.c +6 -9
- data/ext/oj/introspect.c +96 -0
- data/ext/oj/object.c +33 -32
- data/ext/oj/oj.c +9 -1
- data/ext/oj/oj.h +3 -0
- data/ext/oj/parser.c +26 -0
- data/ext/oj/parser.h +11 -0
- data/ext/oj/saj2.c +56 -62
- data/ext/oj/saj2.h +23 -0
- data/ext/oj/usual.c +82 -129
- data/ext/oj/usual.h +68 -0
- data/ext/oj/val_stack.c +1 -1
- data/lib/oj/state.rb +1 -1
- data/lib/oj/version.rb +1 -1
- data/test/json_gem/json_generator_test.rb +3 -4
- data/test/json_gem/json_parser_test.rb +1 -3
- data/test/test_custom.rb +9 -10
- data/test/test_file.rb +3 -10
- data/test/test_gc.rb +0 -2
- data/test/test_integer_range.rb +0 -6
- data/test/test_object.rb +3 -48
- data/test/test_parser.rb +3 -19
- data/test/test_parser_debug.rb +27 -0
- data/test/test_scp.rb +2 -4
- data/test/test_various.rb +2 -3
- data/test/tests.rb +9 -0
- data/test/tests_mimic.rb +9 -0
- data/test/tests_mimic_addition.rb +9 -0
- metadata +6 -2
data/test/test_custom.rb
CHANGED
@@ -260,8 +260,6 @@ class CustomJuice < Minitest::Test
|
|
260
260
|
end
|
261
261
|
|
262
262
|
def test_object
|
263
|
-
skip 'TruffleRuby fails this spec with `RuntimeError: rb_ivar_foreach not implemented`' if RUBY_ENGINE == 'truffleruby'
|
264
|
-
|
265
263
|
obj = Jeez.new(true, 58)
|
266
264
|
json = Oj.dump(obj, create_id: "^o", use_to_json: false, use_as_json: false, use_to_hash: false)
|
267
265
|
assert_equal(%|{"x":true,"y":58,"_z":"true"}|, json)
|
@@ -407,15 +405,11 @@ class CustomJuice < Minitest::Test
|
|
407
405
|
end
|
408
406
|
|
409
407
|
def test_range
|
410
|
-
skip 'TruffleRuby fails this spec' if RUBY_ENGINE == 'truffleruby'
|
411
|
-
|
412
408
|
obj = 3..8
|
413
409
|
dump_and_load(obj, false, :create_id => "^o", :create_additions => true)
|
414
410
|
end
|
415
411
|
|
416
412
|
def test_date
|
417
|
-
skip 'TruffleRuby causes SEGV' if RUBY_ENGINE == 'truffleruby'
|
418
|
-
|
419
413
|
obj = Date.new(2017, 1, 5)
|
420
414
|
dump_and_load(obj, false, :create_id => "^o", :create_additions => true)
|
421
415
|
end
|
@@ -445,8 +439,6 @@ class CustomJuice < Minitest::Test
|
|
445
439
|
end
|
446
440
|
|
447
441
|
def test_datetime
|
448
|
-
skip 'TruffleRuby causes SEGV' if RUBY_ENGINE == 'truffleruby'
|
449
|
-
|
450
442
|
obj = DateTime.new(2017, 1, 5, 10, 20, 30)
|
451
443
|
dump_and_load(obj, false, :create_id => "^o", :create_additions => true)
|
452
444
|
end
|
@@ -493,8 +485,15 @@ class CustomJuice < Minitest::Test
|
|
493
485
|
skip 'TruffleRuby fails this spec' if RUBY_ENGINE == 'truffleruby'
|
494
486
|
|
495
487
|
obj = Time.now()
|
496
|
-
|
497
|
-
|
488
|
+
# These two forms should be able to recreate the time precisely,
|
489
|
+
# so we check they can load a dumped version and recreate the
|
490
|
+
# original object correctly.
|
491
|
+
dump_and_load(obj, false, :time_format => :unix, :create_id => "^o", :create_additions => true)
|
492
|
+
dump_and_load(obj, false, :time_format => :unix_zone, :create_id => "^o", :create_additions => true)
|
493
|
+
# These two forms will lose precision while dumping as they don't
|
494
|
+
# preserve full precision. We check that a dumped version is equal
|
495
|
+
# to that version loaded and dumped a second time, but don't check
|
496
|
+
# that the loaded Ruby objects is still the same as the original.
|
498
497
|
dump_load_dump(obj, false, :time_format => :xmlschema, :create_id => "^o", :create_additions => true)
|
499
498
|
dump_load_dump(obj, false, :time_format => :ruby, :create_id => "^o", :create_additions => true)
|
500
499
|
end
|
data/test/test_file.rb
CHANGED
@@ -125,15 +125,12 @@ class FileJuice < Minitest::Test
|
|
125
125
|
|
126
126
|
# Time
|
127
127
|
def test_time_object
|
128
|
-
skip 'TruffleRuby fails this spec' if RUBY_ENGINE == 'truffleruby'
|
129
|
-
|
130
128
|
t = Time.now()
|
131
129
|
Oj.default_options = { :mode => :object, :time_format => :unix_zone }
|
132
130
|
dump_and_load(t, false)
|
133
131
|
end
|
134
132
|
def test_time_object_early
|
135
133
|
skip 'Windows does not support dates before 1970.' if RbConfig::CONFIG['host_os'] =~ /(mingw|mswin)/
|
136
|
-
skip 'TruffleRuby fails this spec' if RUBY_ENGINE == 'truffleruby'
|
137
134
|
|
138
135
|
t = Time.xmlschema("1954-01-05T00:00:00.123456")
|
139
136
|
Oj.default_options = { :mode => :object, :time_format => :unix_zone }
|
@@ -165,14 +162,10 @@ class FileJuice < Minitest::Test
|
|
165
162
|
def test_range_object
|
166
163
|
Oj.default_options = { :mode => :object }
|
167
164
|
json = Oj.dump(1..7, :mode => :object, :indent => 0)
|
168
|
-
if
|
169
|
-
assert(%{{"^O":"Range","begin":1,"end":7,"exclude_end?":false}} == json)
|
170
|
-
elsif 'jruby' == $ruby
|
171
|
-
assert(%{{"^O":"Range","begin":1,"end":7,"exclude_end?":false}} == json)
|
172
|
-
elsif 'truffleruby' == $ruby
|
173
|
-
assert(%{{"^O":"Range","begin":1,"end":7,"exclude_end?":false}} == json)
|
174
|
-
else
|
165
|
+
if $ruby == 'ruby'
|
175
166
|
assert_equal(%{{"^u":["Range",1,7,false]}}, json)
|
167
|
+
else
|
168
|
+
assert(%{{"^O":"Range","begin":1,"end":7,"exclude_end?":false}} == json)
|
176
169
|
end
|
177
170
|
dump_and_load(1..7, false)
|
178
171
|
dump_and_load(1..1, false)
|
data/test/test_gc.rb
CHANGED
@@ -43,8 +43,6 @@ class GCTest < Minitest::Test
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def test_parse_object_gc
|
46
|
-
skip 'TruffleRuby fails this spec with `RuntimeError: rb_ivar_foreach not implemented`' if RUBY_ENGINE == 'truffleruby'
|
47
|
-
|
48
46
|
g = Goo.new(0, nil)
|
49
47
|
100.times { |i| g = Goo.new(i, g) }
|
50
48
|
json = Oj.dump(g, :mode => :object)
|
data/test/test_integer_range.rb
CHANGED
@@ -23,24 +23,18 @@ class IntegerRangeTest < Minitest::Test
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def test_range
|
26
|
-
skip 'TruffleRuby fails this spec with `ArgumentError: :integer_range must be a range of Fixnum.`' if RUBY_ENGINE == 'truffleruby'
|
27
|
-
|
28
26
|
test = {s: 0, s2: -1, s3: 1, u: -2, u2: 2, u3: 9007199254740993}
|
29
27
|
exp = '{"s":0,"s2":-1,"s3":1,"u":"-2","u2":"2","u3":"9007199254740993"}'
|
30
28
|
assert_equal(exp, Oj.dump(test, integer_range: (-1..1)))
|
31
29
|
end
|
32
30
|
|
33
31
|
def test_bignum
|
34
|
-
skip 'TruffleRuby fails this spec with `ArgumentError: :integer_range must be a range of Fixnum.`' if RUBY_ENGINE == 'truffleruby'
|
35
|
-
|
36
32
|
test = {u: -10000000000000000000, u2: 10000000000000000000}
|
37
33
|
exp = '{"u":"-10000000000000000000","u2":"10000000000000000000"}'
|
38
34
|
assert_equal(exp, Oj.dump(test, integer_range: (-1..1)))
|
39
35
|
end
|
40
36
|
|
41
37
|
def test_valid_modes
|
42
|
-
skip 'TruffleRuby fails this spec with `ArgumentError: :integer_range must be a range of Fixnum.`' if RUBY_ENGINE == 'truffleruby'
|
43
|
-
|
44
38
|
test = {safe: 0, unsafe: 9007199254740993}
|
45
39
|
exp = '{"safe":0,"unsafe":"9007199254740993"}'
|
46
40
|
|
data/test/test_object.rb
CHANGED
@@ -221,13 +221,6 @@ class ObjectJuice < Minitest::Test
|
|
221
221
|
|
222
222
|
def teardown
|
223
223
|
Oj.default_options = @default_options
|
224
|
-
#=begin
|
225
|
-
if '3.1.0' <= RUBY_VERSION && !(RbConfig::CONFIG['host_os'] =~ /(mingw|mswin)/)
|
226
|
-
#Oj::debug_odd("teardown before GC.verify_compaction_references")
|
227
|
-
verify_gc_compaction
|
228
|
-
#Oj::debug_odd("teardown after GC.verify_compaction_references")
|
229
|
-
end
|
230
|
-
#=end
|
231
224
|
end
|
232
225
|
|
233
226
|
def test_nil
|
@@ -461,8 +454,6 @@ class ObjectJuice < Minitest::Test
|
|
461
454
|
end
|
462
455
|
|
463
456
|
def test_json_module_object
|
464
|
-
skip 'TruffleRuby fails this spec with `RuntimeError: rb_ivar_foreach not implemented`' if RUBY_ENGINE == 'truffleruby'
|
465
|
-
|
466
457
|
obj = One::Two::Three::Deep.new()
|
467
458
|
dump_and_load(obj, false)
|
468
459
|
end
|
@@ -633,15 +624,11 @@ class ObjectJuice < Minitest::Test
|
|
633
624
|
end
|
634
625
|
|
635
626
|
def test_json_object
|
636
|
-
skip 'TruffleRuby fails this spec with `RuntimeError: rb_ivar_foreach not implemented`' if RUBY_ENGINE == 'truffleruby'
|
637
|
-
|
638
627
|
obj = Jeez.new(true, 58)
|
639
628
|
dump_and_load(obj, false)
|
640
629
|
end
|
641
630
|
|
642
631
|
def test_json_object_create_deep
|
643
|
-
skip 'TruffleRuby fails this spec with `RuntimeError: rb_ivar_foreach not implemented`' if RUBY_ENGINE == 'truffleruby'
|
644
|
-
|
645
632
|
obj = One::Two::Three::Deep.new()
|
646
633
|
dump_and_load(obj, false)
|
647
634
|
end
|
@@ -678,8 +665,6 @@ class ObjectJuice < Minitest::Test
|
|
678
665
|
end
|
679
666
|
|
680
667
|
def test_json_anonymous_struct
|
681
|
-
skip 'TruffleRuby fails this spec with `TypeError: allocator undefined for Class`' if RUBY_ENGINE == 'truffleruby'
|
682
|
-
|
683
668
|
s = Struct.new(:x, :y)
|
684
669
|
obj = s.new(1, 2)
|
685
670
|
json = Oj.dump(obj, :indent => 2, :mode => :object)
|
@@ -702,8 +687,6 @@ class ObjectJuice < Minitest::Test
|
|
702
687
|
end
|
703
688
|
|
704
689
|
def test_json_object_object
|
705
|
-
skip 'TruffleRuby fails this spec with `RuntimeError: rb_ivar_foreach not implemented`' if RUBY_ENGINE == 'truffleruby'
|
706
|
-
|
707
690
|
obj = Jeez.new(true, 58)
|
708
691
|
json = Oj.dump(obj, mode: :object, indent: 2, ignore_under: true)
|
709
692
|
assert(%{{
|
@@ -723,8 +706,6 @@ class ObjectJuice < Minitest::Test
|
|
723
706
|
end
|
724
707
|
|
725
708
|
def test_to_hash_object_object
|
726
|
-
skip 'TruffleRuby fails this spec with `RuntimeError: rb_ivar_foreach not implemented`' if RUBY_ENGINE == 'truffleruby'
|
727
|
-
|
728
709
|
obj = Jazz.new(true, 58)
|
729
710
|
json = Oj.dump(obj, :mode => :object, :indent => 2)
|
730
711
|
assert(%{{
|
@@ -744,8 +725,6 @@ class ObjectJuice < Minitest::Test
|
|
744
725
|
end
|
745
726
|
|
746
727
|
def test_as_json_object_object
|
747
|
-
skip 'TruffleRuby fails this spec with `RuntimeError: rb_ivar_foreach not implemented`' if RUBY_ENGINE == 'truffleruby'
|
748
|
-
|
749
728
|
obj = Orange.new(true, 58)
|
750
729
|
json = Oj.dump(obj, :mode => :object, :indent => 2)
|
751
730
|
assert(%{{
|
@@ -765,8 +744,6 @@ class ObjectJuice < Minitest::Test
|
|
765
744
|
end
|
766
745
|
|
767
746
|
def test_object_object_no_cache
|
768
|
-
skip 'TruffleRuby fails this spec with `RuntimeError: rb_ivar_foreach not implemented`' if RUBY_ENGINE == 'truffleruby'
|
769
|
-
|
770
747
|
obj = Jam.new(true, 58)
|
771
748
|
json = Oj.dump(obj, :mode => :object, :indent => 2)
|
772
749
|
assert(%{{
|
@@ -795,8 +772,6 @@ class ObjectJuice < Minitest::Test
|
|
795
772
|
end
|
796
773
|
|
797
774
|
def test_exception
|
798
|
-
skip 'TruffleRuby fails this spec with `RuntimeError: rb_ivar_foreach not implemented`' if RUBY_ENGINE == 'truffleruby'
|
799
|
-
|
800
775
|
err = nil
|
801
776
|
begin
|
802
777
|
raise StandardError.new('A Message')
|
@@ -827,8 +802,6 @@ class ObjectJuice < Minitest::Test
|
|
827
802
|
end
|
828
803
|
|
829
804
|
def test_exception_subclass
|
830
|
-
skip 'TruffleRuby fails this spec with `RuntimeError: rb_ivar_foreach not implemented`' if RUBY_ENGINE == 'truffleruby'
|
831
|
-
|
832
805
|
err = nil
|
833
806
|
begin
|
834
807
|
raise SubX.new
|
@@ -848,12 +821,10 @@ class ObjectJuice < Minitest::Test
|
|
848
821
|
def test_range_object
|
849
822
|
Oj.default_options = { :mode => :object }
|
850
823
|
json = Oj.dump(1..7, :mode => :object, :indent => 0)
|
851
|
-
if '
|
852
|
-
assert(%{{"^O":"Range","begin":1,"end":7,"exclude_end?":false}} == json)
|
853
|
-
elsif 'truffleruby' == $ruby
|
854
|
-
assert(%{{"^O":"Range","begin":1,"end":7,"exclude_end?":false}} == json)
|
855
|
-
else
|
824
|
+
if 'ruby' == $ruby
|
856
825
|
assert_equal(%{{"^u":["Range",1,7,false]}}, json)
|
826
|
+
else
|
827
|
+
assert(%{{"^O":"Range","begin":1,"end":7,"exclude_end?":false}} == json)
|
857
828
|
end
|
858
829
|
dump_and_load(1..7, false)
|
859
830
|
dump_and_load(1..1, false)
|
@@ -917,8 +888,6 @@ class ObjectJuice < Minitest::Test
|
|
917
888
|
end
|
918
889
|
|
919
890
|
def test_circular_object
|
920
|
-
skip 'TruffleRuby fails this spec with `RuntimeError: rb_ivar_foreach not implemented`' if RUBY_ENGINE == 'truffleruby'
|
921
|
-
|
922
891
|
obj = Jeez.new(nil, 58)
|
923
892
|
obj.x = obj
|
924
893
|
json = Oj.dump(obj, :mode => :object, :indent => 2, :circular => true)
|
@@ -927,8 +896,6 @@ class ObjectJuice < Minitest::Test
|
|
927
896
|
end
|
928
897
|
|
929
898
|
def test_circular_object2
|
930
|
-
skip 'TruffleRuby fails this spec with `RuntimeError: rb_ivar_foreach not implemented`' if RUBY_ENGINE == 'truffleruby'
|
931
|
-
|
932
899
|
obj = Jam.new(nil, 58)
|
933
900
|
obj.x = obj
|
934
901
|
json = Oj.dump(obj, :mode => :object, :indent => 2, :circular => true)
|
@@ -951,8 +918,6 @@ class ObjectJuice < Minitest::Test
|
|
951
918
|
end
|
952
919
|
|
953
920
|
def test_circular
|
954
|
-
skip 'TruffleRuby fails this spec with `RuntimeError: rb_ivar_foreach not implemented`' if RUBY_ENGINE == 'truffleruby'
|
955
|
-
|
956
921
|
h = { 'a' => 7 }
|
957
922
|
obj = Jeez.new(h, 58)
|
958
923
|
obj.x['b'] = obj
|
@@ -963,8 +928,6 @@ class ObjectJuice < Minitest::Test
|
|
963
928
|
end
|
964
929
|
|
965
930
|
def test_circular2
|
966
|
-
skip 'TruffleRuby fails this spec with `RuntimeError: rb_ivar_foreach not implemented`' if RUBY_ENGINE == 'truffleruby'
|
967
|
-
|
968
931
|
h = { 'a' => 7 }
|
969
932
|
obj = Jam.new(h, 58)
|
970
933
|
obj.x['b'] = obj
|
@@ -977,8 +940,6 @@ class ObjectJuice < Minitest::Test
|
|
977
940
|
end
|
978
941
|
|
979
942
|
def test_omit_nil
|
980
|
-
skip 'TruffleRuby fails this spec with `RuntimeError: rb_ivar_foreach not implemented`' if RUBY_ENGINE == 'truffleruby'
|
981
|
-
|
982
943
|
jam = Jam.new({'a' => 1, 'b' => nil }, nil)
|
983
944
|
|
984
945
|
json = Oj.dump(jam, :omit_nil => true, :mode => :object)
|
@@ -1033,22 +994,16 @@ class ObjectJuice < Minitest::Test
|
|
1033
994
|
end
|
1034
995
|
|
1035
996
|
def test_auto_string
|
1036
|
-
skip 'TruffleRuby fails this spec with `RuntimeError: rb_ivar_foreach not implemented`' if RUBY_ENGINE == 'truffleruby'
|
1037
|
-
|
1038
997
|
s = AutoStrung.new("Pete", true)
|
1039
998
|
dump_and_load(s, false)
|
1040
999
|
end
|
1041
1000
|
|
1042
1001
|
def test_auto_array
|
1043
|
-
skip 'TruffleRuby fails this spec with `RuntimeError: rb_ivar_foreach not implemented`' if RUBY_ENGINE == 'truffleruby'
|
1044
|
-
|
1045
1002
|
a = AutoArray.new([1, 'abc', nil], true)
|
1046
1003
|
dump_and_load(a, false)
|
1047
1004
|
end
|
1048
1005
|
|
1049
1006
|
def test_auto_hash
|
1050
|
-
skip 'TruffleRuby fails this spec with `RuntimeError: rb_ivar_foreach not implemented`' if RUBY_ENGINE == 'truffleruby'
|
1051
|
-
|
1052
1007
|
h = AutoHash.new(nil, true)
|
1053
1008
|
h['a'] = 1
|
1054
1009
|
h['b'] = 2
|
data/test/test_parser.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
# encoding:
|
2
|
+
# encoding: UTF-8
|
3
3
|
|
4
4
|
$: << File.dirname(__FILE__)
|
5
5
|
$oj_dir = File.dirname(File.expand_path(File.dirname(__FILE__)))
|
@@ -7,21 +7,5 @@ $oj_dir = File.dirname(File.expand_path(File.dirname(__FILE__)))
|
|
7
7
|
$: << File.join($oj_dir, dir)
|
8
8
|
end
|
9
9
|
|
10
|
-
require '
|
11
|
-
require '
|
12
|
-
require 'stringio'
|
13
|
-
require 'date'
|
14
|
-
require 'bigdecimal'
|
15
|
-
require 'oj'
|
16
|
-
|
17
|
-
class ParserJuice < Minitest::Test
|
18
|
-
|
19
|
-
def test_array
|
20
|
-
p = Oj::Parser.new(:debug)
|
21
|
-
out = p.parse(%|[true, false, null, 123, -1.23, "abc"]|)
|
22
|
-
puts out
|
23
|
-
out = p.parse(%|{"abc": []}|)
|
24
|
-
puts out
|
25
|
-
end
|
26
|
-
|
27
|
-
end
|
10
|
+
require 'test_parser_usual'
|
11
|
+
require 'test_parser_saj'
|
@@ -0,0 +1,27 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
|
4
|
+
$: << File.dirname(__FILE__)
|
5
|
+
$oj_dir = File.dirname(File.expand_path(File.dirname(__FILE__)))
|
6
|
+
%w(lib ext).each do |dir|
|
7
|
+
$: << File.join($oj_dir, dir)
|
8
|
+
end
|
9
|
+
|
10
|
+
require 'minitest'
|
11
|
+
require 'minitest/autorun'
|
12
|
+
require 'stringio'
|
13
|
+
require 'date'
|
14
|
+
require 'bigdecimal'
|
15
|
+
require 'oj'
|
16
|
+
|
17
|
+
class ParserJuice < Minitest::Test
|
18
|
+
|
19
|
+
def test_array
|
20
|
+
p = Oj::Parser.new(:debug)
|
21
|
+
out = p.parse(%|[true, false, null, 123, -1.23, "abc"]|)
|
22
|
+
puts out
|
23
|
+
out = p.parse(%|{"abc": []}|)
|
24
|
+
puts out
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
data/test/test_scp.rb
CHANGED
@@ -320,8 +320,7 @@ class ScpTest < Minitest::Test
|
|
320
320
|
end
|
321
321
|
|
322
322
|
def test_pipe
|
323
|
-
skip '
|
324
|
-
skip 'TruffleRuby fails this spec with `NotImplementedError: fork is not available`' if RUBY_ENGINE == 'truffleruby'
|
323
|
+
skip 'needs fork' unless Process.respond_to?(:fork)
|
325
324
|
|
326
325
|
handler = AllHandler.new()
|
327
326
|
json = %{{"one":true,"two":false}}
|
@@ -357,8 +356,7 @@ class ScpTest < Minitest::Test
|
|
357
356
|
end
|
358
357
|
|
359
358
|
def test_pipe_close
|
360
|
-
skip '
|
361
|
-
skip 'TruffleRuby fails this spec with `NotImplementedError: fork is not available`' if RUBY_ENGINE == 'truffleruby'
|
359
|
+
skip 'needs fork' unless Process.respond_to?(:fork)
|
362
360
|
|
363
361
|
json = %{{"one":true,"two":false}}
|
364
362
|
IO.pipe do |read_io, write_io|
|
data/test/test_various.rb
CHANGED
@@ -559,9 +559,6 @@ class Juice < Minitest::Test
|
|
559
559
|
end
|
560
560
|
|
561
561
|
def test_io_file
|
562
|
-
# Windows does not support fork
|
563
|
-
return if RbConfig::CONFIG['host_os'] =~ /(mingw|mswin)/
|
564
|
-
|
565
562
|
src = { 'x' => true, 'y' => 58, 'z' => [1, 2, 3]}
|
566
563
|
filename = File.join(File.dirname(__FILE__), 'open_file_test.json')
|
567
564
|
File.open(filename, "w") { |f|
|
@@ -574,6 +571,8 @@ class Juice < Minitest::Test
|
|
574
571
|
end
|
575
572
|
|
576
573
|
def test_io_stream
|
574
|
+
skip 'needs fork' unless Process.respond_to?(:fork)
|
575
|
+
|
577
576
|
IO.pipe do |r, w|
|
578
577
|
if fork
|
579
578
|
r.close
|
data/test/tests.rb
CHANGED
@@ -22,3 +22,12 @@ require 'test_rails'
|
|
22
22
|
require 'test_wab'
|
23
23
|
require 'test_writer'
|
24
24
|
require 'test_integer_range'
|
25
|
+
|
26
|
+
at_exit do
|
27
|
+
require 'helper'
|
28
|
+
if '3.1.0' <= RUBY_VERSION && !(RbConfig::CONFIG['host_os'] =~ /(mingw|mswin)/)
|
29
|
+
#Oj::debug_odd("teardown before GC.verify_compaction_references")
|
30
|
+
verify_gc_compaction
|
31
|
+
#Oj::debug_odd("teardown after GC.verify_compaction_references")
|
32
|
+
end
|
33
|
+
end
|
data/test/tests_mimic.rb
CHANGED
@@ -12,3 +12,12 @@ require 'json_generator_test'
|
|
12
12
|
require 'json_generic_object_test'
|
13
13
|
require 'json_parser_test'
|
14
14
|
require 'json_string_matching_test'
|
15
|
+
|
16
|
+
at_exit do
|
17
|
+
require 'helper'
|
18
|
+
if '3.1.0' <= RUBY_VERSION && !(RbConfig::CONFIG['host_os'] =~ /(mingw|mswin)/)
|
19
|
+
#Oj::debug_odd("teardown before GC.verify_compaction_references")
|
20
|
+
verify_gc_compaction
|
21
|
+
#Oj::debug_odd("teardown after GC.verify_compaction_references")
|
22
|
+
end
|
23
|
+
end
|
@@ -5,3 +5,12 @@ $: << File.dirname(__FILE__)
|
|
5
5
|
$: << File.join(File.dirname(__FILE__), 'json_gem')
|
6
6
|
|
7
7
|
require 'json_addition_test'
|
8
|
+
|
9
|
+
at_exit do
|
10
|
+
require 'helper'
|
11
|
+
if '3.1.0' <= RUBY_VERSION && !(RbConfig::CONFIG['host_os'] =~ /(mingw|mswin)/)
|
12
|
+
#Oj::debug_odd("teardown before GC.verify_compaction_references")
|
13
|
+
verify_gc_compaction
|
14
|
+
#Oj::debug_odd("teardown after GC.verify_compaction_references")
|
15
|
+
end
|
16
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: oj
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.13.
|
4
|
+
version: 3.13.22
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Ohler
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-11-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake-compiler
|
@@ -110,6 +110,7 @@ files:
|
|
110
110
|
- ext/oj/fast.c
|
111
111
|
- ext/oj/intern.c
|
112
112
|
- ext/oj/intern.h
|
113
|
+
- ext/oj/introspect.c
|
113
114
|
- ext/oj/mimic_json.c
|
114
115
|
- ext/oj/object.c
|
115
116
|
- ext/oj/odd.c
|
@@ -130,6 +131,7 @@ files:
|
|
130
131
|
- ext/oj/rxclass.h
|
131
132
|
- ext/oj/saj.c
|
132
133
|
- ext/oj/saj2.c
|
134
|
+
- ext/oj/saj2.h
|
133
135
|
- ext/oj/scp.c
|
134
136
|
- ext/oj/sparse.c
|
135
137
|
- ext/oj/stream_writer.c
|
@@ -138,6 +140,7 @@ files:
|
|
138
140
|
- ext/oj/trace.c
|
139
141
|
- ext/oj/trace.h
|
140
142
|
- ext/oj/usual.c
|
143
|
+
- ext/oj/usual.h
|
141
144
|
- ext/oj/util.c
|
142
145
|
- ext/oj/util.h
|
143
146
|
- ext/oj/val_stack.c
|
@@ -257,6 +260,7 @@ files:
|
|
257
260
|
- test/test_null.rb
|
258
261
|
- test/test_object.rb
|
259
262
|
- test/test_parser.rb
|
263
|
+
- test/test_parser_debug.rb
|
260
264
|
- test/test_parser_saj.rb
|
261
265
|
- test/test_parser_usual.rb
|
262
266
|
- test/test_rails.rb
|