From 233d6996a67d52d416e1be53185d7fcb8e6a665a Mon Sep 17 00:00:00 2001 From: qameta-ci Date: Wed, 8 Dec 2021 12:36:55 +0000 Subject: [PATCH 1/3] set next development version 2.18 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 358b0681a..08b7c16d4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -version=2.17.1 +version=2.18-SNAPSHOT org.gradle.daemon=true org.gradle.parallel=true From 5eead116dbfbcfb3d6ca88de9ff08c8e309815ec Mon Sep 17 00:00:00 2001 From: Dmitry Baev Date: Mon, 13 Dec 2021 18:12:24 +0300 Subject: [PATCH 2/3] fix failure related to blank string parameters in junit 5 (fixes #697, via #698) --- .../junitplatform/AllureJunitPlatform.java | 36 +++++++++++++--- .../io/qameta/allure/junit5/AllureJunit5.java | 29 +++++++++---- .../allure/junit5/AllureJunit5Test.java | 18 +++++++- ...ParameterisedBlankParameterValueTests.java | 41 +++++++++++++++++++ .../ParameterisedPrimitivesTests.java | 5 ++- .../src/test/resources/allure.properties | 1 + 6 files changed, 115 insertions(+), 15 deletions(-) create mode 100644 allure-junit5/src/test/java/io/qameta/allure/junit5/features/ParameterisedBlankParameterValueTests.java diff --git a/allure-junit-platform/src/main/java/io/qameta/allure/junitplatform/AllureJunitPlatform.java b/allure-junit-platform/src/main/java/io/qameta/allure/junitplatform/AllureJunitPlatform.java index 39bbe94f4..ae12f4eb3 100644 --- a/allure-junit-platform/src/main/java/io/qameta/allure/junitplatform/AllureJunitPlatform.java +++ b/allure-junit-platform/src/main/java/io/qameta/allure/junitplatform/AllureJunitPlatform.java @@ -50,6 +50,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -90,6 +91,9 @@ }) public class AllureJunitPlatform implements TestExecutionListener { + public static final String ALLURE_REPORT_ENTRY_BLANK_PREFIX + = "ALLURE_REPORT_ENTRY_BLANK_PREFIX__"; + public static final String ALLURE_PARAMETER = "allure.parameter"; public static final String ALLURE_PARAMETER_VALUE_KEY = "value"; public static final String ALLURE_PARAMETER_MODE_KEY = "mode"; @@ -195,11 +199,11 @@ public void executionSkipped(final TestIdentifier testIdentifier, ); } - @SuppressWarnings({"ReturnCount", "PMD.NcssCount", "CyclomaticComplexity"}) + @SuppressWarnings({"ReturnCount", "PMD.NcssCount", "CyclomaticComplexity" }) @Override public void reportingEntryPublished(final TestIdentifier testIdentifier, final ReportEntry entry) { - final Map keyValuePairs = entry.getKeyValuePairs(); + final Map keyValuePairs = unwrap(entry.getKeyValuePairs()); if (keyValuePairs.containsKey(ALLURE_FIXTURE)) { processFixtureEvent(testIdentifier, keyValuePairs); return; @@ -220,11 +224,33 @@ public void reportingEntryPublished(final TestIdentifier testIdentifier, } + private Map unwrap(final Map data) { + final Map res = new HashMap<>(); + data.forEach((key, value) -> { + if (Objects.nonNull(value) + && value.trim().isEmpty() + && value.startsWith(ALLURE_REPORT_ENTRY_BLANK_PREFIX)) { + res.put(key, value.substring(ALLURE_REPORT_ENTRY_BLANK_PREFIX.length())); + } else { + res.put(key, value); + } + } + ); + return res; + } + private void processParameterEvent(final Map keyValuePairs) { final String name = keyValuePairs.get(ALLURE_PARAMETER); final String value = keyValuePairs.get(ALLURE_PARAMETER_VALUE_KEY); - - final Parameter parameter = ResultsUtils.createParameter(name, value); + final Parameter parameter; + if (Objects.nonNull(value) && value.startsWith(ALLURE_REPORT_ENTRY_BLANK_PREFIX)) { + parameter = ResultsUtils.createParameter( + name, + value.substring(ALLURE_REPORT_ENTRY_BLANK_PREFIX.length()) + ); + } else { + parameter = ResultsUtils.createParameter(name, value); + } if (keyValuePairs.containsKey(ALLURE_PARAMETER_MODE_KEY)) { final String modeString = keyValuePairs.get(ALLURE_PARAMETER_MODE_KEY); Stream.of(Parameter.Mode.values()) @@ -244,7 +270,7 @@ private void processParameterEvent(final Map keyValuePairs) { ); } - @SuppressWarnings({"ReturnCount"}) + @SuppressWarnings({"ReturnCount" }) private void processFixtureEvent(final TestIdentifier testIdentifier, final Map keyValuePairs) { final String type = keyValuePairs.get(ALLURE_FIXTURE); diff --git a/allure-junit5/src/main/java/io/qameta/allure/junit5/AllureJunit5.java b/allure-junit5/src/main/java/io/qameta/allure/junit5/AllureJunit5.java index 4f559d27e..f0fed32a9 100644 --- a/allure-junit5/src/main/java/io/qameta/allure/junit5/AllureJunit5.java +++ b/allure-junit5/src/main/java/io/qameta/allure/junit5/AllureJunit5.java @@ -28,6 +28,7 @@ import java.lang.reflect.Parameter; import java.util.HashMap; import java.util.Map; +import java.util.Objects; import java.util.Optional; import java.util.UUID; import java.util.stream.Stream; @@ -37,6 +38,7 @@ import static io.qameta.allure.junitplatform.AllureJunitPlatform.ALLURE_PARAMETER_EXCLUDED_KEY; import static io.qameta.allure.junitplatform.AllureJunitPlatform.ALLURE_PARAMETER_MODE_KEY; import static io.qameta.allure.junitplatform.AllureJunitPlatform.ALLURE_PARAMETER_VALUE_KEY; +import static io.qameta.allure.junitplatform.AllureJunitPlatform.ALLURE_REPORT_ENTRY_BLANK_PREFIX; import static io.qameta.allure.junitplatform.AllureJunitPlatform.EVENT_FAILURE; import static io.qameta.allure.junitplatform.AllureJunitPlatform.EVENT_START; import static io.qameta.allure.junitplatform.AllureJunitPlatform.EVENT_STOP; @@ -86,7 +88,7 @@ private void sendParameterEvent(final ReflectiveInvocationContext invoca map.put(ALLURE_PARAMETER_EXCLUDED_KEY, Boolean.toString(param.excluded())); }); - extensionContext.publishReportEntry(map); + extensionContext.publishReportEntry(wrap(map)); } } @@ -128,22 +130,22 @@ protected void processFixture(final String type, final ExtensionContext extensionContext) throws Throwable { final String uuid = UUID.randomUUID().toString(); try { - extensionContext.publishReportEntry(buildStartEvent( + extensionContext.publishReportEntry(wrap(buildStartEvent( type, uuid, invocationContext.getExecutable() - )); + ))); invocation.proceed(); - extensionContext.publishReportEntry(buildStopEvent( + extensionContext.publishReportEntry(wrap(buildStopEvent( type, uuid - )); + ))); } catch (Throwable throwable) { - extensionContext.publishReportEntry(buildFailureEvent( + extensionContext.publishReportEntry(wrap(buildFailureEvent( type, uuid, throwable - )); + ))); throw throwable; } } @@ -184,4 +186,17 @@ public Map buildFailureEvent(final String type, maybeDetails.map(StatusDetails::getTrace).ifPresent(trace -> map.put("trace", trace)); return map; } + + public Map wrap(final Map data) { + final Map res = new HashMap<>(); + data.forEach((key, value) -> { + if (Objects.isNull(value) || value.trim().isEmpty()) { + res.put(key, ALLURE_REPORT_ENTRY_BLANK_PREFIX + value); + } else { + res.put(key, value); + } + } + ); + return res; + } } diff --git a/allure-junit5/src/test/java/io/qameta/allure/junit5/AllureJunit5Test.java b/allure-junit5/src/test/java/io/qameta/allure/junit5/AllureJunit5Test.java index cec643536..b1f457957 100644 --- a/allure-junit5/src/test/java/io/qameta/allure/junit5/AllureJunit5Test.java +++ b/allure-junit5/src/test/java/io/qameta/allure/junit5/AllureJunit5Test.java @@ -17,6 +17,7 @@ import io.qameta.allure.Allure; import io.qameta.allure.AllureLifecycle; +import io.qameta.allure.Issue; import io.qameta.allure.Step; import io.qameta.allure.aspects.AttachmentsAspects; import io.qameta.allure.aspects.StepsAspects; @@ -24,6 +25,7 @@ import io.qameta.allure.junit5.features.AllFixtureSupport; import io.qameta.allure.junit5.features.BeforeEachFixtureFailureSupport; import io.qameta.allure.junit5.features.EachFixtureSupport; +import io.qameta.allure.junit5.features.ParameterisedBlankParameterValueTests; import io.qameta.allure.junit5.features.ParameterisedPrimitivesTests; import io.qameta.allure.junit5.features.ParameterisedTests; import io.qameta.allure.junit5.features.SkipOtherInjectables; @@ -57,6 +59,20 @@ @AllureFeatures.Fixtures class AllureJunit5Test { + @Issue("697") + @Test + void shouldSupportEmptyStringParameters() { + final AllureResults results = runClasses(ParameterisedBlankParameterValueTests.class); + + assertThat(results.getTestResults()) + .extracting(TestResult::getName, tr -> tr.getParameters().size()) + .containsExactlyInAnyOrder( + tuple("first(String) [1] value=", 2), + tuple("first(String) [2] value= ", 2), + tuple("first(String) [3] value=null", 2) + ); + } + @Test void shouldSupportPrimitiveTypeParameters() { final AllureResults results = runClasses(ParameterisedPrimitivesTests.class); @@ -82,7 +98,7 @@ void shouldSupportPrimitiveTypeParameters() { tuple("chars(char) [3] value=c", 2), tuple("longs(long) [1] value=0", 2), tuple("longs(long) [2] value=1", 2), - tuple("nullMethodSource(String) [1] value=null", 2), + tuple("nullMethodSource(String, Long) [1] stringValue=null, longValue=null", 3), tuple("doubles(double) [1] value=0.1", 2), tuple("doubles(double) [2] value=0.01", 2), tuple("booleans(boolean) [1] value=true", 2), diff --git a/allure-junit5/src/test/java/io/qameta/allure/junit5/features/ParameterisedBlankParameterValueTests.java b/allure-junit5/src/test/java/io/qameta/allure/junit5/features/ParameterisedBlankParameterValueTests.java new file mode 100644 index 000000000..6a5b1eab5 --- /dev/null +++ b/allure-junit5/src/test/java/io/qameta/allure/junit5/features/ParameterisedBlankParameterValueTests.java @@ -0,0 +1,41 @@ +/* + * Copyright 2019 Qameta Software OÜ + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.qameta.allure.junit5.features; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import java.util.stream.Stream; + +/** + * @author charlie (Dmitry Baev). + */ +public class ParameterisedBlankParameterValueTests { + + @ParameterizedTest + @MethodSource("arguments") + void first(String value) { + } + + static Stream arguments() { + return Stream.of( + "", + " ", + null + ); + } + +} diff --git a/allure-junit5/src/test/java/io/qameta/allure/junit5/features/ParameterisedPrimitivesTests.java b/allure-junit5/src/test/java/io/qameta/allure/junit5/features/ParameterisedPrimitivesTests.java index d46252a9a..a257a3581 100644 --- a/allure-junit5/src/test/java/io/qameta/allure/junit5/features/ParameterisedPrimitivesTests.java +++ b/allure-junit5/src/test/java/io/qameta/allure/junit5/features/ParameterisedPrimitivesTests.java @@ -74,7 +74,8 @@ void booleansMethodSource(final boolean a, final boolean b) { @ParameterizedTest @MethodSource("nulls") - void nullMethodSource(final String value) { + void nullMethodSource(final String stringValue, + final Long longValue) { } static Stream arguments() { @@ -88,7 +89,7 @@ static Stream arguments() { static Stream nulls() { return Stream.of( - Arguments.of((String) null) + Arguments.of(null, null) ); } diff --git a/allure-junit5/src/test/resources/allure.properties b/allure-junit5/src/test/resources/allure.properties index 9c0b0a2d7..4c9c3b8ee 100644 --- a/allure-junit5/src/test/resources/allure.properties +++ b/allure-junit5/src/test/resources/allure.properties @@ -1,2 +1,3 @@ allure.results.directory=build/allure-results allure.label.epic=#project.description# +allure.link.issue.pattern=https://github.com/allure-framework/allure-java/issues/{} From e55d17cc352c1311638112fb915fa065be261d2b Mon Sep 17 00:00:00 2001 From: qameta-ci Date: Mon, 13 Dec 2021 15:19:08 +0000 Subject: [PATCH 3/3] release 2.17.2 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 08b7c16d4..efc4eeb91 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -version=2.18-SNAPSHOT +version=2.17.2 org.gradle.daemon=true org.gradle.parallel=true