parallel_rspec 2.1.1 → 2.2.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/CHANGES.md +30 -0
- data/README.md +7 -1
- data/lib/parallel_rspec/client.rb +12 -26
- data/lib/parallel_rspec/runner.rb +2 -2
- data/lib/parallel_rspec/server.rb +26 -18
- data/lib/parallel_rspec/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6d2e2199456f48d4b9726672b0c5e223b536350826d46b1bc14ff28e5d83ef45
|
4
|
+
data.tar.gz: ae4b625e1041147f8e6c4087196fe34bb97977fb0034549e9436b4056363f184
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a27c85ac8cc1ef08b04ac61054848eeed0dfbe08465fd4814d0a6909dd18891df71d7bbe9011f2fe0281a028bdd62550988d2716f707d3ea1a11d12139d67772
|
7
|
+
data.tar.gz: 584531e1f3027132097cebb1a36e600ae7e470ce62b91bc23522352dc39f14a7c1c80b34b92a1c5298bbdb079fb51c1204962945577c6cdf549e14dd944f8a22
|
data/CHANGES.md
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
# Changelog
|
2
|
+
|
3
|
+
## 2.2.0
|
4
|
+
|
5
|
+
* Fix incompatibility with `rspec --profile`.
|
6
|
+
|
7
|
+
## 2.1.2
|
8
|
+
|
9
|
+
* Fix error when used in projects without ActiveSupport. Thanks @erikpaasonen.
|
10
|
+
|
11
|
+
## 2.1.1
|
12
|
+
|
13
|
+
* Fix deprecation warnings from ActiveRecord::Base.configurations[].
|
14
|
+
|
15
|
+
## 2.1.0
|
16
|
+
|
17
|
+
* Add a default parallel_rspec rake task.
|
18
|
+
* Add task descriptions for rake --tasks.
|
19
|
+
|
20
|
+
## 2.0.0
|
21
|
+
|
22
|
+
* Remove an unnecessary dev dependency to pacify dependabot.
|
23
|
+
* Add after_fork hook and running? method. Thanks @mogest.
|
24
|
+
* Upgrade for compatibility with Rails 6.1 and RSpec 3.10. Thanks @mogest.
|
25
|
+
|
26
|
+
## 1.2.0
|
27
|
+
|
28
|
+
* 9924295 Make the Railtie load optional.
|
29
|
+
* 6366f07 Add require to the recommended Rakefile for people not using Rails.
|
30
|
+
* 1a5ec3d Fix rake and rspec dependencies.
|
data/README.md
CHANGED
@@ -24,7 +24,7 @@ And then execute:
|
|
24
24
|
|
25
25
|
$ bundle
|
26
26
|
|
27
|
-
This version of ParallelRSpec has been tested with RSpec 3.
|
27
|
+
This version of ParallelRSpec has been tested with RSpec 3.12.
|
28
28
|
|
29
29
|
## Usage
|
30
30
|
|
@@ -82,6 +82,10 @@ You might also want to detect whether your spec suite is running under ParallelR
|
|
82
82
|
do_something unless ParallelRSpec.running?
|
83
83
|
```
|
84
84
|
|
85
|
+
## Limitations
|
86
|
+
|
87
|
+
ParallelRSpec can't parallelize the specs in groups that use `before(:context)` or `after(:context)` (AKA `before(:all)` or `after(:all)`) hooks, since these may mean that there is state shared between examples.
|
88
|
+
|
85
89
|
## Contributing
|
86
90
|
|
87
91
|
Bug reports and pull requests are welcome on GitHub at https://github.com/willbryant/parallel_rspec.
|
@@ -91,6 +95,7 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/willbr
|
|
91
95
|
|
92
96
|
* Charles Horn (@hornc)
|
93
97
|
* Roger Nesbitt (@mogest)
|
98
|
+
* Erik Paasonen (@erikpaasonen)
|
94
99
|
|
95
100
|
|
96
101
|
## License
|
@@ -98,3 +103,4 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/willbr
|
|
98
103
|
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
99
104
|
|
100
105
|
Copyright (c) Powershop New Zealand Ltd, 2015.
|
106
|
+
Copyright (c) Will Bryant, 2023.
|
@@ -15,52 +15,38 @@ module ParallelRSpec
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def example_started(example)
|
18
|
-
channel_to_server.write([:example_started,
|
18
|
+
channel_to_server.write([:example_started, example.id, updates_from(example)])
|
19
19
|
end
|
20
20
|
|
21
21
|
def example_passed(example)
|
22
|
-
channel_to_server.write([:example_passed,
|
22
|
+
channel_to_server.write([:example_passed, example.id, updates_from(example)])
|
23
23
|
end
|
24
24
|
|
25
25
|
def example_failed(example)
|
26
|
-
channel_to_server.write([:example_failed,
|
26
|
+
channel_to_server.write([:example_failed, example.id, updates_from(example)])
|
27
27
|
end
|
28
28
|
|
29
29
|
def example_finished(example)
|
30
|
-
channel_to_server.write([:example_finished,
|
30
|
+
channel_to_server.write([:example_finished, example.id, updates_from(example)])
|
31
31
|
end
|
32
32
|
|
33
33
|
def example_pending(example)
|
34
|
-
channel_to_server.write([:example_pending,
|
34
|
+
channel_to_server.write([:example_pending, example.id, updates_from(example)])
|
35
35
|
end
|
36
36
|
|
37
37
|
def deprecation(hash)
|
38
38
|
channel_to_server.write([:deprecation, hash])
|
39
39
|
end
|
40
40
|
|
41
|
-
def
|
42
|
-
|
43
|
-
example.
|
44
|
-
example.
|
45
|
-
example.exception,
|
46
|
-
example.location_rerun_argument,
|
47
|
-
ExampleGroup.new([]),
|
48
|
-
example.metadata.slice(
|
49
|
-
:absolute_file_path,
|
50
|
-
:described_class,
|
51
|
-
:description,
|
52
|
-
:description_args,
|
41
|
+
def updates_from(example)
|
42
|
+
{
|
43
|
+
exception: example.exception,
|
44
|
+
metadata: example.metadata.slice(
|
53
45
|
:execution_result,
|
54
|
-
:full_description,
|
55
|
-
:file_path,
|
56
|
-
:last_run_status,
|
57
|
-
:line_number,
|
58
|
-
:location,
|
59
46
|
:pending,
|
60
|
-
:
|
61
|
-
|
62
|
-
|
63
|
-
:type))
|
47
|
+
:skip,
|
48
|
+
)
|
49
|
+
}
|
64
50
|
end
|
65
51
|
|
66
52
|
def next_example_to_run
|
@@ -6,8 +6,8 @@ module RSpec
|
|
6
6
|
def self.any_context_hooks?
|
7
7
|
# unfortunately the public HookCollection API doesn't make this information available, so we have to grab it from internals
|
8
8
|
descendants.any? do |group| # despite the name, descendents includes self
|
9
|
-
group.hooks.send(:matching_hooks_for, :before, :context, group).
|
10
|
-
group.hooks.send(:matching_hooks_for, :after, :context, group).
|
9
|
+
group.hooks.send(:matching_hooks_for, :before, :context, group).any? ||
|
10
|
+
group.hooks.send(:matching_hooks_for, :after, :context, group).any?
|
11
11
|
end
|
12
12
|
end
|
13
13
|
end
|
@@ -1,33 +1,34 @@
|
|
1
1
|
module ParallelRSpec
|
2
2
|
class Server
|
3
|
-
attr_reader :
|
3
|
+
attr_reader :reporter, :remaining_examples_by_group, :running_examples
|
4
4
|
|
5
5
|
def initialize(reporter)
|
6
|
-
@
|
7
|
-
results[example_group] = examples
|
6
|
+
@remaining_examples_by_group = RSpec.world.filtered_examples.each_with_object({}) do |(example_group, examples), results|
|
7
|
+
results[example_group] = examples unless example_group.any_context_hooks? || examples.size.zero?
|
8
8
|
end
|
9
9
|
@reporter = reporter
|
10
10
|
@success = true
|
11
|
+
@running_examples = {}
|
11
12
|
end
|
12
13
|
|
13
|
-
def example_started(
|
14
|
-
reporter.example_started(
|
14
|
+
def example_started(example_id, example_updates, channel_to_client)
|
15
|
+
reporter.example_started(update_example(running_examples[example_id], example_updates))
|
15
16
|
end
|
16
17
|
|
17
|
-
def
|
18
|
-
reporter.
|
18
|
+
def example_finished(example_id, example_updates, channel_to_client)
|
19
|
+
reporter.example_finished(update_example(running_examples[example_id], example_updates))
|
19
20
|
end
|
20
21
|
|
21
|
-
def
|
22
|
-
reporter.
|
22
|
+
def example_passed(example_id, example_updates, channel_to_client)
|
23
|
+
reporter.example_passed(update_example(running_examples.delete(example_id), example_updates))
|
23
24
|
end
|
24
25
|
|
25
|
-
def
|
26
|
-
reporter.
|
26
|
+
def example_failed(example_id, example_updates, channel_to_client)
|
27
|
+
reporter.example_failed(update_example(running_examples.delete(example_id), example_updates))
|
27
28
|
end
|
28
29
|
|
29
|
-
def example_pending(
|
30
|
-
reporter.example_pending(
|
30
|
+
def example_pending(example_id, example_updates, channel_to_client)
|
31
|
+
reporter.example_pending(update_example(running_examples.delete(example_id), example_updates))
|
31
32
|
end
|
32
33
|
|
33
34
|
def deprecation(hash, channel_to_client)
|
@@ -35,13 +36,14 @@ module ParallelRSpec
|
|
35
36
|
end
|
36
37
|
|
37
38
|
def next_example_to_run(channel_to_client)
|
38
|
-
if
|
39
|
+
if remaining_examples_by_group.empty?
|
39
40
|
channel_to_client.write(nil)
|
40
41
|
else
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
42
|
+
example_group = remaining_examples_by_group.keys.first
|
43
|
+
example = remaining_examples_by_group[example_group].pop
|
44
|
+
running_examples[example.id] = example # cache so we don't need to look through all the examples for each message
|
45
|
+
channel_to_client.write([example_group, remaining_examples_by_group[example_group].size])
|
46
|
+
remaining_examples_by_group.delete(example_group) if remaining_examples_by_group[example_group].empty?
|
45
47
|
end
|
46
48
|
end
|
47
49
|
|
@@ -52,5 +54,11 @@ module ParallelRSpec
|
|
52
54
|
def success?
|
53
55
|
@success
|
54
56
|
end
|
57
|
+
|
58
|
+
def update_example(example, data)
|
59
|
+
example.set_exception(data[:exception])
|
60
|
+
example.metadata.merge!(data[:metadata])
|
61
|
+
example
|
62
|
+
end
|
55
63
|
end
|
56
64
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: parallel_rspec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Will Bryant, Powershop New Zealand Ltd
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-07-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -50,6 +50,7 @@ extra_rdoc_files: []
|
|
50
50
|
files:
|
51
51
|
- ".gitignore"
|
52
52
|
- ".travis.yml"
|
53
|
+
- CHANGES.md
|
53
54
|
- Gemfile
|
54
55
|
- LICENSE.txt
|
55
56
|
- README.md
|
@@ -87,7 +88,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
87
88
|
- !ruby/object:Gem::Version
|
88
89
|
version: '0'
|
89
90
|
requirements: []
|
90
|
-
rubygems_version: 3.
|
91
|
+
rubygems_version: 3.3.26
|
91
92
|
signing_key:
|
92
93
|
specification_version: 4
|
93
94
|
summary: This gem lets you run your RSpec examples in parallel across across your
|