grntest 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.
- data/Gemfile +20 -0
- data/README.md +208 -0
- data/Rakefile +43 -0
- data/bin/grntest +20 -0
- data/doc/text/gpl-3.0.txt +674 -0
- data/doc/text/news.md +5 -0
- data/grntest.gemspec +53 -0
- data/lib/grntest/tester.rb +2073 -0
- data/lib/grntest/version.rb +18 -0
- data/test/run-test.rb +29 -0
- data/test/test-executor.rb +193 -0
- metadata +176 -0
data/Gemfile
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
# -*- mode: ruby; coding: utf-8 -*-
|
2
|
+
#
|
3
|
+
# Copyright (C) 2012 Kouhei Sutou <kou@clear-code.com>
|
4
|
+
#
|
5
|
+
# This program is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
7
|
+
# the Free Software Foundation, either version 3 of the License, or
|
8
|
+
# (at your option) any later version.
|
9
|
+
#
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU General Public License for more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU General Public License
|
16
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
17
|
+
|
18
|
+
source "http://rubygems.org/"
|
19
|
+
|
20
|
+
gemspec
|
data/README.md
ADDED
@@ -0,0 +1,208 @@
|
|
1
|
+
# README
|
2
|
+
|
3
|
+
## Name
|
4
|
+
|
5
|
+
grntest
|
6
|
+
|
7
|
+
## Description
|
8
|
+
|
9
|
+
Grntest is a testing framework for groonga. You can write a test for groonga by writing groonga commands and expected result.
|
10
|
+
|
11
|
+
## Install
|
12
|
+
|
13
|
+
```
|
14
|
+
% gem install grntest
|
15
|
+
```
|
16
|
+
|
17
|
+
## Usage
|
18
|
+
|
19
|
+
### Basic usage
|
20
|
+
|
21
|
+
Write a test script that extension is `.test`. Here is a sample test
|
22
|
+
script `select.test`:
|
23
|
+
|
24
|
+
```
|
25
|
+
table_create Users TABLE_HASH_KEY ShortText
|
26
|
+
|
27
|
+
load --table Users
|
28
|
+
[
|
29
|
+
{"_key": "Alice"},
|
30
|
+
{"_key": "Bob"}
|
31
|
+
]
|
32
|
+
|
33
|
+
select Users --query '_key:Alice'
|
34
|
+
```
|
35
|
+
|
36
|
+
Run `grntest` with `select.test` as command line argument:
|
37
|
+
|
38
|
+
```
|
39
|
+
% grntest select.test
|
40
|
+
N
|
41
|
+
================================================================================
|
42
|
+
.
|
43
|
+
select 0.1667s [not checked]
|
44
|
+
================================================================================
|
45
|
+
table_create Users TABLE_HASH_KEY ShortText
|
46
|
+
[[0,0.0,0.0],true]
|
47
|
+
load --table Users
|
48
|
+
[
|
49
|
+
{"_key": "Alice"},
|
50
|
+
{"_key": "Bob"}
|
51
|
+
]
|
52
|
+
[[0,0.0,0.0],2]
|
53
|
+
select Users --query '_key:Alice'
|
54
|
+
[[0,0.0,0.0],[[[1],[["_id","UInt32"],["_key","ShortText"]],[1,"Alice"]]]]
|
55
|
+
================================================================================
|
56
|
+
|
57
|
+
|
58
|
+
5.96 tests/sec: 1 tests, 0 passes, 0 failures, 1 not checked_tests
|
59
|
+
0% passed in 0.1678s.
|
60
|
+
```
|
61
|
+
|
62
|
+
It generates `select.actual` file that contains actual result. If it
|
63
|
+
is expected result, rename it to `select.expected`:
|
64
|
+
|
65
|
+
```
|
66
|
+
% mv select.actual select.expected
|
67
|
+
```
|
68
|
+
|
69
|
+
Run `grntest` again:
|
70
|
+
|
71
|
+
```
|
72
|
+
% grntest select.test
|
73
|
+
.
|
74
|
+
|
75
|
+
6.12 tests/sec: 1 tests, 1 passes, 0 failures, 0 not checked_tests
|
76
|
+
100% passed in 0.1635s.
|
77
|
+
```
|
78
|
+
|
79
|
+
It compares actual result and content of `select.expected` and
|
80
|
+
reporots compared result. If they are the same contnet, `grntest`
|
81
|
+
reports success. If they are not the same content, `grntest` reports
|
82
|
+
failure and show diff of them.
|
83
|
+
|
84
|
+
Change `--query '_key:Alice'` to `--query '_key:Bob`' in
|
85
|
+
`select.test`:
|
86
|
+
|
87
|
+
```
|
88
|
+
table_create Users TABLE_HASH_KEY ShortText
|
89
|
+
|
90
|
+
load --table Users
|
91
|
+
[
|
92
|
+
{"_key": "Alice"},
|
93
|
+
{"_key": "Bob"}
|
94
|
+
]
|
95
|
+
|
96
|
+
select Users --query '_key:Bob'
|
97
|
+
```
|
98
|
+
|
99
|
+
Run `grntest` again:
|
100
|
+
|
101
|
+
```
|
102
|
+
% grntest select.test
|
103
|
+
F
|
104
|
+
================================================================================
|
105
|
+
.
|
106
|
+
select 0.1445s [failed]
|
107
|
+
================================================================================
|
108
|
+
--- (actual)
|
109
|
+
+++ (expected)
|
110
|
+
@@ -6,5 +6,5 @@
|
111
|
+
{"_key": "Bob"}
|
112
|
+
]
|
113
|
+
[[0,0.0,0.0],2]
|
114
|
+
-select Users --query '_key:Bob'
|
115
|
+
-[[0,0.0,0.0],[[[1],[["_id","UInt32"],["_key","ShortText"]],[2,"Bob"]]]]
|
116
|
+
+select Users --query '_key:Alice'
|
117
|
+
+[[0,0.0,0.0],[[[1],[["_id","UInt32"],["_key","ShortText"]],[1,"Alice"]]]]
|
118
|
+
================================================================================
|
119
|
+
|
120
|
+
|
121
|
+
6.68 tests/sec: 1 tests, 0 passes, 1 failures, 0 not checked_tests
|
122
|
+
0% passed in 0.1497s.
|
123
|
+
```
|
124
|
+
|
125
|
+
It says the expected result that is read from `select.expected` and
|
126
|
+
the actual result are not same. And the difference of them is shown in
|
127
|
+
unified diff format. It is helpful to debug the test.
|
128
|
+
|
129
|
+
`select.reject` file is generated on failure. It contains the actual
|
130
|
+
result. If the actual result is the expected result, rename it to
|
131
|
+
`select.expected`.
|
132
|
+
|
133
|
+
```
|
134
|
+
% mv select.reject select.expected
|
135
|
+
```
|
136
|
+
|
137
|
+
Run `grntest` again:
|
138
|
+
|
139
|
+
```
|
140
|
+
% grntest select.test
|
141
|
+
.
|
142
|
+
|
143
|
+
6.97 tests/sec: 1 tests, 1 passes, 0 failures, 0 not checked_tests
|
144
|
+
100% passed in 0.1434s.
|
145
|
+
```
|
146
|
+
|
147
|
+
The test is succeeded again.
|
148
|
+
|
149
|
+
### Advanced usage
|
150
|
+
|
151
|
+
See `grntest --help`. It contains many usuful features.
|
152
|
+
|
153
|
+
Some important features are described in this section.
|
154
|
+
|
155
|
+
#### `--n-workers`
|
156
|
+
|
157
|
+
`--n-workers` option is very useful. You can run many test scripts at
|
158
|
+
once. Tests are finished quickly. You should specify one or more
|
159
|
+
directories that contain many test scripts. If you have only a test
|
160
|
+
script, `--n-workers` is not effective.
|
161
|
+
|
162
|
+
Here is a sample command line to use `--n-workers`:
|
163
|
+
|
164
|
+
```
|
165
|
+
% grntest --n-workers 4 test/function/suite/suggest
|
166
|
+
[0] [finished]
|
167
|
+
8.60 tests/sec: 4 tests, 4 passes, 0 failures, 0 not checked_tests
|
168
|
+
[1] [finished]
|
169
|
+
9.85 tests/sec: 5 tests, 5 passes, 0 failures, 0 not checked_tests
|
170
|
+
[2] [finished]
|
171
|
+
8.63 tests/sec: 4 tests, 4 passes, 0 failures, 0 not checked_tests
|
172
|
+
[3] [finished]
|
173
|
+
9.68 tests/sec: 5 tests, 5 passes, 0 failures, 0 not checked_tests
|
174
|
+
|-----------------------------------------------------------------------| [100%]
|
175
|
+
|
176
|
+
34.43 tests/sec: 18 tests, 18 passes, 0 failures, 0 not checked_tests
|
177
|
+
100% passed in 0.5228s.
|
178
|
+
```
|
179
|
+
|
180
|
+
### Examples
|
181
|
+
|
182
|
+
See [test/function/ directory in groonga's
|
183
|
+
source](https://github.com/groonga/groonga/tree/master/test/function). It
|
184
|
+
has many test scripts and uses many useful features. They will help you.
|
185
|
+
|
186
|
+
## Dependencies
|
187
|
+
|
188
|
+
* Ruby 1.9.3
|
189
|
+
|
190
|
+
### Mailing list
|
191
|
+
|
192
|
+
* English: [groonga-talk@lists.sourceforge.net](https://lists.sourceforge.net/lists/listinfo/groonga-talk)
|
193
|
+
* Japanese: [groonga-dev@lists.sourceforge.jp](http://lists.sourceforge.jp/mailman/listinfo/groonga-dev)
|
194
|
+
|
195
|
+
## Thanks
|
196
|
+
|
197
|
+
* ...
|
198
|
+
|
199
|
+
## Authors
|
200
|
+
|
201
|
+
* Kouhei Sutou \<kou@clear-code.com\>
|
202
|
+
* Haruka Yoshihara \<yoshihara@clear-code.com\>
|
203
|
+
|
204
|
+
## License
|
205
|
+
|
206
|
+
GPLv3 or later. See doc/text/gpl-3.0.txt for details.
|
207
|
+
|
208
|
+
(Kouhei Sutou has a right to change the license including contributed patches.)
|
data/Rakefile
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
# -*- mode: ruby; coding: utf-8 -*-
|
2
|
+
#
|
3
|
+
# Copyright (C) 2012 Kouhei Sutou <kou@clear-code.com>
|
4
|
+
#
|
5
|
+
# This program is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
7
|
+
# the Free Software Foundation, either version 3 of the License, or
|
8
|
+
# (at your option) any later version.
|
9
|
+
#
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU General Public License for more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU General Public License
|
16
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
17
|
+
|
18
|
+
task :default => :test
|
19
|
+
|
20
|
+
require "rubygems"
|
21
|
+
require "bundler/gem_helper"
|
22
|
+
require "packnga"
|
23
|
+
|
24
|
+
base_dir = File.join(File.dirname(__FILE__))
|
25
|
+
|
26
|
+
helper = Bundler::GemHelper.new(base_dir)
|
27
|
+
def helper.version_tag
|
28
|
+
version
|
29
|
+
end
|
30
|
+
|
31
|
+
helper.install
|
32
|
+
spec = helper.gemspec
|
33
|
+
|
34
|
+
Packnga::DocumentTask.new(spec) do
|
35
|
+
end
|
36
|
+
|
37
|
+
Packnga::ReleaseTask.new(spec) do
|
38
|
+
end
|
39
|
+
|
40
|
+
desc "Run tests"
|
41
|
+
task :test do
|
42
|
+
ruby("test/run-test.rb")
|
43
|
+
end
|
data/bin/grntest
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Copyright (C) 2012 Kouhei Sutou <kou@clear-code.com>
|
4
|
+
#
|
5
|
+
# This program is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
7
|
+
# the Free Software Foundation, either version 3 of the License, or
|
8
|
+
# (at your option) any later version.
|
9
|
+
#
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU General Public License for more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU General Public License
|
16
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
17
|
+
|
18
|
+
require "grntest/tester"
|
19
|
+
|
20
|
+
exit(Grntest::Tester.run)
|