oj 3.16.9 → 3.16.10

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.
Files changed (108) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/ext/oj/fast.c +3 -6
  4. data/ext/oj/mimic_json.c +3 -6
  5. data/ext/oj/oj.c +2 -4
  6. data/ext/oj/parse.c +15 -5
  7. data/ext/oj/parser.c +1 -1
  8. data/ext/oj/parser.h +2 -0
  9. data/ext/oj/rails.c +1 -2
  10. data/ext/oj/saj.c +3 -6
  11. data/ext/oj/scp.c +3 -6
  12. data/ext/oj/stream_writer.c +1 -7
  13. data/ext/oj/strict.c +2 -4
  14. data/ext/oj/string_writer.c +1 -3
  15. data/lib/oj/version.rb +1 -1
  16. metadata +3 -98
  17. data/test/_test_active.rb +0 -75
  18. data/test/_test_active_mimic.rb +0 -95
  19. data/test/_test_mimic_rails.rb +0 -123
  20. data/test/activerecord/result_test.rb +0 -31
  21. data/test/activesupport6/abstract_unit.rb +0 -44
  22. data/test/activesupport6/decoding_test.rb +0 -133
  23. data/test/activesupport6/encoding_test.rb +0 -542
  24. data/test/activesupport6/encoding_test_cases.rb +0 -98
  25. data/test/activesupport6/test_common.rb +0 -17
  26. data/test/activesupport6/test_helper.rb +0 -163
  27. data/test/activesupport6/time_zone_test_helpers.rb +0 -39
  28. data/test/activesupport7/abstract_unit.rb +0 -52
  29. data/test/activesupport7/decoding_test.rb +0 -125
  30. data/test/activesupport7/encoding_test.rb +0 -536
  31. data/test/activesupport7/encoding_test_cases.rb +0 -104
  32. data/test/activesupport7/time_zone_test_helpers.rb +0 -47
  33. data/test/files.rb +0 -29
  34. data/test/foo.rb +0 -26
  35. data/test/helper.rb +0 -39
  36. data/test/isolated/shared.rb +0 -309
  37. data/test/isolated/test_mimic_after.rb +0 -13
  38. data/test/isolated/test_mimic_alone.rb +0 -12
  39. data/test/isolated/test_mimic_as_json.rb +0 -45
  40. data/test/isolated/test_mimic_before.rb +0 -13
  41. data/test/isolated/test_mimic_define.rb +0 -28
  42. data/test/isolated/test_mimic_rails_after.rb +0 -22
  43. data/test/isolated/test_mimic_rails_before.rb +0 -21
  44. data/test/isolated/test_mimic_redefine.rb +0 -15
  45. data/test/json_gem/json_addition_test.rb +0 -216
  46. data/test/json_gem/json_common_interface_test.rb +0 -155
  47. data/test/json_gem/json_encoding_test.rb +0 -107
  48. data/test/json_gem/json_ext_parser_test.rb +0 -21
  49. data/test/json_gem/json_fixtures_test.rb +0 -36
  50. data/test/json_gem/json_generator_test.rb +0 -413
  51. data/test/json_gem/json_generic_object_test.rb +0 -90
  52. data/test/json_gem/json_parser_test.rb +0 -477
  53. data/test/json_gem/json_string_matching_test.rb +0 -42
  54. data/test/json_gem/test_helper.rb +0 -30
  55. data/test/mem.rb +0 -34
  56. data/test/perf.rb +0 -102
  57. data/test/perf_compat.rb +0 -128
  58. data/test/perf_dump.rb +0 -50
  59. data/test/perf_fast.rb +0 -162
  60. data/test/perf_file.rb +0 -62
  61. data/test/perf_object.rb +0 -134
  62. data/test/perf_once.rb +0 -59
  63. data/test/perf_parser.rb +0 -183
  64. data/test/perf_saj.rb +0 -101
  65. data/test/perf_scp.rb +0 -140
  66. data/test/perf_simple.rb +0 -289
  67. data/test/perf_strict.rb +0 -137
  68. data/test/perf_wab.rb +0 -129
  69. data/test/prec.rb +0 -23
  70. data/test/sample/change.rb +0 -13
  71. data/test/sample/dir.rb +0 -18
  72. data/test/sample/doc.rb +0 -35
  73. data/test/sample/file.rb +0 -47
  74. data/test/sample/group.rb +0 -15
  75. data/test/sample/hasprops.rb +0 -15
  76. data/test/sample/layer.rb +0 -11
  77. data/test/sample/line.rb +0 -20
  78. data/test/sample/oval.rb +0 -10
  79. data/test/sample/rect.rb +0 -9
  80. data/test/sample/shape.rb +0 -34
  81. data/test/sample/text.rb +0 -19
  82. data/test/sample.rb +0 -54
  83. data/test/sample_json.rb +0 -37
  84. data/test/test_compat.rb +0 -567
  85. data/test/test_custom.rb +0 -555
  86. data/test/test_debian.rb +0 -50
  87. data/test/test_fast.rb +0 -526
  88. data/test/test_file.rb +0 -250
  89. data/test/test_gc.rb +0 -60
  90. data/test/test_generate.rb +0 -21
  91. data/test/test_hash.rb +0 -39
  92. data/test/test_integer_range.rb +0 -72
  93. data/test/test_null.rb +0 -376
  94. data/test/test_object.rb +0 -1030
  95. data/test/test_parser.rb +0 -11
  96. data/test/test_parser_debug.rb +0 -27
  97. data/test/test_parser_saj.rb +0 -337
  98. data/test/test_parser_usual.rb +0 -255
  99. data/test/test_rails.rb +0 -35
  100. data/test/test_saj.rb +0 -188
  101. data/test/test_scp.rb +0 -431
  102. data/test/test_strict.rb +0 -441
  103. data/test/test_various.rb +0 -801
  104. data/test/test_wab.rb +0 -311
  105. data/test/test_writer.rb +0 -396
  106. data/test/tests.rb +0 -33
  107. data/test/tests_mimic.rb +0 -23
  108. data/test/tests_mimic_addition.rb +0 -16
@@ -1,163 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- gem "minitest" # make sure we get the gem, not stdlib
4
- require "minitest"
5
- require "active_support/testing/tagged_logging"
6
- require "active_support/testing/setup_and_teardown"
7
- require "active_support/testing/assertions"
8
- require "active_support/testing/deprecation"
9
- require "active_support/testing/declarative"
10
- require "active_support/testing/isolation"
11
- require "active_support/testing/constant_lookup"
12
- require "active_support/testing/time_helpers"
13
- require "active_support/testing/file_fixtures"
14
- require "active_support/testing/parallelization"
15
- require "concurrent/utility/processor_counter"
16
-
17
- module ActiveSupport
18
- class TestCase < ::Minitest::Test
19
- Assertion = Minitest::Assertion
20
-
21
- class << self
22
- # Sets the order in which test cases are run.
23
- #
24
- # ActiveSupport::TestCase.test_order = :random # => :random
25
- #
26
- # Valid values are:
27
- # * +:random+ (to run tests in random order)
28
- # * +:parallel+ (to run tests in parallel)
29
- # * +:sorted+ (to run tests alphabetically by method name)
30
- # * +:alpha+ (equivalent to +:sorted+)
31
- def test_order=(new_order)
32
- ActiveSupport.test_order = new_order
33
- end
34
-
35
- # Returns the order in which test cases are run.
36
- #
37
- # ActiveSupport::TestCase.test_order # => :random
38
- #
39
- # Possible values are +:random+, +:parallel+, +:alpha+, +:sorted+.
40
- # Defaults to +:random+.
41
- def test_order
42
- ActiveSupport.test_order ||= :random
43
- end
44
-
45
- # Parallelizes the test suite.
46
- #
47
- # Takes a +workers+ argument that controls how many times the process
48
- # is forked. For each process a new database will be created suffixed
49
- # with the worker number.
50
- #
51
- # test-database-0
52
- # test-database-1
53
- #
54
- # If <tt>ENV["PARALLEL_WORKERS"]</tt> is set the workers argument will be ignored
55
- # and the environment variable will be used instead. This is useful for CI
56
- # environments, or other environments where you may need more workers than
57
- # you do for local testing.
58
- #
59
- # If the number of workers is set to +1+ or fewer, the tests will not be
60
- # parallelized.
61
- #
62
- # If +workers+ is set to +:number_of_processors+, the number of workers will be
63
- # set to the actual core count on the machine you are on.
64
- #
65
- # The default parallelization method is to fork processes. If you'd like to
66
- # use threads instead you can pass <tt>with: :threads</tt> to the +parallelize+
67
- # method. Note the threaded parallelization does not create multiple
68
- # database and will not work with system tests at this time.
69
- #
70
- # parallelize(workers: :number_of_processors, with: :threads)
71
- #
72
- # The threaded parallelization uses minitest's parallel executor directly.
73
- # The processes parallelization uses a Ruby DRb server.
74
- def parallelize(workers: :number_of_processors, with: :processes)
75
- workers = Concurrent.physical_processor_count if workers == :number_of_processors
76
- workers = ENV["PARALLEL_WORKERS"].to_i if ENV["PARALLEL_WORKERS"]
77
-
78
- return if workers <= 1
79
-
80
- executor = case with
81
- when :processes
82
- Testing::Parallelization.new(workers)
83
- when :threads
84
- Minitest::Parallel::Executor.new(workers)
85
- else
86
- raise ArgumentError, "#{with} is not a supported parallelization executor."
87
- end
88
-
89
- self.lock_threads = false if defined?(self.lock_threads) && with == :threads
90
-
91
- Minitest.parallel_executor = executor
92
-
93
- parallelize_me!
94
- end
95
-
96
- # Set up hook for parallel testing. This can be used if you have multiple
97
- # databases or any behavior that needs to be run after the process is forked
98
- # but before the tests run.
99
- #
100
- # Note: this feature is not available with the threaded parallelization.
101
- #
102
- # In your +test_helper.rb+ add the following:
103
- #
104
- # class ActiveSupport::TestCase
105
- # parallelize_setup do
106
- # # create databases
107
- # end
108
- # end
109
- def parallelize_setup(&block)
110
- ActiveSupport::Testing::Parallelization.after_fork_hook do |worker|
111
- yield worker
112
- end
113
- end
114
-
115
- # Clean up hook for parallel testing. This can be used to drop databases
116
- # if your app uses multiple write/read databases or other clean up before
117
- # the tests finish. This runs before the forked process is closed.
118
- #
119
- # Note: this feature is not available with the threaded parallelization.
120
- #
121
- # In your +test_helper.rb+ add the following:
122
- #
123
- # class ActiveSupport::TestCase
124
- # parallelize_teardown do
125
- # # drop databases
126
- # end
127
- # end
128
- def parallelize_teardown(&block)
129
- ActiveSupport::Testing::Parallelization.run_cleanup_hook do |worker|
130
- yield worker
131
- end
132
- end
133
- end
134
-
135
- alias_method :method_name, :name
136
-
137
- include ActiveSupport::Testing::TaggedLogging
138
- prepend ActiveSupport::Testing::SetupAndTeardown
139
- include ActiveSupport::Testing::Assertions
140
- include ActiveSupport::Testing::Deprecation
141
- include ActiveSupport::Testing::TimeHelpers
142
- include ActiveSupport::Testing::FileFixtures
143
- extend ActiveSupport::Testing::Declarative
144
-
145
- # test/unit backwards compatibility methods
146
- alias :assert_raise :assert_raises
147
- alias :assert_not_empty :refute_empty
148
- alias :assert_not_equal :refute_equal
149
- alias :assert_not_in_delta :refute_in_delta
150
- alias :assert_not_in_epsilon :refute_in_epsilon
151
- alias :assert_not_includes :refute_includes
152
- alias :assert_not_instance_of :refute_instance_of
153
- alias :assert_not_kind_of :refute_kind_of
154
- alias :assert_no_match :refute_match
155
- alias :assert_not_nil :refute_nil
156
- alias :assert_not_operator :refute_operator
157
- alias :assert_not_predicate :refute_predicate
158
- alias :assert_not_respond_to :refute_respond_to
159
- alias :assert_not_same :refute_same
160
-
161
- ActiveSupport.run_load_hooks(:active_support_test_case, self)
162
- end
163
- end
@@ -1,39 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module TimeZoneTestHelpers
4
- def with_tz_default(tz = nil)
5
- old_tz = Time.zone
6
- Time.zone = tz
7
- yield
8
- ensure
9
- Time.zone = old_tz
10
- end
11
-
12
- def with_env_tz(new_tz = "US/Eastern")
13
- old_tz, ENV["TZ"] = ENV["TZ"], new_tz
14
- yield
15
- ensure
16
- old_tz ? ENV["TZ"] = old_tz : ENV.delete("TZ")
17
- end
18
-
19
- def with_preserve_timezone(value)
20
- old_preserve_tz = ActiveSupport.to_time_preserves_timezone
21
- ActiveSupport.to_time_preserves_timezone = value
22
- yield
23
- ensure
24
- ActiveSupport.to_time_preserves_timezone = old_preserve_tz
25
- end
26
-
27
- def with_tz_mappings(mappings)
28
- old_mappings = ActiveSupport::TimeZone::MAPPING.dup
29
- ActiveSupport::TimeZone.clear
30
- ActiveSupport::TimeZone::MAPPING.clear
31
- ActiveSupport::TimeZone::MAPPING.merge!(mappings)
32
-
33
- yield
34
- ensure
35
- ActiveSupport::TimeZone.clear
36
- ActiveSupport::TimeZone::MAPPING.clear
37
- ActiveSupport::TimeZone::MAPPING.merge!(old_mappings)
38
- end
39
- end
@@ -1,52 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- ORIG_ARGV = ARGV.dup
4
-
5
- require "bundler/setup"
6
- require "active_support/core_ext/kernel/reporting"
7
-
8
- silence_warnings do
9
- Encoding.default_internal = Encoding::UTF_8
10
- Encoding.default_external = Encoding::UTF_8
11
- end
12
-
13
- require "active_support/testing/autorun"
14
- require "active_support/testing/method_call_assertions"
15
-
16
- ENV["NO_RELOAD"] = "1"
17
- require "active_support"
18
-
19
- Thread.abort_on_exception = true
20
-
21
- # Show backtraces for deprecated behavior for quicker cleanup.
22
- if ActiveSupport::Deprecation.respond_to?(:debug)
23
- # Rails 7.2 does not have ActiveSupport::Deprecation.debug
24
- ActiveSupport::Deprecation.debug = true
25
- end
26
-
27
- # Default to old to_time behavior but allow running tests with new behavior
28
- ActiveSupport.to_time_preserves_timezone = ENV["PRESERVE_TIMEZONES"] == "1"
29
-
30
- # Disable available locale checks to avoid warnings running the test suite.
31
- I18n.enforce_available_locales = false
32
-
33
- class ActiveSupport::TestCase
34
- if Process.respond_to?(:fork) && !Gem.win_platform?
35
- parallelize
36
- else
37
- parallelize(with: :threads)
38
- end
39
-
40
- include ActiveSupport::Testing::MethodCallAssertions
41
-
42
- private
43
- # Skips the current run on Rubinius using Minitest::Assertions#skip
44
- def rubinius_skip(message = "")
45
- skip message if RUBY_ENGINE == "rbx"
46
- end
47
-
48
- # Skips the current run on JRuby using Minitest::Assertions#skip
49
- def jruby_skip(message = "")
50
- skip message if defined?(JRUBY_VERSION)
51
- end
52
- end
@@ -1,125 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "abstract_unit"
4
- require "active_support/json"
5
- require "active_support/time"
6
- require_relative "time_zone_test_helpers"
7
-
8
- class TestJSONDecoding < ActiveSupport::TestCase
9
- include TimeZoneTestHelpers
10
-
11
- class Foo
12
- def self.json_create(object)
13
- "Foo"
14
- end
15
- end
16
-
17
- TESTS = {
18
- %q({"returnTo":{"\/categories":"\/"}}) => { "returnTo" => { "/categories" => "/" } },
19
- %q({"return\\"To\\":":{"\/categories":"\/"}}) => { "return\"To\":" => { "/categories" => "/" } },
20
- %q({"returnTo":{"\/categories":1}}) => { "returnTo" => { "/categories" => 1 } },
21
- %({"returnTo":[1,"a"]}) => { "returnTo" => [1, "a"] },
22
- %({"returnTo":[1,"\\"a\\",", "b"]}) => { "returnTo" => [1, "\"a\",", "b"] },
23
- %({"a": "'", "b": "5,000"}) => { "a" => "'", "b" => "5,000" },
24
- %({"a": "a's, b's and c's", "b": "5,000"}) => { "a" => "a's, b's and c's", "b" => "5,000" },
25
- # multibyte
26
- %({"matzue": "松江", "asakusa": "浅草"}) => { "matzue" => "松江", "asakusa" => "浅草" },
27
- %({"a": "2007-01-01"}) => { "a" => Date.new(2007, 1, 1) },
28
- %({"a": "2007-01-01 01:12:34 Z"}) => { "a" => Time.utc(2007, 1, 1, 1, 12, 34) },
29
- %(["2007-01-01 01:12:34 Z"]) => [Time.utc(2007, 1, 1, 1, 12, 34)],
30
- %(["2007-01-01 01:12:34 Z", "2007-01-01 01:12:35 Z"]) => [Time.utc(2007, 1, 1, 1, 12, 34), Time.utc(2007, 1, 1, 1, 12, 35)],
31
- # no time zone
32
- %({"a": "2007-01-01 01:12:34"}) => { "a" => Time.new(2007, 1, 1, 1, 12, 34, "-05:00") },
33
- # invalid date
34
- %({"a": "1089-10-40"}) => { "a" => "1089-10-40" },
35
- # xmlschema date notation
36
- %({"a": "2009-08-10T19:01:02"}) => { "a" => Time.new(2009, 8, 10, 19, 1, 2, "-04:00") },
37
- %({"a": "2009-08-10T19:01:02Z"}) => { "a" => Time.utc(2009, 8, 10, 19, 1, 2) },
38
- %({"a": "2009-08-10T19:01:02+02:00"}) => { "a" => Time.utc(2009, 8, 10, 17, 1, 2) },
39
- %({"a": "2009-08-10T19:01:02-05:00"}) => { "a" => Time.utc(2009, 8, 11, 00, 1, 2) },
40
- # needs to be *exact*
41
- %({"a": " 2007-01-01 01:12:34 Z "}) => { "a" => " 2007-01-01 01:12:34 Z " },
42
- %({"a": "2007-01-01 : it's your birthday"}) => { "a" => "2007-01-01 : it's your birthday" },
43
- %({"a": "Today is:\\n2020-05-21"}) => { "a" => "Today is:\n2020-05-21" },
44
- %({"a": "2007-01-01 01:12:34 Z\\nwas my birthday"}) => { "a" => "2007-01-01 01:12:34 Z\nwas my birthday" },
45
- %([]) => [],
46
- %({}) => {},
47
- %({"a":1}) => { "a" => 1 },
48
- %({"a": ""}) => { "a" => "" },
49
- %({"a":"\\""}) => { "a" => "\"" },
50
- %({"a": null}) => { "a" => nil },
51
- %({"a": true}) => { "a" => true },
52
- %({"a": false}) => { "a" => false },
53
- '{"bad":"\\\\","trailing":""}' => { "bad" => "\\", "trailing" => "" },
54
- %q({"a": "http:\/\/test.host\/posts\/1"}) => { "a" => "http://test.host/posts/1" },
55
- %q({"a": "\u003cunicode\u0020escape\u003e"}) => { "a" => "<unicode escape>" },
56
- '{"a": "\\\\u0020skip double backslashes"}' => { "a" => "\\u0020skip double backslashes" },
57
- %q({"a": "\u003cbr /\u003e"}) => { "a" => "<br />" },
58
- %q({"b":["\u003ci\u003e","\u003cb\u003e","\u003cu\u003e"]}) => { "b" => ["<i>", "<b>", "<u>"] },
59
- # test combination of dates and escaped or unicode encoded data in arrays
60
- %q([{"d":"1970-01-01", "s":"\u0020escape"},{"d":"1970-01-01", "s":"\u0020escape"}]) =>
61
- [{ "d" => Date.new(1970, 1, 1), "s" => " escape" }, { "d" => Date.new(1970, 1, 1), "s" => " escape" }],
62
- %q([{"d":"1970-01-01","s":"http:\/\/example.com"},{"d":"1970-01-01","s":"http:\/\/example.com"}]) =>
63
- [{ "d" => Date.new(1970, 1, 1), "s" => "http://example.com" },
64
- { "d" => Date.new(1970, 1, 1), "s" => "http://example.com" }],
65
- # tests escaping of "\n" char with Yaml backend
66
- %q({"a":"\n"}) => { "a" => "\n" },
67
- %q({"a":"\u000a"}) => { "a" => "\n" },
68
- %q({"a":"Line1\u000aLine2"}) => { "a" => "Line1\nLine2" },
69
- # prevent json unmarshalling
70
- '{"json_class":"TestJSONDecoding::Foo"}' => { "json_class" => "TestJSONDecoding::Foo" },
71
- # json "fragments" - these are invalid JSON, but ActionPack relies on this
72
- '"a string"' => "a string",
73
- "1.1" => 1.1,
74
- "1" => 1,
75
- "-1" => -1,
76
- "true" => true,
77
- "false" => false,
78
- "null" => nil
79
- }
80
-
81
- TESTS.each_with_index do |(json, expected), index|
82
- fail_message = "JSON decoding failed for #{json}"
83
-
84
- test "json decodes #{index}" do
85
- with_tz_default "Eastern Time (US & Canada)" do
86
- with_parse_json_times(true) do
87
- silence_warnings do
88
- if expected.nil?
89
- assert_nil ActiveSupport::JSON.decode(json), fail_message
90
- else
91
- assert_equal expected, ActiveSupport::JSON.decode(json), fail_message
92
- end
93
- end
94
- end
95
- end
96
- end
97
- end
98
-
99
- test "json decodes time json with time parsing disabled" do
100
- with_parse_json_times(false) do
101
- expected = { "a" => "2007-01-01 01:12:34 Z" }
102
- assert_equal expected, ActiveSupport::JSON.decode(%({"a": "2007-01-01 01:12:34 Z"}))
103
- end
104
- end
105
-
106
- def test_failed_json_decoding
107
- assert_raise(ActiveSupport::JSON.parse_error) { ActiveSupport::JSON.decode(%(undefined)) }
108
- assert_raise(ActiveSupport::JSON.parse_error) { ActiveSupport::JSON.decode(%({a: 1})) }
109
- assert_raise(ActiveSupport::JSON.parse_error) { ActiveSupport::JSON.decode(%({: 1})) }
110
- assert_raise(ActiveSupport::JSON.parse_error) { ActiveSupport::JSON.decode(%()) }
111
- end
112
-
113
- def test_cannot_pass_unsupported_options
114
- assert_raise(ArgumentError) { ActiveSupport::JSON.decode("", create_additions: true) }
115
- end
116
-
117
- private
118
- def with_parse_json_times(value)
119
- old_value = ActiveSupport.parse_json_times
120
- ActiveSupport.parse_json_times = value
121
- yield
122
- ensure
123
- ActiveSupport.parse_json_times = old_value
124
- end
125
- end