Skip to content

Commit 6f6acc7

Browse files
authored
Support configurable NamingStrategy.ExampleName (#32)
For example: ```java public final class MyJUnitXmlFormatter implements ConcurrentEventListener { private final MessagesToJunitXmlWriter writer; public JUnitFormatter(OutputStream out) { this.writer = new MessagesToJunitXmlWriter(NamingStrategy.ExampleName.PICKLE, out); } @OverRide public void setEventPublisher(EventPublisher publisher) { publisher.registerHandlerFor(Envelope.class, this::write); } private void write(Envelope event) { try { writer.write(event); } catch (IOException e) { throw new IllegalStateException(e); } if (event.getTestRunFinished().isPresent()) { try { writer.close(); } catch (IOException e) { throw new IllegalStateException(e); } } } } ``` Note: Cucumber-JVM at present doesn't allow much configuration of plugins. To take advantage of this new option, the class above must be copied. And can be used in Cucumber-JVM with `cucumber.plugin=com.example.MyJUnitXmlFormatter:target/report.xml`. Fixes: #27
1 parent b389855 commit 6f6acc7

File tree

3 files changed

+24
-7
lines changed

3 files changed

+24
-7
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

88
## [Unreleased]
9+
### Added
10+
- Support configurable `NamingStrategy.ExampleName` ([#32](https://github.com/cucumber/cucumber-junit-xml-formatter/pull/32), M.P. Korstanje)
911

1012
## [0.4.0] - 2024-04-05
1113
### Changed

java/src/main/java/io/cucumber/junitxmlformatter/MessagesToJunitXmlWriter.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
package io.cucumber.junitxmlformatter;
22

33
import io.cucumber.messages.types.Envelope;
4+
import io.cucumber.query.NamingStrategy;
45

56
import javax.xml.stream.XMLStreamException;
67
import java.io.IOException;
78
import java.io.OutputStream;
89
import java.io.OutputStreamWriter;
910
import java.nio.charset.StandardCharsets;
1011

12+
import static io.cucumber.query.NamingStrategy.FeatureName.EXCLUDE;
13+
import static io.cucumber.query.NamingStrategy.Strategy.LONG;
1114
import static java.util.Objects.requireNonNull;
1215

1316
/**
@@ -20,10 +23,23 @@
2023
public class MessagesToJunitXmlWriter implements AutoCloseable {
2124

2225
private final OutputStreamWriter out;
23-
private final XmlReportData data = new XmlReportData();
26+
private final XmlReportData data;
2427
private boolean streamClosed = false;
2528

2629
public MessagesToJunitXmlWriter(OutputStream out) {
30+
this(NamingStrategy.ExampleName.NUMBER, out);
31+
}
32+
33+
public MessagesToJunitXmlWriter(NamingStrategy.ExampleName exampleNameStrategy, OutputStream out) {
34+
this(createNamingStrategy(requireNonNull(exampleNameStrategy)), out);
35+
}
36+
37+
private static NamingStrategy createNamingStrategy(NamingStrategy.ExampleName exampleName) {
38+
return NamingStrategy.strategy(LONG).featureName(EXCLUDE).exampleName(exampleName).build();
39+
}
40+
41+
private MessagesToJunitXmlWriter(NamingStrategy namingStrategy, OutputStream out) {
42+
this.data = new XmlReportData(namingStrategy);
2743
this.out = new OutputStreamWriter(
2844
requireNonNull(out),
2945
StandardCharsets.UTF_8

java/src/main/java/io/cucumber/junitxmlformatter/XmlReportData.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@
2222
import java.util.Optional;
2323

2424
import static io.cucumber.messages.types.TestStepResultStatus.PASSED;
25-
import static io.cucumber.query.NamingStrategy.FeatureName.EXCLUDE;
26-
import static io.cucumber.query.NamingStrategy.Strategy.LONG;
2725
import static java.util.concurrent.TimeUnit.SECONDS;
2826
import static java.util.function.Function.identity;
2927
import static java.util.stream.Collectors.counting;
@@ -33,13 +31,14 @@
3331
class XmlReportData {
3432

3533
private final Query query = new Query();
36-
private final NamingStrategy namingStrategy = NamingStrategy
37-
.strategy(LONG)
38-
.featureName(EXCLUDE)
39-
.build();
34+
private final NamingStrategy namingStrategy;
4035

4136
private static final long MILLIS_PER_SECOND = SECONDS.toMillis(1L);
4237

38+
public XmlReportData(NamingStrategy namingStrategy) {
39+
this.namingStrategy = namingStrategy;
40+
}
41+
4342
void collect(Envelope envelope) {
4443
query.update(envelope);
4544
}

0 commit comments

Comments
 (0)