From 19da336333e63dc9dde7baea47b179e162b7568e Mon Sep 17 00:00:00 2001 From: Ryan Davis Date: Fri, 22 Nov 2019 14:53:04 -0800 Subject: [PATCH 1/4] Minor cleanup for ruby 2.7 warnings and failures. --- .travis.yml | 1 + lib/json/common.rb | 5 +++-- lib/json/pure/parser.rb | 10 +++++++++- tests/json_parser_test.rb | 2 +- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 1ac58d82..2962e9d3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,6 +12,7 @@ rvm: - 2.4 - 2.5 - 2.6 + - 2.7.0-preview2 - ruby-head - jruby matrix: diff --git a/lib/json/common.rb b/lib/json/common.rb index 7cc85291..05da9d0f 100644 --- a/lib/json/common.rb +++ b/lib/json/common.rb @@ -153,7 +153,8 @@ class MissingUnicodeSupport < JSONError; end # * *object_class*: Defaults to Hash # * *array_class*: Defaults to Array def parse(source, opts = {}) - Parser.new(source, opts).parse + opts ||= {} + Parser.new(source, **opts).parse end # Parse the JSON document _source_ into a Ruby data structure and return it. @@ -176,7 +177,7 @@ def parse!(source, opts = {}) :max_nesting => false, :allow_nan => true }.merge(opts) - Parser.new(source, opts).parse + Parser.new(source, **opts).parse end # Generate a JSON document from the Ruby data structure _obj_ and return diff --git a/lib/json/pure/parser.rb b/lib/json/pure/parser.rb index 3a6343bc..53402964 100644 --- a/lib/json/pure/parser.rb +++ b/lib/json/pure/parser.rb @@ -197,7 +197,15 @@ def parse_string def parse_value case when scan(FLOAT) - @decimal_class && @decimal_class.new(self[1]) || Float(self[1]) + if @decimal_class then + if @decimal_class == BigDecimal then + BigDecimal(self[1]) + else + @decimal_class.new(self[1]) || Float(self[1]) + end + else + Float(self[1]) + end when scan(INTEGER) Integer(self[1]) when scan(TRUE) diff --git a/tests/json_parser_test.rb b/tests/json_parser_test.rb index 5f454eb1..452e177c 100644 --- a/tests/json_parser_test.rb +++ b/tests/json_parser_test.rb @@ -111,7 +111,7 @@ def test_parse_numbers def test_parse_bigdecimals assert_equal(BigDecimal, JSON.parse('{"foo": 9.01234567890123456789}', decimal_class: BigDecimal)["foo"].class) - assert_equal(BigDecimal.new("0.901234567890123456789E1"),JSON.parse('{"foo": 9.01234567890123456789}', decimal_class: BigDecimal)["foo"] ) + assert_equal(BigDecimal("0.901234567890123456789E1"), JSON.parse('{"foo": 9.01234567890123456789}', decimal_class: BigDecimal)["foo"] ) end if Array.method_defined?(:permutation) From 45be8b4d5a545c61ca274d20b2faf0d929d0604e Mon Sep 17 00:00:00 2001 From: Ryan Davis Date: Wed, 27 Nov 2019 14:55:16 -0800 Subject: [PATCH 2/4] Fix syntax warnings from tests. Signed-off-by: Ryan Davis --- tests/json_common_interface_test.rb | 6 +++--- tests/json_parser_test.rb | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/json_common_interface_test.rb b/tests/json_common_interface_test.rb index de88c6e8..53f335ed 100644 --- a/tests/json_common_interface_test.rb +++ b/tests/json_common_interface_test.rb @@ -27,15 +27,15 @@ def test_index end def test_parser - assert_match /::Parser\z/, JSON.parser.name + assert_match(/::Parser\z/, JSON.parser.name) end def test_generator - assert_match /::Generator\z/, JSON.generator.name + assert_match(/::Generator\z/, JSON.generator.name) end def test_state - assert_match /::Generator::State\z/, JSON.state.name + assert_match(/::Generator::State\z/, JSON.state.name) end def test_create_id diff --git a/tests/json_parser_test.rb b/tests/json_parser_test.rb index 452e177c..96e71c50 100644 --- a/tests/json_parser_test.rb +++ b/tests/json_parser_test.rb @@ -92,21 +92,21 @@ def test_parse_numbers assert_raise(JSON::ParserError) { parse('.23') } assert_raise(JSON::ParserError) { parse('023') } assert_equal 23, parse('23') - assert_equal -23, parse('-23') + assert_equal(-23, parse('-23')) assert_equal_float 3.141, parse('3.141') - assert_equal_float -3.141, parse('-3.141') + assert_equal_float(-3.141, parse('-3.141')) assert_equal_float 3.141, parse('3141e-3') assert_equal_float 3.141, parse('3141.1e-3') assert_equal_float 3.141, parse('3141E-3') assert_equal_float 3.141, parse('3141.0E-3') - assert_equal_float -3.141, parse('-3141.0e-3') - assert_equal_float -3.141, parse('-3141e-3') + assert_equal_float(-3.141, parse('-3141.0e-3')) + assert_equal_float(-3.141, parse('-3141e-3')) assert_raise(ParserError) { parse('NaN') } assert parse('NaN', :allow_nan => true).nan? assert_raise(ParserError) { parse('Infinity') } assert_equal 1.0/0, parse('Infinity', :allow_nan => true) assert_raise(ParserError) { parse('-Infinity') } - assert_equal -1.0/0, parse('-Infinity', :allow_nan => true) + assert_equal(-1.0/0, parse('-Infinity', :allow_nan => true)) end def test_parse_bigdecimals From de14dea34074558dc671d7edc71513f0216ce21d Mon Sep 17 00:00:00 2001 From: Ryan Davis Date: Wed, 27 Nov 2019 14:55:28 -0800 Subject: [PATCH 3/4] Fix warning from trying to access an uninitialized ivar. Signed-off-by: Ryan Davis --- lib/json/pure/generator.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/json/pure/generator.rb b/lib/json/pure/generator.rb index ccb6fe42..a1143f8b 100644 --- a/lib/json/pure/generator.rb +++ b/lib/json/pure/generator.rb @@ -250,7 +250,8 @@ def [](name) if respond_to?(name) __send__(name) else - instance_variable_get("@#{name}") + instance_variable_get("@#{name}") if + instance_variables.include?("@#{name}".to_sym) # avoid warning end end From 927c1672c6aaafb45d11e7ac8cad8f7c3a8fb0b6 Mon Sep 17 00:00:00 2001 From: Ryan Davis Date: Wed, 27 Nov 2019 14:58:41 -0800 Subject: [PATCH 4/4] Bump to test-unit 3 to get warnings cleaned up. Immaculate test output! Signed-off-by: Ryan Davis --- Rakefile | 4 ++-- json-java.gemspec | 6 +++--- json.gemspec | Bin 5439 -> 5298 bytes json_pure.gemspec | 13 +++++-------- 4 files changed, 10 insertions(+), 13 deletions(-) mode change 100644 => 100755 json-java.gemspec diff --git a/Rakefile b/Rakefile index ce390952..41f822cd 100644 --- a/Rakefile +++ b/Rakefile @@ -89,7 +89,7 @@ if defined?(Gem) and defined?(Gem::PackageTask) s.require_path = 'lib' s.add_development_dependency 'rake' - s.add_development_dependency 'test-unit', '~> 2.0' + s.add_development_dependency 'test-unit', '~> 3.0' s.extra_rdoc_files << 'README.md' s.rdoc_options << @@ -127,7 +127,7 @@ if defined?(Gem) and defined?(Gem::PackageTask) s.require_path = 'lib' s.add_development_dependency 'rake' - s.add_development_dependency 'test-unit', '~> 2.0' + s.add_development_dependency 'test-unit', '~> 3.0' s.extra_rdoc_files << 'README.md' s.rdoc_options << diff --git a/json-java.gemspec b/json-java.gemspec old mode 100644 new mode 100755 index f3fa0c91..c99ed89d --- a/json-java.gemspec +++ b/json-java.gemspec @@ -19,14 +19,14 @@ spec = Gem::Specification.new do |s| if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then s.add_development_dependency(%q, [">= 0"]) - s.add_development_dependency(%q, ["~> 2.0"]) + s.add_development_dependency(%q, ["~> 3.0"]) else s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, ["~> 2.0"]) + s.add_dependency(%q, ["~> 3.0"]) end else s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, ["~> 2.0"]) + s.add_dependency(%q, ["~> 3.0"]) end end diff --git a/json.gemspec b/json.gemspec index 6e7873fdea50150805c653c8bc10bf705b6ac7dc..4e183b723907fff2e2c52d290aea41e4abbf1405 100644 GIT binary patch delta 110 zcmdn5wMlcsI!0DQLtP{D&6^oH1=$Vt4D@S^keZh=Sx;C@CNU)?zNj>> zBr`WPJ|(pPD4d#?T&Yl!k($Rf`INB3$aD8*_{J|>bO2w`%84dDXn G-~s^G>LUXH delta 177 zcmdm_xnFC;I!0Clb6rE@&6^oH1(^)=CLb0$=*^`71es|H?y0#}R$-|{#hLkedU>hk z8V~{3pkPmbKTQQYTTB(|hI&SN2I`s$B^jxCKyxPV7Iv7tS6FGXw1|WdP(~?M6Kr~F iPH`$o+EK)0a= Gem::Version.new('1.2.0') then - s.add_development_dependency(%q.freeze, [">= 0"]) - s.add_development_dependency(%q.freeze, ["~> 2.0"]) - else - s.add_dependency(%q.freeze, [">= 0"]) - s.add_dependency(%q.freeze, ["~> 2.0"]) - end + if s.respond_to? :add_runtime_dependency then + s.add_development_dependency(%q.freeze, [">= 0"]) + s.add_development_dependency(%q.freeze, ["~> 3.0"]) else s.add_dependency(%q.freeze, [">= 0"]) - s.add_dependency(%q.freeze, ["~> 2.0"]) + s.add_dependency(%q.freeze, ["~> 3.0"]) end end