Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Two railties tests against ruby 3.0.0dev raise conflicting chdir during another chdir block errors #40756

Closed
yahonda opened this issue Dec 6, 2020 · 6 comments

Comments

@yahonda
Copy link
Member

yahonda commented Dec 6, 2020

Two railties tests against ruby 3.0.0dev raise conflicting chdir during another chdir block errors. I think this is the expected behavior of Ruby 3.

https://bugs.ruby-lang.org/issues/15661
ruby/ruby@5d7953f

Steps to reproduce

Install ruby 3.0.0dev
$ git clone https://github.com/rails/rails.git
$ cd rails/railties
$ bundle
$ bin/test test/generators/action_mailbox_install_generator_test.rb
$ bin/test test/generators/action_text_install_generator_test.rb

Expected behavior

Both tests should pass.

Actual behavior

$ ruby -v
ruby 3.0.0dev (2020-12-06T23:28:36Z master bef3eb5440) [x86_64-linux]
$ cd railties
$ bundle
$ bin/test test/generators/action_mailbox_install_generator_test.rb
Run options: --seed 15525

# Running:

rails aborted!
conflicting chdir during another chdir block
/home/yahonda/src/github.com/rails/rails/railties/lib/rails/commands/rake/rake_command.rb:20:in `block in perform'
/home/yahonda/src/github.com/rails/rails/railties/lib/rails/commands/rake/rake_command.rb:18:in `perform'
/home/yahonda/src/github.com/rails/rails/railties/lib/rails/command.rb:52:in `invoke'
/home/yahonda/src/github.com/rails/rails/railties/lib/rails/generators/actions.rb:257:in `block (2 levels) in rails_command'
/home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/core_ext/kernel/reporting.rb:15:in `block in silence_warnings'
/home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/core_ext/kernel/reporting.rb:28:in `with_warnings'
/home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/core_ext/kernel/reporting.rb:15:in `silence_warnings'
/home/yahonda/src/github.com/rails/rails/railties/lib/rails/generators/actions.rb:256:in `block in rails_command'
/home/yahonda/src/github.com/rails/rails/railties/lib/rails/generators/actions.rb:255:in `rails_command'
/home/yahonda/src/github.com/rails/rails/actionmailbox/lib/generators/action_mailbox/install/install_generator.rb:24:in `create_migrations'
/home/yahonda/src/github.com/rails/rails/railties/lib/rails/generators/testing/behaviour.rb:73:in `block in run_generator'
/home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/testing/stream.rb:32:in `capture'
/home/yahonda/src/github.com/rails/rails/railties/lib/rails/generators/testing/behaviour.rb:68:in `run_generator'
/home/yahonda/src/github.com/rails/rails/railties/test/generators/action_mailbox_install_generator_test.rb:41:in `block in test_create_migrations'
/home/yahonda/src/github.com/rails/rails/railties/test/generators/generators_test_helper.rb:62:in `with_database_configuration'
/home/yahonda/src/github.com/rails/rails/railties/test/generators/action_mailbox_install_generator_test.rb:41:in `test_create_migrations'
/home/yahonda/src/github.com/rails/rails/railties/lib/rails/test_unit/line_filtering.rb:10:in `run'

Caused by:
conflicting chdir during another chdir block
/home/yahonda/src/github.com/rails/rails/railties/lib/rails/commands/rake/rake_command.rb:20:in `block in perform'
/home/yahonda/src/github.com/rails/rails/railties/lib/rails/commands/rake/rake_command.rb:18:in `perform'
/home/yahonda/src/github.com/rails/rails/railties/lib/rails/command.rb:52:in `invoke'
/home/yahonda/src/github.com/rails/rails/railties/lib/rails/generators/actions.rb:257:in `block (2 levels) in rails_command'
/home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/core_ext/kernel/reporting.rb:15:in `block in silence_warnings'
/home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/core_ext/kernel/reporting.rb:28:in `with_warnings'
/home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/core_ext/kernel/reporting.rb:15:in `silence_warnings'
/home/yahonda/src/github.com/rails/rails/railties/lib/rails/generators/actions.rb:256:in `block in rails_command'
/home/yahonda/src/github.com/rails/rails/railties/lib/rails/generators/actions.rb:255:in `rails_command'
/home/yahonda/src/github.com/rails/rails/actionmailbox/lib/generators/action_mailbox/install/install_generator.rb:24:in `create_migrations'
/home/yahonda/src/github.com/rails/rails/railties/lib/rails/generators/testing/behaviour.rb:73:in `block in run_generator'
/home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/testing/stream.rb:32:in `capture'
/home/yahonda/src/github.com/rails/rails/railties/lib/rails/generators/testing/behaviour.rb:68:in `run_generator'
/home/yahonda/src/github.com/rails/rails/railties/test/generators/action_mailbox_install_generator_test.rb:41:in `block in test_create_migrations'
/home/yahonda/src/github.com/rails/rails/railties/test/generators/generators_test_helper.rb:62:in `with_database_configuration'
/home/yahonda/src/github.com/rails/rails/railties/test/generators/action_mailbox_install_generator_test.rb:41:in `test_create_migrations'
/home/yahonda/src/github.com/rails/rails/railties/lib/rails/test_unit/line_filtering.rb:10:in `run'
(See full trace by running task with --trace)
$
$ bin/test test/generators/action_text_install_generator_test.rb
Run options: --seed 35531

# Running:

rails aborted!
conflicting chdir during another chdir block
/home/yahonda/src/github.com/rails/rails/railties/lib/rails/commands/rake/rake_command.rb:20:in `block in perform'
/home/yahonda/src/github.com/rails/rails/railties/lib/rails/commands/rake/rake_command.rb:18:in `perform'
/home/yahonda/src/github.com/rails/rails/railties/lib/rails/command.rb:52:in `invoke'
/home/yahonda/src/github.com/rails/rails/railties/lib/rails/generators/actions.rb:257:in `block (2 levels) in rails_command'
/home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/core_ext/kernel/reporting.rb:15:in `block in silence_warnings'
/home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/core_ext/kernel/reporting.rb:28:in `with_warnings'
/home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/core_ext/kernel/reporting.rb:15:in `silence_warnings'
/home/yahonda/src/github.com/rails/rails/railties/lib/rails/generators/actions.rb:256:in `block in rails_command'
/home/yahonda/src/github.com/rails/rails/railties/lib/rails/generators/actions.rb:255:in `rails_command'
/home/yahonda/src/github.com/rails/rails/actiontext/lib/generators/action_text/install/install_generator.rb:12:in `install_javascript_dependencies'
/home/yahonda/src/github.com/rails/rails/railties/test/generators/generators_test_helper.rb:48:in `block in run_generator_instance'
/home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/testing/stream.rb:32:in `capture'
/home/yahonda/src/github.com/rails/rails/railties/test/generators/generators_test_helper.rb:47:in `run_generator_instance'
/home/yahonda/src/github.com/rails/rails/railties/test/generators/action_text_install_generator_test.rb:76:in `block (2 levels) in run_generator_instance'
/home/yahonda/src/github.com/rails/rails/railties/test/generators/generators_test_helper.rb:62:in `with_database_configuration'
/home/yahonda/src/github.com/rails/rails/railties/test/generators/action_text_install_generator_test.rb:76:in `block in run_generator_instance'
/home/yahonda/src/github.com/rails/rails/railties/test/generators/action_text_install_generator_test.rb:75:in `run_generator_instance'
/home/yahonda/src/github.com/rails/rails/railties/test/generators/action_text_install_generator_test.rb:25:in `block in <class:InstallGeneratorTest>'
/home/yahonda/src/github.com/rails/rails/railties/lib/rails/test_unit/line_filtering.rb:10:in `run'

Caused by:
conflicting chdir during another chdir block
/home/yahonda/src/github.com/rails/rails/railties/lib/rails/commands/rake/rake_command.rb:20:in `block in perform'
/home/yahonda/src/github.com/rails/rails/railties/lib/rails/commands/rake/rake_command.rb:18:in `perform'
/home/yahonda/src/github.com/rails/rails/railties/lib/rails/command.rb:52:in `invoke'
/home/yahonda/src/github.com/rails/rails/railties/lib/rails/generators/actions.rb:257:in `block (2 levels) in rails_command'
/home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/core_ext/kernel/reporting.rb:15:in `block in silence_warnings'
/home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/core_ext/kernel/reporting.rb:28:in `with_warnings'
/home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/core_ext/kernel/reporting.rb:15:in `silence_warnings'
/home/yahonda/src/github.com/rails/rails/railties/lib/rails/generators/actions.rb:256:in `block in rails_command'
/home/yahonda/src/github.com/rails/rails/railties/lib/rails/generators/actions.rb:255:in `rails_command'
/home/yahonda/src/github.com/rails/rails/actiontext/lib/generators/action_text/install/install_generator.rb:12:in `install_javascript_dependencies'
/home/yahonda/src/github.com/rails/rails/railties/test/generators/generators_test_helper.rb:48:in `block in run_generator_instance'
/home/yahonda/src/github.com/rails/rails/activesupport/lib/active_support/testing/stream.rb:32:in `capture'
/home/yahonda/src/github.com/rails/rails/railties/test/generators/generators_test_helper.rb:47:in `run_generator_instance'
/home/yahonda/src/github.com/rails/rails/railties/test/generators/action_text_install_generator_test.rb:76:in `block (2 levels) in run_generator_instance'
/home/yahonda/src/github.com/rails/rails/railties/test/generators/generators_test_helper.rb:62:in `with_database_configuration'
/home/yahonda/src/github.com/rails/rails/railties/test/generators/action_text_install_generator_test.rb:76:in `block in run_generator_instance'
/home/yahonda/src/github.com/rails/rails/railties/test/generators/action_text_install_generator_test.rb:75:in `run_generator_instance'
/home/yahonda/src/github.com/rails/rails/railties/test/generators/action_text_install_generator_test.rb:25:in `block in <class:InstallGeneratorTest>'
/home/yahonda/src/github.com/rails/rails/railties/lib/rails/test_unit/line_filtering.rb:10:in `run'
(See full trace by running task with --trace)
$

System configuration

Rails version:master branch

Ruby version:ruby 3.0.0dev (2020-12-06T23:28:36Z master bef3eb5440) [x86_64-linux]

Related pull requests:

#40069
#40740
#40673

@yahonda
Copy link
Member Author

yahonda commented Dec 6, 2020

We may need something like ae5ecfe26c8 . I'm not familiar with railties tests then just created an issue for now.

@eugeneius
Copy link
Member

This isn't just a problem in the test suite: action_text:install, action_mailbox:install, and app:update are all broken on Ruby head. ruby/ruby@5d7953f means the inline: true option to rails_command no longer works for commands that are actually rake tasks. :/ @jonathanhefner

@yahonda
Copy link
Member Author

yahonda commented Dec 7, 2020

Thanks for the useful information, as always.
If I understand correctly, inline option of rails_command has been introduced via #37516 which has been merged only for Rails 6.1 then ruby/ruby@5d7953f should not affect to rails_command of Rails 6.0 or earlier.

@jonathanhefner
Copy link
Member

Several weeks ago, I proposed an escape mechanism to handle this in the original Ruby issue. I also submitted ruby/rake#365 to potentially eliminate blockless chdir calls from Rake. Neither has gotten much attention, but I just requested discussion at the upcoming Ruby developer's meeting on 2020-12-10. Based on the outcome of that, I can create a Rails PR that accommodates the final Ruby 3.0 behavior.

@rafaelfranca rafaelfranca removed this from the 6.1.0 milestone Dec 8, 2020
@rafaelfranca
Copy link
Member

This PR should fix this problem. ruby/ruby#3861

@yahonda
Copy link
Member Author

yahonda commented Dec 24, 2020

I have confirmed this issue has been addressed using the latest ruby 3.0.0dev which includes ruby/ruby#3990

$ ruby -v
ruby 3.0.0dev (2020-12-24T07:22:50Z master b343d54792) [x86_64-linux]
$ bin/test test/generators/action_mailbox_install_generator_test.rb
Run options: --seed 3587

# Running:

...

Finished in 0.398850s, 7.5216 runs/s, 25.0721 assertions/s.
3 runs, 10 assertions, 0 failures, 0 errors, 0 skips
$ bin/test test/generators/action_text_install_generator_test.rb
Run options: --seed 44586

# Running:

.......

Finished in 1.231365s, 5.6847 runs/s, 14.6179 assertions/s.
7 runs, 18 assertions, 0 failures, 0 errors, 0 skips
$

@yahonda yahonda closed this as completed Dec 24, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants