forking_test_runner 1.16.0 → 1.18.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.
- checksums.yaml +4 -4
- data/lib/forking_test_runner/cli.rb +35 -18
- data/lib/forking_test_runner/version.rb +1 -1
- data/lib/forking_test_runner.rb +9 -8
- metadata +14 -24
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a248306cb1a71ac76fe62cff26f468f3aa8ae39f701f6c2d6ab8ed43bc2c0491
|
|
4
|
+
data.tar.gz: a4683438d4fa23251d609568fec91e147c77325548d6d0c616e5034c6bc26efe
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a63845433bc9bef04de653f116dc20377ad1c16d7014e81f2bc16b32e02b68f6bab9b46cb9de0ea6740d86c74021381c5f457deb6fc6c212e3555f6b095948c2
|
|
7
|
+
data.tar.gz: b80c1bcb90d560d74af870dff0b44bffee28bc1a60c0a1ee0607d96361c4b00e8fb210d96734482495aabc003fe1a7ef01464e6f1838730dfed317add6871188
|
|
@@ -11,16 +11,16 @@ module ForkingTestRunner
|
|
|
11
11
|
[:merge_coverage, "--merge-coverage", "Merge base code coverage into individual files coverage and summarize coverage report"],
|
|
12
12
|
[
|
|
13
13
|
:record_runtime,
|
|
14
|
-
"--record-runtime
|
|
14
|
+
"--record-runtime MODE",
|
|
15
15
|
"\n Record test runtime:\n " \
|
|
16
16
|
"simple = write to disk at --runtime-log)\n " \
|
|
17
17
|
"amend = write from multiple remote workers via http://github.com/grosser/amend, needs TRAVIS_REPO_SLUG & TRAVIS_BUILD_NUMBER",
|
|
18
18
|
String
|
|
19
19
|
],
|
|
20
|
-
[:runtime_log, "--runtime-log
|
|
21
|
-
[:parallel, "--parallel
|
|
22
|
-
[:group, "--group
|
|
23
|
-
[:groups, "--groups
|
|
20
|
+
[:runtime_log, "--runtime-log FILE", "File to store runtime log in or runtime.log", String],
|
|
21
|
+
[:parallel, "--parallel [NUM]", "Number of parallel groups to run at once", Integer],
|
|
22
|
+
[:group, "--group NUM[,NUM]", "What group this is (use with --groups / starts at 1)", String],
|
|
23
|
+
[:groups, "--groups NUM", "How many groups there are in total (use with --group)", Integer],
|
|
24
24
|
[:version, "--version", "Show version"],
|
|
25
25
|
[:help, "--help", "Show help"]
|
|
26
26
|
].freeze
|
|
@@ -28,9 +28,13 @@ module ForkingTestRunner
|
|
|
28
28
|
class << self
|
|
29
29
|
def parse_options(argv)
|
|
30
30
|
options = OPTIONS.each_with_object({}) do |(setting, flag, _, type), all|
|
|
31
|
-
|
|
31
|
+
optional = flag.include?("[")
|
|
32
|
+
all[setting] = delete_argv(flag.split(' ', 2)[0], argv, type: type, optional: optional)
|
|
32
33
|
end
|
|
33
34
|
|
|
35
|
+
# default parallel to processor count
|
|
36
|
+
options[:parallel] = Parallel.processor_count if options[:parallel] == true
|
|
37
|
+
|
|
34
38
|
# show version
|
|
35
39
|
if options.fetch(:version)
|
|
36
40
|
puts VERSION
|
|
@@ -76,18 +80,31 @@ module ForkingTestRunner
|
|
|
76
80
|
# so minitest / rspec can read their own options (--seed / -v ...)
|
|
77
81
|
# - keep our options clear / unambiguous to avoid overriding
|
|
78
82
|
# - read all serial non-flag arguments as tests and leave only unknown options behind
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
83
|
+
def delete_argv(name, argv, type: nil, optional: false)
|
|
84
|
+
if type # value needed
|
|
85
|
+
value =
|
|
86
|
+
if (index = argv.index(name)) # user used `--foo bar` style ?
|
|
87
|
+
argv.delete_at(index)
|
|
88
|
+
next_arg = argv[index]
|
|
89
|
+
if next_arg && !next_arg.start_with?("-")
|
|
90
|
+
argv.delete_at(index)
|
|
91
|
+
elsif optional
|
|
92
|
+
return true
|
|
93
|
+
else
|
|
94
|
+
raise(ArgumentError, "Missing argument for #{name}")
|
|
95
|
+
end
|
|
96
|
+
else # user used `--foo=bar` style ?
|
|
97
|
+
prefix = "#{name}="
|
|
98
|
+
return unless (index = argv.index { |arg| arg.start_with?(prefix) })
|
|
99
|
+
argv.delete_at(index).delete_prefix(prefix)
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
send(type.name, value) # for example Integer(found)
|
|
103
|
+
else # no value needed
|
|
104
|
+
if (index = argv.index(name))
|
|
105
|
+
argv.delete_at(index)
|
|
106
|
+
true
|
|
107
|
+
end
|
|
91
108
|
end
|
|
92
109
|
end
|
|
93
110
|
end
|
data/lib/forking_test_runner.rb
CHANGED
|
@@ -66,8 +66,8 @@ module ForkingTestRunner
|
|
|
66
66
|
puts "\nResults:"
|
|
67
67
|
puts(
|
|
68
68
|
results
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
.sort_by { |_, _, _, r, _| r ? 0 : 1 } # failures should be last so they are easy to find
|
|
70
|
+
.map { |f, _, _, r, _| "#{f}: #{r ? "OK" : "Fail"}" }
|
|
71
71
|
)
|
|
72
72
|
puts
|
|
73
73
|
end
|
|
@@ -82,7 +82,7 @@ module ForkingTestRunner
|
|
|
82
82
|
puts "Time: #{diff.round(2)} diff to expected"
|
|
83
83
|
end
|
|
84
84
|
|
|
85
|
-
if mode = @options.fetch(:record_runtime)
|
|
85
|
+
if (mode = @options.fetch(:record_runtime))
|
|
86
86
|
# store runtime log
|
|
87
87
|
log = runtime_log || 'runtime.log'
|
|
88
88
|
record_test_runtime(mode, results, log)
|
|
@@ -162,7 +162,7 @@ module ForkingTestRunner
|
|
|
162
162
|
when 'simple'
|
|
163
163
|
File.write(log, data)
|
|
164
164
|
when 'amend'
|
|
165
|
-
if id = ENV["BUILDKITE_JOB_ID"]
|
|
165
|
+
if (id = ENV["BUILDKITE_JOB_ID"])
|
|
166
166
|
slug = "#{ENV.fetch("BUILDKITE_ORG_SLUG")}-#{ENV.fetch("BUILDKITE_PIPELINE_SLUG")}"
|
|
167
167
|
else
|
|
168
168
|
slug = ENV.fetch("TRAVIS_REPO_SLUG").sub("/", "-")
|
|
@@ -278,10 +278,11 @@ module ForkingTestRunner
|
|
|
278
278
|
wpipe.close
|
|
279
279
|
|
|
280
280
|
buffer = +""
|
|
281
|
+
tee = !@options.fetch(:quiet) && !@options.fetch(:parallel)
|
|
281
282
|
|
|
282
|
-
while ch = rpipe.read(1)
|
|
283
|
+
while (ch = rpipe.read(tee ? 1 : 4096))
|
|
283
284
|
buffer << ch
|
|
284
|
-
$stdout.write(ch) if
|
|
285
|
+
$stdout.write(ch) if tee
|
|
285
286
|
end
|
|
286
287
|
|
|
287
288
|
Process.wait(child)
|
|
@@ -344,8 +345,8 @@ module ForkingTestRunner
|
|
|
344
345
|
tests = ParallelTests::Test::Runner.send(
|
|
345
346
|
:tests_with_size,
|
|
346
347
|
tests,
|
|
347
|
-
runtime_log
|
|
348
|
-
group_by:
|
|
348
|
+
runtime_log: runtime_log,
|
|
349
|
+
group_by: group_by
|
|
349
350
|
)
|
|
350
351
|
groups = ParallelTests::Grouper.in_even_groups_by_size(tests, group_count, {})
|
|
351
352
|
group = groups[group - 1] || raise("Group #{group} not found")
|
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: forking_test_runner
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.18.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Michael Grosser
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: benchmark
|
|
@@ -56,22 +55,16 @@ dependencies:
|
|
|
56
55
|
name: bundler
|
|
57
56
|
requirement: !ruby/object:Gem::Requirement
|
|
58
57
|
requirements:
|
|
59
|
-
- - "~>"
|
|
60
|
-
- !ruby/object:Gem::Version
|
|
61
|
-
version: '2.4'
|
|
62
58
|
- - ">="
|
|
63
59
|
- !ruby/object:Gem::Version
|
|
64
|
-
version:
|
|
60
|
+
version: '0'
|
|
65
61
|
type: :development
|
|
66
62
|
prerelease: false
|
|
67
63
|
version_requirements: !ruby/object:Gem::Requirement
|
|
68
64
|
requirements:
|
|
69
|
-
- - "~>"
|
|
70
|
-
- !ruby/object:Gem::Version
|
|
71
|
-
version: '2.4'
|
|
72
65
|
- - ">="
|
|
73
66
|
- !ruby/object:Gem::Version
|
|
74
|
-
version:
|
|
67
|
+
version: '0'
|
|
75
68
|
- !ruby/object:Gem::Dependency
|
|
76
69
|
name: drb
|
|
77
70
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -104,16 +97,16 @@ dependencies:
|
|
|
104
97
|
name: minitest
|
|
105
98
|
requirement: !ruby/object:Gem::Requirement
|
|
106
99
|
requirements:
|
|
107
|
-
- - "
|
|
100
|
+
- - "~>"
|
|
108
101
|
- !ruby/object:Gem::Version
|
|
109
|
-
version: '0'
|
|
102
|
+
version: '6.0'
|
|
110
103
|
type: :development
|
|
111
104
|
prerelease: false
|
|
112
105
|
version_requirements: !ruby/object:Gem::Requirement
|
|
113
106
|
requirements:
|
|
114
|
-
- - "
|
|
107
|
+
- - "~>"
|
|
115
108
|
- !ruby/object:Gem::Version
|
|
116
|
-
version: '0'
|
|
109
|
+
version: '6.0'
|
|
117
110
|
- !ruby/object:Gem::Dependency
|
|
118
111
|
name: mutex_m
|
|
119
112
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -174,17 +167,16 @@ dependencies:
|
|
|
174
167
|
name: sqlite3
|
|
175
168
|
requirement: !ruby/object:Gem::Requirement
|
|
176
169
|
requirements:
|
|
177
|
-
- - "
|
|
170
|
+
- - ">="
|
|
178
171
|
- !ruby/object:Gem::Version
|
|
179
|
-
version: '
|
|
172
|
+
version: '0'
|
|
180
173
|
type: :development
|
|
181
174
|
prerelease: false
|
|
182
175
|
version_requirements: !ruby/object:Gem::Requirement
|
|
183
176
|
requirements:
|
|
184
|
-
- - "
|
|
177
|
+
- - ">="
|
|
185
178
|
- !ruby/object:Gem::Version
|
|
186
|
-
version: '
|
|
187
|
-
description:
|
|
179
|
+
version: '0'
|
|
188
180
|
email: michael@grosser.it
|
|
189
181
|
executables:
|
|
190
182
|
- forking-test-runner
|
|
@@ -201,7 +193,6 @@ homepage: https://github.com/grosser/forking_test_runner
|
|
|
201
193
|
licenses:
|
|
202
194
|
- MIT
|
|
203
195
|
metadata: {}
|
|
204
|
-
post_install_message:
|
|
205
196
|
rdoc_options: []
|
|
206
197
|
require_paths:
|
|
207
198
|
- lib
|
|
@@ -209,15 +200,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
209
200
|
requirements:
|
|
210
201
|
- - ">="
|
|
211
202
|
- !ruby/object:Gem::Version
|
|
212
|
-
version: 3.
|
|
203
|
+
version: 3.3.0
|
|
213
204
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
214
205
|
requirements:
|
|
215
206
|
- - ">="
|
|
216
207
|
- !ruby/object:Gem::Version
|
|
217
208
|
version: '0'
|
|
218
209
|
requirements: []
|
|
219
|
-
rubygems_version: 3.
|
|
220
|
-
signing_key:
|
|
210
|
+
rubygems_version: 3.6.9
|
|
221
211
|
specification_version: 4
|
|
222
212
|
summary: Run every test in a fork to avoid pollution and get clean output per test
|
|
223
213
|
test_files: []
|