rspec-abq 1.0.6 → 1.1.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: 9125ceba8d09d6d41098e903710cdfd0a2396dcd3bdee90b920d92d77797d70c
4
- data.tar.gz: b8af9112ba33b1ad2d17bb7990d3a462082ec4b570b8ac0ac9117ff5bfd2ee4d
3
+ metadata.gz: 29210d070dba423ba2bb9aad82deb1df9e4a4fb01e70bec05b1d728d20e29d5e
4
+ data.tar.gz: 1771fe5b152192dd256b29cc412526fc275c381c1c697cec4a51b6ae5a4b0174
5
5
  SHA512:
6
- metadata.gz: 91b617a1aff48d2d3f226689e1e0e1d887bfe2eb26cfc04052ab58879c96e32f71436e40a18ccdbb0f59ebb0b89bcdad52a85291a885db9c20f4371df9b66ff4
7
- data.tar.gz: 5e58333ce3e0ae2e810ac8e412dc8c4632815439c84716961ecb6dd56869f9798b2ce191f095616cf5173d7b5278787c6971e551a52a37f2382ce6ffd7cd0c16
6
+ metadata.gz: 8f89f037b50d88458b443c534ec78e20d9bbf4661d81cf68774f2bd7438a588cace8a991dfe101d1a4424a98956e186ba20f65d51f47d837ff5237dbf4b00a4f
7
+ data.tar.gz: 22bf4931dc4ee3639334e1e91451e0577591c215ad279802560d8ae7256b56a31a93fcb495b932f9e490658aa2e1bc23e1100c29ed735b0515312f1e9dae2c6f
@@ -78,7 +78,12 @@ module RSpec
78
78
  results_for_descendants = ordering_strategy.order(children).map { |child| child.run_with_abq(reporter) }.all?
79
79
  result_for_this_group && results_for_descendants
80
80
  rescue RSpec::Core::Pending::SkipDeclaredInExample => ex
81
- for_filtered_examples(reporter) { |example| example.skip_with_exception(reporter, ex) }
81
+ for_filtered_examples(reporter) do |example|
82
+ if Abq.target_test_case.is_example?(example)
83
+ example.skip_with_exception(reporter, ex)
84
+ Abq.fetch_next_example
85
+ end
86
+ end
82
87
  true
83
88
  rescue RSpec::Support::AllExceptionsExceptOnesWeMustNotRescue => ex
84
89
  # If an exception reaches here, that means we must fail the entire
@@ -28,28 +28,33 @@ module RSpec
28
28
  def self.abq_result(example)
29
29
  execution_result = example.execution_result
30
30
  tags, meta = Manifest.extract_metadata_and_tags(example.metadata)
31
- {
32
- test_result: {
33
- status: status(example),
34
- id: example.id,
35
- display_name: example.metadata[:full_description],
36
- output: if execution_result.exception
37
- RSpec::Core::Formatters::ExceptionPresenter
38
- .new(execution_result.exception, example)
39
- .fully_formatted(1)
40
- end,
41
- runtime: (execution_result.run_time * 1_000_000_000).round,
42
- tags: tags,
43
- meta: meta,
44
- location: {
45
- file: example.metadata[:file_path],
46
- line: example.metadata[:line_number]
47
- },
48
- started_at: execution_result.started_at.utc.iso8601,
49
- finished_at: execution_result.finished_at.utc.iso8601,
50
- lineage: RSpec::Core::Metadata.ascend(example.metadata).map { |meta| meta[:description] }.reverse
51
- }
31
+ test_result = {
32
+ status: status(example),
33
+ id: example.id,
34
+ display_name: example.metadata[:full_description],
35
+ output: if execution_result.exception
36
+ RSpec::Core::Formatters::ExceptionPresenter
37
+ .new(execution_result.exception, example)
38
+ .fully_formatted(1)
39
+ end,
40
+ runtime: (execution_result.run_time * 1_000_000_000).round,
41
+ tags: tags,
42
+ meta: meta,
43
+ location: {
44
+ file: example.metadata[:file_path],
45
+ line: example.metadata[:line_number]
46
+ },
47
+ started_at: execution_result.started_at.utc.iso8601,
48
+ finished_at: execution_result.finished_at.utc.iso8601,
49
+ lineage: RSpec::Core::Metadata.ascend(example.metadata).map { |meta| meta[:description] }.reverse
52
50
  }
51
+
52
+ past_rspec_retry_attempts = rspec_retry_attempts(example)
53
+ if past_rspec_retry_attempts
54
+ test_result[:past_attempts] = past_rspec_retry_attempts
55
+ end
56
+
57
+ {test_result: test_result}
53
58
  end
54
59
 
55
60
  private_class_method def self.status(example)
@@ -82,6 +87,27 @@ module RSpec
82
87
  end
83
88
  end
84
89
  end
90
+
91
+ private_class_method def self.rspec_retry_attempts(example)
92
+ return unless defined?(RSpec::Retry)
93
+ return unless example.metadata.key?(:retry_attempts)
94
+ return unless example.metadata.key?(:retry_exceptions)
95
+
96
+ retry_attempts = example.metadata[:retry_attempts]
97
+ retry_exceptions = example.metadata[:retry_exceptions]
98
+ return unless retry_attempts > 0
99
+
100
+ retry_attempts.times.map do |attempt_index|
101
+ {
102
+ status: {type: :failure},
103
+ id: example.id,
104
+ display_name: example.metadata[:full_description],
105
+ output: retry_exceptions[attempt_index],
106
+ runtime: 0, # rspec-retry does not expose individual durations
107
+ meta: {} # rspec-retry exposes no other metadata beyond attempt and exceptions
108
+ }
109
+ end
110
+ end
85
111
  end
86
112
  end
87
113
  end
@@ -1,6 +1,6 @@
1
1
  module RSpec
2
2
  module Abq
3
3
  # current version!
4
- VERSION = "1.0.6"
4
+ VERSION = "1.1.0"
5
5
  end
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-abq
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.6
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ayaz Hafiz
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-01-26 00:00:00.000000000 Z
12
+ date: 2023-02-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec-core
@@ -157,6 +157,20 @@ dependencies:
157
157
  - - "~>"
158
158
  - !ruby/object:Gem::Version
159
159
  version: 2.2.1
160
+ - !ruby/object:Gem::Dependency
161
+ name: simplecov
162
+ requirement: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: 0.22.0
167
+ type: :development
168
+ prerelease: false
169
+ version_requirements: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: 0.22.0
160
174
  description: RSpec::Abq is an rspec plugin that replaces its ordering with one that
161
175
  is controlled by abq. It allows for parallelization of rspec on a single machine
162
176
  or across multiple workers.