rroonga 0.9.3-x86-mingw32 → 0.9.4-x86-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/NEWS.ja.rdoc +13 -0
- data/NEWS.rdoc +13 -0
- data/Rakefile +1 -1
- data/ext/groonga/extconf.rb +4 -3
- data/ext/groonga/rb-grn.h +698 -0
- data/html/developer.html +10 -7
- data/html/index.html +1 -1
- data/lib/1.8/groonga.so +0 -0
- data/lib/1.9/groonga.so +0 -0
- data/pkg-config.rb +1 -1
- data/test/run-test.rb +9 -3
- data/vendor/local/bin/libgroonga-0.dll +0 -0
- data/vendor/local/include/groonga.h +2285 -0
- data/vendor/local/lib/libgroonga.la +41 -0
- metadata +37 -85
- data/ext/groonga/mkmf.log +0 -99
- data/test-unit/Rakefile +0 -40
- data/test-unit/TODO +0 -5
- data/test-unit/bin/testrb +0 -5
- data/test-unit/html/classic.html +0 -15
- data/test-unit/html/index.html +0 -25
- data/test-unit/html/index.html.ja +0 -27
- data/test-unit/lib/test/unit/assertionfailederror.rb +0 -25
- data/test-unit/lib/test/unit/assertions.rb +0 -1230
- data/test-unit/lib/test/unit/attribute.rb +0 -125
- data/test-unit/lib/test/unit/autorunner.rb +0 -360
- data/test-unit/lib/test/unit/collector/descendant.rb +0 -23
- data/test-unit/lib/test/unit/collector/dir.rb +0 -108
- data/test-unit/lib/test/unit/collector/load.rb +0 -144
- data/test-unit/lib/test/unit/collector/objectspace.rb +0 -34
- data/test-unit/lib/test/unit/collector.rb +0 -36
- data/test-unit/lib/test/unit/color-scheme.rb +0 -102
- data/test-unit/lib/test/unit/color.rb +0 -96
- data/test-unit/lib/test/unit/diff.rb +0 -724
- data/test-unit/lib/test/unit/error.rb +0 -130
- data/test-unit/lib/test/unit/exceptionhandler.rb +0 -39
- data/test-unit/lib/test/unit/failure.rb +0 -136
- data/test-unit/lib/test/unit/fixture.rb +0 -176
- data/test-unit/lib/test/unit/notification.rb +0 -129
- data/test-unit/lib/test/unit/omission.rb +0 -191
- data/test-unit/lib/test/unit/pending.rb +0 -150
- data/test-unit/lib/test/unit/priority.rb +0 -180
- data/test-unit/lib/test/unit/runner/console.rb +0 -52
- data/test-unit/lib/test/unit/runner/emacs.rb +0 -8
- data/test-unit/lib/test/unit/runner/tap.rb +0 -8
- data/test-unit/lib/test/unit/testcase.rb +0 -476
- data/test-unit/lib/test/unit/testresult.rb +0 -89
- data/test-unit/lib/test/unit/testsuite.rb +0 -110
- data/test-unit/lib/test/unit/ui/console/outputlevel.rb +0 -14
- data/test-unit/lib/test/unit/ui/console/testrunner.rb +0 -466
- data/test-unit/lib/test/unit/ui/emacs/testrunner.rb +0 -63
- data/test-unit/lib/test/unit/ui/tap/testrunner.rb +0 -92
- data/test-unit/lib/test/unit/ui/testrunner.rb +0 -28
- data/test-unit/lib/test/unit/ui/testrunnermediator.rb +0 -77
- data/test-unit/lib/test/unit/ui/testrunnerutilities.rb +0 -41
- data/test-unit/lib/test/unit/util/backtracefilter.rb +0 -41
- data/test-unit/lib/test/unit/util/method-owner-finder.rb +0 -28
- data/test-unit/lib/test/unit/util/observable.rb +0 -90
- data/test-unit/lib/test/unit/util/procwrapper.rb +0 -48
- data/test-unit/lib/test/unit/version.rb +0 -7
- data/test-unit/lib/test/unit.rb +0 -323
- data/test-unit/sample/adder.rb +0 -13
- data/test-unit/sample/subtracter.rb +0 -12
- data/test-unit/sample/test_adder.rb +0 -20
- data/test-unit/sample/test_subtracter.rb +0 -20
- data/test-unit/sample/test_user.rb +0 -23
- data/test-unit/test/collector/test-descendant.rb +0 -133
- data/test-unit/test/collector/test-load.rb +0 -442
- data/test-unit/test/collector/test_dir.rb +0 -406
- data/test-unit/test/collector/test_objectspace.rb +0 -100
- data/test-unit/test/run-test.rb +0 -15
- data/test-unit/test/test-attribute.rb +0 -86
- data/test-unit/test/test-color-scheme.rb +0 -67
- data/test-unit/test/test-color.rb +0 -47
- data/test-unit/test/test-diff.rb +0 -518
- data/test-unit/test/test-emacs-runner.rb +0 -60
- data/test-unit/test/test-fixture.rb +0 -287
- data/test-unit/test/test-notification.rb +0 -33
- data/test-unit/test/test-omission.rb +0 -81
- data/test-unit/test/test-pending.rb +0 -70
- data/test-unit/test/test-priority.rb +0 -119
- data/test-unit/test/test-testcase.rb +0 -544
- data/test-unit/test/test_assertions.rb +0 -1151
- data/test-unit/test/test_error.rb +0 -26
- data/test-unit/test/test_failure.rb +0 -33
- data/test-unit/test/test_testresult.rb +0 -113
- data/test-unit/test/test_testsuite.rb +0 -129
- data/test-unit/test/testunit-test-util.rb +0 -14
- data/test-unit/test/ui/test_testrunmediator.rb +0 -20
- data/test-unit/test/util/test-method-owner-finder.rb +0 -38
- data/test-unit/test/util/test_backtracefilter.rb +0 -41
- data/test-unit/test/util/test_observable.rb +0 -102
- data/test-unit/test/util/test_procwrapper.rb +0 -36
@@ -1,125 +0,0 @@
|
|
1
|
-
module Test
|
2
|
-
module Unit
|
3
|
-
module Attribute
|
4
|
-
class << self
|
5
|
-
def included(base)
|
6
|
-
base.extend(BaseClassMethods)
|
7
|
-
base.extend(ClassMethods)
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
module BaseClassMethods
|
12
|
-
def attributes_table
|
13
|
-
{}
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
module ClassMethods
|
18
|
-
def method_added(name)
|
19
|
-
super
|
20
|
-
return unless defined?(@current_attributes)
|
21
|
-
|
22
|
-
attributes = {}
|
23
|
-
kept_attributes = {}
|
24
|
-
@current_attributes.each do |attribute_name, attribute|
|
25
|
-
attributes[attribute_name] = attribute[:value]
|
26
|
-
kept_attributes[attribute_name] = attribute if attribute[:keep]
|
27
|
-
end
|
28
|
-
set_attributes(name, attributes)
|
29
|
-
@current_attributes = kept_attributes
|
30
|
-
end
|
31
|
-
|
32
|
-
def attribute(name, value, options={}, *method_names)
|
33
|
-
unless options.is_a?(Hash)
|
34
|
-
method_names << options
|
35
|
-
options = {}
|
36
|
-
end
|
37
|
-
@current_attributes ||= {}
|
38
|
-
if method_names.empty?
|
39
|
-
@current_attributes[name] = options.merge(:value => value)
|
40
|
-
else
|
41
|
-
method_names.each do |method_name|
|
42
|
-
set_attributes(method_name, {name => value})
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
def attributes_table
|
48
|
-
@attributes_table ||= {}
|
49
|
-
super.merge(@attributes_table)
|
50
|
-
end
|
51
|
-
|
52
|
-
def set_attributes(method_name, new_attributes)
|
53
|
-
return if new_attributes.empty?
|
54
|
-
method_name = normalize_method_name(method_name)
|
55
|
-
@attributes_table ||= {}
|
56
|
-
@attributes_table[method_name] ||= {}
|
57
|
-
current_attributes = @attributes_table[method_name]
|
58
|
-
new_attributes.each do |key, value|
|
59
|
-
key = normalize_attribute_name(key)
|
60
|
-
observers = attribute_observers(key) || []
|
61
|
-
observers.each do |observer|
|
62
|
-
observer.call(self,
|
63
|
-
key,
|
64
|
-
(attributes(method_name) || {})[key],
|
65
|
-
value,
|
66
|
-
method_name)
|
67
|
-
end
|
68
|
-
current_attributes[key] = value
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
def attributes(method_name)
|
73
|
-
method_name = normalize_method_name(method_name)
|
74
|
-
attributes = attributes_table[method_name]
|
75
|
-
ancestors[1..-1].each do |ancestor|
|
76
|
-
if ancestor.is_a?(Class) and ancestor < Test::Unit::Attribute
|
77
|
-
parent_attributes = ancestor.attributes(method_name)
|
78
|
-
if attributes
|
79
|
-
attributes = (parent_attributes || {}).merge(attributes)
|
80
|
-
else
|
81
|
-
attributes = parent_attributes
|
82
|
-
end
|
83
|
-
break
|
84
|
-
end
|
85
|
-
end
|
86
|
-
attributes
|
87
|
-
end
|
88
|
-
|
89
|
-
def get_attribute(method_name, attribute_name)
|
90
|
-
attribute_name = normalize_attribute_name(attribute_name)
|
91
|
-
(attributes(method_name) || {})[attribute_name]
|
92
|
-
end
|
93
|
-
|
94
|
-
@@attribute_observers = {}
|
95
|
-
def register_attribute_observer(attribute_name, observer=Proc.new)
|
96
|
-
attribute_name = normalize_attribute_name(attribute_name)
|
97
|
-
@@attribute_observers[attribute_name] ||= []
|
98
|
-
@@attribute_observers[attribute_name] << observer
|
99
|
-
end
|
100
|
-
|
101
|
-
def attribute_observers(attribute_name)
|
102
|
-
attribute_name = normalize_attribute_name(attribute_name)
|
103
|
-
@@attribute_observers[attribute_name]
|
104
|
-
end
|
105
|
-
|
106
|
-
private
|
107
|
-
def normalize_attribute_name(name)
|
108
|
-
name.to_s
|
109
|
-
end
|
110
|
-
|
111
|
-
def normalize_method_name(name)
|
112
|
-
name.to_s
|
113
|
-
end
|
114
|
-
end
|
115
|
-
|
116
|
-
def attributes
|
117
|
-
self.class.attributes(@method_name) || {}
|
118
|
-
end
|
119
|
-
|
120
|
-
def [](name)
|
121
|
-
self.class.get_attribute(@method_name, name)
|
122
|
-
end
|
123
|
-
end
|
124
|
-
end
|
125
|
-
end
|
@@ -1,360 +0,0 @@
|
|
1
|
-
require 'test/unit/color-scheme'
|
2
|
-
require 'optparse'
|
3
|
-
|
4
|
-
module Test
|
5
|
-
module Unit
|
6
|
-
class AutoRunner
|
7
|
-
RUNNERS = {}
|
8
|
-
COLLECTORS = {}
|
9
|
-
ADDITIONAL_OPTIONS = []
|
10
|
-
|
11
|
-
class << self
|
12
|
-
def register_runner(id, runner_builder=Proc.new)
|
13
|
-
RUNNERS[id] = runner_builder
|
14
|
-
RUNNERS[id.to_s] = runner_builder
|
15
|
-
end
|
16
|
-
|
17
|
-
def runner(id)
|
18
|
-
RUNNERS[id.to_s]
|
19
|
-
end
|
20
|
-
|
21
|
-
@@default_runner = nil
|
22
|
-
def default_runner
|
23
|
-
runner(@@default_runner)
|
24
|
-
end
|
25
|
-
|
26
|
-
def default_runner=(id)
|
27
|
-
@@default_runner = id
|
28
|
-
end
|
29
|
-
|
30
|
-
def register_collector(id, collector_builder=Proc.new)
|
31
|
-
COLLECTORS[id] = collector_builder
|
32
|
-
COLLECTORS[id.to_s] = collector_builder
|
33
|
-
end
|
34
|
-
|
35
|
-
def collector(id)
|
36
|
-
COLLECTORS[id.to_s]
|
37
|
-
end
|
38
|
-
|
39
|
-
def register_color_scheme(id, scheme)
|
40
|
-
ColorScheme[id] = scheme
|
41
|
-
end
|
42
|
-
|
43
|
-
def setup_option(option_builder=Proc.new)
|
44
|
-
ADDITIONAL_OPTIONS << option_builder
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
def self.run(force_standalone=false, default_dir=nil, argv=ARGV, &block)
|
49
|
-
r = new(force_standalone || standalone?, &block)
|
50
|
-
r.base = default_dir
|
51
|
-
r.process_args(argv)
|
52
|
-
r.run
|
53
|
-
end
|
54
|
-
|
55
|
-
def self.standalone?
|
56
|
-
return false unless("-e" == $0)
|
57
|
-
ObjectSpace.each_object(Class) do |klass|
|
58
|
-
return false if(klass < TestCase)
|
59
|
-
end
|
60
|
-
true
|
61
|
-
end
|
62
|
-
|
63
|
-
register_collector(:descendant) do |auto_runner|
|
64
|
-
require 'test/unit/collector/descendant'
|
65
|
-
collector = Collector::Descendant.new
|
66
|
-
collector.filter = auto_runner.filters
|
67
|
-
collector.collect($0.sub(/\.rb\Z/, ''))
|
68
|
-
end
|
69
|
-
|
70
|
-
register_collector(:load) do |auto_runner|
|
71
|
-
require 'test/unit/collector/load'
|
72
|
-
collector = Collector::Load.new
|
73
|
-
collector.patterns.concat(auto_runner.pattern) if auto_runner.pattern
|
74
|
-
collector.excludes.concat(auto_runner.exclude) if auto_runner.exclude
|
75
|
-
collector.base = auto_runner.base
|
76
|
-
collector.filter = auto_runner.filters
|
77
|
-
collector.collect(*auto_runner.to_run)
|
78
|
-
end
|
79
|
-
|
80
|
-
# deprecated
|
81
|
-
register_collector(:object_space) do |auto_runner|
|
82
|
-
require 'test/unit/collector/objectspace'
|
83
|
-
c = Collector::ObjectSpace.new
|
84
|
-
c.filter = auto_runner.filters
|
85
|
-
c.collect($0.sub(/\.rb\Z/, ''))
|
86
|
-
end
|
87
|
-
|
88
|
-
# deprecated
|
89
|
-
register_collector(:dir) do |auto_runner|
|
90
|
-
require 'test/unit/collector/dir'
|
91
|
-
c = Collector::Dir.new
|
92
|
-
c.filter = auto_runner.filters
|
93
|
-
c.pattern.concat(auto_runner.pattern) if auto_runner.pattern
|
94
|
-
c.exclude.concat(auto_runner.exclude) if auto_runner.exclude
|
95
|
-
c.base = auto_runner.base
|
96
|
-
$:.push(auto_runner.base) if auto_runner.base
|
97
|
-
c.collect(*(auto_runner.to_run.empty? ? ['.'] : auto_runner.to_run))
|
98
|
-
end
|
99
|
-
|
100
|
-
attr_reader :suite, :runner_options
|
101
|
-
attr_accessor :filters, :to_run, :pattern, :exclude, :base, :workdir
|
102
|
-
attr_accessor :color_scheme
|
103
|
-
attr_writer :runner, :collector
|
104
|
-
|
105
|
-
def initialize(standalone)
|
106
|
-
Unit.run = true
|
107
|
-
@standalone = standalone
|
108
|
-
@runner = default_runner
|
109
|
-
@collector = default_collector
|
110
|
-
@filters = []
|
111
|
-
@to_run = []
|
112
|
-
@color_scheme = ColorScheme.default
|
113
|
-
@runner_options = {}
|
114
|
-
@default_arguments = []
|
115
|
-
@workdir = nil
|
116
|
-
config_file = "test-unit.yml"
|
117
|
-
if File.exist?(config_file)
|
118
|
-
load_config(config_file)
|
119
|
-
else
|
120
|
-
load_global_config
|
121
|
-
end
|
122
|
-
yield(self) if block_given?
|
123
|
-
end
|
124
|
-
|
125
|
-
def process_args(args = ARGV)
|
126
|
-
begin
|
127
|
-
args.unshift(*@default_arguments)
|
128
|
-
options.order!(args) {|arg| @to_run << arg}
|
129
|
-
rescue OptionParser::ParseError => e
|
130
|
-
puts e
|
131
|
-
puts options
|
132
|
-
exit(false)
|
133
|
-
end
|
134
|
-
not @to_run.empty?
|
135
|
-
end
|
136
|
-
|
137
|
-
def options
|
138
|
-
@options ||= OptionParser.new do |o|
|
139
|
-
o.banner = "Test::Unit automatic runner."
|
140
|
-
o.banner << "\nUsage: #{$0} [options] [-- untouched arguments]"
|
141
|
-
|
142
|
-
o.on
|
143
|
-
o.on('-r', '--runner=RUNNER', RUNNERS,
|
144
|
-
"Use the given RUNNER.",
|
145
|
-
"(" + keyword_display(RUNNERS) + ")") do |r|
|
146
|
-
@runner = r
|
147
|
-
end
|
148
|
-
|
149
|
-
if (@standalone)
|
150
|
-
o.on('-b', '--basedir=DIR', "Base directory of test suites.") do |b|
|
151
|
-
@base = b
|
152
|
-
end
|
153
|
-
|
154
|
-
o.on('-w', '--workdir=DIR', "Working directory to run tests.") do |w|
|
155
|
-
@workdir = w
|
156
|
-
end
|
157
|
-
|
158
|
-
o.on('-a', '--add=TORUN', Array,
|
159
|
-
"Add TORUN to the list of things to run;",
|
160
|
-
"can be a file or a directory.") do |a|
|
161
|
-
@to_run.concat(a)
|
162
|
-
end
|
163
|
-
|
164
|
-
@pattern = []
|
165
|
-
o.on('-p', '--pattern=PATTERN', Regexp,
|
166
|
-
"Match files to collect against PATTERN.") do |e|
|
167
|
-
@pattern << e
|
168
|
-
end
|
169
|
-
|
170
|
-
@exclude = []
|
171
|
-
o.on('-x', '--exclude=PATTERN', Regexp,
|
172
|
-
"Ignore files to collect against PATTERN.") do |e|
|
173
|
-
@exclude << e
|
174
|
-
end
|
175
|
-
end
|
176
|
-
|
177
|
-
o.on('-n', '--name=NAME', String,
|
178
|
-
"Runs tests matching NAME.",
|
179
|
-
"(patterns may be used).") do |n|
|
180
|
-
n = (%r{\A/(.*)/\Z} =~ n ? Regexp.new($1) : n)
|
181
|
-
case n
|
182
|
-
when Regexp
|
183
|
-
@filters << proc{|t| n =~ t.method_name ? true : false}
|
184
|
-
else
|
185
|
-
@filters << proc{|t| n == t.method_name}
|
186
|
-
end
|
187
|
-
end
|
188
|
-
|
189
|
-
o.on('-t', '--testcase=TESTCASE', String,
|
190
|
-
"Runs tests in TestCases matching TESTCASE.",
|
191
|
-
"(patterns may be used).") do |n|
|
192
|
-
n = (%r{\A/(.*)/\Z} =~ n ? Regexp.new($1) : n)
|
193
|
-
case n
|
194
|
-
when Regexp
|
195
|
-
@filters << proc{|t| n =~ t.class.name ? true : false}
|
196
|
-
else
|
197
|
-
@filters << proc{|t| n == t.class.name}
|
198
|
-
end
|
199
|
-
end
|
200
|
-
|
201
|
-
priority_filter = Proc.new do |test|
|
202
|
-
if @filters == [priority_filter]
|
203
|
-
Priority::Checker.new(test).need_to_run?
|
204
|
-
else
|
205
|
-
nil
|
206
|
-
end
|
207
|
-
end
|
208
|
-
o.on("--[no-]priority-mode",
|
209
|
-
"Runs some tests based on their priority.") do |priority_mode|
|
210
|
-
if priority_mode
|
211
|
-
Priority.enable
|
212
|
-
@filters |= [priority_filter]
|
213
|
-
else
|
214
|
-
Priority.disable
|
215
|
-
@filters -= [priority_filter]
|
216
|
-
end
|
217
|
-
end
|
218
|
-
|
219
|
-
o.on("--default-priority=PRIORITY",
|
220
|
-
Priority.available_values,
|
221
|
-
"Uses PRIORITY as default priority",
|
222
|
-
"(#{keyword_display(Priority.available_values)})") do |priority|
|
223
|
-
Priority.default = priority
|
224
|
-
end
|
225
|
-
|
226
|
-
o.on('-I', "--load-path=DIR[#{File::PATH_SEPARATOR}DIR...]",
|
227
|
-
"Appends directory list to $LOAD_PATH.") do |dirs|
|
228
|
-
$LOAD_PATH.concat(dirs.split(File::PATH_SEPARATOR))
|
229
|
-
end
|
230
|
-
|
231
|
-
color_schemes = ColorScheme.all
|
232
|
-
o.on("--color-scheme=SCHEME", color_schemes,
|
233
|
-
"Use SCHEME as color scheme.",
|
234
|
-
"(#{keyword_display(color_schemes)})") do |scheme|
|
235
|
-
@color_scheme = scheme
|
236
|
-
end
|
237
|
-
|
238
|
-
o.on("--config=FILE",
|
239
|
-
"Use YAML fomat FILE content as configuration file.") do |file|
|
240
|
-
load_config(file)
|
241
|
-
end
|
242
|
-
|
243
|
-
o.on("--order=ORDER", TestCase::AVAILABLE_ORDERS,
|
244
|
-
"Run tests in a test case in ORDER order.",
|
245
|
-
"(#{keyword_display(TestCase::AVAILABLE_ORDERS)})") do |order|
|
246
|
-
TestCase.test_order = order
|
247
|
-
end
|
248
|
-
|
249
|
-
ADDITIONAL_OPTIONS.each do |option_builder|
|
250
|
-
option_builder.call(self, o)
|
251
|
-
end
|
252
|
-
|
253
|
-
o.on('--',
|
254
|
-
"Stop processing options so that the",
|
255
|
-
"remaining options will be passed to the",
|
256
|
-
"test."){o.terminate}
|
257
|
-
|
258
|
-
o.on('-h', '--help', 'Display this help.'){puts o; exit}
|
259
|
-
|
260
|
-
o.on_tail
|
261
|
-
o.on_tail('Deprecated options:')
|
262
|
-
|
263
|
-
o.on_tail('--console', 'Console runner (use --runner).') do
|
264
|
-
warn("Deprecated option (--console).")
|
265
|
-
@runner = self.class.runner(:console)
|
266
|
-
end
|
267
|
-
|
268
|
-
if RUNNERS[:fox]
|
269
|
-
o.on_tail('--fox', 'Fox runner (use --runner).') do
|
270
|
-
warn("Deprecated option (--fox).")
|
271
|
-
@runner = self.class.runner(:fox)
|
272
|
-
end
|
273
|
-
end
|
274
|
-
|
275
|
-
o.on_tail
|
276
|
-
end
|
277
|
-
end
|
278
|
-
|
279
|
-
def keyword_display(keywords)
|
280
|
-
keywords = keywords.collect do |keyword, _|
|
281
|
-
keyword.to_s
|
282
|
-
end.uniq.sort
|
283
|
-
|
284
|
-
i = 0
|
285
|
-
keywords.collect do |keyword|
|
286
|
-
if (i > 0 and keyword[0] == keywords[i - 1][0]) or
|
287
|
-
((i < keywords.size - 1) and (keyword[0] == keywords[i + 1][0]))
|
288
|
-
n = 2
|
289
|
-
else
|
290
|
-
n = 1
|
291
|
-
end
|
292
|
-
i += 1
|
293
|
-
keyword.sub(/^(.{#{n}})([A-Za-z]+)(?=\w*$)/, '\\1[\\2]')
|
294
|
-
end.join(", ")
|
295
|
-
end
|
296
|
-
|
297
|
-
def run
|
298
|
-
suite = @collector[self]
|
299
|
-
return false if suite.nil?
|
300
|
-
runner = @runner[self]
|
301
|
-
return false if runner.nil?
|
302
|
-
@runner_options[:color_scheme] ||= @color_scheme
|
303
|
-
Dir.chdir(@workdir) if @workdir
|
304
|
-
runner.run(suite, @runner_options).passed?
|
305
|
-
end
|
306
|
-
|
307
|
-
def load_config(file)
|
308
|
-
require 'yaml'
|
309
|
-
config = YAML.load(File.read(file))
|
310
|
-
runner_name = config["runner"]
|
311
|
-
@runner = self.class.runner(runner_name) || @runner
|
312
|
-
@collector = self.class.collector(config["collector"]) || @collector
|
313
|
-
(config["color_schemes"] || {}).each do |name, options|
|
314
|
-
ColorScheme[name] = options
|
315
|
-
end
|
316
|
-
runner_options = {}
|
317
|
-
(config["#{runner_name}_options"] || {}).each do |key, value|
|
318
|
-
key = key.to_sym
|
319
|
-
value = ColorScheme[value] if key == :color_scheme
|
320
|
-
if key == :arguments
|
321
|
-
@default_arguments.concat(value.split)
|
322
|
-
else
|
323
|
-
runner_options[key.to_sym] = value
|
324
|
-
end
|
325
|
-
end
|
326
|
-
@runner_options = @runner_options.merge(runner_options)
|
327
|
-
end
|
328
|
-
|
329
|
-
private
|
330
|
-
def default_runner
|
331
|
-
runner = self.class.default_runner
|
332
|
-
if ENV["EMACS"] == "t"
|
333
|
-
runner ||= self.class.runner(:emacs)
|
334
|
-
else
|
335
|
-
runner ||= self.class.runner(:console)
|
336
|
-
end
|
337
|
-
runner
|
338
|
-
end
|
339
|
-
|
340
|
-
def default_collector
|
341
|
-
self.class.collector(@standalone ? :load : :descendant)
|
342
|
-
end
|
343
|
-
|
344
|
-
def global_config_file
|
345
|
-
File.expand_path("~/.test-unit.xml")
|
346
|
-
rescue ArgumentError
|
347
|
-
nil
|
348
|
-
end
|
349
|
-
|
350
|
-
def load_global_config
|
351
|
-
file = global_config_file
|
352
|
-
load_config(file) if file and File.exist?(file)
|
353
|
-
end
|
354
|
-
end
|
355
|
-
end
|
356
|
-
end
|
357
|
-
|
358
|
-
require 'test/unit/runner/console'
|
359
|
-
require 'test/unit/runner/emacs'
|
360
|
-
require 'test/unit/runner/tap'
|
@@ -1,23 +0,0 @@
|
|
1
|
-
require 'test/unit/collector'
|
2
|
-
|
3
|
-
module Test
|
4
|
-
module Unit
|
5
|
-
module Collector
|
6
|
-
class Descendant
|
7
|
-
include Collector
|
8
|
-
|
9
|
-
NAME = 'collected from the subclasses of TestCase'
|
10
|
-
|
11
|
-
def collect(name=NAME)
|
12
|
-
suite = TestSuite.new(name)
|
13
|
-
sub_suites = []
|
14
|
-
TestCase::DESCENDANTS.each do |descendant_test_case|
|
15
|
-
add_suite(sub_suites, descendant_test_case.suite)
|
16
|
-
end
|
17
|
-
sort(sub_suites).each {|s| suite << s}
|
18
|
-
suite
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,108 +0,0 @@
|
|
1
|
-
require 'test/unit/testsuite'
|
2
|
-
require 'test/unit/collector'
|
3
|
-
|
4
|
-
module Test
|
5
|
-
module Unit
|
6
|
-
module Collector
|
7
|
-
class Dir
|
8
|
-
include Collector
|
9
|
-
|
10
|
-
attr_reader :pattern, :exclude
|
11
|
-
attr_accessor :base
|
12
|
-
|
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
|
-
@base = nil
|
22
|
-
end
|
23
|
-
|
24
|
-
def collect(*from)
|
25
|
-
basedir = @base
|
26
|
-
$:.push(basedir) if basedir
|
27
|
-
if(from.empty?)
|
28
|
-
recursive_collect('.', find_test_cases)
|
29
|
-
elsif(from.size == 1)
|
30
|
-
recursive_collect(from.first, find_test_cases)
|
31
|
-
else
|
32
|
-
suites = []
|
33
|
-
from.each do |f|
|
34
|
-
suite = recursive_collect(f, find_test_cases)
|
35
|
-
suites << suite unless(suite.tests.empty?)
|
36
|
-
end
|
37
|
-
suite = TestSuite.new("[#{from.join(', ')}]")
|
38
|
-
sort(suites).each{|s| suite << s}
|
39
|
-
suite
|
40
|
-
end
|
41
|
-
ensure
|
42
|
-
$:.delete_at($:.rindex(basedir)) if basedir
|
43
|
-
end
|
44
|
-
|
45
|
-
def find_test_cases(ignore=[])
|
46
|
-
cases = []
|
47
|
-
@object_space.each_object(Class) do |c|
|
48
|
-
cases << c if(c < TestCase && !ignore.include?(c))
|
49
|
-
end
|
50
|
-
ignore.concat(cases)
|
51
|
-
cases
|
52
|
-
end
|
53
|
-
|
54
|
-
def recursive_collect(name, already_gathered)
|
55
|
-
sub_suites = []
|
56
|
-
path = realdir(name)
|
57
|
-
if @file.directory?(path)
|
58
|
-
dir_name = name unless name == '.'
|
59
|
-
@dir.entries(path).each do |e|
|
60
|
-
next if(e == '.' || e == '..')
|
61
|
-
e_name = dir_name ? @file.join(dir_name, e) : e
|
62
|
-
if @file.directory?(realdir(e_name))
|
63
|
-
next if /\A(?:CVS|\.svn|\.git)\z/ =~ e
|
64
|
-
sub_suite = recursive_collect(e_name, already_gathered)
|
65
|
-
sub_suites << sub_suite unless(sub_suite.empty?)
|
66
|
-
else
|
67
|
-
next if /~\z/ =~ e_name or /\A\.\#/ =~ e
|
68
|
-
if @pattern and !@pattern.empty?
|
69
|
-
next unless @pattern.any? {|pat| pat =~ e_name}
|
70
|
-
end
|
71
|
-
if @exclude and !@exclude.empty?
|
72
|
-
next if @exclude.any? {|pat| pat =~ e_name}
|
73
|
-
end
|
74
|
-
collect_file(e_name, sub_suites, already_gathered)
|
75
|
-
end
|
76
|
-
end
|
77
|
-
else
|
78
|
-
collect_file(name, sub_suites, already_gathered)
|
79
|
-
end
|
80
|
-
suite = TestSuite.new(@file.basename(name))
|
81
|
-
sort(sub_suites).each{|s| suite << s}
|
82
|
-
suite
|
83
|
-
end
|
84
|
-
|
85
|
-
def collect_file(name, suites, already_gathered)
|
86
|
-
dir = @file.dirname(@file.expand_path(name, @base))
|
87
|
-
$:.unshift(dir)
|
88
|
-
if(@req)
|
89
|
-
@req.require(name)
|
90
|
-
else
|
91
|
-
require(name)
|
92
|
-
end
|
93
|
-
find_test_cases(already_gathered).each{|t| add_suite(suites, t.suite)}
|
94
|
-
ensure
|
95
|
-
$:.delete_at($:.rindex(dir)) if(dir)
|
96
|
-
end
|
97
|
-
|
98
|
-
def realdir(path)
|
99
|
-
if @base
|
100
|
-
@file.join(@base, path)
|
101
|
-
else
|
102
|
-
path
|
103
|
-
end
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|
108
|
-
end
|