rroonga 1.2.0 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (159) hide show
  1. data/README.textile +71 -0
  2. data/Rakefile +213 -128
  3. data/TODO +0 -0
  4. data/example/bookmark.rb +12 -12
  5. data/ext/groonga/Makefile +233 -0
  6. data/ext/groonga/extconf.rb +1 -1
  7. data/ext/groonga/rb-grn-column.c +5 -5
  8. data/ext/groonga/rb-grn-index-column.c +31 -0
  9. data/ext/groonga/rb-grn-index-cursor.c +106 -0
  10. data/ext/groonga/rb-grn-logger.c +5 -5
  11. data/ext/groonga/rb-grn-object.c +48 -0
  12. data/ext/groonga/rb-grn-patricia-trie.c +1 -1
  13. data/ext/groonga/rb-grn-plugin.c +32 -0
  14. data/ext/groonga/rb-grn-posting.c +51 -0
  15. data/ext/groonga/rb-grn-table-cursor.c +6 -1
  16. data/ext/groonga/rb-grn-table.c +31 -13
  17. data/ext/groonga/rb-grn.h +21 -3
  18. data/ext/groonga/rb-groonga.c +3 -1
  19. data/lib/groonga.rb +1 -0
  20. data/lib/groonga/dumper.rb +25 -5
  21. data/lib/groonga/expression-builder.rb +2 -2
  22. data/lib/groonga/pagination.rb +99 -7
  23. data/lib/groonga/posting.rb +87 -0
  24. data/lib/groonga/record.rb +118 -11
  25. data/lib/groonga/schema.rb +18 -1
  26. data/test/groonga-test-utils.rb +1 -6
  27. data/test/run-test.rb +13 -28
  28. data/test/test-column.rb +4 -0
  29. data/test/test-database-dumper.rb +53 -10
  30. data/test/test-hash.rb +6 -6
  31. data/test/test-index-cursor.rb +93 -0
  32. data/test/test-plugin.rb +6 -0
  33. data/test/test-record.rb +162 -1
  34. data/test/test-schema-type.rb +6 -0
  35. data/test/test-schema.rb +17 -0
  36. data/test/test-table.rb +7 -2
  37. data/test/test-type.rb +9 -1
  38. metadata +135 -245
  39. data/AUTHORS +0 -5
  40. data/NEWS.ja.rdoc +0 -344
  41. data/NEWS.rdoc +0 -346
  42. data/README.ja.rdoc +0 -68
  43. data/README.rdoc +0 -68
  44. data/example/search/config.ru +0 -230
  45. data/example/search/public/css/groonga.css +0 -122
  46. data/ext/.gitignore +0 -2
  47. data/html/bar.svg +0 -153
  48. data/html/developer.html +0 -151
  49. data/html/developer.svg +0 -469
  50. data/html/download.svg +0 -253
  51. data/html/favicon.ico +0 -0
  52. data/html/favicon.svg +0 -591
  53. data/html/footer.html.erb +0 -33
  54. data/html/head.html.erb +0 -4
  55. data/html/header.html.erb +0 -17
  56. data/html/heading-mark.svg +0 -393
  57. data/html/index.html +0 -243
  58. data/html/install.svg +0 -636
  59. data/html/logo.svg +0 -612
  60. data/html/ranguba.css +0 -342
  61. data/html/readme.svg +0 -256
  62. data/html/tutorial.svg +0 -559
  63. data/license/LGPL +0 -504
  64. data/test-unit-notify/Rakefile +0 -47
  65. data/test-unit-notify/lib/test/unit/notify.rb +0 -104
  66. data/test-unit/COPYING +0 -56
  67. data/test-unit/GPL +0 -340
  68. data/test-unit/PSFL +0 -271
  69. data/test-unit/Rakefile +0 -53
  70. data/test-unit/TODO +0 -5
  71. data/test-unit/bin/testrb +0 -5
  72. data/test-unit/html/bar.svg +0 -153
  73. data/test-unit/html/developer.svg +0 -469
  74. data/test-unit/html/favicon.ico +0 -0
  75. data/test-unit/html/favicon.svg +0 -82
  76. data/test-unit/html/heading-mark.svg +0 -393
  77. data/test-unit/html/index.html +0 -247
  78. data/test-unit/html/index.html.ja +0 -270
  79. data/test-unit/html/install.svg +0 -636
  80. data/test-unit/html/logo.svg +0 -483
  81. data/test-unit/html/test-unit.css +0 -339
  82. data/test-unit/html/tutorial.svg +0 -559
  83. data/test-unit/lib/test/unit.rb +0 -328
  84. data/test-unit/lib/test/unit/assertionfailederror.rb +0 -25
  85. data/test-unit/lib/test/unit/assertions.rb +0 -1334
  86. data/test-unit/lib/test/unit/attribute.rb +0 -125
  87. data/test-unit/lib/test/unit/autorunner.rb +0 -363
  88. data/test-unit/lib/test/unit/collector.rb +0 -36
  89. data/test-unit/lib/test/unit/collector/descendant.rb +0 -23
  90. data/test-unit/lib/test/unit/collector/dir.rb +0 -108
  91. data/test-unit/lib/test/unit/collector/load.rb +0 -144
  92. data/test-unit/lib/test/unit/collector/objectspace.rb +0 -34
  93. data/test-unit/lib/test/unit/color-scheme.rb +0 -106
  94. data/test-unit/lib/test/unit/color.rb +0 -96
  95. data/test-unit/lib/test/unit/diff.rb +0 -740
  96. data/test-unit/lib/test/unit/error.rb +0 -130
  97. data/test-unit/lib/test/unit/exceptionhandler.rb +0 -39
  98. data/test-unit/lib/test/unit/failure.rb +0 -136
  99. data/test-unit/lib/test/unit/fixture.rb +0 -176
  100. data/test-unit/lib/test/unit/notification.rb +0 -129
  101. data/test-unit/lib/test/unit/omission.rb +0 -191
  102. data/test-unit/lib/test/unit/pending.rb +0 -150
  103. data/test-unit/lib/test/unit/priority.rb +0 -180
  104. data/test-unit/lib/test/unit/runner/console.rb +0 -52
  105. data/test-unit/lib/test/unit/runner/emacs.rb +0 -8
  106. data/test-unit/lib/test/unit/runner/tap.rb +0 -8
  107. data/test-unit/lib/test/unit/testcase.rb +0 -483
  108. data/test-unit/lib/test/unit/testresult.rb +0 -121
  109. data/test-unit/lib/test/unit/testsuite.rb +0 -110
  110. data/test-unit/lib/test/unit/ui/console/outputlevel.rb +0 -14
  111. data/test-unit/lib/test/unit/ui/console/testrunner.rb +0 -430
  112. data/test-unit/lib/test/unit/ui/emacs/testrunner.rb +0 -63
  113. data/test-unit/lib/test/unit/ui/tap/testrunner.rb +0 -82
  114. data/test-unit/lib/test/unit/ui/testrunner.rb +0 -53
  115. data/test-unit/lib/test/unit/ui/testrunnermediator.rb +0 -77
  116. data/test-unit/lib/test/unit/ui/testrunnerutilities.rb +0 -41
  117. data/test-unit/lib/test/unit/util/backtracefilter.rb +0 -42
  118. data/test-unit/lib/test/unit/util/method-owner-finder.rb +0 -28
  119. data/test-unit/lib/test/unit/util/observable.rb +0 -90
  120. data/test-unit/lib/test/unit/util/output.rb +0 -31
  121. data/test-unit/lib/test/unit/util/procwrapper.rb +0 -48
  122. data/test-unit/lib/test/unit/version.rb +0 -7
  123. data/test-unit/sample/adder.rb +0 -13
  124. data/test-unit/sample/subtracter.rb +0 -12
  125. data/test-unit/sample/test_adder.rb +0 -20
  126. data/test-unit/sample/test_subtracter.rb +0 -20
  127. data/test-unit/sample/test_user.rb +0 -23
  128. data/test-unit/test/collector/test-descendant.rb +0 -133
  129. data/test-unit/test/collector/test-load.rb +0 -442
  130. data/test-unit/test/collector/test_dir.rb +0 -406
  131. data/test-unit/test/collector/test_objectspace.rb +0 -100
  132. data/test-unit/test/run-test.rb +0 -15
  133. data/test-unit/test/test-attribute.rb +0 -86
  134. data/test-unit/test/test-color-scheme.rb +0 -69
  135. data/test-unit/test/test-color.rb +0 -47
  136. data/test-unit/test/test-diff.rb +0 -518
  137. data/test-unit/test/test-emacs-runner.rb +0 -60
  138. data/test-unit/test/test-fixture.rb +0 -287
  139. data/test-unit/test/test-notification.rb +0 -33
  140. data/test-unit/test/test-omission.rb +0 -81
  141. data/test-unit/test/test-pending.rb +0 -70
  142. data/test-unit/test/test-priority.rb +0 -119
  143. data/test-unit/test/test-testcase.rb +0 -544
  144. data/test-unit/test/test_assertions.rb +0 -1197
  145. data/test-unit/test/test_error.rb +0 -26
  146. data/test-unit/test/test_failure.rb +0 -33
  147. data/test-unit/test/test_testresult.rb +0 -113
  148. data/test-unit/test/test_testsuite.rb +0 -129
  149. data/test-unit/test/testunit-test-util.rb +0 -14
  150. data/test-unit/test/ui/test_tap.rb +0 -33
  151. data/test-unit/test/ui/test_testrunmediator.rb +0 -20
  152. data/test-unit/test/util/test-method-owner-finder.rb +0 -38
  153. data/test-unit/test/util/test-output.rb +0 -11
  154. data/test-unit/test/util/test_backtracefilter.rb +0 -41
  155. data/test-unit/test/util/test_observable.rb +0 -102
  156. data/test-unit/test/util/test_procwrapper.rb +0 -36
  157. data/test/.gitignore +0 -1
  158. data/text/expression.rdoc +0 -285
  159. data/text/tutorial.ja.rdoc +0 -433
@@ -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,363 +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, :listeners
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
- @listeners = []
117
- config_file = "test-unit.yml"
118
- if File.exist?(config_file)
119
- load_config(config_file)
120
- else
121
- load_global_config
122
- end
123
- yield(self) if block_given?
124
- end
125
-
126
- def process_args(args = ARGV)
127
- begin
128
- args.unshift(*@default_arguments)
129
- options.order!(args) {|arg| @to_run << arg}
130
- rescue OptionParser::ParseError => e
131
- puts e
132
- puts options
133
- exit(false)
134
- end
135
- not @to_run.empty?
136
- end
137
-
138
- def options
139
- @options ||= OptionParser.new do |o|
140
- o.banner = "Test::Unit automatic runner."
141
- o.banner << "\nUsage: #{$0} [options] [-- untouched arguments]"
142
-
143
- o.on
144
- o.on('-r', '--runner=RUNNER', RUNNERS,
145
- "Use the given RUNNER.",
146
- "(" + keyword_display(RUNNERS) + ")") do |r|
147
- @runner = r
148
- end
149
-
150
- if (@standalone)
151
- o.on('-b', '--basedir=DIR', "Base directory of test suites.") do |b|
152
- @base = b
153
- end
154
-
155
- o.on('-w', '--workdir=DIR', "Working directory to run tests.") do |w|
156
- @workdir = w
157
- end
158
-
159
- o.on('-a', '--add=TORUN', Array,
160
- "Add TORUN to the list of things to run;",
161
- "can be a file or a directory.") do |a|
162
- @to_run.concat(a)
163
- end
164
-
165
- @pattern = []
166
- o.on('-p', '--pattern=PATTERN', Regexp,
167
- "Match files to collect against PATTERN.") do |e|
168
- @pattern << e
169
- end
170
-
171
- @exclude = []
172
- o.on('-x', '--exclude=PATTERN', Regexp,
173
- "Ignore files to collect against PATTERN.") do |e|
174
- @exclude << e
175
- end
176
- end
177
-
178
- o.on('-n', '--name=NAME', String,
179
- "Runs tests matching NAME.",
180
- "(patterns may be used).") do |n|
181
- n = (%r{\A/(.*)/\Z} =~ n ? Regexp.new($1) : n)
182
- case n
183
- when Regexp
184
- @filters << proc{|t| n =~ t.method_name ? true : false}
185
- else
186
- @filters << proc{|t| n == t.method_name}
187
- end
188
- end
189
-
190
- o.on('-t', '--testcase=TESTCASE', String,
191
- "Runs tests in TestCases matching TESTCASE.",
192
- "(patterns may be used).") do |n|
193
- n = (%r{\A/(.*)/\Z} =~ n ? Regexp.new($1) : n)
194
- case n
195
- when Regexp
196
- @filters << proc{|t| n =~ t.class.name ? true : false}
197
- else
198
- @filters << proc{|t| n == t.class.name}
199
- end
200
- end
201
-
202
- priority_filter = Proc.new do |test|
203
- if @filters == [priority_filter]
204
- Priority::Checker.new(test).need_to_run?
205
- else
206
- nil
207
- end
208
- end
209
- o.on("--[no-]priority-mode",
210
- "Runs some tests based on their priority.") do |priority_mode|
211
- if priority_mode
212
- Priority.enable
213
- @filters |= [priority_filter]
214
- else
215
- Priority.disable
216
- @filters -= [priority_filter]
217
- end
218
- end
219
-
220
- o.on("--default-priority=PRIORITY",
221
- Priority.available_values,
222
- "Uses PRIORITY as default priority",
223
- "(#{keyword_display(Priority.available_values)})") do |priority|
224
- Priority.default = priority
225
- end
226
-
227
- o.on('-I', "--load-path=DIR[#{File::PATH_SEPARATOR}DIR...]",
228
- "Appends directory list to $LOAD_PATH.") do |dirs|
229
- $LOAD_PATH.concat(dirs.split(File::PATH_SEPARATOR))
230
- end
231
-
232
- color_schemes = ColorScheme.all
233
- o.on("--color-scheme=SCHEME", color_schemes,
234
- "Use SCHEME as color scheme.",
235
- "(#{keyword_display(color_schemes)})") do |scheme|
236
- @color_scheme = scheme
237
- end
238
-
239
- o.on("--config=FILE",
240
- "Use YAML fomat FILE content as configuration file.") do |file|
241
- load_config(file)
242
- end
243
-
244
- o.on("--order=ORDER", TestCase::AVAILABLE_ORDERS,
245
- "Run tests in a test case in ORDER order.",
246
- "(#{keyword_display(TestCase::AVAILABLE_ORDERS)})") do |order|
247
- TestCase.test_order = order
248
- end
249
-
250
- ADDITIONAL_OPTIONS.each do |option_builder|
251
- option_builder.call(self, o)
252
- end
253
-
254
- o.on('--',
255
- "Stop processing options so that the",
256
- "remaining options will be passed to the",
257
- "test."){o.terminate}
258
-
259
- o.on('-h', '--help', 'Display this help.'){puts o; exit}
260
-
261
- o.on_tail
262
- o.on_tail('Deprecated options:')
263
-
264
- o.on_tail('--console', 'Console runner (use --runner).') do
265
- warn("Deprecated option (--console).")
266
- @runner = self.class.runner(:console)
267
- end
268
-
269
- if RUNNERS[:fox]
270
- o.on_tail('--fox', 'Fox runner (use --runner).') do
271
- warn("Deprecated option (--fox).")
272
- @runner = self.class.runner(:fox)
273
- end
274
- end
275
-
276
- o.on_tail
277
- end
278
- end
279
-
280
- def keyword_display(keywords)
281
- keywords = keywords.collect do |keyword, _|
282
- keyword.to_s
283
- end.uniq.sort
284
-
285
- i = 0
286
- keywords.collect do |keyword|
287
- if (i > 0 and keyword[0] == keywords[i - 1][0]) or
288
- ((i < keywords.size - 1) and (keyword[0] == keywords[i + 1][0]))
289
- n = 2
290
- else
291
- n = 1
292
- end
293
- i += 1
294
- keyword.sub(/^(.{#{n}})([A-Za-z]+)(?=\w*$)/, '\\1[\\2]')
295
- end.join(", ")
296
- end
297
-
298
- def run
299
- suite = @collector[self]
300
- return false if suite.nil?
301
- runner = @runner[self]
302
- return false if runner.nil?
303
- @runner_options[:color_scheme] ||= @color_scheme
304
- @runner_options[:listeners] ||= []
305
- @runner_options[:listeners].concat(@listeners)
306
- Dir.chdir(@workdir) if @workdir
307
- runner.run(suite, @runner_options).passed?
308
- end
309
-
310
- def load_config(file)
311
- require 'yaml'
312
- config = YAML.load(File.read(file))
313
- runner_name = config["runner"]
314
- @runner = self.class.runner(runner_name) || @runner
315
- @collector = self.class.collector(config["collector"]) || @collector
316
- (config["color_schemes"] || {}).each do |name, options|
317
- ColorScheme[name] = options
318
- end
319
- runner_options = {}
320
- (config["#{runner_name}_options"] || {}).each do |key, value|
321
- key = key.to_sym
322
- value = ColorScheme[value] if key == :color_scheme
323
- if key == :arguments
324
- @default_arguments.concat(value.split)
325
- else
326
- runner_options[key.to_sym] = value
327
- end
328
- end
329
- @runner_options = @runner_options.merge(runner_options)
330
- end
331
-
332
- private
333
- def default_runner
334
- runner = self.class.default_runner
335
- if ENV["EMACS"] == "t"
336
- runner ||= self.class.runner(:emacs)
337
- else
338
- runner ||= self.class.runner(:console)
339
- end
340
- runner
341
- end
342
-
343
- def default_collector
344
- self.class.collector(@standalone ? :load : :descendant)
345
- end
346
-
347
- def global_config_file
348
- File.expand_path("~/.test-unit.yml")
349
- rescue ArgumentError
350
- nil
351
- end
352
-
353
- def load_global_config
354
- file = global_config_file
355
- load_config(file) if file and File.exist?(file)
356
- end
357
- end
358
- end
359
- end
360
-
361
- require 'test/unit/runner/console'
362
- require 'test/unit/runner/emacs'
363
- require 'test/unit/runner/tap'