grntest 1.3.5 → 1.3.6
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/.yardopts +1 -1
- data/doc/text/news.md +21 -0
- data/grntest.gemspec +2 -2
- data/lib/grntest/execution-context.rb +11 -1
- data/lib/grntest/executors/base-executor.rb +37 -3
- data/lib/grntest/executors/http-executor.rb +65 -14
- data/lib/grntest/executors/standard-io-executor.rb +11 -0
- data/lib/grntest/test-runner.rb +56 -3
- data/lib/grntest/tester.rb +17 -5
- data/lib/grntest/version.rb +1 -1
- data/lib/grntest/worker.rb +5 -0
- metadata +11 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4a454a43f204e50c72ce0470713ee3dbcdd7c3b0f210f8fc37eb8c858dc5794f
|
4
|
+
data.tar.gz: 5f5a5dfdab82eefc86318b7a09e66c97979cb68fed0c498369117c0c98666a6a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 707db0020a332057b06ce4822edb4fd1cac2226e88f23a642fd071e2bda2457747f54fd22b16198b629badaee7e865753d60d0c713f35c40b1b718f1248a8866
|
7
|
+
data.tar.gz: 88653342fa0366047c2ecf080cc6d4bbab2f7c43186c9df4173fbeeb7814bf5a9143442ed1df7e4144674a2b0c977b109d0cfa2cf7927c20f489a74fc234370a
|
data/.yardopts
CHANGED
data/doc/text/news.md
CHANGED
@@ -1,5 +1,26 @@
|
|
1
1
|
# News
|
2
2
|
|
3
|
+
## 1.3.6: 2020-03-26
|
4
|
+
|
5
|
+
### Improvements
|
6
|
+
|
7
|
+
* standard-io: Added support for stream output
|
8
|
+
|
9
|
+
* Added `require-testee` directive.
|
10
|
+
|
11
|
+
* Added `require-interface` directive.
|
12
|
+
|
13
|
+
* Added support for Apache Arrow.
|
14
|
+
|
15
|
+
* Added `require-apache-arrow` directive.
|
16
|
+
|
17
|
+
* http: Added support for debug log by `GRNTEST_HTTP_DEBUG`
|
18
|
+
environment variable.
|
19
|
+
|
20
|
+
* Added `--use-http-chunked` option.
|
21
|
+
|
22
|
+
* Stopped counting test failures on retry.
|
23
|
+
|
3
24
|
## 1.3.5: 2020-03-02
|
4
25
|
|
5
26
|
### Improvements
|
data/grntest.gemspec
CHANGED
@@ -53,9 +53,9 @@ Gem::Specification.new do |spec|
|
|
53
53
|
spec.add_runtime_dependency("rexml")
|
54
54
|
|
55
55
|
spec.add_development_dependency("bundler")
|
56
|
+
spec.add_development_dependency("kramdown")
|
57
|
+
spec.add_development_dependency("packnga")
|
56
58
|
spec.add_development_dependency("rake")
|
57
59
|
spec.add_development_dependency("test-unit", ">= 3.0.0")
|
58
60
|
spec.add_development_dependency("test-unit-rr")
|
59
|
-
spec.add_development_dependency("packnga")
|
60
|
-
spec.add_development_dependency("redcarpet")
|
61
61
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2012-
|
1
|
+
# Copyright (C) 2012-2020 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
|
@@ -20,8 +20,11 @@ module Grntest
|
|
20
20
|
attr_accessor :plugins_directory
|
21
21
|
attr_accessor :plugin_extension
|
22
22
|
attr_accessor :groonga_suggest_create_dataset
|
23
|
+
attr_accessor :testee
|
24
|
+
attr_accessor :interface
|
23
25
|
attr_accessor :result
|
24
26
|
attr_writer :use_http_post
|
27
|
+
attr_writer :use_http_chunked
|
25
28
|
attr_accessor :input_type
|
26
29
|
attr_accessor :output_type
|
27
30
|
attr_accessor :on_error
|
@@ -42,9 +45,12 @@ module Grntest
|
|
42
45
|
@plugins_directory = nil
|
43
46
|
@plugin_extension = guess_plugin_extension
|
44
47
|
@groonga_suggest_create_dataset = "groonga-suggest-create-dataset"
|
48
|
+
@testee = "groonga"
|
49
|
+
@interface = "stdio"
|
45
50
|
@n_nested = 0
|
46
51
|
@result = []
|
47
52
|
@use_http_post = false
|
53
|
+
@use_http_chunked = false
|
48
54
|
@input_type = "json"
|
49
55
|
@output_type = "json"
|
50
56
|
@log = nil
|
@@ -70,6 +76,10 @@ module Grntest
|
|
70
76
|
@use_http_post
|
71
77
|
end
|
72
78
|
|
79
|
+
def use_http_chunked?
|
80
|
+
@use_http_chunked
|
81
|
+
end
|
82
|
+
|
73
83
|
def suppress_backtrace?
|
74
84
|
@suppress_backtrace or debug?
|
75
85
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2012-
|
1
|
+
# Copyright (C) 2012-2020 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
|
@@ -327,6 +327,26 @@ module Grntest
|
|
327
327
|
end
|
328
328
|
end
|
329
329
|
|
330
|
+
def execute_directive_require_testee(parser, line, content, options)
|
331
|
+
testee, = options
|
332
|
+
unless @context.testee == testee
|
333
|
+
omit("require testee: #{testee}")
|
334
|
+
end
|
335
|
+
end
|
336
|
+
|
337
|
+
def execute_directive_require_interface(parser, line, content, options)
|
338
|
+
interface, = options
|
339
|
+
unless @context.interface == interface
|
340
|
+
omit("require interface: #{interface}")
|
341
|
+
end
|
342
|
+
end
|
343
|
+
|
344
|
+
def execute_directive_require_apache_arrow(parser, line, content, options)
|
345
|
+
unless defined?(::Arrow)
|
346
|
+
omit("require Apache Arrow")
|
347
|
+
end
|
348
|
+
end
|
349
|
+
|
330
350
|
def execute_directive(parser, line, content)
|
331
351
|
command, *options = Shellwords.split(content)
|
332
352
|
case command
|
@@ -364,6 +384,12 @@ module Grntest
|
|
364
384
|
execute_directive_eval(parser, line, content, options)
|
365
385
|
when "require-input-type"
|
366
386
|
execute_directive_require_input_type(parser, line, content, options)
|
387
|
+
when "require-testee"
|
388
|
+
execute_directive_require_testee(parser, line, content, options)
|
389
|
+
when "require-interface"
|
390
|
+
execute_directive_require_interface(parser, line, content, options)
|
391
|
+
when "require-apache-arrow"
|
392
|
+
execute_directive_require_apache_arrow(parser, line, content, options)
|
367
393
|
else
|
368
394
|
log_input(line)
|
369
395
|
log_error("#|e| unknown directive: <#{command}>")
|
@@ -402,11 +428,12 @@ module Grntest
|
|
402
428
|
if @current_command.name == "dump"
|
403
429
|
@output_type = "groonga-command"
|
404
430
|
else
|
405
|
-
@output_type = @current_command[:output_type]
|
431
|
+
@output_type = @current_command[:output_type]
|
406
432
|
end
|
407
433
|
end
|
408
434
|
|
409
435
|
def execute_command(command)
|
436
|
+
command[:output_type] ||= @context.output_type
|
410
437
|
extract_command_info(command)
|
411
438
|
log_input("#{command.original_source}\n")
|
412
439
|
timeout = @context.timeout
|
@@ -423,6 +450,7 @@ module Grntest
|
|
423
450
|
error.backtrace.each do |line|
|
424
451
|
log_error("# error: #{line}")
|
425
452
|
end
|
453
|
+
log_error(read_all_log)
|
426
454
|
@context.error
|
427
455
|
else
|
428
456
|
type = @output_type
|
@@ -491,7 +519,13 @@ module Grntest
|
|
491
519
|
read_content = output.readpartial(request_bytes)
|
492
520
|
debug_output(read_content)
|
493
521
|
content << read_content
|
494
|
-
|
522
|
+
if read_content.bytesize < request_bytes
|
523
|
+
if options[:stream_output]
|
524
|
+
timeout = 0.1
|
525
|
+
else
|
526
|
+
timeout = 0
|
527
|
+
end
|
528
|
+
end
|
495
529
|
end
|
496
530
|
content
|
497
531
|
end
|
@@ -21,6 +21,29 @@ require "grntest/executors/base-executor"
|
|
21
21
|
module Grntest
|
22
22
|
module Executors
|
23
23
|
class HTTPExecutor < BaseExecutor
|
24
|
+
class SlowBodyStream
|
25
|
+
def initialize(body)
|
26
|
+
@body = body || ""
|
27
|
+
@offset = 0
|
28
|
+
end
|
29
|
+
|
30
|
+
def read(length=nil, output="")
|
31
|
+
if @offset >= @body.bytesize
|
32
|
+
nil
|
33
|
+
else
|
34
|
+
if length.nil?
|
35
|
+
output.replace(@body.byteslice(@offset..-1))
|
36
|
+
@offset = @body.bytesize
|
37
|
+
output
|
38
|
+
else
|
39
|
+
output.replace(@body.byteslice(@offset, 1))
|
40
|
+
@offset += 1
|
41
|
+
output
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
24
47
|
def initialize(host, port, context)
|
25
48
|
super(context)
|
26
49
|
@host = host
|
@@ -52,6 +75,9 @@ module Grntest
|
|
52
75
|
end
|
53
76
|
|
54
77
|
private
|
78
|
+
DEBUG = (ENV["GRNTEST_HTTP_DEBUG"] == "yes")
|
79
|
+
LOAD_DEBUG = (DEBUG or (ENV["GRNTEST_HTTP_LOAD_DEBUG"] == "yes"))
|
80
|
+
|
55
81
|
MAX_URI_SIZE = 4096
|
56
82
|
def send_load_command(command)
|
57
83
|
lines = command.original_source.lines
|
@@ -84,14 +110,20 @@ module Grntest
|
|
84
110
|
body = values
|
85
111
|
end
|
86
112
|
end
|
87
|
-
|
113
|
+
path = command.to_uri_format
|
114
|
+
url = "http://#{@host}:#{@port}#{path}"
|
115
|
+
request = Net::HTTP::Post.new(path)
|
88
116
|
request.content_type = content_type
|
89
|
-
request
|
90
|
-
|
91
|
-
http
|
92
|
-
http.
|
117
|
+
set_request_body(request, body)
|
118
|
+
run_http_request(url) do
|
119
|
+
http = Net::HTTP.new(@host, @port)
|
120
|
+
http.set_debug_output($stderr) if LOAD_DEBUG
|
121
|
+
response = http.start do
|
122
|
+
http.read_timeout = read_timeout
|
123
|
+
http.request(request)
|
124
|
+
end
|
125
|
+
normalize_response_data(command, response.body)
|
93
126
|
end
|
94
|
-
normalize_response_data(command, response.body)
|
95
127
|
end
|
96
128
|
|
97
129
|
def send_normal_command(command)
|
@@ -100,20 +132,40 @@ module Grntest
|
|
100
132
|
path, query = path_with_query.split("?", 2)
|
101
133
|
request = Net::HTTP::Post.new(path)
|
102
134
|
request.content_type = "application/x-www-form-urlencoded"
|
103
|
-
request
|
135
|
+
set_request_body(request, query)
|
104
136
|
else
|
105
137
|
request = Net::HTTP::Get.new(path_with_query)
|
106
138
|
end
|
107
139
|
url = "http://#{@host}:#{@port}#{path_with_query}"
|
108
|
-
|
109
|
-
|
140
|
+
run_http_request(url) do
|
141
|
+
http = Net::HTTP.new(@host, @port)
|
142
|
+
http.set_debug_output($stderr) if DEBUG
|
143
|
+
response = http.start do
|
110
144
|
http.read_timeout = read_timeout
|
111
145
|
http.request(request)
|
112
146
|
end
|
113
147
|
normalize_response_data(command, response.body)
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
def set_request_body(request, body)
|
152
|
+
if @context.use_http_chunked?
|
153
|
+
request["Transfer-Encoding"] = "chunked"
|
154
|
+
request.body_stream = SlowBodyStream.new(body)
|
155
|
+
else
|
156
|
+
request.body = body
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
def run_http_request(url)
|
161
|
+
begin
|
162
|
+
yield
|
114
163
|
rescue SystemCallError
|
115
164
|
message = "failed to read response from Groonga: <#{url}>: #{$!}"
|
116
165
|
raise Error.new(message)
|
166
|
+
rescue EOFError
|
167
|
+
message = "unexpected EOF response from Groonga: <#{url}>: #{$!}"
|
168
|
+
raise Error.new(message)
|
117
169
|
rescue Net::HTTPBadResponse
|
118
170
|
message = "bad response from Groonga: <#{url}>: "
|
119
171
|
message << "#{$!.class}: #{$!.message}"
|
@@ -126,11 +178,10 @@ module Grntest
|
|
126
178
|
end
|
127
179
|
|
128
180
|
def normalize_response_data(command, raw_response_data)
|
129
|
-
if raw_response_data.empty?
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
end
|
181
|
+
return raw_response_data if raw_response_data.empty?
|
182
|
+
return raw_response_data if command.output_type == :none
|
183
|
+
return raw_response_data if command.output_type == :"apache-arrow"
|
184
|
+
"#{raw_response_data}\n"
|
134
185
|
end
|
135
186
|
|
136
187
|
def read_timeout
|
@@ -57,6 +57,9 @@ module Grntest
|
|
57
57
|
if may_slow_command?(command)
|
58
58
|
options[:first_timeout] = @long_read_timeout
|
59
59
|
end
|
60
|
+
if may_stream_output_command?(command)
|
61
|
+
options[:stream_output] = true
|
62
|
+
end
|
60
63
|
read_all_readable_content(@output, options)
|
61
64
|
end
|
62
65
|
|
@@ -70,6 +73,14 @@ module Grntest
|
|
70
73
|
def may_slow_command?(command)
|
71
74
|
MAY_SLOW_COMMANDS.include?(command.name)
|
72
75
|
end
|
76
|
+
|
77
|
+
MAY_STREAM_OUTPUT_COMMANDS = [
|
78
|
+
"dump",
|
79
|
+
"logical_range_filter",
|
80
|
+
]
|
81
|
+
def may_stream_output_command?(command)
|
82
|
+
MAY_STREAM_OUTPUT_COMMANDS.include?(command.name)
|
83
|
+
end
|
73
84
|
end
|
74
85
|
end
|
75
86
|
end
|
data/lib/grntest/test-runner.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2012-
|
1
|
+
# Copyright (C) 2012-2020 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
|
@@ -137,7 +137,10 @@ module Grntest
|
|
137
137
|
context.plugins_directory = @tester.plugins_directory.expand_path
|
138
138
|
context.groonga_suggest_create_dataset =
|
139
139
|
@tester.groonga_suggest_create_dataset
|
140
|
+
context.testee = @tester.testee
|
141
|
+
context.interface = @tester.interface
|
140
142
|
context.use_http_post = @tester.use_http_post?
|
143
|
+
context.use_http_chunked = @tester.use_http_chunked?
|
141
144
|
context.input_type = @tester.input_type
|
142
145
|
context.output_type = @tester.output_type
|
143
146
|
context.timeout = @tester.timeout
|
@@ -187,9 +190,9 @@ module Grntest
|
|
187
190
|
catch do |tag|
|
188
191
|
context.abort_tag = tag
|
189
192
|
case @tester.interface
|
190
|
-
when
|
193
|
+
when "stdio"
|
191
194
|
run_groonga_stdio(context, &block)
|
192
|
-
when
|
195
|
+
when "http"
|
193
196
|
run_groonga_http(context, &block)
|
194
197
|
end
|
195
198
|
end
|
@@ -580,6 +583,8 @@ http {
|
|
580
583
|
case type
|
581
584
|
when "json", "msgpack"
|
582
585
|
normalize_output_structured(type, content, options)
|
586
|
+
when "apache-arrow"
|
587
|
+
normalize_apache_arrow_content(content, options)
|
583
588
|
when "xml"
|
584
589
|
normalized_xml = normalize_output_xml(content, options)
|
585
590
|
normalize_raw_content(normalized_xml)
|
@@ -634,6 +639,54 @@ http {
|
|
634
639
|
end
|
635
640
|
end
|
636
641
|
|
642
|
+
def normalize_apache_arrow_content(content, options)
|
643
|
+
normalized = ""
|
644
|
+
buffer = Arrow::Buffer.new(content)
|
645
|
+
Arrow::BufferInputStream.open(buffer) do |input|
|
646
|
+
while input.tell < content.bytesize
|
647
|
+
reader = Arrow::RecordBatchStreamReader.new(input)
|
648
|
+
schema = reader.schema
|
649
|
+
record_batches = reader.to_a
|
650
|
+
table = Arrow::Table.new(schema, record_batches)
|
651
|
+
unless normalized.empty?
|
652
|
+
normalized << "=" * 40
|
653
|
+
normalized << "\n"
|
654
|
+
end
|
655
|
+
if schema.respond_to?(:to_string_metadata)
|
656
|
+
normalized << schema.to_string_metadata(true)
|
657
|
+
else
|
658
|
+
normalized << schema.to_s
|
659
|
+
end
|
660
|
+
normalized << "\n"
|
661
|
+
if apache_arrow_metadata?(schema)
|
662
|
+
normalized_records = table.each_record.collect do |record|
|
663
|
+
normalized_record = []
|
664
|
+
record.to_h.each do |name, value|
|
665
|
+
case name
|
666
|
+
when "start_time", "elapsed_time"
|
667
|
+
value = 0
|
668
|
+
end
|
669
|
+
normalized_record << value
|
670
|
+
end
|
671
|
+
normalized_record
|
672
|
+
end
|
673
|
+
noramlized_table = Arrow::Table.new(schema, normalized_records)
|
674
|
+
normalized << noramlized_table.to_s
|
675
|
+
else
|
676
|
+
normalized << table.to_s
|
677
|
+
end
|
678
|
+
end
|
679
|
+
end
|
680
|
+
normalized
|
681
|
+
end
|
682
|
+
|
683
|
+
def apache_arrow_metadata?(schema)
|
684
|
+
# TODO: Use schema.metadata with gobject-introspection 3.4.2 and
|
685
|
+
# Red Arrow 0.17.0.
|
686
|
+
schema.fields.collect(&:name) ==
|
687
|
+
["return_code", "start_time", "elapsed_time"]
|
688
|
+
end
|
689
|
+
|
637
690
|
def normalize_output_xml(content, options)
|
638
691
|
content.sub(/^<RESULT .+?>/) do |result|
|
639
692
|
result.gsub(/( (?:UP|ELAPSED))="\d+\.\d+(?:e[+-]?\d+)?"/, '\1="0.0"')
|
data/lib/grntest/tester.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2012-
|
1
|
+
# Copyright (C) 2012-2020 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
|
@@ -56,7 +56,7 @@ module Grntest
|
|
56
56
|
tester.groonga_suggest_create_dataset = normalize_command(command)
|
57
57
|
end
|
58
58
|
|
59
|
-
available_interfaces = [
|
59
|
+
available_interfaces = ["stdio", "http"]
|
60
60
|
available_interface_labels = available_interfaces.join(", ")
|
61
61
|
parser.on("--interface=INTERFACE", available_interfaces,
|
62
62
|
"Use INTERFACE for communicating Groonga",
|
@@ -71,6 +71,12 @@ module Grntest
|
|
71
71
|
tester.use_http_post = boolean
|
72
72
|
end
|
73
73
|
|
74
|
+
parser.on("--[no-]use-http-chunked",
|
75
|
+
"Use chunked Transfer-Encoding to send body by HTTP",
|
76
|
+
"(#{tester.use_http_chunked?})") do |boolean|
|
77
|
+
tester.use_http_chunked = boolean
|
78
|
+
end
|
79
|
+
|
74
80
|
available_input_types = ["json", "apache-arrow"]
|
75
81
|
available_input_type_labels = available_input_types.join(", ")
|
76
82
|
parser.on("--input-type=TYPE", available_input_types,
|
@@ -80,7 +86,7 @@ module Grntest
|
|
80
86
|
tester.input_type = type
|
81
87
|
end
|
82
88
|
|
83
|
-
available_output_types = ["json", "msgpack"]
|
89
|
+
available_output_types = ["json", "msgpack", "apache-arrow"]
|
84
90
|
available_output_type_labels = available_output_types.join(", ")
|
85
91
|
parser.on("--output-type=TYPE", available_output_types,
|
86
92
|
"Use TYPE as the output type",
|
@@ -97,7 +103,7 @@ module Grntest
|
|
97
103
|
"(#{tester.testee})") do |testee|
|
98
104
|
tester.testee = testee
|
99
105
|
if tester.testee == "groonga-httpd"
|
100
|
-
tester.interface =
|
106
|
+
tester.interface = "http"
|
101
107
|
end
|
102
108
|
end
|
103
109
|
|
@@ -294,6 +300,7 @@ module Grntest
|
|
294
300
|
attr_accessor :groonga, :groonga_httpd, :groonga_suggest_create_dataset
|
295
301
|
attr_accessor :interface
|
296
302
|
attr_writer :use_http_post
|
303
|
+
attr_writer :use_http_chunked
|
297
304
|
attr_accessor :input_type
|
298
305
|
attr_accessor :output_type
|
299
306
|
attr_accessor :testee
|
@@ -321,8 +328,9 @@ module Grntest
|
|
321
328
|
unless command_exist?(@groonga_suggest_create_dataset)
|
322
329
|
@groonga_suggest_create_dataset = nil
|
323
330
|
end
|
324
|
-
@interface =
|
331
|
+
@interface = "stdio"
|
325
332
|
@use_http_post = false
|
333
|
+
@use_http_chunked = false
|
326
334
|
@input_type = "json"
|
327
335
|
@output_type = "json"
|
328
336
|
@testee = "groonga"
|
@@ -374,6 +382,10 @@ module Grntest
|
|
374
382
|
@use_http_post
|
375
383
|
end
|
376
384
|
|
385
|
+
def use_http_chunked?
|
386
|
+
@use_http_chunked
|
387
|
+
end
|
388
|
+
|
377
389
|
def keep_database?
|
378
390
|
@keep_database
|
379
391
|
end
|
data/lib/grntest/version.rb
CHANGED
data/lib/grntest/worker.rb
CHANGED
@@ -47,6 +47,10 @@ module Grntest
|
|
47
47
|
@failed_tests << name
|
48
48
|
end
|
49
49
|
|
50
|
+
def cancel_test_failure(name)
|
51
|
+
@failed_tests.delete(name)
|
52
|
+
end
|
53
|
+
|
50
54
|
def on_test_leak(name)
|
51
55
|
@n_leaked_tests += 1
|
52
56
|
end
|
@@ -179,6 +183,7 @@ module Grntest
|
|
179
183
|
return true if runner.run
|
180
184
|
|
181
185
|
if n < @tester.n_retries and not interruptted?
|
186
|
+
@result.cancel_test_failure(test_name)
|
182
187
|
@test_suites_result.n_total_tests += 1
|
183
188
|
next
|
184
189
|
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.3.
|
4
|
+
version: 1.3.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kouhei Sutou
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2020-03-
|
12
|
+
date: 2020-03-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: diff-lcs
|
@@ -138,7 +138,7 @@ dependencies:
|
|
138
138
|
- !ruby/object:Gem::Version
|
139
139
|
version: '0'
|
140
140
|
- !ruby/object:Gem::Dependency
|
141
|
-
name:
|
141
|
+
name: kramdown
|
142
142
|
requirement: !ruby/object:Gem::Requirement
|
143
143
|
requirements:
|
144
144
|
- - ">="
|
@@ -152,21 +152,21 @@ dependencies:
|
|
152
152
|
- !ruby/object:Gem::Version
|
153
153
|
version: '0'
|
154
154
|
- !ruby/object:Gem::Dependency
|
155
|
-
name:
|
155
|
+
name: packnga
|
156
156
|
requirement: !ruby/object:Gem::Requirement
|
157
157
|
requirements:
|
158
158
|
- - ">="
|
159
159
|
- !ruby/object:Gem::Version
|
160
|
-
version:
|
160
|
+
version: '0'
|
161
161
|
type: :development
|
162
162
|
prerelease: false
|
163
163
|
version_requirements: !ruby/object:Gem::Requirement
|
164
164
|
requirements:
|
165
165
|
- - ">="
|
166
166
|
- !ruby/object:Gem::Version
|
167
|
-
version:
|
167
|
+
version: '0'
|
168
168
|
- !ruby/object:Gem::Dependency
|
169
|
-
name:
|
169
|
+
name: rake
|
170
170
|
requirement: !ruby/object:Gem::Requirement
|
171
171
|
requirements:
|
172
172
|
- - ">="
|
@@ -180,21 +180,21 @@ dependencies:
|
|
180
180
|
- !ruby/object:Gem::Version
|
181
181
|
version: '0'
|
182
182
|
- !ruby/object:Gem::Dependency
|
183
|
-
name:
|
183
|
+
name: test-unit
|
184
184
|
requirement: !ruby/object:Gem::Requirement
|
185
185
|
requirements:
|
186
186
|
- - ">="
|
187
187
|
- !ruby/object:Gem::Version
|
188
|
-
version:
|
188
|
+
version: 3.0.0
|
189
189
|
type: :development
|
190
190
|
prerelease: false
|
191
191
|
version_requirements: !ruby/object:Gem::Requirement
|
192
192
|
requirements:
|
193
193
|
- - ">="
|
194
194
|
- !ruby/object:Gem::Version
|
195
|
-
version:
|
195
|
+
version: 3.0.0
|
196
196
|
- !ruby/object:Gem::Dependency
|
197
|
-
name:
|
197
|
+
name: test-unit-rr
|
198
198
|
requirement: !ruby/object:Gem::Requirement
|
199
199
|
requirements:
|
200
200
|
- - ">="
|