grntest 1.8.3 → 1.8.5
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.
- checksums.yaml +4 -4
- data/doc/text/news.md +13 -0
- data/grntest.gemspec +1 -1
- data/lib/grntest/executors/base-executor.rb +10 -8
- data/lib/grntest/template-evaluator.rb +8 -7
- data/lib/grntest/test-runner.rb +6 -3
- data/lib/grntest/version.rb +2 -2
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 700629c1af3524674871aadb97ae4fccf658accb7694b7700fea6d4d1f926acb
|
|
4
|
+
data.tar.gz: a671e1928b1dd25d5462e19294d34060fe45356b35a984219322cbe67567b695
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6025788a9481e12bd9627b9b48152a20e8d9665a6f4449575e75389ce409da784bcefd6f409e2e462be5ec42c352f78784ebdd4e2d793ae411907c9907f24206
|
|
7
|
+
data.tar.gz: dae5d48fc1887d63a47c961f1beb8db167e808ebf8f435d70f667f22740e7d1b8e08e57eb3f59bbbd8b2894443f0b5ac78b630a2d55fa20cceaa679b1530dd15
|
data/doc/text/news.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# News
|
|
2
2
|
|
|
3
|
+
## 1.8.5: 2026-09-04
|
|
4
|
+
|
|
5
|
+
### Improvements
|
|
6
|
+
|
|
7
|
+
* `#@generate-series`: Improved performance.
|
|
8
|
+
|
|
9
|
+
## 1.8.4: 2026-03-16
|
|
10
|
+
|
|
11
|
+
### Improvements
|
|
12
|
+
|
|
13
|
+
* Changed to use non-blocking mode for pipe between `grntest` and
|
|
14
|
+
`groonga` for stable test result.
|
|
15
|
+
|
|
3
16
|
## 1.8.3: 2025-04-29
|
|
4
17
|
|
|
5
18
|
### Improvements
|
data/grntest.gemspec
CHANGED
|
@@ -49,7 +49,7 @@ Gem::Specification.new do |spec|
|
|
|
49
49
|
spec.add_runtime_dependency("groonga-log")
|
|
50
50
|
spec.add_runtime_dependency("groonga-query-log", ">= 1.4.1")
|
|
51
51
|
spec.add_runtime_dependency("groonga-synonym")
|
|
52
|
-
spec.add_runtime_dependency("json", ">= 2.
|
|
52
|
+
spec.add_runtime_dependency("json", ">= 2.12.0")
|
|
53
53
|
spec.add_runtime_dependency("msgpack")
|
|
54
54
|
spec.add_runtime_dependency("rexml")
|
|
55
55
|
|
|
@@ -308,12 +308,13 @@ module Grntest
|
|
|
308
308
|
@context.collect_query_log = (options[0] == "true")
|
|
309
309
|
end
|
|
310
310
|
|
|
311
|
-
def each_generated_series_chunk(
|
|
311
|
+
def each_generated_series_chunk(template, start, stop)
|
|
312
|
+
evaluator = TemplateEvaluator.new(template, :i)
|
|
312
313
|
max_chunk_size = 1 * 1024 * 1024 # 1MiB
|
|
313
314
|
chunk_size = 0
|
|
314
315
|
records = []
|
|
315
316
|
(Integer(start)..Integer(stop)).each do |i|
|
|
316
|
-
record = evaluator.evaluate(i
|
|
317
|
+
record = evaluator.evaluate(i).to_json
|
|
317
318
|
records << record
|
|
318
319
|
chunk_size += record.bytesize
|
|
319
320
|
if chunk_size > max_chunk_size
|
|
@@ -327,8 +328,7 @@ module Grntest
|
|
|
327
328
|
|
|
328
329
|
def execute_directive_generate_series(parser, line, content, options)
|
|
329
330
|
start, stop, table, template, = options
|
|
330
|
-
|
|
331
|
-
each_generated_series_chunk(evaluator,
|
|
331
|
+
each_generated_series_chunk(template.force_encoding("UTF-8"),
|
|
332
332
|
Integer(start),
|
|
333
333
|
Integer(stop)) do |records|
|
|
334
334
|
source = "load --table #{table}\n"
|
|
@@ -502,7 +502,7 @@ module Grntest
|
|
|
502
502
|
return input if @substitutions.empty?
|
|
503
503
|
@substitutions.each_value do |pattern, substituted_evaluator, _|
|
|
504
504
|
input = input.gsub(pattern) do
|
|
505
|
-
substituted_evaluator.evaluate(
|
|
505
|
+
substituted_evaluator.evaluate(Regexp.last_match)
|
|
506
506
|
end
|
|
507
507
|
end
|
|
508
508
|
input
|
|
@@ -512,7 +512,7 @@ module Grntest
|
|
|
512
512
|
return input if @substitutions.empty?
|
|
513
513
|
@substitutions.each_value do |pattern, _, normalized_evaluator|
|
|
514
514
|
input = input.gsub(pattern) do
|
|
515
|
-
normalized_evaluator.evaluate(
|
|
515
|
+
normalized_evaluator.evaluate(Regexp.last_match)
|
|
516
516
|
end
|
|
517
517
|
end
|
|
518
518
|
input
|
|
@@ -524,9 +524,11 @@ module Grntest
|
|
|
524
524
|
substituted.force_encoding("UTF-8")
|
|
525
525
|
normalized.force_encoding("UTF-8")
|
|
526
526
|
substituted_evaluator =
|
|
527
|
-
TemplateEvaluator.new("<<STRING.chomp\n#{substituted}\nSTRING"
|
|
527
|
+
TemplateEvaluator.new("<<STRING.chomp\n#{substituted}\nSTRING",
|
|
528
|
+
:match_data)
|
|
528
529
|
normalized_evaluator =
|
|
529
|
-
TemplateEvaluator.new("<<STRING.chomp\n#{normalized}\nSTRING"
|
|
530
|
+
TemplateEvaluator.new("<<STRING.chomp\n#{normalized}\nSTRING",
|
|
531
|
+
:match_data)
|
|
530
532
|
@substitutions[pattern] = [
|
|
531
533
|
compile_pattern(pattern),
|
|
532
534
|
substituted_evaluator,
|
|
@@ -15,16 +15,17 @@
|
|
|
15
15
|
|
|
16
16
|
module Grntest
|
|
17
17
|
class TemplateEvaluator
|
|
18
|
-
def initialize(template)
|
|
18
|
+
def initialize(template, *variable_names)
|
|
19
19
|
@template = template
|
|
20
|
+
@compiled = eval(<<-TEMPLATE)
|
|
21
|
+
lambda do |#{variable_names.join(", ")}|
|
|
22
|
+
#{@template}
|
|
23
|
+
end
|
|
24
|
+
TEMPLATE
|
|
20
25
|
end
|
|
21
26
|
|
|
22
|
-
def evaluate(
|
|
23
|
-
|
|
24
|
-
local_variables.each do |name, value|
|
|
25
|
-
_binding.local_variable_set(name, value)
|
|
26
|
-
end
|
|
27
|
-
_binding.eval(@template)
|
|
27
|
+
def evaluate(*values)
|
|
28
|
+
@compiled.call(*values)
|
|
28
29
|
end
|
|
29
30
|
end
|
|
30
31
|
end
|
data/lib/grntest/test-runner.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright (C) 2012-
|
|
1
|
+
# Copyright (C) 2012-2026 Sutou Kouhei <kou@clear-code.com>
|
|
2
2
|
#
|
|
3
3
|
# This program is free software: you can redistribute it and/or modify
|
|
4
4
|
# it under the terms of the GNU General Public License as published by
|
|
@@ -13,11 +13,12 @@
|
|
|
13
13
|
# You should have received a copy of the GNU General Public License
|
|
14
14
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
15
15
|
|
|
16
|
-
require "pathname"
|
|
17
16
|
require "fileutils"
|
|
17
|
+
require "io/nonblock"
|
|
18
|
+
require "pathname"
|
|
19
|
+
require "socket"
|
|
18
20
|
require "tempfile"
|
|
19
21
|
require "timeout"
|
|
20
|
-
require "socket"
|
|
21
22
|
|
|
22
23
|
require "groonga-log"
|
|
23
24
|
require "json"
|
|
@@ -270,7 +271,9 @@ module Grntest
|
|
|
270
271
|
|
|
271
272
|
def open_pipe
|
|
272
273
|
IO.pipe("ASCII-8BIT") do |input_read, input_write|
|
|
274
|
+
input_write.nonblock = false
|
|
273
275
|
IO.pipe("ASCII-8BIT") do |output_read, output_write|
|
|
276
|
+
output_write.nonblock = false
|
|
274
277
|
yield(input_read, input_write, output_read, output_write)
|
|
275
278
|
end
|
|
276
279
|
end
|
data/lib/grntest/version.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright (C) 2012-
|
|
1
|
+
# Copyright (C) 2012-2026 Sutou Kouhei <kou@clear-code.com>
|
|
2
2
|
#
|
|
3
3
|
# This program is free software: you can redistribute it and/or modify
|
|
4
4
|
# it under the terms of the GNU General Public License as published by
|
|
@@ -14,5 +14,5 @@
|
|
|
14
14
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
15
15
|
|
|
16
16
|
module Grntest
|
|
17
|
-
VERSION = "1.8.
|
|
17
|
+
VERSION = "1.8.5"
|
|
18
18
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: grntest
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.8.
|
|
4
|
+
version: 1.8.5
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Kouhei Sutou
|
|
@@ -100,14 +100,14 @@ dependencies:
|
|
|
100
100
|
requirements:
|
|
101
101
|
- - ">="
|
|
102
102
|
- !ruby/object:Gem::Version
|
|
103
|
-
version: 2.
|
|
103
|
+
version: 2.12.0
|
|
104
104
|
type: :runtime
|
|
105
105
|
prerelease: false
|
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
107
|
requirements:
|
|
108
108
|
- - ">="
|
|
109
109
|
- !ruby/object:Gem::Version
|
|
110
|
-
version: 2.
|
|
110
|
+
version: 2.12.0
|
|
111
111
|
- !ruby/object:Gem::Dependency
|
|
112
112
|
name: msgpack
|
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -283,7 +283,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
283
283
|
- !ruby/object:Gem::Version
|
|
284
284
|
version: '0'
|
|
285
285
|
requirements: []
|
|
286
|
-
rubygems_version:
|
|
286
|
+
rubygems_version: 4.0.16
|
|
287
287
|
specification_version: 4
|
|
288
288
|
summary: Grntest is a testing framework for Groonga. You can write a test for Groonga
|
|
289
289
|
by writing Groonga commands and expected result.
|