summaryrefslogtreecommitdiffhomepage
path: root/tasks/test.rake
diff options
context:
space:
mode:
authorKOBAYASHI Shuji <[email protected]>2021-01-08 20:32:08 +0900
committerKOBAYASHI Shuji <[email protected]>2021-01-08 20:36:54 +0900
commit3a8d7bdf82dddb8d5e54330503d9ed11b4f68ad0 (patch)
treee5c1e9c5f62a9bd4e495593c59b0d035a1d193ff /tasks/test.rake
parent04561cd999431264e10bb96915a26049cff29d92 (diff)
downloadmruby-3a8d7bdf82dddb8d5e54330503d9ed11b4f68ad0.tar.gz
mruby-3a8d7bdf82dddb8d5e54330503d9ed11b4f68ad0.zip
Delay test code build until `rake test`
With this change, the test code will not be built unless `rake test` is run, so there will be almost no side effects even if `enable_test` is always set (but, gems specified by `add_test_dependency` are included in `libmruby.a`). Also added are `test: build` task, which only builds the test code (including the main code), and `test: run` task, which only runs tests independent of build. Therefore, the idiom for building in parallel and not running tests in parallel is `rake -m test:build && rake test:run`.
Diffstat (limited to 'tasks/test.rake')
-rw-r--r--tasks/test.rake64
1 files changed, 64 insertions, 0 deletions
diff --git a/tasks/test.rake b/tasks/test.rake
new file mode 100644
index 000000000..80f7670af
--- /dev/null
+++ b/tasks/test.rake
@@ -0,0 +1,64 @@
+desc "build and run all mruby tests"
+task :test => "test:build" do
+ Rake::Task["test:run"].invoke
+end
+
+namespace :test do |test_ns|
+ desc "build and run library tests"
+ task :lib => "build:lib" do
+ test_ns["run:lib"].invoke
+ end
+
+ desc "build and run command binaries tests"
+ task :bin => :all do
+ test_ns["run:bin"].invoke
+ end
+
+ desc "build all mruby tests"
+ task :build => "build:lib"
+
+ namespace :build do
+ desc "build library tests"
+ task :lib
+ end
+
+ desc "run all mruby tests"
+ task :run
+
+ namespace :run do
+ desc "run library tests"
+ task :lib
+
+ desc "run command binaries tests"
+ task :bin
+ end
+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')
+ gem.setup
+ gem.setup_compilers
+ Rake::Task[build.define_installer_if_needed("mrbtest")].invoke
+ end
+ task "test:build:lib" => t
+
+ t = task "test:run:lib:#{build.name}" do
+ build.run_test
+ end
+ task "test:run" => t
+ task "test:run:lib" => t
+ end
+ if build.bintest_enabled?
+ t = task "test:run:bin:#{build.name}" do
+ build.run_bintest
+ end
+ task "test:run" => t
+ task "test:run:bin" => t
+ end
+end
+
+task :clean do
+ rm_f "#{MRuby::Build.install_dir}/mrbtest"
+end