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,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