minitest-parallel_fork 1.0.2 → 1.1.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 +5 -5
- data/CHANGELOG +6 -0
- data/README.rdoc +2 -2
- data/Rakefile +0 -1
- data/lib/minitest/parallel_fork.rb +5 -34
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 07a0f8e198d9bfcd52a03b4fe0870e49b90ce1dc28d9ada77a158baf406f6eb6
|
4
|
+
data.tar.gz: 51f5ee3699e9251138235ea2f4c65a676a2a849e4249ec5528e4614a30837146
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 03fba31357a97e37091d85f6e7fad43c26999b9cc85d95302f0e8ea3432604ab12dc599b6db6228dd08cc6d5a2e30867648bbeb1f1bb2a470aee0b57c7bb7779
|
7
|
+
data.tar.gz: 5e5617bbfe70c8100afdecbc5908292a6c259caba96871189407d1c5d53108645a59375c4f603ecec62fcd5048ac4bec477c8786d94b09ccf593cdaf6cfacefc
|
data/CHANGELOG
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
=== 1.1.0 (2018-04-19)
|
2
|
+
|
3
|
+
* Remove DumpableUnexpectedError, require minitest 5.11.0+ (jeremyevans)
|
4
|
+
|
5
|
+
* Allow overriding the stat reporter used via Minitest.parallel_fork_stat_reporter method (jeremyevans) (#3)
|
6
|
+
|
1
7
|
=== 1.0.2 (2017-02-27)
|
2
8
|
|
3
9
|
* Show correct number of errors in output (jeremyevans)
|
data/README.rdoc
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
= minitest-parallel_fork
|
2
2
|
|
3
3
|
minitest-parallel_fork adds fork-based parallelization to Minitest. Each test/spec
|
4
|
-
suite is run one of the forks, allowing this to work correctly when using
|
4
|
+
suite is run in one of the forks, allowing this to work correctly when using
|
5
5
|
before_all/after_all/around_all hooks provided by minitest-hooks. Using separate
|
6
6
|
processes via fork can significantly improve spec performance when using MRI,
|
7
7
|
and can work in cases where Minitest's default thread-based parallelism do not work,
|
@@ -55,7 +55,7 @@ of the child process, starting at 0:
|
|
55
55
|
|
56
56
|
The above examples show a fairly easy way to use minitest-parallel_fork with an external
|
57
57
|
database when using Sequel. Before forking, all existing database connections are
|
58
|
-
|
58
|
+
disconnected, and after forking, the database name is changed in each child to reference
|
59
59
|
a child-specific database, so that the child processes do not share a database and are
|
60
60
|
thus independent.
|
61
61
|
|
data/Rakefile
CHANGED
@@ -12,39 +12,19 @@ module Minitest
|
|
12
12
|
@after_parallel_fork = block
|
13
13
|
end
|
14
14
|
|
15
|
-
# Subclass of Assertion for unexpected errors. UnexpectedError
|
16
|
-
# can not be used as it can include undumpable objects. This
|
17
|
-
# class converts all data it needs to plain strings, so that
|
18
|
-
# it will be dumpable.
|
19
|
-
class DumpableUnexpectedError < Assertion # :nodoc:
|
20
|
-
attr_accessor :backtrace
|
21
|
-
|
22
|
-
def initialize(unexpected)
|
23
|
-
exception_class_name = unexpected.exception.class.name.to_s
|
24
|
-
exception_message = unexpected.exception.message.to_s
|
25
|
-
super("#{exception_class_name}: #{exception_message}")
|
26
|
-
self.backtrace = unexpected.exception.backtrace.map(&:to_s)
|
27
|
-
end
|
28
|
-
|
29
|
-
def message
|
30
|
-
bt = Minitest.filter_backtrace(backtrace).join "\n "
|
31
|
-
"#{super}\n #{bt}"
|
32
|
-
end
|
33
|
-
|
34
|
-
def result_label
|
35
|
-
"Error"
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
15
|
module Unparallelize
|
40
16
|
define_method(:run_one_method, &Minitest::Test.method(:run_one_method))
|
41
17
|
end
|
18
|
+
|
19
|
+
def self.parallel_fork_stat_reporter(reporter)
|
20
|
+
reporter.reporters.detect{|rep| rep.is_a?(StatisticsReporter)}
|
21
|
+
end
|
42
22
|
|
43
23
|
# Override __run to use a child forks to run the speeds, which
|
44
24
|
# allows for parallel spec execution on MRI.
|
45
25
|
def self.__run(reporter, options)
|
46
26
|
suites = Runnable.runnables.shuffle
|
47
|
-
stat_reporter = reporter
|
27
|
+
stat_reporter = parallel_fork_stat_reporter(reporter)
|
48
28
|
|
49
29
|
n = (ENV['NCPU'] || 4).to_i
|
50
30
|
reads = []
|
@@ -71,10 +51,6 @@ module Minitest
|
|
71
51
|
end
|
72
52
|
|
73
53
|
data = %w'count assertions results'.map{|meth| stat_reporter.send(meth)}
|
74
|
-
data[-1] = data[-1].map do |res|
|
75
|
-
[res.name, res.failures.map{|f| f.is_a?(UnexpectedError) ? DumpableUnexpectedError.new(f) : f}]
|
76
|
-
end
|
77
|
-
|
78
54
|
write.write(Marshal.dump(data))
|
79
55
|
write.close
|
80
56
|
end
|
@@ -89,11 +65,6 @@ module Minitest
|
|
89
65
|
count, assertions, results = Marshal.load(data)
|
90
66
|
stat_reporter.count += count
|
91
67
|
stat_reporter.assertions += assertions
|
92
|
-
results.map! do |name, failures|
|
93
|
-
runnable = Test.new(name)
|
94
|
-
runnable.failures.concat(failures.map{|f| f.is_a?(DumpableUnexpectedError) ? UnexpectedError.new(f) : f})
|
95
|
-
runnable
|
96
|
-
end
|
97
68
|
stat_reporter.results.concat(results)
|
98
69
|
end
|
99
70
|
end.join
|
metadata
CHANGED
@@ -1,32 +1,32 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: minitest-parallel_fork
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Evans
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-04-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 5.11.0
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 5.11.0
|
27
27
|
description: |
|
28
28
|
minitest-parallel_fork adds fork-based parallelization to Minitest. Each test/spec
|
29
|
-
suite is run one of the forks, allowing this to work correctly when using
|
29
|
+
suite is run in one of the forks, allowing this to work correctly when using
|
30
30
|
before_all/after_all/around_all hooks provided by minitest-hooks. Using separate
|
31
31
|
processes via fork can significantly improve spec performance when using MRI,
|
32
32
|
and can work in cases where Minitest's default thread-based parallelism do not work,
|
@@ -73,7 +73,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
73
73
|
version: '0'
|
74
74
|
requirements: []
|
75
75
|
rubyforge_project:
|
76
|
-
rubygems_version: 2.6
|
76
|
+
rubygems_version: 2.7.6
|
77
77
|
signing_key:
|
78
78
|
specification_version: 4
|
79
79
|
summary: Fork-based parallelization for minitest
|