### ### $Rev$ ### $Release: 0.7.0 $ ### copyright(c) 2007-2011 kuwata-lab.com all rights reserved ### require "#{File.dirname(File.expand_path(__FILE__))}/test_all" require 'fileutils' #class Symbol # def <=>(other) # return self.to_s <=> other.to_s # end #end # #class Hash # def each # self.keys.sort.each do |key| # val = self[key] # yield key, val # end # end #end class TenjinUsersGuideTest include Oktest::TestCase DIR = ARGV[0] || File.expand_path(File.dirname(__FILE__) + '/data/users_guide') CWD = Dir.pwd() def before Dir.chdir DIR end def after Dir.chdir CWD end def _test #@name = (caller()[0] =~ /`(.*?)'/) && $1 Dir.chdir @name do Dir.glob("*.output").each do |filename| s = File.read(filename) s =~ /\A\$ (.*?)\n/ command = $1 expected = $' result = `#{command}` # if RUBY_VERSION >= '1.9' expected.gsub!(/expecting kEND/, 'expecting keyword_end') end case @name when 'test_nested' expected.gsub!(/ *\# .*$/, '') when 'test_logging' result .gsub!(/\d+/, '9999') expected.gsub!(/\d+/, '9999') end # ok_(result) == expected end end end def self.prepare ## remove cache files Dir.glob("test_*/**/*.cache").each do |fpath| File.unlink(fpath) end ## copy necessary files pathlist = Dir.glob("test_*") d = {} pathlist.select {|dirpath| dirpath =~ /_\d\d\d$/ }.each do |dirpath| Dir.glob("#{dirpath}/**/*").each do |path| next unless File.file?(path) key = path.sub(/^[^\/]*\//, '') d[key] = path end d.each_pair do |k, v| fpath = "#{dirpath}/#{k}" unless File.exist?(fpath) dirname = File.dirname(fpath) FileUtils.mkdir_p(dirname) unless File.directory?(dirname) #puts "cp #{v} #{fpath}" FileUtils.copy(v, fpath) else #puts "#cp #{v} #{fpath}" end end end end def self.define_tests dirnames = Dir.glob("test_*") dirnames.each do |dirname| name = dirname s = <<-END def #{name} # $stderr.puts "*** debug: #{name} @name = '#{name}' _test() end END eval s end end Dir.chdir DIR do self.prepare() self.define_tests() end end if __FILE__ == $0 Oktest.run_all() end