diff options
| author | KOBAYASHI Shuji <[email protected]> | 2021-01-12 15:41:22 +0900 |
|---|---|---|
| committer | KOBAYASHI Shuji <[email protected]> | 2021-01-12 15:41:22 +0900 |
| commit | 02121cbd65b5e1445f2e6ed08eb758621fd38b8b (patch) | |
| tree | 82fe37ca9bf1e12a78e2cf09b3cbd6e0ac4c85df /tasks/test.rake | |
| parent | 974e245ae0cb4a0c3eda14a9617090173b326e8a (diff) | |
| download | mruby-02121cbd65b5e1445f2e6ed08eb758621fd38b8b.tar.gz mruby-02121cbd65b5e1445f2e6ed08eb758621fd38b8b.zip | |
Fix that sometimes parallel build of test code fails; fix #5284
The cause is that `mrbgem.rake` of` mruby-test` gem is loaded when test
code is requested to be built, but when `mrbgem.rake` is loaded,
`MRuby::Gem.current` is updated, which is not thread safe.
Address this by not loading `mrbgem.rake` in parallel.
Diffstat (limited to 'tasks/test.rake')
| -rw-r--r-- | tasks/test.rake | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/tasks/test.rake b/tasks/test.rake index bb08a6cb8..a18635cc6 100644 --- a/tasks/test.rake +++ b/tasks/test.rake @@ -17,9 +17,12 @@ namespace :test do |test_ns| desc "build all mruby tests" task :build => "build:lib" - namespace :build do + namespace :build do |test_build_ns| desc "build library tests" - task :lib + task :lib => :all do + MRuby.each_target{|build| build.gem(core: 'mruby-test')} + test_build_ns["lib_without_loading_gem"].invoke + end end desc "run all mruby tests" @@ -36,13 +39,13 @@ end MRuby.each_target do |build| if build.test_enabled? - t = task "test:build:lib:#{build.name}" => :all do - gem = build.gem(core: 'mruby-test') + t = task "test:build:lib_without_loading_gem:#{build.name}" do + gem = build.gems["mruby-test"] gem.setup gem.setup_compilers Rake::Task[build.define_installer_if_needed("mrbtest")].invoke end - task "test:build:lib" => t + task "test:build:lib_without_loading_gem" => t t = task "test:run:lib:#{build.name}" do build.run_test |
