summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2015-09-03 00:43:21 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2015-09-03 00:43:21 +0900
commitc6aa87c837ed4bde6b293992adfe79fbababbfb3 (patch)
tree19bb4c602627c93b1a9c113cbe9d80fde9392c54
parente35c3aff83d400dfe27fe105b7e282ac81b1197a (diff)
parent87564dc98f22a7710f9e6565f6750bfaa220f965 (diff)
downloadmruby-c6aa87c837ed4bde6b293992adfe79fbababbfb3.tar.gz
mruby-c6aa87c837ed4bde6b293992adfe79fbababbfb3.zip
Merge pull request #2924 from zzak/mruby-test
Extract mrbtest to binary gem
-rw-r--r--Rakefile9
-rw-r--r--build_config.rb10
-rw-r--r--mrbgems/full-core.gembox2
-rw-r--r--mrbgems/mruby-test/README.md (renamed from test/README.md)0
-rw-r--r--mrbgems/mruby-test/driver.c (renamed from test/driver.c)0
-rw-r--r--mrbgems/mruby-test/init_mrbtest.c (renamed from test/init_mrbtest.c)0
-rw-r--r--mrbgems/mruby-test/mrbgem.rake (renamed from tasks/mrbgems_test.rake)90
-rw-r--r--tasks/mruby_build.rake2
-rw-r--r--test/mrbtest.rake69
-rw-r--r--test/t/syntax.rb4
-rw-r--r--travis_config.rb10
11 files changed, 113 insertions, 83 deletions
diff --git a/Rakefile b/Rakefile
index 89dab05e7..574c1365a 100644
--- a/Rakefile
+++ b/Rakefile
@@ -26,9 +26,6 @@ load "#{MRUBY_ROOT}/mrblib/mrblib.rake"
load "#{MRUBY_ROOT}/tasks/mrbgems.rake"
load "#{MRUBY_ROOT}/tasks/libmruby.rake"
-load "#{MRUBY_ROOT}/tasks/mrbgems_test.rake"
-load "#{MRUBY_ROOT}/test/mrbtest.rake"
-
load "#{MRUBY_ROOT}/tasks/benchmark.rake"
##############################
@@ -117,9 +114,11 @@ task :all => depfiles do
end
desc "run all mruby tests"
-task :test => ["all"] + MRuby.targets.values.map { |t| t.build_mrbtest_lib_only? ? t.libfile("#{t.build_dir}/test/mrbtest") : t.exefile("#{t.build_dir}/test/mrbtest") } do
+task :test => ["all"] do
MRuby.each_target do
- run_test unless build_mrbtest_lib_only?
+ if gems.find { |v| v.name == 'mruby-test' }
+ run_test unless build_mrbtest_lib_only?
+ end
end
end
diff --git a/build_config.rb b/build_config.rb
index 3408f19a1..e1178d6b2 100644
--- a/build_config.rb
+++ b/build_config.rb
@@ -108,6 +108,16 @@ MRuby::Build.new('host-debug') do |conf|
# conf.enable_bintest
end
+MRuby::Build.new('test') do |conf|
+ toolchain :gcc
+
+ enable_debug
+ conf.enable_bintest
+
+ conf.gembox 'default'
+ conf.gem :core => "mruby-test"
+end
+
# Define cross build settings
# MRuby::CrossBuild.new('32bit') do |conf|
# toolchain :gcc
diff --git a/mrbgems/full-core.gembox b/mrbgems/full-core.gembox
index d1ff5f414..9a5b7081b 100644
--- a/mrbgems/full-core.gembox
+++ b/mrbgems/full-core.gembox
@@ -4,6 +4,6 @@ MRuby::GemBox.new do |conf|
Dir.glob("#{root}/mrbgems/mruby-*/mrbgem.rake") do |x|
g = File.basename File.dirname x
- conf.gem :core => g unless g =~ /^mruby-(print|sprintf|bin-debugger)$/
+ conf.gem :core => g unless g =~ /^mruby-(print|sprintf|bin-debugger|test)$/
end
end
diff --git a/test/README.md b/mrbgems/mruby-test/README.md
index fa4b91e3a..fa4b91e3a 100644
--- a/test/README.md
+++ b/mrbgems/mruby-test/README.md
diff --git a/test/driver.c b/mrbgems/mruby-test/driver.c
index 7f0633723..7f0633723 100644
--- a/test/driver.c
+++ b/mrbgems/mruby-test/driver.c
diff --git a/test/init_mrbtest.c b/mrbgems/mruby-test/init_mrbtest.c
index 1e2ba92bd..1e2ba92bd 100644
--- a/test/init_mrbtest.c
+++ b/mrbgems/mruby-test/init_mrbtest.c
diff --git a/tasks/mrbgems_test.rake b/mrbgems/mruby-test/mrbgem.rake
index 0ee508360..8370f4713 100644
--- a/tasks/mrbgems_test.rake
+++ b/mrbgems/mruby-test/mrbgem.rake
@@ -1,13 +1,46 @@
-MRuby.each_target do
- gem_table = gems.generate_gem_table self
+MRuby::Gem::Specification.new('mruby-test') do |spec|
+ spec.license = 'MIT'
+ spec.author = 'mruby developers'
+ spec.summary = 'mruby test'
- gems.each do |g|
+ build.bins << 'mrbtest'
+ spec.add_dependency('mruby-compiler', :core => 'mruby-compiler')
+
+ clib = "#{build_dir}/mrbtest.c"
+ mlib = clib.ext(exts.object)
+ mrbs = Dir.glob("#{MRUBY_ROOT}/test/t/*.rb")
+ exec = exefile("#{build.build_dir}/bin/mrbtest")
+
+ libmruby = libfile("#{build.build_dir}/lib/libmruby")
+ libmruby_core = libfile("#{build.build_dir}/lib/libmruby_core")
+
+ mrbtest_lib = libfile("#{build_dir}/mrbtest")
+ mrbtest_objs = []
+
+ driver_obj = objfile("#{build_dir}/driver")
+ driver = "#{spec.dir}/driver.c"
+
+ assert_c = "#{build_dir}/assert.c"
+ assert_rb = "#{MRUBY_ROOT}/test/assert.rb"
+ assert_lib = assert_c.ext(exts.object)
+ mrbtest_objs << assert_lib
+
+ file assert_lib => assert_c
+ file assert_c => [build.mrbcfile, assert_rb] do |t|
+ open(t.name, 'w') do |f|
+ mrbc.run f, assert_rb, 'mrbtest_assert_irep'
+ end
+ end
+
+ gem_table = build.gems.generate_gem_table self
+
+ build.gems.each do |g|
test_rbobj = g.test_rbireps.ext(exts.object)
g.test_objs << test_rbobj
- dep_list = gems.tsort_dependencies(g.test_dependencies, gem_table).select(&:generate_functions)
+ dep_list = build.gems.tsort_dependencies(g.test_dependencies, gem_table).select(&:generate_functions)
file test_rbobj => g.test_rbireps
- file g.test_rbireps => [g.test_rbfiles].flatten + [File.join(g.dir, 'mrbgem.rake'), g.build.mrbcfile, __FILE__, "#{MRUBY_ROOT}/tasks/mrbgem_spec.rake"] do |t|
+ file g.test_rbireps => [g.test_rbfiles].flatten + [File.join(g.dir, 'mrbgem.rake'), g.build.mrbcfile, "#{MRUBY_ROOT}/tasks/mrbgem_spec.rake"] do |t|
FileUtils.mkdir_p File.dirname(t.name)
open(t.name, 'w') do |f|
g.print_gem_test_header(f)
@@ -91,4 +124,51 @@ MRuby.each_target do
end
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_obj, mlib, mrbtest_lib, libmruby_core, libmruby] 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
+ end
+ end
+
+ init = "#{spec.dir}/init_mrbtest.c"
+ file mlib => clib
+ file clib => [build.mrbcfile, init] do |t|
+ _pp "GEN", "*.rb", "#{clib.relative_path}"
+ FileUtils.mkdir_p File.dirname(clib)
+ open(clib, 'w') do |f|
+ f.puts %Q[/*]
+ f.puts %Q[ * This file contains a list of all]
+ f.puts %Q[ * test functions.]
+ f.puts %Q[ *]
+ f.puts %Q[ * IMPORTANT:]
+ f.puts %Q[ * This file was generated!]
+ f.puts %Q[ * All manual changes will get lost.]
+ f.puts %Q[ */]
+ f.puts %Q[]
+ f.puts IO.read(init)
+ mrbc.run f, mrbs, 'mrbtest_irep'
+ build.gems.each do |g|
+ f.puts %Q[void GENERATED_TMP_mrb_#{g.funcname}_gem_test(mrb_state *mrb);]
+ end
+ f.puts %Q[void mrbgemtest_init(mrb_state* mrb) {]
+ build.gems.each do |g|
+ f.puts %Q[ GENERATED_TMP_mrb_#{g.funcname}_gem_test(mrb);]
+ end
+ f.puts %Q[}]
+ end
+ end
end
diff --git a/tasks/mruby_build.rake b/tasks/mruby_build.rake
index 9f8b4eda5..b3a5dcdad 100644
--- a/tasks/mruby_build.rake
+++ b/tasks/mruby_build.rake
@@ -249,7 +249,7 @@ EOS
def run_test
puts ">>> Test #{name} <<<"
- mrbtest = exefile("#{build_dir}/test/mrbtest")
+ mrbtest = exefile("#{build_dir}/bin/mrbtest")
sh "#{filename mrbtest.relative_path}#{$verbose ? ' -v' : ''}"
puts
run_bintest if @enable_bintest
diff --git a/test/mrbtest.rake b/test/mrbtest.rake
deleted file mode 100644
index b9616fe9d..000000000
--- a/test/mrbtest.rake
+++ /dev/null
@@ -1,69 +0,0 @@
-MRuby.each_target do
- current_dir = File.dirname(__FILE__).relative_path_from(Dir.pwd)
- relative_from_root = File.dirname(__FILE__).relative_path_from(MRUBY_ROOT)
- current_build_dir = "#{build_dir}/#{relative_from_root}"
-
- exec = exefile("#{current_build_dir}/mrbtest")
- clib = "#{current_build_dir}/mrbtest.c"
- mlib = clib.ext(exts.object)
- mrbs = Dir.glob("#{current_dir}/t/*.rb")
- init = "#{current_dir}/init_mrbtest.c"
- ass_c = "#{current_build_dir}/assert.c"
- ass_lib = ass_c.ext(exts.object)
-
- mrbtest_lib = libfile("#{current_build_dir}/mrbtest")
- mrbtest_objs = [mlib, ass_lib]
- gems.each do |v|
- mrbtest_objs.concat v.test_objs
- end
- file mrbtest_lib => mrbtest_objs do |t|
- archiver.run t.name, t.prerequisites
- end
-
- unless build_mrbtest_lib_only?
- driver_obj = objfile("#{current_build_dir}/driver")
- file exec => [driver_obj, mrbtest_lib, libfile("#{build_dir}/lib/libmruby")] do |t|
- gem_flags = gems.map { |g| g.linker.flags }
- gem_flags_before_libraries = gems.map { |g| g.linker.flags_before_libraries }
- gem_flags_after_libraries = gems.map { |g| g.linker.flags_after_libraries }
- gem_libraries = gems.map { |g| g.linker.libraries }
- gem_library_paths = gems.map { |g| g.linker.library_paths }
- linker.run t.name, t.prerequisites, gem_libraries, gem_library_paths, gem_flags, gem_flags_before_libraries
- end
- end
-
- file ass_lib => ass_c
- file ass_c => ["#{current_dir}/assert.rb", __FILE__] do |t|
- FileUtils.mkdir_p File.dirname t.name
- open(t.name, 'w') do |f|
- mrbc.run f, [t.prerequisites.first], 'mrbtest_assert_irep'
- end
- end
-
- file mlib => clib
- file clib => [mrbcfile, init, __FILE__] + mrbs do |t|
- _pp "GEN", "*.rb", "#{clib.relative_path}"
- FileUtils.mkdir_p File.dirname(clib)
- open(clib, 'w') do |f|
- f.puts %Q[/*]
- f.puts %Q[ * This file contains a list of all]
- f.puts %Q[ * test functions.]
- f.puts %Q[ *]
- f.puts %Q[ * IMPORTANT:]
- f.puts %Q[ * This file was generated!]
- f.puts %Q[ * All manual changes will get lost.]
- f.puts %Q[ */]
- f.puts %Q[]
- f.puts IO.read(init)
- mrbc.run f, mrbs, 'mrbtest_irep'
- gems.each do |g|
- f.puts %Q[void GENERATED_TMP_mrb_#{g.funcname}_gem_test(mrb_state *mrb);]
- end
- f.puts %Q[void mrbgemtest_init(mrb_state* mrb) {]
- gems.each do |g|
- f.puts %Q[ GENERATED_TMP_mrb_#{g.funcname}_gem_test(mrb);]
- end
- f.puts %Q[}]
- end
- end
-end
diff --git a/test/t/syntax.rb b/test/t/syntax.rb
index dc1a4a3b9..fb6ffe408 100644
--- a/test/t/syntax.rb
+++ b/test/t/syntax.rb
@@ -1,6 +1,6 @@
assert('__FILE__') do
- file = __FILE__
- assert_true 'test/t/syntax.rb' == file || 'test\t\syntax.rb' == file
+ file = __FILE__.split('test/')[1]
+ assert_true 't/syntax.rb' == file || 't\syntax.rb' == file
end
assert('__LINE__') do
diff --git a/travis_config.rb b/travis_config.rb
index 2b4059cf1..458473f96 100644
--- a/travis_config.rb
+++ b/travis_config.rb
@@ -38,3 +38,13 @@ MRuby::Build.new('cxx_abi') do |conf|
build_mrbc_exec
end
+
+MRuby::Build.new('test') do |conf|
+ toolchain :gcc
+
+ enable_debug
+ conf.enable_bintest
+
+ conf.gembox 'full-core'
+ conf.gem :core => "mruby-test"
+end