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