diff options
| author | KOBAYASHI Shuji <[email protected]> | 2021-01-08 20:32:08 +0900 |
|---|---|---|
| committer | KOBAYASHI Shuji <[email protected]> | 2021-01-08 20:36:54 +0900 |
| commit | 3a8d7bdf82dddb8d5e54330503d9ed11b4f68ad0 (patch) | |
| tree | e5c1e9c5f62a9bd4e495593c59b0d035a1d193ff /mrbgems/mruby-test | |
| parent | 04561cd999431264e10bb96915a26049cff29d92 (diff) | |
| download | mruby-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.rake | 34 |
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 |
