Skip to content

Commit 99f3dd8

Browse files
authored
Use a message based TeamCity formatter (#3050)
Replace the `TeamCityPlugin` with the message based implementation from [teamcity-formatter](https://github.com/cucumber/teamcity-formatter/). This achieves several goals: * Move the internal code base away from the events from the plugin module. * Extract common parts of Cucumber into modules that can be shared. Partially implement: #3001
1 parent 6b5d978 commit 99f3dd8

File tree

9 files changed

+136
-841
lines changed

9 files changed

+136
-841
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2020

2121
### Changed
2222
- [Core] Use a message based `RerunFormatter` ([#3075](https://github.com/cucumber/cucumber-jvm/pull/3075) M.P. Korstanje)
23+
- [Core] Use a message based `TeamCityPlugin` ([#3050](https://github.com/cucumber/cucumber-jvm/pull/3050) M.P. Korstanje)
2324
- [Core] Update dependency io.cucumber:cucumber-json-formatter to v0.2.0
2425
- [Core] Update dependency io.cucumber:gherkin to v35.0.0
2526
- [Core] Update dependency io.cucumber:html-formatter to v21.15.0

cucumber-bom/pom.xml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,15 @@
1515
<properties>
1616
<ci-environment.version>10.0.1</ci-environment.version>
1717
<cucumber-expressions.version>18.0.1</cucumber-expressions.version>
18-
<cucumber-json-formatter.version>0.2.0</cucumber-json-formatter.version>
18+
<cucumber-json-formatter.version>0.2.1</cucumber-json-formatter.version>
1919
<gherkin.version>35.0.0</gherkin.version>
2020
<html-formatter.version>21.15.1</html-formatter.version>
2121
<junit-xml-formatter.version>0.9.0</junit-xml-formatter.version>
2222
<messages.version>29.0.1</messages.version>
2323
<pretty-formatter.version>2.2.0</pretty-formatter.version>
2424
<query.version>14.0.1</query.version>
2525
<tag-expressions.version>6.1.2</tag-expressions.version>
26+
<teamcity-formatter.version>0.1.1</teamcity-formatter.version>
2627
<testng-xml-formatter.version>0.6.0</testng-xml-formatter.version>
2728
</properties>
2829

@@ -79,6 +80,11 @@
7980
<artifactId>tag-expressions</artifactId>
8081
<version>${tag-expressions.version}</version>
8182
</dependency>
83+
<dependency>
84+
<groupId>io.cucumber</groupId>
85+
<artifactId>teamcity-formatter</artifactId>
86+
<version>${teamcity-formatter.version}</version>
87+
</dependency>
8288
<dependency>
8389
<groupId>io.cucumber</groupId>
8490
<artifactId>testng-xml-formatter</artifactId>

cucumber-core/pom.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,10 @@
6868
<groupId>io.cucumber</groupId>
6969
<artifactId>pretty-formatter</artifactId>
7070
</dependency>
71+
<dependency>
72+
<groupId>io.cucumber</groupId>
73+
<artifactId>teamcity-formatter</artifactId>
74+
</dependency>
7175
<dependency>
7276
<groupId>io.cucumber</groupId>
7377
<artifactId>testng-xml-formatter</artifactId>

cucumber-core/src/main/java/io/cucumber/core/plugin/Plugins.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public void addPlugin(Plugin plugin) {
6868
public void setEventBusOnEventListenerPlugins(EventPublisher eventPublisher) {
6969
for (Plugin plugin : plugins) {
7070
if (plugin instanceof ConcurrentEventListener) {
71-
((ConcurrentEventListener) plugin).setEventPublisher(eventPublisher);
71+
((ConcurrentEventListener) plugin).setEventPublisher(eventPublisher, false);
7272
} else if (plugin instanceof EventListener) {
7373
((EventListener) plugin).setEventPublisher(eventPublisher);
7474
}
@@ -78,7 +78,7 @@ public void setEventBusOnEventListenerPlugins(EventPublisher eventPublisher) {
7878
public void setSerialEventBusOnEventListenerPlugins(EventPublisher eventPublisher) {
7979
for (Plugin plugin : plugins) {
8080
if (plugin instanceof ConcurrentEventListener) {
81-
((ConcurrentEventListener) plugin).setEventPublisher(eventPublisher);
81+
((ConcurrentEventListener) plugin).setEventPublisher(eventPublisher, true);
8282
} else if (plugin instanceof EventListener) {
8383
EventPublisher orderedEventPublisher = getOrderedEventPublisher(eventPublisher);
8484
((EventListener) plugin).setEventPublisher(orderedEventPublisher);

cucumber-core/src/main/java/io/cucumber/core/plugin/TeamCityPlugin.java

Lines changed: 41 additions & 487 deletions
Large diffs are not rendered by default.

cucumber-core/src/test/java/io/cucumber/core/plugin/PluginsTest.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,17 @@ void shouldSetConcurrentEventListener() {
5757
ConcurrentEventListener plugin = mock(ConcurrentEventListener.class);
5858
plugins.addPlugin(plugin);
5959
plugins.setEventBusOnEventListenerPlugins(rootEventPublisher);
60-
verify(plugin, times(1)).setEventPublisher(rootEventPublisher);
60+
verify(plugin, times(1)).setEventPublisher(rootEventPublisher, false);
61+
}
62+
63+
@Test
64+
void shouldSetSerialEventBusOnConcurrentEventListener() {
65+
RuntimeOptions runtimeOptions = RuntimeOptions.defaultOptions();
66+
Plugins plugins = new Plugins(pluginFactory, runtimeOptions);
67+
ConcurrentEventListener plugin = mock(ConcurrentEventListener.class);
68+
plugins.addPlugin(plugin);
69+
plugins.setSerialEventBusOnEventListenerPlugins(rootEventPublisher);
70+
verify(plugin, times(1)).setEventPublisher(rootEventPublisher, true);
6171
}
6272

6373
@Test

0 commit comments

Comments
 (0)