rspec-mergify 2026.11.6 → 2026.11.8

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: fd9f3096f59aa2c036d7ee8c88fdd2b0fd9254e33adfcfb6d76cbe8b3435aaec
4
- data.tar.gz: f0c82f3e5628b8597fc4ad50bfff380e74bc39461e625e9ca0f1e4fd04c8d5e1
3
+ metadata.gz: ace343de80f55f7aed46968d459b0df76643410822f557e1f8aa823461cfd5ac
4
+ data.tar.gz: da8ded075f8236a1b129ff306f8dcd1cb8affd16383c7db5cf0139136c8a6a4b
5
5
  SHA512:
6
- metadata.gz: 1a12e274d5684cba6569e5cb5472efbded55bc1545cfdaa7f92791baa97f06b4eba9b1abf9a8e3930a898afbe163b9d37e57742ef5171e7f851498b6c0795aef
7
- data.tar.gz: 10c6fe419be0c056063efe008357770d3b8e7b4f03457b88406a51db6640445076b61845fe2916f73f0a4fe39abb7608276127d610e7c02aab1b261704e2fb69
6
+ metadata.gz: 50613caf2087374f5d93211c29fdd07b2842d100fba3e6e07e38a1832ec5e4de1fceffc4af0f6655810a19933c00d5560ed0cb4365bcb37debae11158ab6a177
7
+ data.tar.gz: af987db8186840146f8c7bf055245fbab5ee2d3752cf2fbd9d1ea433c3fa31e0f95a1b5d0b84c0f06dde5cb9e36f4bc138a5ed37b7cc2e5b4b9c9ca01d9b411f
data/README.md CHANGED
@@ -10,6 +10,7 @@ RSpec plugin for [Mergify Test Engine](https://docs.mergify.com/test-engine/).
10
10
  - **Flaky test detection** — Intelligently reruns tests to detect flakiness with budget constraints
11
11
  - **Test retry** — On the default branch, runs a failing example again, once rspec-retry's tries failed, within a time budget Mergify sets
12
12
  - **Test quarantine** — Quarantines failing tests so they don't block CI
13
+ - **Test skip** — Skips the examples a team chose in Mergify not to run, with the reason
13
14
  - **Test selection** — Runs first the examples a merge-queue bisection step failed in the step above, and stops once one fails again
14
15
 
15
16
  ## Installation
data/THIRD_PARTY_LICENSES CHANGED
@@ -4938,8 +4938,8 @@ Used by:
4938
4938
  - percent-encoding 2.3.2 (https://github.com/servo/rust-url/)
4939
4939
  - piper 0.2.5 (https://github.com/smol-rs/piper)
4940
4940
  - polling 3.11.0 (https://github.com/smol-rs/polling)
4941
- - prost-derive 0.14.4 (https://github.com/tokio-rs/prost)
4942
- - prost 0.14.4 (https://github.com/tokio-rs/prost)
4941
+ - prost-derive 0.14.6 (https://github.com/tokio-rs/prost)
4942
+ - prost 0.14.6 (https://github.com/tokio-rs/prost)
4943
4943
  - regex-automata 0.4.18 (https://github.com/rust-lang/regex)
4944
4944
  - regex-syntax 0.8.11 (https://github.com/rust-lang/regex)
4945
4945
  - regex 1.13.1 (https://github.com/rust-lang/regex)
@@ -8863,7 +8863,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
8863
8863
  Community Data License Agreement Permissive 2.0 (CDLA-Permissive-2.0)
8864
8864
 
8865
8865
  Used by:
8866
- - webpki-root-certs 1.0.11 (https://github.com/rustls/webpki-roots)
8866
+ - webpki-root-certs 1.0.12 (https://github.com/rustls/webpki-roots)
8867
8867
 
8868
8868
  # Community Data License Agreement - Permissive - Version 2.0
8869
8869
 
@@ -10332,10 +10332,10 @@ SOFTWARE.
10332
10332
  MIT License (MIT)
10333
10333
 
10334
10334
  Used by:
10335
- - jsonschema-regex 0.61.0 (https://github.com/Stranger6667/jsonschema)
10336
- - jsonschema-value 0.61.0 (https://github.com/Stranger6667/jsonschema)
10337
- - jsonschema 0.61.0 (https://github.com/Stranger6667/jsonschema)
10338
- - referencing 0.61.0 (https://github.com/Stranger6667/jsonschema)
10335
+ - jsonschema-regex 0.61.2 (https://github.com/Stranger6667/jsonschema)
10336
+ - jsonschema-value 0.61.2 (https://github.com/Stranger6667/jsonschema)
10337
+ - jsonschema 0.61.2 (https://github.com/Stranger6667/jsonschema)
10338
+ - referencing 0.61.2 (https://github.com/Stranger6667/jsonschema)
10339
10339
 
10340
10340
  MIT License
10341
10341
 
@@ -10367,7 +10367,7 @@ Used by:
10367
10367
  - napi-derive-backend 7.0.0 (https://github.com/napi-rs/napi-rs)
10368
10368
  - napi-derive 3.7.0 (https://github.com/napi-rs/napi-rs)
10369
10369
  - napi-sys 3.4.1 (https://github.com/napi-rs/napi-rs)
10370
- - napi 3.16.1 (https://github.com/napi-rs/napi-rs)
10370
+ - napi 3.16.2 (https://github.com/napi-rs/napi-rs)
10371
10371
 
10372
10372
  MIT License
10373
10373
 
@@ -10707,7 +10707,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
10707
10707
  MIT License (MIT)
10708
10708
 
10709
10709
  Used by:
10710
- - fancy-regex 0.20.0 (https://github.com/fancy-regex/fancy-regex)
10710
+ - fancy-regex 0.20.2 (https://github.com/fancy-regex/fancy-regex)
10711
10711
 
10712
10712
  The MIT License
10713
10713
 
@@ -44,6 +44,8 @@ module Mergify
44
44
  config.prepend_before(:suite) { Configuration.attach_formatter(config) }
45
45
  end
46
46
 
47
+ config.before(:suite) { Configuration.skip_examples } if reports?
48
+
47
49
  # Flaky detection: prepared for every example of the run.
48
50
  config.before(:suite) do
49
51
  ci = Mergify::RSpec.test_run
@@ -127,6 +129,21 @@ module Mergify
127
129
  )
128
130
  end
129
131
 
132
+ # Have RSpec skip the examples the session says not to run, as it skips
133
+ # an `xit`: each reports as pending, with the session's reason, and none
134
+ # of its `before`, `after` or `around` hooks runs. An example the user
135
+ # already skipped keeps the user's reason.
136
+ def skip_examples
137
+ quarantine = Mergify::RSpec.test_run&.quarantined_tests
138
+ return unless quarantine
139
+
140
+ names = Mergify::RSpec.test_run.names
141
+ collected.each do |example|
142
+ reason = quarantine.skip_reason(names.keys(example))
143
+ example.metadata[:skip] ||= reason if reason
144
+ end
145
+ end
146
+
130
147
  # The examples RSpec will run, in its order.
131
148
  def collected
132
149
  ::RSpec.world.example_groups.flat_map(&:descendants).flat_map { |group| ::RSpec.world.filtered_examples[group] }
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Mergify
4
4
  module RSpec
5
- # The quarantined tests for a run, and RSpec's side of them.
5
+ # The quarantined and skipped tests for a run, and RSpec's side of them.
6
6
  #
7
7
  # The session loads the list (`Session#load_before_tests`). Which example it
8
8
  # covers, what that example's result says, the branch it is fetched for
@@ -22,6 +22,12 @@ module Mergify
22
22
  @list.include?(keys)
23
23
  end
24
24
 
25
+ # Why the session says not to run an example known by `keys`, or nil to
26
+ # run it.
27
+ def skip_reason(keys)
28
+ @list.skip_reason(keys)
29
+ end
30
+
25
31
  # Account for an example known by `keys` that ended with `outcome`
26
32
  # (`'passed'`, `'failed'` or `'skipped'`, before the quarantine turned a
27
33
  # failure into `pending`), as `{ 'quarantined' => bool, 'absorbed' =>
@@ -8,6 +8,6 @@ module Mergify
8
8
  # which resolved against whatever repository happened to be the working
9
9
  # directory at load time -- the monorepo's namespaced tags here, the user's
10
10
  # own tags once the gem was installed.
11
- VERSION = '2026.11.6'
11
+ VERSION = '2026.11.8'
12
12
  end
13
13
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-mergify
3
3
  version: !ruby/object:Gem::Version
4
- version: 2026.11.6
4
+ version: 2026.11.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mergify
@@ -29,14 +29,14 @@ dependencies:
29
29
  requirements:
30
30
  - - '='
31
31
  - !ruby/object:Gem::Version
32
- version: 2026.11.6
32
+ version: 2026.11.8
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - '='
38
38
  - !ruby/object:Gem::Version
39
- version: 2026.11.6
39
+ version: 2026.11.8
40
40
  description: 'RSpec integration for Mergify Test Engine: OpenTelemetry tracing, flaky
41
41
  test detection, and test quarantine. Requires a Mergify account (set MERGIFY_TOKEN
42
42
  in CI); free for open source.'