rroonga 0.9.4-x86-mingw32 → 0.9.5-x86-mingw32
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.
- data/NEWS.ja.rdoc +29 -0
- data/NEWS.rdoc +29 -0
- data/Rakefile +6 -6
- data/ext/groonga/rb-grn-array.c +1 -1
- data/ext/groonga/rb-grn-context.c +15 -28
- data/ext/groonga/rb-grn-exception.c +46 -1
- data/ext/groonga/rb-grn-expression.c +22 -13
- data/ext/groonga/rb-grn-fix-size-column.c +2 -8
- data/ext/groonga/rb-grn-hash.c +8 -1
- data/ext/groonga/rb-grn-object.c +1 -1
- data/ext/groonga/rb-grn-patricia-trie.c +23 -1
- data/ext/groonga/rb-grn-table-key-support.c +22 -0
- data/ext/groonga/rb-grn-table.c +37 -5
- data/ext/groonga/rb-grn-utils.c +20 -2
- data/ext/groonga/rb-grn.h +1 -1
- data/ext/groonga/rb-groonga.c +76 -38
- data/extconf.rb +17 -1
- data/html/developer.html +32 -7
- data/html/footer.html.erb +5 -0
- data/html/heading-mark.svg +393 -0
- data/html/index.html +33 -3
- data/lib/1.8/groonga.so +0 -0
- data/lib/1.9/groonga.so +0 -0
- data/lib/groonga.rb +3 -7
- data/lib/groonga/context.rb +2 -13
- data/lib/groonga/expression-builder.rb +273 -67
- data/lib/groonga/pagination.rb +143 -0
- data/lib/groonga/record.rb +2 -0
- data/lib/groonga/schema.rb +140 -29
- data/pkg/rroonga-0.9.5/NEWS.ja.rdoc +156 -0
- data/pkg/rroonga-0.9.5/NEWS.rdoc +158 -0
- data/pkg/rroonga-0.9.5/README.ja.rdoc +65 -0
- data/pkg/rroonga-0.9.5/README.rdoc +66 -0
- data/pkg/rroonga-0.9.5/text/TUTORIAL.ja.rdoc +394 -0
- data/pkg/rroonga-0.9.5/text/expression.rdoc +285 -0
- data/rroonga-build.rb +2 -2
- data/test-unit/Rakefile +40 -0
- data/test-unit/TODO +5 -0
- data/test-unit/bin/testrb +5 -0
- data/test-unit/html/classic.html +15 -0
- data/test-unit/html/index.html +25 -0
- data/test-unit/html/index.html.ja +27 -0
- data/test-unit/lib/test/unit.rb +323 -0
- data/test-unit/lib/test/unit/assertionfailederror.rb +25 -0
- data/test-unit/lib/test/unit/assertions.rb +1230 -0
- data/test-unit/lib/test/unit/attribute.rb +125 -0
- data/test-unit/lib/test/unit/autorunner.rb +360 -0
- data/test-unit/lib/test/unit/collector.rb +36 -0
- data/test-unit/lib/test/unit/collector/descendant.rb +23 -0
- data/test-unit/lib/test/unit/collector/dir.rb +108 -0
- data/test-unit/lib/test/unit/collector/load.rb +144 -0
- data/test-unit/lib/test/unit/collector/objectspace.rb +34 -0
- data/test-unit/lib/test/unit/color-scheme.rb +102 -0
- data/test-unit/lib/test/unit/color.rb +96 -0
- data/test-unit/lib/test/unit/diff.rb +724 -0
- data/test-unit/lib/test/unit/error.rb +130 -0
- data/test-unit/lib/test/unit/exceptionhandler.rb +39 -0
- data/test-unit/lib/test/unit/failure.rb +136 -0
- data/test-unit/lib/test/unit/fixture.rb +176 -0
- data/test-unit/lib/test/unit/notification.rb +129 -0
- data/test-unit/lib/test/unit/omission.rb +191 -0
- data/test-unit/lib/test/unit/pending.rb +150 -0
- data/test-unit/lib/test/unit/priority.rb +180 -0
- data/test-unit/lib/test/unit/runner/console.rb +52 -0
- data/test-unit/lib/test/unit/runner/emacs.rb +8 -0
- data/test-unit/lib/test/unit/runner/tap.rb +8 -0
- data/test-unit/lib/test/unit/testcase.rb +476 -0
- data/test-unit/lib/test/unit/testresult.rb +89 -0
- data/test-unit/lib/test/unit/testsuite.rb +110 -0
- data/test-unit/lib/test/unit/ui/console/outputlevel.rb +14 -0
- data/test-unit/lib/test/unit/ui/console/testrunner.rb +466 -0
- data/test-unit/lib/test/unit/ui/emacs/testrunner.rb +63 -0
- data/test-unit/lib/test/unit/ui/tap/testrunner.rb +92 -0
- data/test-unit/lib/test/unit/ui/testrunner.rb +28 -0
- data/test-unit/lib/test/unit/ui/testrunnermediator.rb +77 -0
- data/test-unit/lib/test/unit/ui/testrunnerutilities.rb +41 -0
- data/test-unit/lib/test/unit/util/backtracefilter.rb +41 -0
- data/test-unit/lib/test/unit/util/method-owner-finder.rb +28 -0
- data/test-unit/lib/test/unit/util/observable.rb +90 -0
- data/test-unit/lib/test/unit/util/procwrapper.rb +48 -0
- data/test-unit/lib/test/unit/version.rb +7 -0
- data/test-unit/sample/adder.rb +13 -0
- data/test-unit/sample/subtracter.rb +12 -0
- data/test-unit/sample/test_adder.rb +20 -0
- data/test-unit/sample/test_subtracter.rb +20 -0
- data/test-unit/sample/test_user.rb +23 -0
- data/test-unit/test/collector/test-descendant.rb +133 -0
- data/test-unit/test/collector/test-load.rb +442 -0
- data/test-unit/test/collector/test_dir.rb +406 -0
- data/test-unit/test/collector/test_objectspace.rb +100 -0
- data/test-unit/test/run-test.rb +15 -0
- data/test-unit/test/test-attribute.rb +86 -0
- data/test-unit/test/test-color-scheme.rb +67 -0
- data/test-unit/test/test-color.rb +47 -0
- data/test-unit/test/test-diff.rb +518 -0
- data/test-unit/test/test-emacs-runner.rb +60 -0
- data/test-unit/test/test-fixture.rb +287 -0
- data/test-unit/test/test-notification.rb +33 -0
- data/test-unit/test/test-omission.rb +81 -0
- data/test-unit/test/test-pending.rb +70 -0
- data/test-unit/test/test-priority.rb +119 -0
- data/test-unit/test/test-testcase.rb +544 -0
- data/test-unit/test/test_assertions.rb +1151 -0
- data/test-unit/test/test_error.rb +26 -0
- data/test-unit/test/test_failure.rb +33 -0
- data/test-unit/test/test_testresult.rb +113 -0
- data/test-unit/test/test_testsuite.rb +129 -0
- data/test-unit/test/testunit-test-util.rb +14 -0
- data/test-unit/test/ui/test_testrunmediator.rb +20 -0
- data/test-unit/test/util/test-method-owner-finder.rb +38 -0
- data/test-unit/test/util/test_backtracefilter.rb +41 -0
- data/test-unit/test/util/test_observable.rb +102 -0
- data/test-unit/test/util/test_procwrapper.rb +36 -0
- data/test/groonga-test-utils.rb +3 -2
- data/test/run-test.rb +14 -2
- data/test/test-column.rb +7 -7
- data/test/test-context-select.rb +34 -11
- data/test/test-exception.rb +3 -0
- data/test/test-expression-builder.rb +11 -0
- data/test/test-expression.rb +3 -6
- data/test/test-gqtp.rb +3 -5
- data/test/test-pagination.rb +249 -0
- data/test/test-record.rb +36 -8
- data/test/test-remote.rb +11 -4
- data/test/test-schema-create-table.rb +251 -0
- data/test/test-schema.rb +4 -24
- data/test/test-table-offset-and-limit.rb +3 -5
- data/test/test-table-select-mecab.rb +80 -0
- data/test/test-table-select-weight.rb +104 -0
- data/test/test-table.rb +22 -4
- data/test/test-version.rb +1 -1
- data/text/TUTORIAL.ja.rdoc +2 -0
- data/text/expression.rdoc +1 -0
- data/vendor/local/bin/grntest.exe +0 -0
- data/vendor/local/bin/groonga.exe +0 -0
- data/vendor/local/bin/libgroonga-0.dll +0 -0
- data/vendor/local/include/{groonga.h → groonga/groonga.h} +93 -32
- data/vendor/local/lib/groonga/modules/functions/cast.dll +0 -0
- data/vendor/local/lib/groonga/modules/functions/cast.la +41 -0
- data/vendor/local/lib/pkgconfig/groonga.pc +12 -0
- data/vendor/local/share/groonga/admin_html/css/admin.css +104 -0
- data/vendor/local/share/groonga/admin_html/css/ui-lightness/jquery-ui-1.8.1.custom.css +486 -0
- data/vendor/local/share/groonga/admin_html/index.html +1355 -0
- data/vendor/local/share/groonga/admin_html/js/jquery-1.4.2.min.js +154 -0
- data/vendor/local/share/groonga/admin_html/js/jquery-ui-1.8.1.custom.min.js +756 -0
- data/vendor/local/share/groonga/munin/plugins/groonga_cpu_load +47 -0
- data/vendor/local/share/groonga/munin/plugins/groonga_cpu_time +57 -0
- data/vendor/local/share/groonga/munin/plugins/groonga_disk +162 -0
- data/vendor/local/share/groonga/munin/plugins/groonga_memory +51 -0
- data/vendor/local/share/groonga/munin/plugins/groonga_n_records +110 -0
- data/vendor/local/share/groonga/munin/plugins/groonga_query_performance +133 -0
- data/vendor/local/share/groonga/munin/plugins/groonga_status +84 -0
- metadata +126 -36
@@ -0,0 +1,48 @@
|
|
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
|
@@ -0,0 +1,13 @@
|
|
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
|
+
|
@@ -0,0 +1,12 @@
|
|
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
|
@@ -0,0 +1,20 @@
|
|
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
|
@@ -0,0 +1,20 @@
|
|
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
|
@@ -0,0 +1,23 @@
|
|
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
|
@@ -0,0 +1,133 @@
|
|
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
|
@@ -0,0 +1,442 @@
|
|
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
|