summaryrefslogtreecommitdiffhomepage
path: root/tasks
diff options
context:
space:
mode:
authorKOBAYASHI Shuji <[email protected]>2021-01-12 15:41:22 +0900
committerKOBAYASHI Shuji <[email protected]>2021-01-12 15:41:22 +0900
commit02121cbd65b5e1445f2e6ed08eb758621fd38b8b (patch)
tree82fe37ca9bf1e12a78e2cf09b3cbd6e0ac4c85df /tasks
parent974e245ae0cb4a0c3eda14a9617090173b326e8a (diff)
downloadmruby-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')
-rw-r--r--tasks/test.rake13
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