Use Thread-Safe Dir.chdir
Invocation in Tests
#52596
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Follow-up to #50743, which updated us to Ruby 3.0.
Ruby starting in 3.0 is much more proactive about preventing you from attempting to invoke
Dir.chdir
in a thread-unsafe way: https://bugs.ruby-lang.org/issues/15661Unfortunately, we currently do just that in our Eyes/UI tests; each of the two individual rake tasks internally invokes
Dir.chdir
, and we execute the tasks in parallel. Fortunately, there's a simple fix: https://coderscat.com/ruby-change-current-working-directory/Testing story
Tested locally that without this change, running
bundle exec rake test:ui_all
fails on Ruby 3.0 withconflicting chdir during another chdir block
. With this change, we are able to successfully invoke both test tasks!