Class | Test::Unit::Collector::Dir |
In: |
lib/test/unit/collector/dir.rb
|
Parent: | Object |
base | [RW] | |
exclude | [R] | |
pattern | [R] |
# File lib/test/unit/collector/dir.rb, line 13 13: def initialize(dir=::Dir, file=::File, object_space=::ObjectSpace, req=nil) 14: super() 15: @dir = dir 16: @file = file 17: @object_space = object_space 18: @req = req 19: @pattern = [/\btest_.*\.rb\Z/m] 20: @exclude = [] 21: end
# File lib/test/unit/collector/dir.rb, line 23 23: def collect(*from) 24: basedir = @base 25: $:.push(basedir) if basedir 26: if(from.empty?) 27: recursive_collect('.', find_test_cases) 28: elsif(from.size == 1) 29: recursive_collect(from.first, find_test_cases) 30: else 31: suites = [] 32: from.each do |f| 33: suite = recursive_collect(f, find_test_cases) 34: suites << suite unless(suite.tests.empty?) 35: end 36: suite = TestSuite.new("[#{from.join(', ')}]") 37: sort(suites).each{|s| suite << s} 38: suite 39: end 40: ensure 41: $:.delete_at($:.rindex(basedir)) if basedir 42: end
# File lib/test/unit/collector/dir.rb, line 84 84: def collect_file(name, suites, already_gathered) 85: dir = @file.dirname(@file.expand_path(name, @base)) 86: $:.unshift(dir) 87: if(@req) 88: @req.require(name) 89: else 90: require(name) 91: end 92: find_test_cases(already_gathered).each{|t| add_suite(suites, t.suite)} 93: ensure 94: $:.delete_at($:.rindex(dir)) if(dir) 95: end
# File lib/test/unit/collector/dir.rb, line 44 44: def find_test_cases(ignore=[]) 45: cases = [] 46: @object_space.each_object(Class) do |c| 47: cases << c if(c < TestCase && !ignore.include?(c)) 48: end 49: ignore.concat(cases) 50: cases 51: end
# File lib/test/unit/collector/dir.rb, line 97 97: def realdir(path) 98: if @base 99: @file.join(@base, path) 100: else 101: path 102: end 103: end
# File lib/test/unit/collector/dir.rb, line 53 53: def recursive_collect(name, already_gathered) 54: sub_suites = [] 55: path = realdir(name) 56: if @file.directory?(path) 57: dir_name = name unless name == '.' 58: @dir.entries(path).each do |e| 59: next if(e == '.' || e == '..') 60: e_name = dir_name ? @file.join(dir_name, e) : e 61: if @file.directory?(realdir(e_name)) 62: next if /\ACVS\z/ =~ e 63: sub_suite = recursive_collect(e_name, already_gathered) 64: sub_suites << sub_suite unless(sub_suite.empty?) 65: else 66: next if /~\z/ =~ e_name or /\A\.\#/ =~ e 67: if @pattern and !@pattern.empty? 68: next unless @pattern.any? {|pat| pat =~ e_name} 69: end 70: if @exclude and !@exclude.empty? 71: next if @exclude.any? {|pat| pat =~ e_name} 72: end 73: collect_file(e_name, sub_suites, already_gathered) 74: end 75: end 76: else 77: collect_file(name, sub_suites, already_gathered) 78: end 79: suite = TestSuite.new(@file.basename(name)) 80: sort(sub_suites).each{|s| suite << s} 81: suite 82: end