parallel_rspec 2.1.2 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 73b85e313868cc3fb29697f15b99911c17a6ba818c80723c05ca6cf2cb450b00
4
- data.tar.gz: a86b018f8fe152d0bf4203f3f076eb5e08583b65bbe4dd390220869a3292fb12
3
+ metadata.gz: 6d2e2199456f48d4b9726672b0c5e223b536350826d46b1bc14ff28e5d83ef45
4
+ data.tar.gz: ae4b625e1041147f8e6c4087196fe34bb97977fb0034549e9436b4056363f184
5
5
  SHA512:
6
- metadata.gz: 8fa15fcdb155ba22163b604b8d2abaa7ba003e2b1c1169dd5565399b29757c714d7362626959024c26e32068fbf6974590533d0b37d7f55f7fd329d8d06755a9
7
- data.tar.gz: 895f4135c2603f10a6e721c36d15cd0c0b9b7ba212e4f8b577fdc923030479332bcb55799bf12e78332649e6e6cecbca1946a7181416a567fffde27cfad50be4
6
+ metadata.gz: a27c85ac8cc1ef08b04ac61054848eeed0dfbe08465fd4814d0a6909dd18891df71d7bbe9011f2fe0281a028bdd62550988d2716f707d3ea1a11d12139d67772
7
+ data.tar.gz: 584531e1f3027132097cebb1a36e600ae7e470ce62b91bc23522352dc39f14a7c1c80b34b92a1c5298bbdb079fb51c1204962945577c6cdf549e14dd944f8a22
data/CHANGES.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.2.0
4
+
5
+ * Fix incompatibility with `rspec --profile`.
6
+
3
7
  ## 2.1.2
4
8
 
5
9
  * Fix error when used in projects without ActiveSupport. Thanks @erikpaasonen.
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.10.
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, serialize_example(example)])
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, serialize_example(example)])
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, serialize_example(example)])
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, serialize_example(example)])
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, serialize_example(example)])
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 serialize_example(example)
42
- Example.new(
43
- example.id,
44
- example.description,
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
- :rerun_file_path,
61
- :scoped_id,
62
- :shared_group_inclusion_backtrace,
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 :remaining_example_group_indexes, :reporter
3
+ attr_reader :reporter, :remaining_examples_by_group, :running_examples
4
4
 
5
5
  def initialize(reporter)
6
- @remaining_example_group_indexes = RSpec.world.filtered_examples.each_with_object({}) do |(example_group, examples), results|
7
- results[example_group] = examples.size unless example_group.any_context_hooks? || examples.size.zero?
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(example, channel_to_client)
14
- reporter.example_started(example)
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 example_passed(example, channel_to_client)
18
- reporter.example_passed(example)
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 example_failed(example, channel_to_client)
22
- reporter.example_failed(example)
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 example_finished(example, channel_to_client)
26
- pp example
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(example, channel_to_client)
31
- reporter.example_pending(example)
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 remaining_example_group_indexes.empty?
39
+ if remaining_examples_by_group.empty?
40
40
  channel_to_client.write(nil)
41
41
  else
42
- klass = remaining_example_group_indexes.keys.first
43
- remaining_example_group_indexes[klass] -= 1
44
- channel_to_client.write([klass, remaining_example_group_indexes[klass]])
45
- remaining_example_group_indexes.delete(klass) if remaining_example_group_indexes[klass].zero?
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
@@ -1,3 +1,3 @@
1
1
  module ParallelRSpec
2
- VERSION = "2.1.2"
2
+ VERSION = "2.2.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parallel_rspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.2
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Will Bryant, Powershop New Zealand Ltd