From: merch-redmine@... Date: 2020-06-20T15:46:03+00:00 Subject: [ruby-core:98899] [Ruby master Bug#16973] Rails Active Support unit test fails since 41582d5866 Issue #16973 has been updated by jeremyevans0 (Jeremy Evans). yahonda (Yasuo Honda) wrote in #note-2: > Looks like this is an expected change in Ruby, which actually introduces incompatibilities with Rails. I'm wondering which needs to be fixed. Correct, it is an expected change that prepend now affects iclasses. Is `ActiveSupport::ToJsonWithActiveSupportEncoder` prepended to Hash by ActiveSupport? Could you prepare an example that doesn't depend on ActiveSupport? That will more easily allow us to determine if this a bug or not. ---------------------------------------- Bug #16973: Rails Active Support unit test fails since 41582d5866 https://bugs.ruby-lang.org/issues/16973#change-86275 * Author: yahonda (Yasuo Honda) * Status: Open * Priority: Normal * ruby -v: ruby 2.8.0dev (2020-06-18T15:18:31Z master 41582d5866) [x86_64-linux] * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN ---------------------------------------- Recently Rails CI against Ruby 2.8.0dev has been failing since https://buildkite.com/rails/rails/builds/70219#79d96882-6c51-4854-8cab-28f50ac8bca1 . The last successful one is https://buildkite.com/rails/rails/builds/70207#ff70c57d-1d72-493b-be63-0ac1827ea44d . Compared Ruby commit https://github.com/ruby/ruby/compare/41a4c80d284a24360d3a6c5b6e5ca408ccca6efc...adbdf11f94afd52d276c7891515e0eb808f6003f then Based on `git bisect` between `41a4c80d284a24360d3a6c5b6e5ca408ccca6efc` and `adbdf11f94afd52d276c7891515e0eb808f6003f`, I've found commit 41582d5866 triggers these failures. ### Script to reproduce. saved as "rep.rb" ``` ruby # frozen_string_literal: true require "bundler/inline" gemfile(true) do source "https://rubygems.org" git_source(:github) { |repo| "https://github.com/#{repo}.git" } gem "activesupport" end require 'active_support/all' require "minitest/autorun" require "logger" class ToJsonTest < Minitest::Test def test_json_time_format ActiveSupport::JSON::Encoding.use_standard_json_time_format = false assert_equal '{"time":"2009/01/01 00:00:00 +0000"}', { time: Time.utc(2009) }.to_json end end ``` ### Actual result with Ruby 2.8.0dev 41582d5866 ``` ruby $ ruby -v ruby 2.8.0dev (2020-06-18T15:18:31Z master 41582d5866) [x86_64-linux] $ ruby rep.rb Fetching gem metadata from https://rubygems.org/........ Resolving dependencies... Using minitest 5.14.1 Using concurrent-ruby 1.1.6 Using thread_safe 0.3.6 Using zeitwerk 2.3.0 Using bundler 2.2.0.dev Using tzinfo 1.2.7 Using i18n 1.8.3 Using activesupport 6.0.3.2 Run options: --seed 43482 # Running: F Finished in 0.004782s, 209.1063 runs/s, 209.1063 assertions/s. 1) Failure: ToJsonTest#test_json_time_format [rep.rb:20]: --- expected +++ actual @@ -1 +1 @@ -"{\"time\":\"2009/01/01 00:00:00 +0000\"}" +"{\"time\":\"2009-01-01 00:00:00 UTC\"}" 1 runs, 1 assertions, 1 failures, 0 errors, 0 skips $ ``` ### Expected result with Ruby 2.8.0dev 750203c514 ``` ruby $ ruby -v rep.rb ruby 2.8.0dev (2020-06-18T14:43:48Z master 750203c514) [x86_64-linux] /home/yahonda/.rbenv/versions/2.8.0-dev/lib/ruby/2.8.0/bundler/vendored_persistent.rb:34: warning: instance variable @socket not initialized Fetching gem metadata from https://rubygems.org/........ Resolving dependencies... Using minitest 5.14.1 Using zeitwerk 2.3.0 Using concurrent-ruby 1.1.6 Using thread_safe 0.3.6 Using bundler 2.2.0.dev Using i18n 1.8.3 Using tzinfo 1.2.7 Using activesupport 6.0.3.2 /home/yahonda/.rbenv/versions/2.8.0-dev/lib/ruby/gems/2.8.0/gems/activesupport-6.0.3.2/lib/active_support/core_ext/hash/except.rb:12: warning: method redefined; discarding old except Run options: --seed 11397 # Running: .. Finished in 0.002117s, 472.3315 runs/s, 472.3315 assertions/s. 1 runs, 1 assertions, 0 failures, 0 errors, 0 skips $ ``` -- https://bugs.ruby-lang.org/ Unsubscribe: