Skip to content

Commit

Permalink
Fix breaking change of execution order on TestTask
Browse files Browse the repository at this point in the history
Due to ruby#357, execution order on Rake 13.0.2 changes from Rake 13.0.1.

Example:
```
Rake::TestTask do |t|
  t.test_files = [
    "test/a.rb",
    "test/b.rb",
  ]
end
```

On 13.0.2, Rake executes test/b.rb before test/a.rb because test/a.rb are loaded before rake_test_loader.rb.
rake_test_loader.rb executes the Ruby code in ARGV using Kernel.#require, but does not execute test/a.rb which is already loaded.

In addition, Rake 13.0.1 allows specifying test_files without .rb but 13.0.2 doesn't allows.
This commit also fixes this problem.
```
Rake::TestTask do |t|
  t.test_files = [
    "test/setup",
    "test/a.rb",
  ]
end
```
  • Loading branch information
ysakasin committed Dec 20, 2020
1 parent 65be0c7 commit 37635e6
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 2 deletions.
2 changes: 1 addition & 1 deletion lib/rake/testtask.rb
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ def run_code # :nodoc:
when :testrb
"-S testrb"
when :rake
"-r#{__dir__}/rake_test_loader"
"#{__dir__}/rake_test_loader.rb"
end
end

Expand Down
2 changes: 1 addition & 1 deletion test/test_rake_test_task.rb
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ def test_run_code_rake
t.loader = :rake
end

assert_match(/\A-r.*?\Z/, test_task.run_code)
assert_includes test_task.run_code, "lib/rake/rake_test_loader.rb"
ensure
Gem.loaded_specs["rake"] = rake
end
Expand Down

0 comments on commit 37635e6

Please sign in to comment.