Skip to content

Commit da57dc7

Browse files
committed
Merge branch 'main' into message-based-progress-and-rerun
2 parents b7d857a + a248ff6 commit da57dc7

File tree

46 files changed

+405
-613
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+405
-613
lines changed

.github/workflows/release-java.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
environment: Release
1212
steps:
1313
- uses: actions/checkout@v5
14-
- uses: actions/setup-java@v4
14+
- uses: actions/setup-java@v5
1515
with:
1616
distribution: 'zulu'
1717
java-version: '17'

.github/workflows/test-java.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ jobs:
2424
runs-on: ${{ matrix.os }}
2525
steps:
2626
- uses: actions/checkout@v5
27-
- uses: actions/setup-java@v4
27+
- uses: actions/setup-java@v5
2828
with:
2929
distribution: 'zulu'
3030
java-version: ${{ matrix.version }}
@@ -39,7 +39,7 @@ jobs:
3939
runs-on: ubuntu-latest
4040
steps:
4141
- uses: actions/checkout@v5
42-
- uses: actions/setup-java@v4
42+
- uses: actions/setup-java@v5
4343
with:
4444
distribution: 'zulu'
4545
java-version: '17'
@@ -54,7 +54,7 @@ jobs:
5454
runs-on: ubuntu-latest
5555
steps:
5656
- uses: actions/checkout@v5
57-
- uses: actions/setup-java@v4
57+
- uses: actions/setup-java@v5
5858
with:
5959
distribution: 'zulu'
6060
java-version: '17'

CHANGELOG.md

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,18 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
1010
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
1111

1212
## [Unreleased]
13+
14+
## [7.27.2] - 2025-08-18
15+
### Fixed
16+
- [Core] Intellij prints summary printed when executing concurrently ([#3049](https://github.com/cucumber/cucumber-jvm/pull/3049) M.P. Korstanje)
17+
18+
## [7.27.1] - 2025-08-17
1319
### Fixed
1420
- [Core] Format time in JUnit XML report as `xs:float` ([junit-xml-formatter/#83](https://github.com/cucumber/junit-xml-formatter/pull/83) M.P. Korstanje)
1521
- [Core] Replace concurrent hashmap with regular hashmap ([query/#89](https://github.com/cucumber/query/pull/89) M.P. Korstanje)
22+
- [Core] Fixed Afrikaans translation for "rule" ([gherkin/#428](https://github.com/cucumber/gherkin/pull/428))
23+
- [Java] Optimize `GherkinLine.substringTrimmed` ([#gherkin/444](https://github.com/cucumber/gherkin/pull/444))
24+
- [Java] Improve performance with a generated keyword matcher ([#gherkin/445](https://github.com/cucumber/gherkin/pull/445))
1625

1726
## [7.27.0] - 2025-07-27
1827
### Changed
@@ -456,7 +465,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
456465
- [Weld] Removed `cucumber-weld` in favour of `cucumber-jakarta-cdi` or `cucumber-cdi2`. ([#2276](https://github.com/cucumber/cucumber-jvm/issues/2276) M.P. Korstanje)
457466
- [Needle] Removed `cucumber-needled` in favour of `cucumber-jakarta-cdi` or `cucumber-cdi2`. ([#2276](https://github.com/cucumber/cucumber-jvm/issues/2276) M.P. Korstanje)
458467

459-
[Unreleased]: https://github.com/cucumber/cucumber-jvm/compare/v7.27.0...HEAD
468+
[Unreleased]: https://github.com/cucumber/cucumber-jvm/compare/v7.27.2...HEAD
469+
[7.27.2]: https://github.com/cucumber/cucumber-jvm/compare/v7.27.1...v7.27.2
470+
[7.27.1]: https://github.com/cucumber/cucumber-jvm/compare/v7.27.0...v7.27.1
460471
[7.27.0]: https://github.com/cucumber/cucumber-jvm/compare/v7.26.0...v7.27.0
461472
[7.26.0]: https://github.com/cucumber/cucumber-jvm/compare/v7.25.0...v7.26.0
462473
[7.25.0]: https://github.com/cucumber/cucumber-jvm/compare/v7.24.0...v7.25.0
@@ -506,3 +517,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
506517
[7.1.0]: https://github.com/cucumber/cucumber-jvm/compare/v7.0.0...v7.1.0
507518
[7.0.0]: https://github.com/cucumber/cucumber-jvm/compare/v7.0.0-RC1...v7.0.0
508519
[7.0.0-RC1]: https://github.com/cucumber/cucumber-jvm/compare/v6.11.0...v7.0.0-RC1
520+
/cucumber-jvm/compare/v6.11.0...v7.0.0-RC1

compatibility/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<artifactId>cucumber-jvm</artifactId>
66
<groupId>io.cucumber</groupId>
7-
<version>7.27.1-SNAPSHOT</version>
7+
<version>7.28.0-SNAPSHOT</version>
88
</parent>
99
<modelVersion>4.0.0</modelVersion>
1010

cucumber-archetype/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<groupId>io.cucumber</groupId>
88
<artifactId>cucumber-jvm</artifactId>
9-
<version>7.27.1-SNAPSHOT</version>
9+
<version>7.28.0-SNAPSHOT</version>
1010
</parent>
1111

1212
<artifactId>cucumber-archetype</artifactId>

cucumber-bom/pom.xml

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<artifactId>cucumber-jvm</artifactId>
66
<groupId>io.cucumber</groupId>
7-
<version>7.26.1-SNAPSHOT</version>
7+
<version>7.28.0-SNAPSHOT</version>
88
</parent>
99
<modelVersion>4.0.0</modelVersion>
1010
<packaging>pom</packaging>
@@ -15,11 +15,11 @@
1515
<properties>
1616
<ci-environment.version>10.0.1</ci-environment.version>
1717
<cucumber-expressions.version>18.0.1</cucumber-expressions.version>
18-
<gherkin.version>33.1.0</gherkin.version>
18+
<gherkin.version>34.0.0</gherkin.version>
1919
<html-formatter.version>21.13.0</html-formatter.version>
2020
<junit-xml-formatter.version>0.8.1</junit-xml-formatter.version>
2121
<messages.version>28.1.0</messages.version>
22-
<pretty-formatter.version>2.0.1</pretty-formatter.version>
22+
<pretty-formatter.version>2.1.0</pretty-formatter.version>
2323
<query.version>13.6.0</query.version>
2424
<tag-expressions.version>6.1.2</tag-expressions.version>
2525
<testng-xml-formatter.version>0.5.0</testng-xml-formatter.version>
@@ -83,97 +83,97 @@
8383
<dependency>
8484
<groupId>io.cucumber</groupId>
8585
<artifactId>cucumber-cdi2</artifactId>
86-
<version>7.27.1-SNAPSHOT</version>
86+
<version>7.28.0-SNAPSHOT</version>
8787
</dependency>
8888
<dependency>
8989
<groupId>io.cucumber</groupId>
9090
<artifactId>cucumber-core</artifactId>
91-
<version>7.27.1-SNAPSHOT</version>
91+
<version>7.28.0-SNAPSHOT</version>
9292
</dependency>
9393
<dependency>
9494
<groupId>io.cucumber</groupId>
9595
<artifactId>datatable</artifactId>
96-
<version>7.27.1-SNAPSHOT</version>
96+
<version>7.28.0-SNAPSHOT</version>
9797
</dependency>
9898
<dependency>
9999
<groupId>io.cucumber</groupId>
100100
<artifactId>datatable-matchers</artifactId>
101-
<version>7.27.1-SNAPSHOT</version>
101+
<version>7.28.0-SNAPSHOT</version>
102102
</dependency>
103103
<dependency>
104104
<groupId>io.cucumber</groupId>
105105
<artifactId>cucumber-deltaspike</artifactId>
106-
<version>7.27.1-SNAPSHOT</version>
106+
<version>7.28.0-SNAPSHOT</version>
107107
</dependency>
108108
<dependency>
109109
<groupId>io.cucumber</groupId>
110110
<artifactId>docstring</artifactId>
111-
<version>7.27.1-SNAPSHOT</version>
111+
<version>7.28.0-SNAPSHOT</version>
112112
</dependency>
113113
<dependency>
114114
<groupId>io.cucumber</groupId>
115115
<artifactId>cucumber-gherkin</artifactId>
116-
<version>7.27.1-SNAPSHOT</version>
116+
<version>7.28.0-SNAPSHOT</version>
117117
</dependency>
118118
<dependency>
119119
<groupId>io.cucumber</groupId>
120120
<artifactId>cucumber-gherkin-messages</artifactId>
121-
<version>7.27.1-SNAPSHOT</version>
121+
<version>7.28.0-SNAPSHOT</version>
122122
</dependency>
123123
<dependency>
124124
<groupId>io.cucumber</groupId>
125125
<artifactId>cucumber-guice</artifactId>
126-
<version>7.27.1-SNAPSHOT</version>
126+
<version>7.28.0-SNAPSHOT</version>
127127
</dependency>
128128
<dependency>
129129
<groupId>io.cucumber</groupId>
130130
<artifactId>cucumber-jakarta-cdi</artifactId>
131-
<version>7.27.1-SNAPSHOT</version>
131+
<version>7.28.0-SNAPSHOT</version>
132132
</dependency>
133133
<dependency>
134134
<groupId>io.cucumber</groupId>
135135
<artifactId>cucumber-java</artifactId>
136-
<version>7.27.1-SNAPSHOT</version>
136+
<version>7.28.0-SNAPSHOT</version>
137137
</dependency>
138138
<dependency>
139139
<groupId>io.cucumber</groupId>
140140
<artifactId>cucumber-java8</artifactId>
141-
<version>7.27.1-SNAPSHOT</version>
141+
<version>7.28.0-SNAPSHOT</version>
142142
</dependency>
143143
<dependency>
144144
<groupId>io.cucumber</groupId>
145145
<artifactId>cucumber-junit</artifactId>
146-
<version>7.27.1-SNAPSHOT</version>
146+
<version>7.28.0-SNAPSHOT</version>
147147
</dependency>
148148
<dependency>
149149
<groupId>io.cucumber</groupId>
150150
<artifactId>cucumber-junit-platform-engine</artifactId>
151-
<version>7.27.1-SNAPSHOT</version>
151+
<version>7.28.0-SNAPSHOT</version>
152152
</dependency>
153153
<dependency>
154154
<groupId>io.cucumber</groupId>
155155
<artifactId>cucumber-openejb</artifactId>
156-
<version>7.27.1-SNAPSHOT</version>
156+
<version>7.28.0-SNAPSHOT</version>
157157
</dependency>
158158
<dependency>
159159
<groupId>io.cucumber</groupId>
160160
<artifactId>cucumber-picocontainer</artifactId>
161-
<version>7.27.1-SNAPSHOT</version>
161+
<version>7.28.0-SNAPSHOT</version>
162162
</dependency>
163163
<dependency>
164164
<groupId>io.cucumber</groupId>
165165
<artifactId>cucumber-plugin</artifactId>
166-
<version>7.27.1-SNAPSHOT</version>
166+
<version>7.28.0-SNAPSHOT</version>
167167
</dependency>
168168
<dependency>
169169
<groupId>io.cucumber</groupId>
170170
<artifactId>cucumber-spring</artifactId>
171-
<version>7.27.1-SNAPSHOT</version>
171+
<version>7.28.0-SNAPSHOT</version>
172172
</dependency>
173173
<dependency>
174174
<groupId>io.cucumber</groupId>
175175
<artifactId>cucumber-testng</artifactId>
176-
<version>7.27.1-SNAPSHOT</version>
176+
<version>7.28.0-SNAPSHOT</version>
177177
</dependency>
178178
</dependencies>
179179
</dependencyManagement>

cucumber-cdi2/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<parent>
1515
<groupId>io.cucumber</groupId>
1616
<artifactId>cucumber-jvm</artifactId>
17-
<version>7.27.1-SNAPSHOT</version>
17+
<version>7.28.0-SNAPSHOT</version>
1818
</parent>
1919

2020
<artifactId>cucumber-cdi2</artifactId>

cucumber-core/pom.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>io.cucumber</groupId>
66
<artifactId>cucumber-jvm</artifactId>
7-
<version>7.27.1-SNAPSHOT</version>
7+
<version>7.28.0-SNAPSHOT</version>
88
</parent>
99

1010
<artifactId>cucumber-core</artifactId>
@@ -15,13 +15,13 @@
1515
<project.Automatic-Module-Name>io.cucumber.core</project.Automatic-Module-Name>
1616
<apiguardian-api.version>1.1.2</apiguardian-api.version>
1717
<jackson.version>2.19.2</jackson.version>
18-
<jsoup.version>1.21.1</jsoup.version>
18+
<jsoup.version>1.21.2</jsoup.version>
1919
<junit-jupiter.version>5.13.4</junit-jupiter.version>
2020
<xmlunit.version>2.10.3</xmlunit.version>
2121
<hamcrest.version>3.0</hamcrest.version>
2222
<hamcrest-json.version>0.2</hamcrest-json.version>
23-
<mockito.version>5.18.0</mockito.version>
24-
<vertx.version>4.5.18</vertx.version>
23+
<mockito.version>5.19.0</mockito.version>
24+
<vertx.version>4.5.20</vertx.version>
2525
<reactive-streams.version>1.0.4</reactive-streams.version>
2626
</properties>
2727

cucumber-core/src/main/java/io/cucumber/core/options/CommandlineOptionsParser.java

Lines changed: 18 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import io.cucumber.datatable.DataTable;
88
import io.cucumber.datatable.DataTableFormatter;
99
import io.cucumber.gherkin.GherkinDialect;
10-
import io.cucumber.gherkin.GherkinDialectProvider;
10+
import io.cucumber.gherkin.GherkinDialects;
1111
import io.cucumber.tagexpressions.TagExpressionParser;
1212

1313
import java.io.BufferedReader;
@@ -18,10 +18,10 @@
1818
import java.net.URI;
1919
import java.util.ArrayList;
2020
import java.util.Arrays;
21+
import java.util.Collection;
2122
import java.util.List;
2223
import java.util.Optional;
2324
import java.util.ResourceBundle;
24-
import java.util.Set;
2525
import java.util.function.Function;
2626
import java.util.regex.Pattern;
2727
import java.util.stream.Collectors;
@@ -196,30 +196,23 @@ private String removeArgFor(String arg, List<String> args) {
196196
}
197197

198198
private byte printI18n(String language) {
199-
GherkinDialectProvider dialectProvider = new GherkinDialectProvider();
200-
Set<String> languages = dialectProvider.getLanguages();
201-
202199
if (language.equalsIgnoreCase("help")) {
203-
if (language.equalsIgnoreCase("help")) {
204-
List<GherkinDialect> dialects = languages.stream()
205-
.map(dialectProvider::getDialect)
206-
.filter(Optional::isPresent)
207-
.map(Optional::get)
208-
.collect(Collectors.toList());
209-
210-
int widestLanguage = findWidest(dialects, GherkinDialect::getLanguage);
211-
int widestName = findWidest(dialects, GherkinDialect::getName);
212-
int widestNativeName = findWidest(dialects, GherkinDialect::getNativeName);
213-
214-
for (GherkinDialect dialect : dialects) {
215-
printDialect(dialect, widestLanguage, widestName, widestNativeName);
216-
}
217-
return 0x0;
200+
Collection<GherkinDialect> dialects = GherkinDialects.getDialects();
201+
202+
int widestLanguage = findWidest(dialects, GherkinDialect::getLanguage);
203+
int widestName = findWidest(dialects, GherkinDialect::getName);
204+
int widestNativeName = findWidest(dialects, GherkinDialect::getNativeName);
205+
206+
for (GherkinDialect dialect : dialects) {
207+
printDialect(dialect, widestLanguage, widestName, widestNativeName);
218208
}
209+
return 0x0;
219210
}
220-
if (languages.contains(language)) {
221-
dialectProvider.getDialect(language)
222-
.ifPresent(this::printKeywordsFor);
211+
212+
Optional<GherkinDialect> dialect = GherkinDialects.getDialect(language);
213+
if (dialect.isPresent()) {
214+
printKeywordsFor(dialect.get());
215+
return 0x0;
223216
}
224217

225218
out.println("Unrecognised ISO language code");
@@ -236,7 +229,7 @@ private String loadUsageText() {
236229
}
237230
}
238231

239-
private int findWidest(List<GherkinDialect> dialects, Function<GherkinDialect, String> getNativeName) {
232+
private int findWidest(Collection<GherkinDialect> dialects, Function<GherkinDialect, String> getNativeName) {
240233
return dialects.stream()
241234
.map(getNativeName)
242235
.mapToInt(String::length)
@@ -252,7 +245,7 @@ private void printDialect(GherkinDialect dialect, int widestLanguage, int widest
252245
out.println(langCode + name + nativeName);
253246
}
254247

255-
private byte printKeywordsFor(GherkinDialect dialect) {
248+
private void printKeywordsFor(GherkinDialect dialect) {
256249
StringBuilder builder = new StringBuilder();
257250
List<List<String>> table = new ArrayList<>();
258251
addKeywordRow(table, "feature", dialect.getFeatureKeywords());
@@ -275,7 +268,6 @@ private byte printKeywordsFor(GherkinDialect dialect) {
275268
.build()
276269
.formatTo(DataTable.create(table), builder);
277270
out.println(builder);
278-
return 0x0;
279271
}
280272

281273
private String rightPad(String text, int maxWidth) {

0 commit comments

Comments
 (0)