parallel_rspec 2.1.2 → 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 +4 -0
- data/README.md +5 -1
- data/lib/parallel_rspec/client.rb +12 -26
- data/lib/parallel_rspec/runner.rb +0 -1
- data/lib/parallel_rspec/server.rb +26 -19
- data/lib/parallel_rspec/version.rb +1 -1
- metadata +1 -1
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
CHANGED
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.
|
@@ -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
|
@@ -58,7 +58,6 @@ module ParallelRSpec
|
|
58
58
|
# or the configured failure exit code (1 by default) if specs
|
59
59
|
# failed.
|
60
60
|
def run_specs(example_groups)
|
61
|
-
puts "running #{@world.example_count(example_groups)}"
|
62
61
|
@configuration.reporter.report(@world.example_count(example_groups)) do |reporter|
|
63
62
|
@configuration.with_suite_hooks do
|
64
63
|
with_context_hooks, without_context_hooks = example_groups.partition(&:any_context_hooks?)
|
@@ -1,34 +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
|
-
|
27
|
-
reporter.example_finished(example)
|
26
|
+
def example_failed(example_id, example_updates, channel_to_client)
|
27
|
+
reporter.example_failed(update_example(running_examples.delete(example_id), example_updates))
|
28
28
|
end
|
29
29
|
|
30
|
-
def example_pending(
|
31
|
-
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))
|
32
32
|
end
|
33
33
|
|
34
34
|
def deprecation(hash, channel_to_client)
|
@@ -36,13 +36,14 @@ module ParallelRSpec
|
|
36
36
|
end
|
37
37
|
|
38
38
|
def next_example_to_run(channel_to_client)
|
39
|
-
if
|
39
|
+
if remaining_examples_by_group.empty?
|
40
40
|
channel_to_client.write(nil)
|
41
41
|
else
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
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?
|
46
47
|
end
|
47
48
|
end
|
48
49
|
|
@@ -53,5 +54,11 @@ module ParallelRSpec
|
|
53
54
|
def success?
|
54
55
|
@success
|
55
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
|
56
63
|
end
|
57
64
|
end
|