mirror of
https://github.com/ruby/ruby.git
synced 2026-10-28 16:36:20 +08:00
GzipReader offers both a read and to_io method. The read method returns the uncompressed file as a string. The to_io method returns the compressed file. The JSON.load method first tests for the to_io method and uses it before testing for the read method. This results in reading the compressed file, which is invalid JSON. Instead, we now test for the read method first. https://github.com/ruby/json/commit/b6a5d35245
64 lines
1.9 KiB
Ruby
64 lines
1.9 KiB
Ruby
$LOAD_PATH.unshift(File.expand_path('../../../ext', __FILE__), File.expand_path('../../../lib', __FILE__))
|
|
|
|
if ENV["JSON_COVERAGE"]
|
|
# This test helper is loaded inside Ruby's own test suite, so we try to not mess it up.
|
|
require 'coverage'
|
|
|
|
branches_supported = Coverage.respond_to?(:supported?) && Coverage.supported?(:branches)
|
|
|
|
# Coverage module must be started before SimpleCov to work around the cyclic require order.
|
|
# Track both branches and lines, or else SimpleCov misleadingly reports 0/0 = 100% for non-branching files.
|
|
Coverage.start(lines: true,
|
|
branches: branches_supported)
|
|
|
|
require 'simplecov'
|
|
SimpleCov.start do
|
|
# Enabling both coverage types to let SimpleCov know to output them together in reports
|
|
enable_coverage :line
|
|
enable_coverage :branch if branches_supported
|
|
|
|
# Can't always trust SimpleCov to find files implicitly
|
|
track_files 'lib/**/*.rb'
|
|
|
|
add_filter 'lib/json/truffle_ruby' unless RUBY_ENGINE == 'truffleruby'
|
|
add_filter 'test/'
|
|
|
|
coverage_dir '.coverage'
|
|
end
|
|
end
|
|
|
|
require 'json'
|
|
require 'test/unit'
|
|
require 'stringio'
|
|
require 'tempfile'
|
|
require 'zlib'
|
|
begin
|
|
require 'bigdecimal'
|
|
rescue LoadError
|
|
end
|
|
|
|
if ENV["JSON_COMPACT"]
|
|
if GC.respond_to?(:verify_compaction_references)
|
|
# This method was added in Ruby 3.0.0. Calling it this way asks the GC to
|
|
# move objects around, helping to find object movement bugs.
|
|
begin
|
|
GC.verify_compaction_references(expand_heap: true, toward: :empty)
|
|
rescue NotImplementedError, ArgumentError
|
|
# Some platforms don't support compaction
|
|
end
|
|
end
|
|
|
|
if GC.respond_to?(:auto_compact=)
|
|
begin
|
|
GC.auto_compact = true
|
|
rescue NotImplementedError
|
|
# Some platforms don't support compaction
|
|
end
|
|
end
|
|
end
|
|
|
|
unless defined?(Test::Unit::CoreAssertions)
|
|
require "core_assertions"
|
|
Test::Unit::TestCase.include Test::Unit::CoreAssertions
|
|
end
|