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,31 +0,0 @@
1
- module Test
2
- module Unit
3
- module Util
4
- module Output
5
- ##
6
- # Returns output for standard output and standard
7
- # error as string.
8
- #
9
- # Example:
10
- # capture_output do
11
- # puts("stdout")
12
- # warn("stderr")
13
- # end # -> ["stdout\n", "stderr\n"]
14
- def capture_output
15
- require 'stringio'
16
-
17
- output = StringIO.new
18
- error = StringIO.new
19
- stdout_save, stderr_save = $stdout, $stderr
20
- $stdout, $stderr = output, error
21
- begin
22
- yield
23
- [output.string, error.string]
24
- ensure
25
- $stdout, $stderr = stdout_save, stderr_save
26
- end
27
- end
28
- end
29
- end
30
- end
31
- end
@@ -1,48 +0,0 @@
1
- #--
2
- #
3
- # Author:: Nathaniel Talbott.
4
- # Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
5
- # License:: Ruby license.
6
-
7
- module Test
8
- module Unit
9
- module Util
10
-
11
- # Allows the storage of a Proc passed through '&' in a
12
- # hash.
13
- #
14
- # Note: this may be inefficient, since the hash being
15
- # used is not necessarily very good. In Observable,
16
- # efficiency is not too important, since the hash is
17
- # only accessed when adding and removing listeners,
18
- # not when notifying.
19
-
20
- class ProcWrapper
21
-
22
- # Creates a new wrapper for a_proc.
23
- def initialize(a_proc)
24
- @a_proc = a_proc
25
- @hash = a_proc.inspect.sub(/^(#<#{a_proc.class}:)/){''}.sub(/(>)$/){''}.hex
26
- end
27
-
28
- def hash
29
- return @hash
30
- end
31
-
32
- def ==(other)
33
- case(other)
34
- when ProcWrapper
35
- return @a_proc == other.to_proc
36
- else
37
- return super
38
- end
39
- end
40
- alias :eql? :==
41
-
42
- def to_proc
43
- return @a_proc
44
- end
45
- end
46
- end
47
- end
48
- end
@@ -1,7 +0,0 @@
1
-
2
- # HACK: quick and dirty to get integrated into the new project - ryan
3
- module Test
4
- module Unit
5
- VERSION = '2.1.2'
6
- end
7
- end
@@ -1,13 +0,0 @@
1
- # Author:: Nathaniel Talbott.
2
- # Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
3
- # License:: Ruby license.
4
-
5
- class Adder
6
- def initialize(number)
7
- @number = number
8
- end
9
- def add(number)
10
- return @number + number
11
- end
12
- end
13
-
@@ -1,12 +0,0 @@
1
- # Author:: Nathaniel Talbott.
2
- # Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
3
- # License:: Ruby license.
4
-
5
- class Subtracter
6
- def initialize(number)
7
- @number = number
8
- end
9
- def subtract(number)
10
- return @number - number
11
- end
12
- end
@@ -1,20 +0,0 @@
1
- # Author:: Nathaniel Talbott.
2
- # Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
3
- # License:: Ruby license.
4
-
5
- require 'test/unit'
6
- require 'adder'
7
-
8
- class TestAdder < Test::Unit::TestCase
9
- def setup
10
- @adder = Adder.new(5)
11
- end
12
-
13
- def test_add
14
- assert_equal(7, @adder.add(2), "Should have added correctly")
15
- end
16
-
17
- def teardown
18
- @adder = nil
19
- end
20
- end
@@ -1,20 +0,0 @@
1
- # Author:: Nathaniel Talbott.
2
- # Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
3
- # License:: Ruby license.
4
-
5
- require 'test/unit'
6
- require 'subtracter'
7
-
8
- class TestSubtracter < Test::Unit::TestCase
9
- def setup
10
- @subtracter = Subtracter.new(5)
11
- end
12
-
13
- def test_subtract
14
- assert_equal(3, @subtracter.subtract(2), "Should have subtracted correctly")
15
- end
16
-
17
- def teardown
18
- @subtracter = nil
19
- end
20
- end
@@ -1,23 +0,0 @@
1
- # nested test case example.
2
- require 'test/unit'
3
-
4
- class UserTest < Test::Unit::TestCase
5
- def setup
6
- @user = "me"
7
- end
8
-
9
- def test_full_name
10
- assert_equal("me", @user)
11
- end
12
-
13
- class ProfileTest < UserTest
14
- setup
15
- def setup_profile
16
- @user += ": profile"
17
- end
18
-
19
- def test_has_profile
20
- assert_match(/: profile/, @user)
21
- end
22
- end
23
- end
@@ -1,133 +0,0 @@
1
- require 'test/unit'
2
- require 'test/unit/collector/descendant'
3
-
4
- class TestUnitCollectorDescendant < Test::Unit::TestCase
5
- def setup
6
- @previous_descendants = Test::Unit::TestCase::DESCENDANTS.dup
7
- Test::Unit::TestCase::DESCENDANTS.clear
8
-
9
- @test_case1 = Class.new(Test::Unit::TestCase) do
10
- def self.name
11
- "test-case1"
12
- end
13
-
14
- def test_1
15
- end
16
-
17
- def test_2
18
- end
19
- end
20
-
21
- @test_case2 = Class.new(Test::Unit::TestCase) do
22
- def self.name
23
- "test-case2"
24
- end
25
-
26
- def test_0
27
- end
28
- end
29
-
30
- @no_test_case = Class.new do
31
- def self.name
32
- "no-test-case"
33
- end
34
-
35
- def test_4
36
- end
37
- end
38
- end
39
-
40
- def teardown
41
- Test::Unit::TestCase::DESCENDANTS.replace(@previous_descendants)
42
- end
43
-
44
- def test_basic_collection
45
- assert_collect(full_suite("name"), "name")
46
-
47
- assert_collect(full_suite("name"), "name") do |collector|
48
- collector.filter = []
49
- end
50
- end
51
-
52
- def test_filtered_collection
53
- assert_collect(empty_suite) do |collector|
54
- collector.filter = Proc.new {false}
55
- end
56
-
57
- assert_collect(full_suite) do |collector|
58
- collector.filter = Proc.new {true}
59
- end
60
-
61
- assert_collect(full_suite) do |collector|
62
- collector.filter = Proc.new {nil}
63
- end
64
-
65
- assert_collect(empty_suite) do |collector|
66
- collector.filter = [Proc.new {false}, Proc.new {true}]
67
- end
68
-
69
- assert_collect(empty_suite) do |collector|
70
- collector.filter = [Proc.new {true}, Proc.new {false}]
71
- end
72
-
73
- assert_collect(empty_suite) do |collector|
74
- collector.filter = [Proc.new {nil}, Proc.new {false}]
75
- end
76
-
77
- assert_collect(full_suite) do |collector|
78
- collector.filter = [Proc.new {nil}, Proc.new {true}]
79
- end
80
-
81
- expected = empty_suite
82
- suite1 = Test::Unit::TestSuite.new(@test_case1.name)
83
- suite1 << @test_case1.new("test_1")
84
- suite2 = Test::Unit::TestSuite.new(@test_case2.name)
85
- suite2 << @test_case2.new("test_0")
86
- expected << suite1 << suite2
87
- assert_collect(expected) do |collector|
88
- collector.filter = Proc.new do |test|
89
- ['test_1', 'test_0'].include?(test.method_name)
90
- end
91
- end
92
-
93
- suite1 = Test::Unit::TestSuite.new(@test_case1.name)
94
- suite1 << @test_case1.new("test_1")
95
- suite2 = Test::Unit::TestSuite.new(@test_case2.name)
96
- suite2 << @test_case2.new("test_0")
97
- assert_collect(empty_suite) do |collector|
98
- filters = [Proc.new {|test| test.method_name == 'test_1' ? true : nil},
99
- Proc.new {|test| test.method_name == 'test_0' ? true : nil},
100
- Proc.new {false}]
101
- collector.filter = filters
102
- end
103
- end
104
-
105
- private
106
- def assert_collect(expected, *collect_args)
107
- collector = Test::Unit::Collector::Descendant.new
108
- yield(collector) if block_given?
109
- assert_equal(expected, collector.send(:collect, *collect_args))
110
- end
111
-
112
- def default_name
113
- Test::Unit::Collector::Descendant::NAME
114
- end
115
-
116
- def empty_suite(name=nil)
117
- Test::Unit::TestSuite.new(name || default_name)
118
- end
119
-
120
- def full_suite(name=nil)
121
- sub_suite1 = Test::Unit::TestSuite.new(@test_case1.name)
122
- sub_suite1 << @test_case1.new('test_1')
123
- sub_suite1 << @test_case1.new('test_2')
124
-
125
- sub_suite2 = Test::Unit::TestSuite.new(@test_case2.name)
126
- sub_suite2 << @test_case2.new('test_0')
127
-
128
- suite = empty_suite(name)
129
- suite << sub_suite1
130
- suite << sub_suite2
131
- suite
132
- end
133
- end
@@ -1,442 +0,0 @@
1
- require 'tmpdir'
2
- require 'pathname'
3
-
4
- require 'test/unit'
5
- require 'test/unit/collector/load'
6
-
7
- class TestUnitCollectorLoad < Test::Unit::TestCase
8
- def setup
9
- @previous_descendants = Test::Unit::TestCase::DESCENDANTS.dup
10
- Test::Unit::TestCase::DESCENDANTS.clear
11
-
12
- @temporary_test_cases_module_name = "TempTestCases"
13
- ::Object.const_set(@temporary_test_cases_module_name, Module.new)
14
-
15
- @test_dir = Pathname(Dir.tmpdir) + "test-unit"
16
- @extra_test_dir = Pathname(Dir.tmpdir) + "test-unit-extra"
17
- ensure_clean_directory(@test_dir)
18
- ensure_clean_directory(@extra_test_dir)
19
- end
20
-
21
- setup
22
- def setup_top_level_test_cases
23
- @test_case1 = @test_dir + "test_case1.rb"
24
- @test_case2 = @test_dir + "test_case2.rb"
25
- @no_load_test_case3 = @test_dir + "case3.rb"
26
-
27
- @test_case1.open("w") do |test_case|
28
- test_case.puts(<<-EOT)
29
- module #{@temporary_test_cases_module_name}
30
- class TestCase1 < Test::Unit::TestCase
31
- def test1_1
32
- end
33
-
34
- def test1_2
35
- end
36
- end
37
- end
38
- EOT
39
- end
40
-
41
- @test_case2.open("w") do |test_case|
42
- test_case.puts(<<-EOT)
43
- module #{@temporary_test_cases_module_name}
44
- class TestCase2 < Test::Unit::TestCase
45
- def test2
46
- end
47
- end
48
- end
49
- EOT
50
- end
51
-
52
- @no_load_test_case3.open("w") do |test_case|
53
- test_case.puts(<<-EOT)
54
- module #{@temporary_test_cases_module_name}
55
- class NoLoadTestCase3 < Test::Unit::TestCase
56
- def test3
57
- end
58
- end
59
- end
60
- EOT
61
- end
62
- end
63
-
64
- setup
65
- def setup_sub_level_test_cases
66
- @sub_test_dir = @test_dir + "sub"
67
- @sub_test_dir.mkpath
68
-
69
- @sub_test_case4 = @sub_test_dir + "test_case4.rb"
70
- @no_load_sub_test_case5 = @sub_test_dir + "case5.rb"
71
- @sub_test_case6 = @sub_test_dir + "test_case6.rb"
72
-
73
- @sub_test_case4.open("w") do |test_case|
74
- test_case.puts(<<-EOT)
75
- module #{@temporary_test_cases_module_name}
76
- class SubTestCase4 < Test::Unit::TestCase
77
- def test4_1
78
- end
79
-
80
- def test4_2
81
- end
82
- end
83
- end
84
- EOT
85
- end
86
-
87
- @no_load_sub_test_case5.open("w") do |test_case|
88
- test_case.puts(<<-EOT)
89
- module #{@temporary_test_cases_module_name}
90
- class NoLoadSubTestCase5 < Test::Unit::TestCase
91
- def test5_1
92
- end
93
-
94
- def test5_2
95
- end
96
- end
97
- end
98
- EOT
99
- end
100
-
101
- @sub_test_case6.open("w") do |test_case|
102
- test_case.puts(<<-EOT)
103
- module #{@temporary_test_cases_module_name}
104
- class SubTestCase6 < Test::Unit::TestCase
105
- def test6
106
- end
107
- end
108
- end
109
- EOT
110
- end
111
- end
112
-
113
- setup
114
- def setup_sub_level_test_cases2
115
- @sub2_test_dir = @test_dir + "sub2"
116
- @sub2_test_dir.mkpath
117
-
118
- @no_load_sub2_test_case7 = @sub2_test_dir + "case7.rb"
119
- @sub2_test_case8 = @sub2_test_dir + "test_case8.rb"
120
- @sub2_test_case9 = @sub2_test_dir + "test_case9.rb"
121
-
122
- @no_load_sub2_test_case7.open("w") do |test_case|
123
- test_case.puts(<<-EOT)
124
- module #{@temporary_test_cases_module_name}
125
- class NoLoadSub2TestCase7 < Test::Unit::TestCase
126
- def test7_1
127
- end
128
-
129
- def test7_2
130
- end
131
- end
132
- end
133
- EOT
134
- end
135
-
136
- @sub2_test_case8.open("w") do |test_case|
137
- test_case.puts(<<-EOT)
138
- module #{@temporary_test_cases_module_name}
139
- class Sub2TestCase8 < Test::Unit::TestCase
140
- def test8_1
141
- end
142
-
143
- def test8_2
144
- end
145
- end
146
- end
147
- EOT
148
- end
149
-
150
- @sub2_test_case9.open("w") do |test_case|
151
- test_case.puts(<<-EOT)
152
- module #{@temporary_test_cases_module_name}
153
- class Sub2TestCase9 < Test::Unit::TestCase
154
- def test9
155
- end
156
- end
157
- end
158
- EOT
159
- end
160
- end
161
-
162
- setup
163
- def setup_svn_test_cases
164
- @svn_test_dir = @test_dir + ".svn"
165
- @svn_test_dir.mkpath
166
-
167
- @svn_test_case10 = @svn_test_dir + "test_case10.rb"
168
-
169
- @svn_test_case10.open("w") do |test_case|
170
- test_case.puts(<<-EOT)
171
- module #{@temporary_test_cases_module_name}
172
- class SvnTestCase10 < Test::Unit::TestCase
173
- def test7
174
- end
175
- end
176
- end
177
- EOT
178
- end
179
- end
180
-
181
- setup
182
- def setup_sub_cvs_test_cases
183
- @sub_cvs_test_dir = @sub_test_dir + "CVS"
184
- @sub_cvs_test_dir.mkpath
185
-
186
- @sub_cvs_test_case11 = @sub_cvs_test_dir + "test_case11.rb"
187
-
188
- @sub_cvs_test_case11.open("w") do |test_case|
189
- test_case.puts(<<-EOT)
190
- module #{@temporary_test_cases_module_name}
191
- class SubCVSTestCase11 < Test::Unit::TestCase
192
- def test11
193
- end
194
- end
195
- end
196
- EOT
197
- end
198
- end
199
-
200
- setup
201
- def setup_sub_git_test_cases
202
- @sub_git_test_dir = @sub_test_dir + ".git"
203
- @sub_git_test_dir.mkpath
204
-
205
- @sub_git_test_case11 = @sub_git_test_dir + "test_case11.rb"
206
-
207
- @sub_git_test_case11.open("w") do |test_case|
208
- test_case.puts(<<-EOT)
209
- module #{@temporary_test_cases_module_name}
210
- class SubGitTestCase11 < Test::Unit::TestCase
211
- def test11
212
- end
213
- end
214
- end
215
- EOT
216
- end
217
- end
218
-
219
- setup
220
- def setup_extra_top_level_test_cases
221
- @test_cases12 = @extra_test_dir + "test_cases12.rb"
222
- @test_cases12.open("w") do |test_case|
223
- test_case.puts(<<-EOT)
224
- module #{@temporary_test_cases_module_name}
225
- class TestCase121 < Test::Unit::TestCase
226
- def test121_1
227
- end
228
-
229
- def test121_2
230
- end
231
- end
232
-
233
- class TestCase122 < Test::Unit::TestCase
234
- def test122_1
235
- end
236
-
237
- def test122_2
238
- end
239
- end
240
- end
241
- EOT
242
- end
243
- end
244
-
245
- setup
246
- def setup_sub_level_extra_test_cases
247
- @sub_extra_test_dir = @extra_test_dir + "sub"
248
- @sub_extra_test_dir.mkpath
249
-
250
- @cases13_test = @sub_extra_test_dir + "13cases_test.rb"
251
- @cases13_test.open("w") do |test_case|
252
- test_case.puts(<<-EOT)
253
- module #{@temporary_test_cases_module_name}
254
- class SubTestCase13 < Test::Unit::TestCase
255
- def test13_1
256
- end
257
-
258
- def test13_2
259
- end
260
- end
261
- end
262
- EOT
263
- end
264
- end
265
-
266
- def teardown
267
- @test_dir.rmtree if @test_dir.exist?
268
- ::Object.send(:remove_const, @temporary_test_cases_module_name)
269
- Test::Unit::TestCase::DESCENDANTS.replace(@previous_descendants)
270
- end
271
-
272
- def test_simple_collect
273
- assert_collect([:suite, {:name => @sub_test_dir.basename.to_s},
274
- [:suite, {:name => _test_case_name("SubTestCase4")},
275
- [:test, {:name => "test4_1"}],
276
- [:test, {:name => "test4_2"}]],
277
- [:suite, {:name => _test_case_name("SubTestCase6")},
278
- [:test, {:name => "test6"}]]],
279
- @sub_test_dir.to_s)
280
- end
281
-
282
- def test_simple_collect_test_suffix
283
- assert_collect([:suite, {:name => @extra_test_dir.basename.to_s},
284
- [:suite, {:name => _test_case_name("TestCase121")},
285
- [:test, {:name => "test121_1"}],
286
- [:test, {:name => "test121_2"}]],
287
- [:suite, {:name => _test_case_name("TestCase122")},
288
- [:test, {:name => "test122_1"}],
289
- [:test, {:name => "test122_2"}]],
290
- [:suite, {:name => @sub_extra_test_dir.basename.to_s},
291
- [:suite, {:name => _test_case_name("SubTestCase13")},
292
- [:test, {:name => "test13_1"}],
293
- [:test, {:name => "test13_2"}]]]],
294
- @extra_test_dir.to_s)
295
- end
296
-
297
- def test_multilevel_collect
298
- assert_collect([:suite, {:name => "."},
299
- [:suite, {:name => _test_case_name("TestCase1")},
300
- [:test, {:name => "test1_1"}],
301
- [:test, {:name => "test1_2"}]],
302
- [:suite, {:name => _test_case_name("TestCase2")},
303
- [:test, {:name => "test2"}]],
304
- [:suite, {:name => @sub_test_dir.basename.to_s},
305
- [:suite, {:name => _test_case_name("SubTestCase4")},
306
- [:test, {:name => "test4_1"}],
307
- [:test, {:name => "test4_2"}]],
308
- [:suite, {:name => _test_case_name("SubTestCase6")},
309
- [:test, {:name => "test6"}]]],
310
- [:suite, {:name => @sub2_test_dir.basename.to_s},
311
- [:suite, {:name => _test_case_name("Sub2TestCase8")},
312
- [:test, {:name => "test8_1"}],
313
- [:test, {:name => "test8_2"}]],
314
- [:suite, {:name => _test_case_name("Sub2TestCase9")},
315
- [:test, {:name => "test9"}]]]])
316
- end
317
-
318
- def test_collect_file
319
- assert_collect([:suite, {:name => _test_case_name("TestCase1")},
320
- [:test, {:name => "test1_1"}],
321
- [:test, {:name => "test1_2"}]],
322
- @test_case1.to_s)
323
- end
324
-
325
- def test_collect_file_no_pattern_match_file_name
326
- assert_collect([:suite, {:name => _test_case_name("NoLoadSubTestCase5")},
327
- [:test, {:name => "test5_1"}],
328
- [:test, {:name => "test5_2"}]],
329
- @no_load_sub_test_case5.to_s)
330
- end
331
-
332
- def test_collect_file_test_cases
333
- assert_collect([:suite, {:name => "[#{@test_cases12}]"},
334
- [:suite, {:name => _test_case_name("TestCase121")},
335
- [:test, {:name => "test121_1"}],
336
- [:test, {:name => "test121_2"}]],
337
- [:suite, {:name => _test_case_name("TestCase122")},
338
- [:test, {:name => "test122_1"}],
339
- [:test, {:name => "test122_2"}]]],
340
- @test_cases12.to_s)
341
- end
342
-
343
- def test_collect_files
344
- assert_collect([:suite,
345
- {:name => "[#{@test_case1}, #{@test_case2}]"},
346
- [:suite, {:name => _test_case_name("TestCase1")},
347
- [:test, {:name => "test1_1"}],
348
- [:test, {:name => "test1_2"}]],
349
- [:suite, {:name => _test_case_name("TestCase2")},
350
- [:test, {:name => "test2"}]]],
351
- @test_case1.to_s, @test_case2.to_s)
352
- end
353
-
354
- def test_nil_pattern
355
- assert_collect([:suite, {:name => @sub_test_dir.basename.to_s},
356
- [:suite, {:name => _test_case_name("NoLoadSubTestCase5")},
357
- [:test, {:name => "test5_1"}],
358
- [:test, {:name => "test5_2"}]],
359
- [:suite, {:name => _test_case_name("SubTestCase4")},
360
- [:test, {:name => "test4_1"}],
361
- [:test, {:name => "test4_2"}]],
362
- [:suite, {:name => _test_case_name("SubTestCase6")},
363
- [:test, {:name => "test6"}]]],
364
- @sub_test_dir.to_s) do |collector|
365
- collector.patterns.clear
366
- end
367
- end
368
-
369
- def test_filtering
370
- assert_collect([:suite, {:name => "."},
371
- [:suite, {:name => _test_case_name("TestCase1")},
372
- [:test, {:name => "test1_1"}],
373
- [:test, {:name => "test1_2"}]]]) do |collector|
374
- collector.filter = Proc.new do |test|
375
- !/\Atest1/.match(test.method_name).nil?
376
- end
377
- end
378
- end
379
-
380
- def test_collect_multi
381
- test_dirs = [@sub_test_dir.to_s, @sub2_test_dir.to_s]
382
- assert_collect([:suite, {:name => "[#{test_dirs.join(', ')}]"},
383
- [:suite, {:name => @sub_test_dir.basename.to_s},
384
- [:suite, {:name => _test_case_name("SubTestCase4")},
385
- [:test, {:name => "test4_1"}],
386
- [:test, {:name => "test4_2"}]],
387
- [:suite, {:name => _test_case_name("SubTestCase6")},
388
- [:test, {:name => "test6"}]]],
389
- [:suite, {:name => @sub2_test_dir.basename.to_s},
390
- [:suite, {:name => _test_case_name("Sub2TestCase8")},
391
- [:test, {:name => "test8_1"}],
392
- [:test, {:name => "test8_2"}]],
393
- [:suite, {:name => _test_case_name("Sub2TestCase9")},
394
- [:test, {:name => "test9"}]]]],
395
- *test_dirs)
396
- end
397
-
398
- private
399
- def assert_collect(expected, *collect_args)
400
- keep_required_files do
401
- Dir.chdir(@test_dir.to_s) do
402
- collector = Test::Unit::Collector::Load.new
403
- yield(collector) if block_given?
404
- actual = inspect_test_object(collector.send(:collect, *collect_args))
405
- assert_equal(expected, actual)
406
- end
407
- end
408
- end
409
-
410
- def ensure_clean_directory(directory)
411
- directory.rmtree if directory.exist?
412
- directory.mkpath
413
- end
414
-
415
- def keep_required_files
416
- required_files = $".dup
417
- yield
418
- ensure
419
- $".replace(required_files)
420
- end
421
-
422
- def _test_case_name(test_case_class_name)
423
- "#{@temporary_test_cases_module_name}::#{test_case_class_name}"
424
- end
425
-
426
- def inspect_test_object(test_object)
427
- return nil if test_object.nil?
428
- case test_object
429
- when Test::Unit::TestSuite
430
- sub_tests = test_object.tests.collect do |test|
431
- inspect_test_object(test)
432
- end.sort_by do |type, attributes, *children|
433
- attributes[:name]
434
- end
435
- [:suite, {:name => test_object.name}, *sub_tests]
436
- when Test::Unit::TestCase
437
- [:test, {:name => test_object.method_name}]
438
- else
439
- raise "unexpected test object: #{test_object.inspect}"
440
- end
441
- end
442
- end