expectations/raketask.rb
すんなり rake/testtask.rb と一緒には使えないですね。
require 'rake' require 'rake/tasklib' require 'tempfile' module Expectations class RakeTask < Rake::TaskLib DEFAULT_NAME = :test def initialize(name = DEFAULT_NAME) self.name = name @libs = ['lib'] @test_files = [] self.verbose = false self.warning = false yield(self) if block_given? self.pattern ||= 'test/test_*.rb' define end attr_accessor :name attr_accessor :pattern attr_reader :libs attr_reader :test_files attr_accessor :verbose attr_accessor :warning def description buf = "do testing on Expectations" buf << ", for #{name}" unless name == DEFAULT_NAME buf end def define desc description task name do RakeFileUtils.verbose(verbose) do LOADER.open{|f| ruby ruby_argument(f.path, *file_list()) } end end self end LOADER = <<-EOS require 'expectations' ARGV.each{|file| load file } EOS def LOADER.open(name = 'expectations-raketask') Tempfile.open(name) do |f| f.puts self f.rewind yield(f) end end def ruby_argument(*files) args = ['-rubygems'] args.push(*libs.map{|d| %Q`-I"#{File.expand_path(d)}"` }) args.push('-w') if warning args.push(*files.map{|file| %Q`"#{file}"` }) args.join(' ') end def file_list list = [*test_files] list.push(*FileList[pattern]) if pattern FileList[list] end end end