
Issue #20433 has been updated by tompng (tomoya ishida). I investigated the impact to ruby ci. Need to update these tests. The required change was within the expected range. ~~~ bootstraptest test/coverage test/error_highlight test/rdoc test/reline test/ruby test/rubygems spec/bundler spec/ruby ~~~ Two bundled gem tests failed. ~~~ minitest (4 failure) debug (2 failure) ~~~ All of them passes by only changing the expected string/regexp from `key=>value` to `key => value` or `:key=>value` to `key: value`. ## Test against several ruby versions Test of mspec, default gems and bundled gems needs to pass in several ruby versions. In most case, changing `expected = "message {1=>2}"` to `expected = "message #{{1=>2}.inspect}"` was enough. There are some case that needs a little more effort like this. ~~~ruby # spec/ruby/core/string/modulo_spec.rb { a: obj }.send(@method).should =~ /^\{:a=>#<MockObject:0x[0-9a-f]+>\}$/ # spec/ruby/library/net-http/http/send_request_spec.rb response.body.should include('"Referer"=>"' + referer + '"') # minitst/minitest test/minitest/test_minitest_mock.rb exp = "expected foo(:kw=>false) => nil, got [foo(:kw=>true) => nil]" ~~~ @matz For your information ---------------------------------------- Bug #20433: Hash.inspect for some hash returns syntax invalid representation https://bugs.ruby-lang.org/issues/20433#change-108827 * Author: tompng (tomoya ishida) * Status: Open * Backport: 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN ---------------------------------------- For these hashes, Hash.inspect returns a syntax invalid representation: ~~~ruby { :a! => 1 } # {:a!=>1} { :a? => 1 } # {:a?=>1} { :* => 1 } # {:*=>1} { :== => 1 } # {:===>1} { :< => 1 } # {:<=>1} ~~~ `eval(hash.inspect)` will raise SyntaxError. Although inspect does not guarantee that the result can be eval-ed, it'd be confusing for these few cases. Maybe related to https://bugs.ruby-lang.org/issues/20235 -- https://bugs.ruby-lang.org/