diff options
Diffstat (limited to 'tasks')
| -rw-r--r-- | tasks/bin.rake | 20 | ||||
| -rw-r--r-- | tasks/mrbgems.rake | 20 | ||||
| -rw-r--r-- | tasks/test.rake | 64 |
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 |
