From b5d50ed4c01135324c7fbc2b89e94ba5776868f1 Mon Sep 17 00:00:00 2001 From: Dmitry Baev Date: Tue, 2 Nov 2021 13:53:31 +0300 Subject: [PATCH] add support for provided labels for cucumberjvm integrations --- .../allure/cucumberjvm/LabelBuilder.java | 1 + .../cucumberjvm/AllureCucumberJvmTest.java | 19 ++++++++++++++++++ .../allure/cucumber2jvm/LabelBuilder.java | 2 ++ .../cucumber2jvm/AllureCucumber2JvmTest.java | 18 +++++++++++++++++ .../allure/cucumber3jvm/LabelBuilder.java | 2 ++ .../cucumber3jvm/AllureCucumber3JvmTest.java | 19 ++++++++++++++++++ .../allure/cucumber4jvm/LabelBuilder.java | 1 + .../cucumber4jvm/AllureCucumber4JvmTest.java | 20 +++++++++++++++++++ .../allure/cucumber5jvm/LabelBuilder.java | 1 + .../cucumber5jvm/AllureCucumber5JvmTest.java | 20 +++++++++++++++++++ .../allure/cucumber6jvm/LabelBuilder.java | 1 + .../cucumber6jvm/AllureCucumber6JvmTest.java | 20 +++++++++++++++++++ 12 files changed, 124 insertions(+) diff --git a/allure-cucumber-jvm/src/main/java/io/qameta/allure/cucumberjvm/LabelBuilder.java b/allure-cucumber-jvm/src/main/java/io/qameta/allure/cucumberjvm/LabelBuilder.java index 8acfe213d..c022b8531 100644 --- a/allure-cucumber-jvm/src/main/java/io/qameta/allure/cucumberjvm/LabelBuilder.java +++ b/allure-cucumber-jvm/src/main/java/io/qameta/allure/cucumberjvm/LabelBuilder.java @@ -112,6 +112,7 @@ class LabelBuilder { } } + getScenarioLabels().addAll(ResultsUtils.getProvidedLabels()); getScenarioLabels().addAll(Arrays.asList( createHostLabel(), createThreadLabel(), diff --git a/allure-cucumber-jvm/src/test/java/io/qameta/allure/cucumberjvm/AllureCucumberJvmTest.java b/allure-cucumber-jvm/src/test/java/io/qameta/allure/cucumberjvm/AllureCucumberJvmTest.java index ea5db2632..e5274cbef 100644 --- a/allure-cucumber-jvm/src/test/java/io/qameta/allure/cucumberjvm/AllureCucumberJvmTest.java +++ b/allure-cucumber-jvm/src/test/java/io/qameta/allure/cucumberjvm/AllureCucumberJvmTest.java @@ -41,6 +41,7 @@ import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.jupiter.api.parallel.ResourceLock; import java.nio.charset.StandardCharsets; import java.time.Instant; @@ -55,6 +56,8 @@ import static java.util.Objects.nonNull; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.tuple; +import static org.junit.jupiter.api.parallel.ResourceAccessMode.READ_WRITE; +import static org.junit.jupiter.api.parallel.Resources.SYSTEM_PROPERTIES; /** * @author charlie (Dmitry Baev). @@ -404,6 +407,22 @@ void shouldUseUuid() { .allMatch(uuid -> nonNull(uuid) && uuid.matches("[\\-a-z0-9]+"), "UUID"); } + @ResourceLock(value = SYSTEM_PROPERTIES, mode = READ_WRITE) + @SystemProperty(name = "allure.label.x-provided", value = "cucumberjvm1-test-provided") + @Test + void shouldSupportProvidedLabels() { + final AllureResults results = runFeature("features/simple.feature"); + + final List testResults = results.getTestResults(); + assertThat(testResults) + .hasSize(1) + .flatExtracting(TestResult::getLabels) + .extracting(Label::getName, Label::getValue) + .contains( + tuple("x-provided", "cucumberjvm1-test-provided") + ); + } + private AllureResults runFeature(final String featureResource, final String... moreOptions) { final AllureResultsWriterStub writer = new AllureResultsWriterStub(); diff --git a/allure-cucumber2-jvm/src/main/java/io/qameta/allure/cucumber2jvm/LabelBuilder.java b/allure-cucumber2-jvm/src/main/java/io/qameta/allure/cucumber2jvm/LabelBuilder.java index b222a988a..18b36ae0a 100644 --- a/allure-cucumber2-jvm/src/main/java/io/qameta/allure/cucumber2jvm/LabelBuilder.java +++ b/allure-cucumber2-jvm/src/main/java/io/qameta/allure/cucumber2jvm/LabelBuilder.java @@ -20,6 +20,7 @@ import gherkin.pickles.PickleTag; import io.qameta.allure.model.Label; import io.qameta.allure.model.Link; +import io.qameta.allure.util.ResultsUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -114,6 +115,7 @@ class LabelBuilder { } } + getScenarioLabels().addAll(ResultsUtils.getProvidedLabels()); getScenarioLabels().addAll(Arrays.asList( createHostLabel(), createThreadLabel(), diff --git a/allure-cucumber2-jvm/src/test/java/io/qameta/allure/cucumber2jvm/AllureCucumber2JvmTest.java b/allure-cucumber2-jvm/src/test/java/io/qameta/allure/cucumber2jvm/AllureCucumber2JvmTest.java index 10498f014..55c217cb5 100644 --- a/allure-cucumber2-jvm/src/test/java/io/qameta/allure/cucumber2jvm/AllureCucumber2JvmTest.java +++ b/allure-cucumber2-jvm/src/test/java/io/qameta/allure/cucumber2jvm/AllureCucumber2JvmTest.java @@ -45,6 +45,7 @@ import org.apache.commons.io.IOUtils; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.jupiter.api.parallel.ResourceLock; import java.io.IOException; import java.io.InputStream; @@ -61,6 +62,8 @@ import static java.util.Objects.nonNull; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.tuple; +import static org.junit.jupiter.api.parallel.ResourceAccessMode.READ_WRITE; +import static org.junit.jupiter.api.parallel.Resources.SYSTEM_PROPERTIES; /** * @author charlie (Dmitry Baev). @@ -555,6 +558,21 @@ void shouldSetStatusFailedOnFailedAndUndefinedSteps() { .containsExactlyInAnyOrder(Status.FAILED); } + @ResourceLock(value = SYSTEM_PROPERTIES, mode = READ_WRITE) + @SystemProperty(name = "allure.label.x-provided", value = "cucumberjvm2-test-provided") + @Test + void shouldSupportProvidedLabels() { + final AllureResults results = runFeature("features/simple.feature"); + + final List testResults = results.getTestResults(); + assertThat(testResults) + .hasSize(1) + .flatExtracting(TestResult::getLabels) + .extracting(Label::getName, Label::getValue) + .contains( + tuple("x-provided", "cucumberjvm2-test-provided") + ); + } private String readResource(final String resourceName) { try (InputStream is = currentThread().getContextClassLoader().getResourceAsStream(resourceName)) { diff --git a/allure-cucumber3-jvm/src/main/java/io/qameta/allure/cucumber3jvm/LabelBuilder.java b/allure-cucumber3-jvm/src/main/java/io/qameta/allure/cucumber3jvm/LabelBuilder.java index 2401d6481..e73fc9c41 100644 --- a/allure-cucumber3-jvm/src/main/java/io/qameta/allure/cucumber3jvm/LabelBuilder.java +++ b/allure-cucumber3-jvm/src/main/java/io/qameta/allure/cucumber3jvm/LabelBuilder.java @@ -20,6 +20,7 @@ import gherkin.pickles.PickleTag; import io.qameta.allure.model.Label; import io.qameta.allure.model.Link; +import io.qameta.allure.util.ResultsUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -114,6 +115,7 @@ class LabelBuilder { } } + getScenarioLabels().addAll(ResultsUtils.getProvidedLabels()); getScenarioLabels().addAll(Arrays.asList( createHostLabel(), createThreadLabel(), diff --git a/allure-cucumber3-jvm/src/test/java/io/qameta/allure/cucumber3jvm/AllureCucumber3JvmTest.java b/allure-cucumber3-jvm/src/test/java/io/qameta/allure/cucumber3jvm/AllureCucumber3JvmTest.java index d6aaf4e46..29b64f837 100644 --- a/allure-cucumber3-jvm/src/test/java/io/qameta/allure/cucumber3jvm/AllureCucumber3JvmTest.java +++ b/allure-cucumber3-jvm/src/test/java/io/qameta/allure/cucumber3jvm/AllureCucumber3JvmTest.java @@ -45,6 +45,7 @@ import org.apache.commons.io.IOUtils; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.jupiter.api.parallel.ResourceLock; import java.io.IOException; import java.io.InputStream; @@ -61,6 +62,8 @@ import static java.util.Objects.nonNull; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.tuple; +import static org.junit.jupiter.api.parallel.ResourceAccessMode.READ_WRITE; +import static org.junit.jupiter.api.parallel.Resources.SYSTEM_PROPERTIES; /** * @author charlie (Dmitry Baev). @@ -568,6 +571,22 @@ void shouldSetStatusFailedOnFailedAndUndefinedSteps() { .containsExactlyInAnyOrder(Status.FAILED); } + @ResourceLock(value = SYSTEM_PROPERTIES, mode = READ_WRITE) + @SystemProperty(name = "allure.label.x-provided", value = "cucumberjvm3-test-provided") + @Test + void shouldSupportProvidedLabels() { + final AllureResults results = runFeature("features/simple.feature"); + + final List testResults = results.getTestResults(); + assertThat(testResults) + .hasSize(1) + .flatExtracting(TestResult::getLabels) + .extracting(Label::getName, Label::getValue) + .contains( + tuple("x-provided", "cucumberjvm3-test-provided") + ); + } + private String readResource(final String resourceName) { try (InputStream is = currentThread().getContextClassLoader().getResourceAsStream(resourceName)) { return IOUtils.toString(is, StandardCharsets.UTF_8); diff --git a/allure-cucumber4-jvm/src/main/java/io/qameta/allure/cucumber4jvm/LabelBuilder.java b/allure-cucumber4-jvm/src/main/java/io/qameta/allure/cucumber4jvm/LabelBuilder.java index ef7dcf7f1..9958e8e85 100644 --- a/allure-cucumber4-jvm/src/main/java/io/qameta/allure/cucumber4jvm/LabelBuilder.java +++ b/allure-cucumber4-jvm/src/main/java/io/qameta/allure/cucumber4jvm/LabelBuilder.java @@ -115,6 +115,7 @@ class LabelBuilder { final String featureName = feature.getName(); final String uri = scenario.getUri(); + getScenarioLabels().addAll(ResultsUtils.getProvidedLabels()); getScenarioLabels().addAll(Arrays.asList( createHostLabel(), createThreadLabel(), diff --git a/allure-cucumber4-jvm/src/test/java/io/qameta/allure/cucumber4jvm/AllureCucumber4JvmTest.java b/allure-cucumber4-jvm/src/test/java/io/qameta/allure/cucumber4jvm/AllureCucumber4JvmTest.java index 4ddbb50eb..95d08f2f8 100644 --- a/allure-cucumber4-jvm/src/test/java/io/qameta/allure/cucumber4jvm/AllureCucumber4JvmTest.java +++ b/allure-cucumber4-jvm/src/test/java/io/qameta/allure/cucumber4jvm/AllureCucumber4JvmTest.java @@ -49,6 +49,7 @@ import org.apache.commons.io.IOUtils; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.jupiter.api.parallel.ResourceLock; import java.io.IOException; import java.io.InputStream; @@ -70,6 +71,8 @@ import static java.lang.Thread.currentThread; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.tuple; +import static org.junit.jupiter.api.parallel.ResourceAccessMode.READ_WRITE; +import static org.junit.jupiter.api.parallel.Resources.SYSTEM_PROPERTIES; /** * @author charlie (Dmitry Baev). @@ -730,6 +733,23 @@ void shouldHandleAmbigiousStepsExceptions() { ); } + @ResourceLock(value = SYSTEM_PROPERTIES, mode = READ_WRITE) + @SystemProperty(name = "allure.label.x-provided", value = "cucumberjvm4-test-provided") + @Test + void shouldSupportProvidedLabels() { + final AllureResultsWriterStub results = new AllureResultsWriterStub(); + runFeature(results, "features/simple.feature"); + + final List testResults = results.getTestResults(); + assertThat(testResults) + .hasSize(1) + .flatExtracting(TestResult::getLabels) + .extracting(Label::getName, Label::getValue) + .contains( + tuple("x-provided", "cucumberjvm4-test-provided") + ); + } + private byte runFeature(final AllureResultsWriterStub writer, final String featureResource, final String... moreOptions) { diff --git a/allure-cucumber5-jvm/src/main/java/io/qameta/allure/cucumber5jvm/LabelBuilder.java b/allure-cucumber5-jvm/src/main/java/io/qameta/allure/cucumber5jvm/LabelBuilder.java index 68063215e..d888a5c1e 100644 --- a/allure-cucumber5-jvm/src/main/java/io/qameta/allure/cucumber5jvm/LabelBuilder.java +++ b/allure-cucumber5-jvm/src/main/java/io/qameta/allure/cucumber5jvm/LabelBuilder.java @@ -112,6 +112,7 @@ class LabelBuilder { final String featureName = feature.getName(); final URI uri = scenario.getUri(); + getScenarioLabels().addAll(ResultsUtils.getProvidedLabels()); getScenarioLabels().addAll(Arrays.asList( createHostLabel(), createThreadLabel(), diff --git a/allure-cucumber5-jvm/src/test/java/io/qameta/allure/cucumber5jvm/AllureCucumber5JvmTest.java b/allure-cucumber5-jvm/src/test/java/io/qameta/allure/cucumber5jvm/AllureCucumber5JvmTest.java index afd6c9567..6541f639b 100644 --- a/allure-cucumber5-jvm/src/test/java/io/qameta/allure/cucumber5jvm/AllureCucumber5JvmTest.java +++ b/allure-cucumber5-jvm/src/test/java/io/qameta/allure/cucumber5jvm/AllureCucumber5JvmTest.java @@ -41,6 +41,7 @@ import io.qameta.allure.test.AllureResultsWriterStub; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.jupiter.api.parallel.ResourceLock; import java.nio.charset.StandardCharsets; import java.time.Clock; @@ -55,6 +56,8 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.tuple; +import static org.junit.jupiter.api.parallel.ResourceAccessMode.READ_WRITE; +import static org.junit.jupiter.api.parallel.Resources.SYSTEM_PROPERTIES; /** * @author charlie (Dmitry Baev). @@ -713,6 +716,23 @@ void shouldHandleAmbigiousStepsExceptions() { ); } + @ResourceLock(value = SYSTEM_PROPERTIES, mode = READ_WRITE) + @SystemProperty(name = "allure.label.x-provided", value = "cucumberjvm5-test-provided") + @Test + void shouldSupportProvidedLabels() { + final AllureResultsWriterStub results = new AllureResultsWriterStub(); + runFeature(results, "features/simple.feature"); + + final List testResults = results.getTestResults(); + assertThat(testResults) + .hasSize(1) + .flatExtracting(TestResult::getLabels) + .extracting(Label::getName, Label::getValue) + .contains( + tuple("x-provided", "cucumberjvm5-test-provided") + ); + } + private byte runFeature(final AllureResultsWriterStub writer, final String featureResource, final String... moreOptions) { diff --git a/allure-cucumber6-jvm/src/main/java/io/qameta/allure/cucumber6jvm/LabelBuilder.java b/allure-cucumber6-jvm/src/main/java/io/qameta/allure/cucumber6jvm/LabelBuilder.java index 3a51a15dc..7058c714b 100644 --- a/allure-cucumber6-jvm/src/main/java/io/qameta/allure/cucumber6jvm/LabelBuilder.java +++ b/allure-cucumber6-jvm/src/main/java/io/qameta/allure/cucumber6jvm/LabelBuilder.java @@ -112,6 +112,7 @@ class LabelBuilder { final String featureName = feature.getName(); final URI uri = scenario.getUri(); + getScenarioLabels().addAll(ResultsUtils.getProvidedLabels()); getScenarioLabels().addAll(Arrays.asList( createHostLabel(), createThreadLabel(), diff --git a/allure-cucumber6-jvm/src/test/java/io/qameta/allure/cucumber6jvm/AllureCucumber6JvmTest.java b/allure-cucumber6-jvm/src/test/java/io/qameta/allure/cucumber6jvm/AllureCucumber6JvmTest.java index fdc541590..98c79cce8 100644 --- a/allure-cucumber6-jvm/src/test/java/io/qameta/allure/cucumber6jvm/AllureCucumber6JvmTest.java +++ b/allure-cucumber6-jvm/src/test/java/io/qameta/allure/cucumber6jvm/AllureCucumber6JvmTest.java @@ -41,6 +41,7 @@ import io.qameta.allure.test.AllureResultsWriterStub; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.jupiter.api.parallel.ResourceLock; import java.nio.charset.StandardCharsets; import java.time.Clock; @@ -55,6 +56,8 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.tuple; +import static org.junit.jupiter.api.parallel.ResourceAccessMode.READ_WRITE; +import static org.junit.jupiter.api.parallel.Resources.SYSTEM_PROPERTIES; /** * @author charlie (Dmitry Baev). @@ -713,6 +716,23 @@ void shouldHandleAmbigiousStepsExceptions() { ); } + @ResourceLock(value = SYSTEM_PROPERTIES, mode = READ_WRITE) + @SystemProperty(name = "allure.label.x-provided", value = "cucumberjvm6-test-provided") + @Test + void shouldSupportProvidedLabels() { + final AllureResultsWriterStub results = new AllureResultsWriterStub(); + runFeature(results, "features/simple.feature"); + + final List testResults = results.getTestResults(); + assertThat(testResults) + .hasSize(1) + .flatExtracting(TestResult::getLabels) + .extracting(Label::getName, Label::getValue) + .contains( + tuple("x-provided", "cucumberjvm6-test-provided") + ); + } + private byte runFeature(final AllureResultsWriterStub writer, final String featureResource, final String... moreOptions) {