diff options
author | Jean byroot Boussier <jean.boussier+github@shopify.com> | 2023-02-06 23:30:42 +0100 |
---|---|---|
committer | Jean Boussier <jean.boussier@gmail.com> | 2023-02-08 09:50:00 +0100 |
commit | 8ce2fb9bbbaea14737c84385b1573f743a30f773 (patch) | |
tree | b1909a3f62f01b61b19369028c698bc7fbc8692e /spec/ruby/core | |
parent | 3ab34551450c7a3a3e1ae0b24bf6b78d26129dfa (diff) | |
download | ruby-8ce2fb9bbbaea14737c84385b1573f743a30f773.tar.gz |
Only emit circular dependency warning for owned thread shields
[Bug #19415]
If multiple threads attemps to load the same file concurrently
it's not a circular dependency issue.
So we check that the existing ThreadShield is owner by the current
fiber before warning about circular dependencies.
Diffstat (limited to 'spec/ruby/core')
-rw-r--r-- | spec/ruby/core/kernel/shared/require.rb | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/spec/ruby/core/kernel/shared/require.rb b/spec/ruby/core/kernel/shared/require.rb index 666ca15e11..ae814aa317 100644 --- a/spec/ruby/core/kernel/shared/require.rb +++ b/spec/ruby/core/kernel/shared/require.rb @@ -237,6 +237,17 @@ describe :kernel_require, shared: true do }.should complain(/circular require considered harmful/, verbose: true) ScratchPad.recorded.should == [:loaded] end + + ruby_bug "#17340", ''...'3.3' do + it "loads a file concurrently" do + path = File.expand_path "concurrent_require_fixture.rb", CODE_LOADING_DIR + ScratchPad.record(@object) + -> { + @object.require(path) + }.should_not complain(/circular require considered harmful/, verbose: true) + ScratchPad.recorded.join + end + end end describe "(non-extensioned path)" do |