parallel_rspec 2.3.0 → 2.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c7a38c7f6a685aef852543e1c676aae48e0066fd98f5b6b51c3ca44ca1b8b3b0
4
- data.tar.gz: 98b98c46b8ef5f8b60066a838b9e58b2df26cd2501086c86d2d7966adb2972cc
3
+ metadata.gz: 6a72d4e48cb7e1973a00e66c2fcae145cbe17c238ed051666856365716f1cd67
4
+ data.tar.gz: e4b27f1a20a0e3d329fb146592af425aa0f5887cd18fe71784c8f432e62993ad
5
5
  SHA512:
6
- metadata.gz: 79ab6a5abf73b8c8a788dd45626aa22d25284af00c4146ef9fa0a174adb7d1c648f5fde0399ecbca5f6103df17bd70c389ee22a9b05e88da9a98a463ee39ca21
7
- data.tar.gz: 31d2d263fa915de652ce0e990b23387d3946ee1d72d265ba3ec8242a6b483cc2b0d095e02b803614a94ce5bd00a363c74714d147ddb66da2c2bef60e892d52a0
6
+ metadata.gz: 12770663bed8e75c5cd24743a177ac3ba01b3d07165dce4ef2e921219dd4a2dc62eaa013c12ffd43d0f7f2565484b0b33330249a1b46ea4e4e6d046518f5b469
7
+ data.tar.gz: e15b6a238cbf5249472eaca4fbd52073ea001f7f01ca8a41be1732cea1aa529d3c3159d5dcef22353d25815d0ea814e100785ad977fd1f2862f904dda47e2273
data/CHANGES.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.4.0
4
+
5
+ * Wrap Exception objects so they can always be dumped and loaded, even if they contain non-marshallable objects such as Procs or anonymous classes.
6
+
3
7
  ## 2.3.0
4
8
 
5
9
  * Increase default workers from 2 to 4.
@@ -1,4 +1,33 @@
1
1
  module ParallelRSpec
2
+ # Some Exception objects contain non-marshallable ivars such as Proc objects. This wrapper
3
+ # represents the bits needed by RSpec's ExceptionPresenter, and can be dumped and loaded.
4
+ class ExceptionMarshallingWrapper < Exception
5
+ attr_reader :class_name, :message, :backtrace, :cause
6
+
7
+ def initialize(class_name, message, backtrace, cause)
8
+ @class_name = class_name
9
+ @message = message
10
+ @backtrace = backtrace
11
+ @cause = cause
12
+ end
13
+
14
+ def class
15
+ eval "class #{@class_name}; end; #{@class_name}"
16
+ end
17
+
18
+ def inspect
19
+ "#<#{@class_name}: #{@message}>"
20
+ end
21
+
22
+ def ==(other)
23
+ other.is_a?(ExceptionMarshallingWrapper) &&
24
+ class_name == other.class_name &&
25
+ message == other.message &&
26
+ backtrace == other.backtrace &&
27
+ cause == other.cause
28
+ end
29
+ end
30
+
2
31
  class Client
3
32
  attr_reader :channel_to_server
4
33
 
@@ -39,8 +68,9 @@ module ParallelRSpec
39
68
  end
40
69
 
41
70
  def updates_from(example)
71
+ example.execution_result.exception = dumpable_exception(example.execution_result.exception)
42
72
  {
43
- exception: example.exception,
73
+ exception: dumpable_exception(example.exception),
44
74
  metadata: example.metadata.slice(
45
75
  :execution_result,
46
76
  :pending,
@@ -49,6 +79,11 @@ module ParallelRSpec
49
79
  }
50
80
  end
51
81
 
82
+ def dumpable_exception(exception)
83
+ return exception if exception.nil? || exception.is_a?(ExceptionMarshallingWrapper)
84
+ ExceptionMarshallingWrapper.new(exception.class.name, exception.to_s, exception.backtrace, dumpable_exception(exception.cause))
85
+ end
86
+
52
87
  def next_example_to_run
53
88
  channel_to_server.write([:next_example_to_run])
54
89
  channel_to_server.read
@@ -59,7 +59,8 @@ db_namespace = namespace :db do
59
59
  desc "Recreate the test databases from the current schema"
60
60
  task :load do
61
61
  db_namespace["parallel:purge"].invoke
62
- case ActiveRecord::Base.schema_format
62
+ schema_format = ActiveRecord.respond_to?(:schema_format) ? ActiveRecord.schema_format : ActiveRecord::Base.schema_format
63
+ case schema_format
63
64
  when :ruby
64
65
  db_namespace["parallel:load_schema"].invoke
65
66
  when :sql
@@ -1,3 +1,3 @@
1
1
  module ParallelRSpec
2
- VERSION = "2.3.0"
2
+ VERSION = "2.4.0"
3
3
  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.3.0
4
+ version: 2.4.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: 2023-07-03 00:00:00.000000000 Z
11
+ date: 2023-07-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake