[ruby-dev:50999] [Ruby master Bug#17494] ruby is hanged when using activesupport + rspec + rspec-parameterized
From:
yasuo.honda@...
Date:
2021-01-26 05:32:21 UTC
List:
ruby-dev #50999
Issue #17494 has been updated by yahonda (Yasuo Honda).
This minimum case hangs since https://github.com/ruby/ruby/commit/b9007b6c548f91e88fd3f2ffa23de740431fa969
* Save this minimum case as `rep17494_min.rb`, added some p method to see if it hangs or not.
```ruby
Object.prepend(Module.new)
using(Module.new {
refine Object do
def hello; end
end
})
Object.new.hello
module M
def hello; end
end
class A
include M
end
p 'Showing Object.instance_methods'
p Object.instance_methods
```
* Run this rep17494_min.rb against as of b9007b6c548f91e88fd3f2ffa23de740431fa969 using `rubylang/rubyfarm:b9007b6c548f91e88fd3f2ffa23de740431fa969` docker image
```
% docker run -it --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp rubylang/rubyfarm:b9007b6c548f91e88fd3f2ffa23de740431fa969 ruby rep17494_min.rb
"Showing Object.instance_methods"
```
It hangs at `p Object.instance_methods`.
* Run this rep17494_min.rb against as of f2286925f08406bc857f7b03ad6779a5d61443ae, which is the parent commit of b9007b6c548f91e88fd3f2ffa23de740431fa969
```
% docker run -it --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp rubylang/rubyfarm:f2286925f08406bc857f7b03ad6779a5d61443ae ruby rep17494_min.rb
"Showing Object.instance_methods"
[:dup, :itself, :yield_self, :then, :taint, :tainted?, :untaint, :untrust, :untrusted?, :trust, :frozen?, :methods, :singleton_methods, :protected_methods, :private_methods, :public_methods, :instance_variables, :instance_variable_get, :instance_variable_set, :instance_variable_defined?, :remove_instance_variable, :instance_of?, :kind_of?, :is_a?, :tap, :singleton_class, :clone, :public_send, :method, :public_method, :singleton_method, :define_singleton_method, :extend, :<=>, :to_enum, :enum_for, :===, :=~, :!~, :nil?, :eql?, :respond_to?, :freeze, :inspect, :object_id, :send, :to_s, :display, :class, :hash, :__send__, :!, :__id__, :==, :!=, :equal?, :instance_eval, :instance_exec]
```
It shows the result of `p Object.instance_methods`.
These steps do not require Docker if each Ruby build is available locally.
----------------------------------------
Bug #17494: ruby is hanged when using activesupport + rspec + rspec-parameterized
https://bugs.ruby-lang.org/issues/17494#change-90099
* Author: sue445 (Go Sueyoshi)
* Status: Open
* Priority: Normal
* ruby -v: ruby 3.0.0p0
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN
----------------------------------------
# Example code
## Gemfile
```ruby
# frozen_string_literal: true
source "https://rubygems.org"
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
gem "activesupport", "6.1.0"
gem "rspec", "3.10.0"
gem "rspec-parameterized", "0.4.2"
```
## spec file
``` ruby
require "active_support/all"
require "rspec-parameterized"
describe "CLI" do
subject do
# Expected error, but actual hunged here
cli.foo # <- hunged here
end
it { expect { subject }.to raise_error }
end
xdescribe "GitlabMrRelease::Project" do
describe "#api_version" do
using RSpec::Parameterized::TableSyntax
where(:api_endpoint, :expected) do
"http://example.com/api/v4/" | 4
end
with_them do
# it { should eq expected }
end
end
end
```
all codes are here.
https://github.com/sue445/ruby_3_0_0_bug_report_20201231
# Expected
spec is successful (This is the behavior up to ruby 2.7.2)
# Actual
hunged at line 7
--
https://bugs.ruby-lang.org/