From 02121cbd65b5e1445f2e6ed08eb758621fd38b8b Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shuji Date: Tue, 12 Jan 2021 15:41:22 +0900 Subject: 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. --- tasks/test.rake | 13 ++++++++----- 1 file 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 -- cgit v1.2.3