require 'test/unit' require 'rant/rantlib' require 'tutil' require 'fileutils' $testRantImportDir ||= File.expand_path(File.dirname(__FILE__)) class TestRantImport < Test::Unit::TestCase def setup # Ensure we run in test directory. Dir.chdir($testRantImportDir) unless Dir.pwd == $testRantImportDir end def teardown FileUtils.rm_f Dir["ant*"] FileUtils.rm_f Dir["make*"] FileUtils.rm_rf Dir["*.t"] end def test_no_import run_import("--quiet", "make.rb") assert(test(?f, "make.rb")) assert(!test(?f, "action.t")) assert_equal(run_rant("hello"), run_ruby("make.rb", "hello")) assert(test(?f, "action.t")) end def test_import_from_custom_lib FileUtils.mkpath "mylib.t/rant/import" open("mylib.t/rant/import/mygen.rb", "w") { |f| f << <<-EOF mygen = Object.new def mygen.rant_generate(rac, ch, args, &block) tn = args.first || "mygen" rac.task(:__caller__ => ch, tn => []) do |t| puts "Greetings from `" + t.name + "', generated by MyGen." rac.cx.sys.touch t.name end end Rant::Generators::MyGen = mygen EOF } open("mygen.rf.t", "w") { |f| f << <<-EOF $:.unshift "mylib.t" import "mygen" desc "task created by mygen" gen MyGen EOF } out, err = capture_std do assert_equal(0, Rant::RantApp.new("-fmygen.rf.t").run) end assert_match(/Greetings.*mygen/, out) assert(test(?f, "mygen")) FileUtils.rm_f "mygen" assert(!test(?e, "mygen")) run_import("--quiet", "-fmygen.rf.t", "ant") assert(test(?f, "ant")) FileUtils.rm_r "mylib.t" out = run_ruby("ant", "-fmygen.rf.t") assert_match(/Greetings.*mygen/, out) assert(test(?f, "mygen")) ensure FileUtils.rm_f "mygen" end end