summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-test
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 /mrbgems/mruby-test
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 'mrbgems/mruby-test')
-rw-r--r--mrbgems/mruby-test/mrbgem.rake34
1 files changed, 8 insertions, 26 deletions
diff --git a/mrbgems/mruby-test/mrbgem.rake b/mrbgems/mruby-test/mrbgem.rake
index 4a4a7af8f..421108e0b 100644
--- a/mrbgems/mruby-test/mrbgem.rake
+++ b/mrbgems/mruby-test/mrbgem.rake
@@ -3,26 +3,17 @@ MRuby::Gem::Specification.new('mruby-test') do |spec|
spec.author = 'mruby developers'
spec.summary = 'mruby test'
- build.bins << 'mrbtest'
- spec.add_dependency('mruby-compiler', :core => 'mruby-compiler')
-
spec.test_rbfiles = Dir.glob("#{MRUBY_ROOT}/test/t/*.rb")
clib = "#{build_dir}/mrbtest.c"
mlib = clib.ext(exts.object)
exec = exefile("#{build.build_dir}/bin/mrbtest")
-
- mrbtest_lib = libfile("#{build_dir}/mrbtest")
- mrbtest_objs = []
-
- driver_objs = Dir.glob("#{dir}/*.{c,cpp,cxx,cc,m,asm,s,S}").map do |f|
- objfile(f.relative_path_from(dir).to_s.pathmap("#{build_dir}/%X"))
- end
-
assert_c = "#{build_dir}/assert.c"
assert_rb = "#{MRUBY_ROOT}/test/assert.rb"
assert_lib = assert_c.ext(exts.object)
- mrbtest_objs << assert_lib
+ mrbtest_lib = libfile("#{build_dir}/mrbtest")
+ mrbtest_objs = [assert_lib]
+ driver_objs = srcs_to_objs(".")
file assert_lib => assert_c
file assert_c => [assert_rb, build.mrbcfile] do |t|
@@ -37,8 +28,9 @@ MRuby::Gem::Specification.new('mruby-test') do |spec|
build.gems.each do |g|
test_rbobj = g.test_rbireps.ext(exts.object)
- g.test_objs << test_rbobj
- dep_list = build.gems.tsort_dependencies(g.test_dependencies, gem_table).select(&:generate_functions)
+ mrbtest_objs.concat(g.test_objs)
+ mrbtest_objs << test_rbobj
+ dep_list = build.gems.tsort_dependencies([g.name], gem_table).select(&:generate_functions)
file test_rbobj => g.test_rbireps
file g.test_rbireps => [g.test_rbfiles, build.mrbcfile].flatten do |t|
@@ -65,7 +57,7 @@ MRuby::Gem::Specification.new('mruby-test') do |spec|
g.test_rbfiles.flatten.each_with_index do |rbfile, i|
g.build.mrbc.run f, rbfile, "gem_test_irep_#{g.funcname}_#{i}", false
end
- f.puts %Q[void mrb_#{g.funcname}_gem_test(mrb_state *mrb);] unless g.test_objs.empty?
+ f.puts %Q[void mrb_#{g.funcname}_gem_test(mrb_state *mrb);] if g.custom_test_init?
dep_list.each do |d|
f.puts %Q[void GENERATED_TMP_mrb_#{d.funcname}_gem_init(mrb_state *mrb);]
f.puts %Q[void GENERATED_TMP_mrb_#{d.funcname}_gem_final(mrb_state *mrb);]
@@ -128,23 +120,13 @@ MRuby::Gem::Specification.new('mruby-test') do |spec|
end
end
- build.gems.each do |v|
- mrbtest_objs.concat v.test_objs
- end
-
file mrbtest_lib => mrbtest_objs do |t|
build.archiver.run t.name, t.prerequisites
end
unless build.build_mrbtest_lib_only?
file exec => [*driver_objs, mlib, mrbtest_lib, build.libmruby_static] do |t|
- gem_flags = build.gems.map { |g| g.linker.flags }
- gem_flags_before_libraries = build.gems.map { |g| g.linker.flags_before_libraries }
- gem_flags_after_libraries = build.gems.map { |g| g.linker.flags_after_libraries }
- gem_libraries = build.gems.map { |g| g.linker.libraries }
- gem_library_paths = build.gems.map { |g| g.linker.library_paths }
- build.linker.run t.name, t.prerequisites, gem_libraries, gem_library_paths, gem_flags,
- gem_flags_before_libraries, gem_flags_after_libraries
+ build.linker.run t.name, t.prerequisites, *build.gems.linker_attrs
end
end