groonga 0.9.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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,181 +0,0 @@
1
- require "fileutils"
2
- require "tmpdir"
3
-
4
- module Test
5
- module Unit
6
- module Priority
7
- class << self
8
- def included(base)
9
- base.extend(ClassMethods)
10
-
11
- base.class_eval do
12
- setup :priority_setup, :before => :prepend
13
- teardown :priority_teardown, :after => :append
14
- end
15
- end
16
-
17
- @@enabled = false
18
- def enabled?
19
- @@enabled
20
- end
21
-
22
- def enable
23
- @@enabled = true
24
- end
25
-
26
- def disable
27
- @@enabled = false
28
- end
29
-
30
- @@default = :normal
31
- def default
32
- @@default || :normal
33
- end
34
-
35
- def default=(default)
36
- @@default = default
37
- end
38
-
39
- def available_values
40
- Checker.available_priorities
41
- end
42
- end
43
-
44
- class Checker
45
- class << self
46
- def have_priority?(name)
47
- singleton_class = (class << self; self; end)
48
- singleton_class.method_defined?(priority_check_method_name(name))
49
- end
50
-
51
- def need_to_run?(test)
52
- priority = test[:priority] || Priority.default
53
- if have_priority?(priority)
54
- send(priority_check_method_name(priority), test)
55
- else
56
- true
57
- end
58
- end
59
-
60
- def available_priorities
61
- methods(false).collect do |name|
62
- /\Arun_priority_(.+)\?\z/ =~ name.to_s
63
- $1
64
- end.compact
65
- end
66
-
67
- def run_priority_must?(test)
68
- true
69
- end
70
-
71
- def run_priority_important?(test)
72
- rand > 0.1
73
- end
74
-
75
- def run_priority_high?(test)
76
- rand > 0.3
77
- end
78
-
79
- def run_priority_normal?(test)
80
- rand > 0.5
81
- end
82
-
83
- def run_priority_low?(test)
84
- rand > 0.75
85
- end
86
-
87
- def run_priority_never?(test)
88
- false
89
- end
90
-
91
- private
92
- def priority_check_method_name(priority_name)
93
- "run_priority_#{priority_name}?"
94
- end
95
- end
96
-
97
- attr_reader :test
98
- def initialize(test)
99
- @test = test
100
- end
101
-
102
- def setup
103
- FileUtils.rm_f(passed_file)
104
- end
105
-
106
- def teardown
107
- if @test.send(:passed?)
108
- FileUtils.touch(passed_file)
109
- else
110
- FileUtils.rm_f(passed_file)
111
- end
112
- end
113
-
114
- def need_to_run?
115
- !previous_test_success? or self.class.need_to_run?(@test)
116
- end
117
-
118
- private
119
- def previous_test_success?
120
- File.exist?(passed_file)
121
- end
122
-
123
- def result_dir
124
- components = [".test-result",
125
- @test.class.name || "AnonymousTestCase",
126
- escaped_method_name]
127
- parent_directories = [File.dirname($0), Dir.pwd]
128
- if Process.respond_to?(:uid)
129
- parent_directories << File.join(Dir.tmpdir, Process.uid.to_s)
130
- end
131
- parent_directories.each do |parent_directory|
132
- dir = File.expand_path(File.join(parent_directory, *components))
133
- begin
134
- FileUtils.mkdir_p(dir)
135
- return dir
136
- rescue Errno::EACCES
137
- end
138
- end
139
-
140
- raise Errno::EACCES, parent_directories.join(", ")
141
- end
142
-
143
- def passed_file
144
- File.join(result_dir, "passed")
145
- end
146
-
147
- def escaped_method_name
148
- @test.method_name.to_s.gsub(/[!?=]$/) do |matched|
149
- case matched
150
- when "!"
151
- ".destructive"
152
- when "?"
153
- ".predicate"
154
- when "="
155
- ".equal"
156
- end
157
- end
158
- end
159
- end
160
-
161
- module ClassMethods
162
- def priority(name, *tests)
163
- unless Checker.have_priority?(name)
164
- raise ArgumentError, "unknown priority: #{name}"
165
- end
166
- attribute(:priority, name, {:keep => true}, *tests)
167
- end
168
- end
169
-
170
- def priority_setup
171
- return unless Priority.enabled?
172
- Checker.new(self).setup
173
- end
174
-
175
- def priority_teardown
176
- return unless Priority.enabled?
177
- Checker.new(self).teardown
178
- end
179
- end
180
- end
181
- end
@@ -1,52 +0,0 @@
1
- module Test
2
- module Unit
3
- AutoRunner.register_runner(:console) do |auto_runner|
4
- require 'test/unit/ui/console/testrunner'
5
- Test::Unit::UI::Console::TestRunner
6
- end
7
-
8
- AutoRunner.setup_option do |auto_runner, opts|
9
- require 'test/unit/ui/console/outputlevel'
10
-
11
- output_levels = [
12
- [:silent, UI::Console::OutputLevel::SILENT],
13
- [:progress, UI::Console::OutputLevel::PROGRESS_ONLY],
14
- [:normal, UI::Console::OutputLevel::NORMAL],
15
- [:verbose, UI::Console::OutputLevel::VERBOSE],
16
- ]
17
- opts.on('-v', '--verbose=[LEVEL]', output_levels,
18
- "Set the output level (default is verbose).",
19
- "(#{auto_runner.keyword_display(output_levels)})") do |level|
20
- level ||= output_levels.assoc(:verbose)[1]
21
- auto_runner.runner_options[:output_level] = level
22
- end
23
-
24
- use_color_options = [
25
- [:auto, :auto],
26
- ["-", false],
27
- ["no", false],
28
- ["false", false],
29
- ["+", true],
30
- ["yes", true],
31
- ["true", true],
32
- ]
33
- opts.on("--[no-]use-color=[auto]", use_color_options,
34
- "Uses color output",
35
- "(default is auto)") do |use_color|
36
- case use_color
37
- when nil
38
- use_color = true
39
- when :auto
40
- use_color = nil
41
- end
42
- auto_runner.runner_options[:use_color] = use_color
43
- end
44
-
45
- opts.on("--progress-row-max=MAX", Integer,
46
- "Uses MAX as max terminal width for progress mark",
47
- "(default is auto)") do |max|
48
- auto_runner.runner_options[:progress_row_max] = max
49
- end
50
- end
51
- end
52
- end
@@ -1,8 +0,0 @@
1
- module Test
2
- module Unit
3
- AutoRunner.register_runner(:emacs) do |auto_runner|
4
- require 'test/unit/ui/emacs/testrunner'
5
- Test::Unit::UI::Emacs::TestRunner
6
- end
7
- end
8
- end
@@ -1,8 +0,0 @@
1
- module Test
2
- module Unit
3
- AutoRunner.register_runner(:tap) do |auto_runner|
4
- require 'test/unit/ui/tap/testrunner'
5
- Test::Unit::UI::Tap::TestRunner
6
- end
7
- end
8
- end
@@ -1,476 +0,0 @@
1
- #--
2
- #
3
- # Author:: Nathaniel Talbott.
4
- # Copyright::
5
- # * Copyright (c) 2000-2003 Nathaniel Talbott. All rights reserved.
6
- # * Copyright (c) 2008-2009 Kouhei Sutou <tt><kou@clear-code.com></tt>
7
- # License:: Ruby license.
8
-
9
- require 'test/unit/attribute'
10
- require 'test/unit/fixture'
11
- require 'test/unit/exceptionhandler'
12
- require 'test/unit/assertions'
13
- require 'test/unit/failure'
14
- require 'test/unit/error'
15
- require 'test/unit/pending'
16
- require 'test/unit/omission'
17
- require 'test/unit/notification'
18
- require 'test/unit/priority'
19
- require 'test/unit/testsuite'
20
- require 'test/unit/assertionfailederror'
21
- require 'test/unit/util/backtracefilter'
22
- require 'test/unit/util/method-owner-finder'
23
-
24
- module Test
25
- module Unit
26
-
27
- # Ties everything together. If you subclass and add your own
28
- # test methods, it takes care of making them into tests and
29
- # wrapping those tests into a suite. It also does the
30
- # nitty-gritty of actually running an individual test and
31
- # collecting its results into a Test::Unit::TestResult object.
32
- #
33
- # You can run two hooks before/after a TestCase run.
34
- #
35
- # Example:
36
- # class TestMyClass < Test::Unit::TestCase
37
- # class << self
38
- # def startup
39
- # ...
40
- # end
41
- #
42
- # def shutdown
43
- # ...
44
- # end
45
- # end
46
- #
47
- # def setup
48
- # ...
49
- # end
50
- #
51
- # def teardown
52
- # ...
53
- # end
54
- #
55
- # def test_my_method1
56
- # ...
57
- # end
58
- #
59
- # def test_my_method2
60
- # ...
61
- # end
62
- # end
63
- #
64
- # Here is a call order:
65
- # * startup
66
- # * setup
67
- # * test_my_method1
68
- # * teardown
69
- # * setup
70
- # * test_my_method2
71
- # * teardown
72
- # * shutdown
73
- class TestCase
74
- include Attribute
75
- include Fixture
76
- include ExceptionHandler
77
- include ErrorHandler
78
- include FailureHandler
79
- include TestCasePendingSupport
80
- include TestCaseOmissionSupport
81
- include TestCaseNotificationSupport
82
- include Priority
83
- include Assertions
84
- include Util::BacktraceFilter
85
-
86
- STARTED = name + "::STARTED" # :nodoc:
87
- FINISHED = name + "::FINISHED" # :nodoc:
88
-
89
- DESCENDANTS = [] # :nodoc:
90
- AVAILABLE_ORDERS = [:alphabetic, :random, :defined] # :nodoc:
91
-
92
- class << self
93
- def inherited(sub_class) # :nodoc:
94
- DESCENDANTS << sub_class
95
- end
96
-
97
- @@added_methods = {}
98
- def method_added(name) # :nodoc:
99
- super
100
- added_methods = (@@added_methods[self] ||= [])
101
- stringified_name = name.to_s
102
- if added_methods.include?(stringified_name)
103
- attribute(:redefined, true, {}, stringified_name)
104
- end
105
- added_methods << stringified_name
106
- end
107
-
108
- # Rolls up all of the test* methods in the fixture into
109
- # one suite, creating a new instance of the fixture for
110
- # each method.
111
- def suite
112
- suite = TestSuite.new(name, self)
113
- collect_test_names.each do |test|
114
- catch(:invalid_test) do
115
- suite << new(test)
116
- end
117
- end
118
- if suite.empty?
119
- catch(:invalid_test) do
120
- suite << new("default_test")
121
- end
122
- end
123
- suite
124
- end
125
-
126
- # Called before every test case runs. Can be used
127
- # to set up fixture information used in test case
128
- # scope.
129
- #
130
- # Here is an example test case:
131
- # class TestMyClass < Test::Unit::TestCase
132
- # class << self
133
- # def startup
134
- # ...
135
- # end
136
- # end
137
- #
138
- # def setup
139
- # ...
140
- # end
141
- #
142
- # def test_my_class1
143
- # ...
144
- # end
145
- #
146
- # def test_my_class2
147
- # ...
148
- # end
149
- # end
150
- #
151
- # Here is a call order:
152
- # * startup
153
- # * setup
154
- # * test_my_class1 (or test_my_class2)
155
- # * setup
156
- # * test_my_class2 (or test_my_class1)
157
- #
158
- # Note that you should not assume test order. Tests
159
- # should be worked in any order.
160
- def startup
161
- end
162
-
163
- # Called after every test case runs. Can be used to tear
164
- # down fixture information used in test case scope.
165
- #
166
- # Here is an example test case:
167
- # class TestMyClass < Test::Unit::TestCase
168
- # class << self
169
- # def shutdown
170
- # ...
171
- # end
172
- # end
173
- #
174
- # def teardown
175
- # ...
176
- # end
177
- #
178
- # def test_my_class1
179
- # ...
180
- # end
181
- #
182
- # def test_my_class2
183
- # ...
184
- # end
185
- # end
186
- #
187
- # Here is a call order:
188
- # * test_my_class1 (or test_my_class2)
189
- # * teardown
190
- # * test_my_class2 (or test_my_class1)
191
- # * teardown
192
- # * shutdown
193
- #
194
- # Note that you should not assume test order. Tests
195
- # should be worked in any order.
196
- def shutdown
197
- end
198
-
199
- @@test_order = AVAILABLE_ORDERS.first
200
-
201
- # Returns the current test order. This returns
202
- # +:alphabetic+ by default.
203
- def test_order
204
- @@test_order
205
- end
206
-
207
- # Sets the current test order.
208
- #
209
- # Here are the available _order_:
210
- # [:alphabetic]
211
- # Default. Tests are sorted in alphabetic order.
212
- # [:random]
213
- # Tests are sorted in random order.
214
- # [:defined]
215
- # Tests are sorted in defined order.
216
- def test_order=(order)
217
- @@test_order = order
218
- end
219
-
220
- # Defines a test in declarative syntax.
221
- #
222
- # The following two test definitions are the same:
223
- #
224
- # description "register user"
225
- # def test_register_user
226
- # ...
227
- # end
228
- #
229
- # test "register user" do
230
- # ...
231
- # end
232
- def test(test_description, &block)
233
- normalized_description = test_description.gsub(/[^a-zA-Z\d_]+/, '_')
234
- method_name = "test_#{normalized_description}".to_sym
235
- define_method(method_name, &block)
236
- description(test_description, method_name)
237
- end
238
-
239
- # Describes a test.
240
- #
241
- # The following example associates "register a
242
- # normal user" description with "test_register"
243
- # test.
244
- #
245
- # description "register a normal user"
246
- # def test_register
247
- # ...
248
- # end
249
- def description(value, target=nil)
250
- attribute(:description, value, {}, target || [])
251
- end
252
-
253
- # :stopdoc:
254
- private
255
- def collect_test_names
256
- method_names = public_instance_methods(true).collect do |name|
257
- name.to_s
258
- end
259
- test_names = method_names.find_all do |method_name|
260
- method_name =~ /^test./
261
- end
262
- send("sort_test_names_in_#{test_order}_order", test_names)
263
- end
264
-
265
- def sort_test_names_in_alphabetic_order(test_names)
266
- test_names.sort
267
- end
268
-
269
- def sort_test_names_in_random_order(test_names)
270
- test_names.sort_by {rand(test_names.size)}
271
- end
272
-
273
- def sort_test_names_in_defined_order(test_names)
274
- added_methods = @@added_methods[self]
275
- test_names.sort do |test1, test2|
276
- test1_defined_order = added_methods.index(test1)
277
- test2_defined_order = added_methods.index(test2)
278
- if test1_defined_order and test2_defined_order
279
- test1_defined_order <=> test2_defined_order
280
- elsif test1_defined_order
281
- 1
282
- elsif test2_defined_order
283
- -1
284
- else
285
- test1 <=> test2
286
- end
287
- end
288
- end
289
- # :startdoc:
290
- end
291
-
292
- attr_reader :method_name
293
-
294
- # Creates a new instance of the fixture for running the
295
- # test represented by test_method_name.
296
- def initialize(test_method_name)
297
- throw :invalid_test unless respond_to?(test_method_name)
298
- test_method = method(test_method_name)
299
- throw :invalid_test if test_method.arity > 0
300
- owner = Util::MethodOwnerFinder.find(self, test_method_name)
301
- if owner.class != Module and self.class != owner
302
- throw :invalid_test
303
- end
304
- @method_name = test_method_name
305
- @test_passed = true
306
- @interrupted = false
307
- end
308
-
309
- # Runs the individual test method represented by this
310
- # instance of the fixture, collecting statistics, failures
311
- # and errors in result.
312
- def run(result)
313
- begin
314
- @_result = result
315
- yield(STARTED, name)
316
- begin
317
- run_setup
318
- run_test
319
- rescue Exception
320
- @interrupted = true
321
- raise unless handle_exception($!)
322
- ensure
323
- begin
324
- run_teardown
325
- rescue Exception
326
- raise unless handle_exception($!)
327
- end
328
- end
329
- result.add_run
330
- yield(FINISHED, name)
331
- ensure
332
- # @_result = nil # For test-spec's after_all :<
333
- end
334
- end
335
-
336
- # Called before every test method runs. Can be used
337
- # to set up fixture information.
338
- #
339
- # You can add additional setup tasks by the following
340
- # code:
341
- # class TestMyClass < Test::Unit::TestCase
342
- # def setup
343
- # ...
344
- # end
345
- #
346
- # setup
347
- # def my_setup1
348
- # ...
349
- # end
350
- #
351
- # setup
352
- # def my_setup2
353
- # ...
354
- # end
355
- #
356
- # def test_my_class
357
- # ...
358
- # end
359
- # end
360
- #
361
- # Here is a call order:
362
- # * setup
363
- # * my_setup1
364
- # * my_setup2
365
- # * test_my_class
366
- def setup
367
- end
368
-
369
- # Called after every test method runs. Can be used to tear
370
- # down fixture information.
371
- #
372
- # You can add additional teardown tasks by the following
373
- # code:
374
- # class TestMyClass < Test::Unit::TestCase
375
- # def teardown
376
- # ...
377
- # end
378
- #
379
- # teardown
380
- # def my_teardown1
381
- # ...
382
- # end
383
- #
384
- # teardown
385
- # def my_teardown2
386
- # ...
387
- # end
388
- #
389
- # def test_my_class
390
- # ...
391
- # end
392
- # end
393
- #
394
- # Here is a call order:
395
- # * test_my_class
396
- # * my_teardown2
397
- # * my_teardown1
398
- # * teardown
399
- def teardown
400
- end
401
-
402
- def default_test
403
- flunk("No tests were specified")
404
- end
405
-
406
- def size
407
- 1
408
- end
409
-
410
- # Returns a human-readable name for the specific test that
411
- # this instance of TestCase represents.
412
- def name
413
- "#{@method_name}(#{self.class.name})"
414
- end
415
-
416
- # Returns a description for the test. A description
417
- # will be associated by Test::Unit::TestCase.test or
418
- # Test::Unit::TestCase.description.
419
- #
420
- # Returns a name for the test for no description test.
421
- def description
422
- self[:description] || name
423
- end
424
-
425
- # Overridden to return #name.
426
- def to_s
427
- name
428
- end
429
-
430
- # It's handy to be able to compare TestCase instances.
431
- def ==(other)
432
- return false unless(other.kind_of?(self.class))
433
- return false unless(@method_name == other.method_name)
434
- self.class == other.class
435
- end
436
-
437
- def interrupted?
438
- @interrupted
439
- end
440
-
441
- private
442
- def current_result
443
- @_result
444
- end
445
-
446
- def run_test
447
- if self.class.get_attribute(@method_name, :redefined)
448
- notify("#{self.class}\##{@method_name} was redefined")
449
- end
450
- __send__(@method_name)
451
- end
452
-
453
- def handle_exception(exception)
454
- self.class.exception_handlers.each do |handler|
455
- return true if send(handler, exception)
456
- end
457
- false
458
- end
459
-
460
- # Returns whether this individual test passed or
461
- # not. Primarily for use in teardown so that artifacts
462
- # can be left behind if the test fails.
463
- def passed?
464
- @test_passed
465
- end
466
-
467
- def problem_occurred
468
- @test_passed = false
469
- end
470
-
471
- def add_assertion
472
- current_result.add_assertion
473
- end
474
- end
475
- end
476
- end