groonga 0.9.1 → 1.0.0

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