cucumber-core 19.0.0 → 20.0.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: 25b931cc726aa46d40c838941a4a033fd70a34ef4899884750e86e9ad2a0f1b3
4
- data.tar.gz: d4f808dfc9dc0106e96b1fb6754df766f18a1248914323e89fe32c9a5eee6202
3
+ metadata.gz: 3bd84b9a07bbf230ece3ada9777d26e770e14ca4177f9d402d42b787161bb428
4
+ data.tar.gz: a8a9d63be60d9ce6730a9051e3baf4d2e1f31603a9f7d5f1a6d422b3acf26e53
5
5
  SHA512:
6
- metadata.gz: 8a0428cdbc69794d04b068fc6b72a83026cb8b08959c91153fc4c3b71b44062e442e5842dcef7b3dc8af424daa6c7dbebcce9fe13258ee4cc51a1aa6b9b798b6
7
- data.tar.gz: ae12323897fe7bb9b0f1bad297dadf5a2be335f5eb187a1093317350e5bd6211dac5cb93c1bafcca50610a5366571e9b85cb512363567471973ddbbf55bbcdd0
6
+ metadata.gz: 982d630ac7ea748ba08618bf3e0b4c42f6b9b9d01715772a28087610abc3bb1e7acd5ddf2d47e82ba2bf4bb01912f9e314ebbebfa6301e8b3fa3333dd2413a9a
7
+ data.tar.gz: cbf97dd45ce2b701f652a0ece83419ae1d798f6a167989b4f312197b24fec540ab2518a77d0ce42885c34ffdf7c4b27cd77ef53d26f781e9810774e202a44e7a
data/CHANGELOG.md CHANGED
@@ -10,6 +10,16 @@ Please visit [cucumber/CONTRIBUTING.md](https://github.com/cucumber/cucumber/blo
10
10
 
11
11
  ## [Unreleased]
12
12
 
13
+ ## [20.0.0] - 2026-10-09
14
+ ### Changed
15
+ - **BREAKING CHANGE:** `Cucumber::Core::Test::Runner` now takes a retry policy instead of a maximum number of attempts, and
16
+ asks it whether a finished test case will be retried. Its optional constructor arguments became keyword arguments. See upgrading notes for
17
+ [20.0.0.md](upgrading_notes/20.0.0.md#upgrading-to-cucumber-core-2000), for full changes
18
+
19
+ ### Fixed
20
+ - The `TestCaseFinished` envelope is now emitted before the `test_case_finished` event, so a test case retried from
21
+ that event no longer has its envelope emitted out of order and with the started id of the retry
22
+
13
23
  ## [19.0.0] - 2026-08-19
14
24
  ### Added
15
25
  - Emit test_case_started/finished and test_step_started/test_step_finished envelopes from the Runner. ([#331](https://github.com/cucumber/cucumber-ruby-core/pull/331))
@@ -164,7 +174,8 @@ See upgrading notes for [13.0.0.md](upgrading_notes/13.0.0.md#upgrading-to-cucum
164
174
  ### Changed
165
175
  - Updated `cucumber-gherkin` and `cucumber-messages`
166
176
 
167
- [Unreleased]: https://github.com/cucumber/cucumber-ruby-core/compare/v19.0.0...HEAD
177
+ [Unreleased]: https://github.com/cucumber/cucumber-ruby-core/compare/v20.0.0...HEAD
178
+ [20.0.0]: https://github.com/cucumber/cucumber-ruby-core/compare/v19.0.0...v20.0.0
168
179
  [19.0.0]: https://github.com/cucumber/cucumber-ruby-core/compare/v18.0.0...v19.0.0
169
180
  [18.0.0]: https://github.com/cucumber/cucumber-ruby-core/compare/v17.0.0...v18.0.0
170
181
  [17.0.0]: https://github.com/cucumber/cucumber-ruby-core/compare/v16.2.0...v17.0.0
data/README.md CHANGED
@@ -5,8 +5,7 @@
5
5
  [![Stand With Ukraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/badges/StandWithUkraine.svg)](https://vshymanskyy.github.io/StandWithUkraine)
6
6
  [![OpenCollective](https://opencollective.com/cucumber/backers/badge.svg)](https://opencollective.com/cucumber)
7
7
  [![OpenCollective](https://opencollective.com/cucumber/sponsors/badge.svg)](https://opencollective.com/cucumber)
8
- [![Test cucumber-core](https://github.com/cucumber/cucumber-ruby-core/actions/workflows/test.yml/badge.svg)](https://github.com/cucumber/cucumber-ruby-core/actions/workflows/test.yml)
9
- [![Code Climate](https://codeclimate.com/github/cucumber/cucumber-ruby-core.svg)](https://codeclimate.com/github/cucumber/cucumber-ruby-core)
8
+ [![Test cucumber-core](https://github.com/cucumber/cucumber-ruby-core/actions/workflows/test-ruby.yaml/badge.svg)](https://github.com/cucumber/cucumber-ruby-core/actions/workflows/test-ruby.yaml)
10
9
 
11
10
  Cucumber is a tool for running automated tests written in plain language. Because they're
12
11
  written in plain language, they can be read by anyone on your team. Because they can be
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cucumber
4
+ module Core
5
+ module Test
6
+ class NoRetries
7
+ def will_be_retried?(_test_case, _result) = false
8
+ end
9
+ end
10
+ end
11
+ end
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'cucumber/messages/helpers/test_step_result_comparator'
4
4
 
5
+ require_relative 'no_retries'
5
6
  require_relative 'timer'
6
7
  require 'cucumber/messages'
7
8
 
@@ -14,11 +15,13 @@ module Cucumber
14
15
  attr_reader :event_bus, :running_test_case, :running_test_step, :id_generator
15
16
  private :event_bus, :running_test_case, :running_test_step, :id_generator
16
17
 
17
- def initialize(event_bus, id_generator = Cucumber::Messages::Helpers::IdGenerator::UUID.new, backtrace_filter = nil, max_attempts = 1)
18
+ # @param retry_policy [#will_be_retried?] asked, once a test case has finished, whether it is going to be
19
+ # run again. It receives the test case and its result. By default, no test case is ever reported as retried.
20
+ def initialize(event_bus, id_generator: Cucumber::Messages::Helpers::IdGenerator::UUID.new, backtrace_filter: nil, retry_policy: NoRetries.new)
18
21
  @event_bus = event_bus
19
22
  @id_generator = id_generator
20
23
  @backtrace_filter = backtrace_filter
21
- @max_attempts = max_attempts
24
+ @retry_policy = retry_policy
22
25
  @current_test_case = nil
23
26
  end
24
27
 
@@ -34,8 +37,8 @@ module Cucumber
34
37
  descend.call(self)
35
38
 
36
39
  result = calculate_test_case_result(test_case)
40
+ event_bus.envelope(to_test_case_finished_envelope(test_case, result))
37
41
  event_bus.test_case_finished(test_case, result)
38
- event_bus.envelope(to_test_case_finished_envelope(result))
39
42
  self
40
43
  end
41
44
 
@@ -82,12 +85,12 @@ module Cucumber
82
85
  )
83
86
  end
84
87
 
85
- def to_test_case_finished_envelope(result)
88
+ def to_test_case_finished_envelope(test_case, result)
86
89
  Cucumber::Messages::Envelope.new(
87
90
  test_case_finished: Cucumber::Messages::TestCaseFinished.new(
88
91
  test_case_started_id: @current_test_case_started_id,
89
92
  timestamp: time_to_timestamp(Time.now),
90
- will_be_retried: result.failed? && (@attempt < @max_attempts)
93
+ will_be_retried: @retry_policy.will_be_retried?(test_case, result)
91
94
  )
92
95
  )
93
96
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cucumber-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 19.0.0
4
+ version: 20.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aslak Hellesøy
@@ -217,6 +217,7 @@ files:
217
217
  - lib/cucumber/core/test/filters/tag_filter.rb
218
218
  - lib/cucumber/core/test/hook_step.rb
219
219
  - lib/cucumber/core/test/location.rb
220
+ - lib/cucumber/core/test/no_retries.rb
220
221
  - lib/cucumber/core/test/result.rb
221
222
  - lib/cucumber/core/test/result/ambiguous.rb
222
223
  - lib/cucumber/core/test/result/boolean_methods.rb
@@ -262,5 +263,5 @@ required_rubygems_version: !ruby/object:Gem::Requirement
262
263
  requirements: []
263
264
  rubygems_version: 4.0.16
264
265
  specification_version: 4
265
- summary: cucumber-core-19.0.0
266
+ summary: cucumber-core-20.0.0
266
267
  test_files: []