summaryrefslogtreecommitdiff
path: root/test/ruby
diff options
context:
space:
mode:
authorYusuke Endoh <mame@ruby-lang.org>2020-12-24 13:43:22 +0900
committerYusuke Endoh <mame@ruby-lang.org>2020-12-24 14:34:40 +0900
commit8e1c0b2f93abe23f42bd7eba0a3f0d3f3669e486 (patch)
tree03944274f80d3630a20dd8e3c98dc7d780c8084d /test/ruby
parente43b5aa52dcd1eaded1141ab85a30bc8c7c4a6e4 (diff)
dir.c: chdir conflict should raise only when called in different thread
... and keep it as a warning (like 2.7) when it is called in the same thread. [Bug #15661]
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/3990
Diffstat (limited to 'test/ruby')
-rw-r--r--test/ruby/test_dir.rb19
1 files changed, 16 insertions, 3 deletions
diff --git a/test/ruby/test_dir.rb b/test/ruby/test_dir.rb
index fb8d009db4..e5bcbeac73 100644
--- a/test/ruby/test_dir.rb
+++ b/test/ruby/test_dir.rb
@@ -97,9 +97,22 @@ class TestDir < Test::Unit::TestCase
assert_raise(ArgumentError) { Dir.chdir }
ENV["HOME"] = pwd
Dir.chdir do
- assert_equal(pwd, Dir.pwd)
- assert_raise(RuntimeError) { Dir.chdir(@root) }
- assert_equal(pwd, Dir.pwd)
+ assert_warning(/conflicting chdir during another chdir block/) { Dir.chdir(pwd) }
+
+ assert_warning(/conflicting chdir during another chdir block/) { Dir.chdir(@root) }
+ assert_equal(@root, Dir.pwd)
+
+ assert_warning(/conflicting chdir during another chdir block/) { Dir.chdir(pwd) }
+
+ assert_raise(RuntimeError) { Thread.new { Thread.current.report_on_exception = false; Dir.chdir(@root) }.join }
+ assert_raise(RuntimeError) { Thread.new { Thread.current.report_on_exception = false; Dir.chdir(@root) { } }.join }
+
+ assert_warning(/conflicting chdir during another chdir block/) { Dir.chdir(pwd) }
+
+ assert_warning(/conflicting chdir during another chdir block/) { Dir.chdir(@root) }
+ assert_equal(@root, Dir.pwd)
+
+ assert_warning(/conflicting chdir during another chdir block/) { Dir.chdir(pwd) }
Dir.chdir(@root) do
assert_equal(@root, Dir.pwd)
end