summaryrefslogtreecommitdiffhomepage
path: root/tasks
diff options
context:
space:
mode:
Diffstat (limited to 'tasks')
-rw-r--r--tasks/bin.rake20
-rw-r--r--tasks/mrbgems.rake20
-rw-r--r--tasks/test.rake64
3 files changed, 79 insertions, 25 deletions
diff --git a/tasks/bin.rake b/tasks/bin.rake
index afef065a1..bc8820b66 100644
--- a/tasks/bin.rake
+++ b/tasks/bin.rake
@@ -1,35 +1,23 @@
-install_task = ->(src) do
- dst = "#{MRuby::Build.install_dir}/#{File.basename(src)}"
- file dst => src do
- install_D src, dst
- end
- dst
-end
-
MRuby.each_target do |build|
if build.host? && build.mrbc_build && !build.gems["mruby-bin-mrbc"]
exe = build.exefile("#{build.mrbc_build.build_dir}/bin/mrbc")
- build.products << install_task.(exe)
+ build.products << build.define_installer(exe)
end
- build.bins.each do |bin|
- exe = build.exefile("#{build.build_dir}/bin/#{bin}")
- build.products << (build.host? ? install_task.(exe) : exe)
- end
+ build.bins.each{|bin| build.products << define_installer_if_needed(bin)}
- linker_attrs = build.gems.map{|gem| gem.linker.run_attrs}.transpose
+ linker_attrs = build.gems.linker_attrs
build.gems.each do |gem|
gem.bins.each do |bin|
exe = build.exefile("#{build.build_dir}/bin/#{bin}")
objs = Dir["#{gem.dir}/tools/#{bin}/*.{c,cpp,cxx,cc}"].map do |f|
build.objfile(f.pathmap("#{gem.build_dir}/tools/#{bin}/%n"))
end
-
file exe => objs.concat(build.libraries) do |t|
build.linker.run t.name, t.prerequisites, *linker_attrs
end
- build.products << (build.host? ? install_task.(exe) : exe)
+ build.products << define_installer_if_needed(bin)
end
end
end
diff --git a/tasks/mrbgems.rake b/tasks/mrbgems.rake
index 0a3ae652d..ad98f7356 100644
--- a/tasks/mrbgems.rake
+++ b/tasks/mrbgems.rake
@@ -1,11 +1,12 @@
MRuby.each_target do
+ active_gems_txt = "#{build_dir}/mrbgems/active_gems.txt"
+
if enable_gems?
# set up all gems
gems.each(&:setup)
gems.check self
# loader all gems
- active_gems_txt = "#{build_dir}/mrbgems/active_gems.txt"
self.libmruby_objs << objfile("#{build_dir}/mrbgems/gem_init")
file objfile("#{build_dir}/mrbgems/gem_init") => ["#{build_dir}/mrbgems/gem_init.c", "#{build_dir}/LEGAL"]
file "#{build_dir}/mrbgems/gem_init.c" => [active_gems_txt, MRUBY_CONFIG, __FILE__] do |t|
@@ -50,14 +51,15 @@ MRuby.each_target do
f.puts %Q[}]
end
end
- file active_gems_txt => :generate_active_gems_txt
- task :generate_active_gems_txt do |t|
- def t.timestamp; Time.at(0) end
- active_gems = gems.sort_by(&:name).inject(""){|s, g| s << "#{g.name}\n"}
- if !File.exist?(active_gems_txt) || File.read(active_gems_txt) != active_gems
- mkdir_p File.dirname(active_gems_txt)
- File.write(active_gems_txt, active_gems)
- end
+ end
+
+ file active_gems_txt => :generate_active_gems_txt
+ task :generate_active_gems_txt do |t|
+ def t.timestamp; Time.at(0) end
+ active_gems = gems.sort_by(&:name).inject(""){|s, g| s << "#{g.name}\n"}
+ if !File.exist?(active_gems_txt) || File.read(active_gems_txt) != active_gems
+ mkdir_p File.dirname(active_gems_txt)
+ File.write(active_gems_txt, active_gems)
end
end
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