grntest 1.8.4 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6455869776dca39246bac4338793e91579836a6762c20fb33a9710c01f38bfff
4
- data.tar.gz: 5e4f4186f61d6b0d7ba597fe59c0cfa886bd03d7f25227fe835502f801dd6be6
3
+ metadata.gz: 700629c1af3524674871aadb97ae4fccf658accb7694b7700fea6d4d1f926acb
4
+ data.tar.gz: a671e1928b1dd25d5462e19294d34060fe45356b35a984219322cbe67567b695
5
5
  SHA512:
6
- metadata.gz: 3c3c5cec9561a57952c72c4e3b2eea956328553308ff9fe84d2b828f142f1f8f0e57d491c4a326dc6cda7d7c95e56bacb497cad319ae4508a41a19e2df781a90
7
- data.tar.gz: 8ad7895b6201d721efaaab67141ac80af2c589f6f7883206350d3e7cda19470aeba8efa3c925b91689b945ac408c9097544c3b94dcd799a9bb730ba42639dcfa
6
+ metadata.gz: 6025788a9481e12bd9627b9b48152a20e8d9665a6f4449575e75389ce409da784bcefd6f409e2e462be5ec42c352f78784ebdd4e2d793ae411907c9907f24206
7
+ data.tar.gz: dae5d48fc1887d63a47c961f1beb8db167e808ebf8f435d70f667f22740e7d1b8e08e57eb3f59bbbd8b2894443f0b5ac78b630a2d55fa20cceaa679b1530dd15
data/doc/text/news.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # News
2
2
 
3
+ ## 1.8.5: 2026-09-04
4
+
5
+ ### Improvements
6
+
7
+ * `#@generate-series`: Improved performance.
8
+
3
9
  ## 1.8.4: 2026-03-16
4
10
 
5
11
  ### Improvements
@@ -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(evaluator, start, stop)
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: i).to_json
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
- evaluator = TemplateEvaluator.new(template.force_encoding("UTF-8"))
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(match_data: Regexp.last_match)
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(match_data: Regexp.last_match)
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(**local_variables)
23
- _binding = binding
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
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2012-2025 Sutou Kouhei <kou@clear-code.com>
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.4"
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
4
+ version: 1.8.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kouhei Sutou
@@ -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: 4.0.3
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.