From d71924307c4a6cf0e4c93fc5c848872bd87afaa7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Staudt?= Date: Thu, 20 Feb 2020 18:08:39 +0100 Subject: [PATCH 1/2] Fixed issues with ignoredFiles on Junit and Spock; Fixes gh-1326 (#1328) --- .../builder/JUnit4IgnoreMethodAnnotation.java | 2 +- .../builder/JUnit5IgnoreMethodAnnotation.java | 2 +- .../builder/SpockIgnoreMethodAnnotation.java | 2 +- .../builder/SingleTestGeneratorSpec.groovy | 52 +++++++++++++++---- 4 files changed, 46 insertions(+), 12 deletions(-) diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnit4IgnoreMethodAnnotation.java b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnit4IgnoreMethodAnnotation.java index 6708edd1c5..dc0b14beb2 100644 --- a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnit4IgnoreMethodAnnotation.java +++ b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnit4IgnoreMethodAnnotation.java @@ -46,7 +46,7 @@ class JUnit4IgnoreMethodAnnotation implements MethodAnnotations { public boolean accept(SingleContractMetadata singleContractMetadata) { return this.generatedClassMetaData.configProperties .getTestFramework() == TestFramework.JUNIT - && this.generatedClassMetaData.isAnyIgnored(); + && singleContractMetadata.getContractMetadata().isIgnored(); } } diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnit5IgnoreMethodAnnotation.java b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnit5IgnoreMethodAnnotation.java index 9c426cbe90..a425d3bee4 100644 --- a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnit5IgnoreMethodAnnotation.java +++ b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnit5IgnoreMethodAnnotation.java @@ -46,7 +46,7 @@ class JUnit5IgnoreMethodAnnotation implements MethodAnnotations { public boolean accept(SingleContractMetadata singleContractMetadata) { return this.generatedClassMetaData.configProperties .getTestFramework() == TestFramework.JUNIT5 - && this.generatedClassMetaData.isAnyIgnored(); + && singleContractMetadata.getContractMetadata().isIgnored(); } } diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockIgnoreMethodAnnotation.java b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockIgnoreMethodAnnotation.java index 59d260e244..1ad055a831 100644 --- a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockIgnoreMethodAnnotation.java +++ b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockIgnoreMethodAnnotation.java @@ -46,7 +46,7 @@ class SpockIgnoreMethodAnnotation implements MethodAnnotations { public boolean accept(SingleContractMetadata singleContractMetadata) { return this.generatedClassMetaData.configProperties .getTestFramework() == TestFramework.SPOCK - && this.generatedClassMetaData.isAnyIgnored(); + && singleContractMetadata.getContractMetadata().isIgnored(); } } diff --git a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/SingleTestGeneratorSpec.groovy b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/SingleTestGeneratorSpec.groovy index b5ed0c55f4..22db45d03c 100644 --- a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/SingleTestGeneratorSpec.groovy +++ b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/SingleTestGeneratorSpec.groovy @@ -28,7 +28,6 @@ import org.springframework.cloud.contract.verifier.config.TestFramework import org.springframework.cloud.contract.verifier.file.ContractMetadata import org.springframework.cloud.contract.verifier.util.SyntaxChecker import org.springframework.util.FileSystemUtils -import org.springframework.util.StringUtils import static org.springframework.cloud.contract.verifier.config.TestFramework.JUNIT import static org.springframework.cloud.contract.verifier.config.TestFramework.JUNIT5 @@ -38,6 +37,7 @@ import static org.springframework.cloud.contract.verifier.config.TestMode.EXPLIC import static org.springframework.cloud.contract.verifier.config.TestMode.JAXRSCLIENT import static org.springframework.cloud.contract.verifier.config.TestMode.MOCKMVC import static org.springframework.cloud.contract.verifier.util.ContractVerifierDslConverter.convertAsCollection +import static org.springframework.util.StringUtils.countOccurrencesOf class SingleTestGeneratorSpec extends Specification { @@ -279,14 +279,14 @@ class SingleTestGeneratorSpec extends Specification { textAssertion(clazz) where: testFramework | mode | classStrings | asserter | textAssertion - JUNIT | MOCKMVC | mockMvcJUnitRestAssured3ClassStrings | JAVA_ASSERTER | { String test -> StringUtils.countOccurrencesOf(test, '\t\t\tMockMvcRequestSpecification') == 2 } - JUNIT | EXPLICIT | explicitJUnitRestAssured3ClassStrings | JAVA_ASSERTER | { String test -> StringUtils.countOccurrencesOf(test, '\t\t\tMockMvcRequestSpecification') == 2 } - JUNIT5 | MOCKMVC | mockMvcJUnit5RestAssured3ClassStrings | JAVA_ASSERTER | { String test -> StringUtils.countOccurrencesOf(test, '\t\t\tMockMvcRequestSpecification') == 2 } - JUNIT5 | EXPLICIT | explicitJUnit5RestAssured3ClassStrings | JAVA_ASSERTER | { String test -> StringUtils.countOccurrencesOf(test, '\t\t\tMockMvcRequestSpecification') == 2 } - TESTNG | MOCKMVC | mockMvcTestNGRestAssured3ClassStrings | JAVA_ASSERTER | { String test -> StringUtils.countOccurrencesOf(test, '\t\t\tMockMvcRequestSpecification') == 2 } - TESTNG | EXPLICIT | explicitTestNGRestAssured3ClassStrings | JAVA_ASSERTER | { String test -> StringUtils.countOccurrencesOf(test, '\t\t\tMockMvcRequestSpecification') == 2 } - SPOCK | MOCKMVC | spockClassRestAssured3Strings | GROOVY_ASSERTER | { String test -> StringUtils.countOccurrencesOf(test, '\t\t\tMockMvcRequestSpecification') == 2 } - SPOCK | EXPLICIT | explicitSpockRestAssured2ClassStrings | GROOVY_ASSERTER | { String test -> StringUtils.countOccurrencesOf(test, '\t\t\tMockMvcRequestSpecification request') == 2 } + JUNIT | MOCKMVC | mockMvcJUnitRestAssured3ClassStrings | JAVA_ASSERTER | { String test -> countOccurrencesOf(test, '\t\t\tMockMvcRequestSpecification') == 2 } + JUNIT | EXPLICIT | explicitJUnitRestAssured3ClassStrings | JAVA_ASSERTER | { String test -> countOccurrencesOf(test, '\t\t\tMockMvcRequestSpecification') == 2 } + JUNIT5 | MOCKMVC | mockMvcJUnit5RestAssured3ClassStrings | JAVA_ASSERTER | { String test -> countOccurrencesOf(test, '\t\t\tMockMvcRequestSpecification') == 2 } + JUNIT5 | EXPLICIT | explicitJUnit5RestAssured3ClassStrings | JAVA_ASSERTER | { String test -> countOccurrencesOf(test, '\t\t\tMockMvcRequestSpecification') == 2 } + TESTNG | MOCKMVC | mockMvcTestNGRestAssured3ClassStrings | JAVA_ASSERTER | { String test -> countOccurrencesOf(test, '\t\t\tMockMvcRequestSpecification') == 2 } + TESTNG | EXPLICIT | explicitTestNGRestAssured3ClassStrings | JAVA_ASSERTER | { String test -> countOccurrencesOf(test, '\t\t\tMockMvcRequestSpecification') == 2 } + SPOCK | MOCKMVC | spockClassRestAssured3Strings | GROOVY_ASSERTER | { String test -> countOccurrencesOf(test, '\t\t\tMockMvcRequestSpecification') == 2 } + SPOCK | EXPLICIT | explicitSpockRestAssured2ClassStrings | GROOVY_ASSERTER | { String test -> countOccurrencesOf(test, '\t\t\tMockMvcRequestSpecification request') == 2 } } def 'should build JaxRs test class for #testFramework'() { @@ -409,6 +409,40 @@ class SingleTestGeneratorSpec extends Specification { SPOCK | spockClassRestAssured3Strings | '@Ignore' | GROOVY_ASSERTER } + @Issue('#1326') + def 'should only ignore test for ignored contract if contract is ignored by configuration #testFramework'() { + given: + File fileToIgnore = tmpFolder.newFile("toIgnore.groovy") + writeContract(fileToIgnore) + ContractMetadata contractToIgnore = new ContractMetadata(fileToIgnore.toPath(), + true, 2, 1, convertAsCollection(new File('/'), fileToIgnore)) + and: + File fileToCheck = tmpFolder.newFile("toCheck.groovy") + writeContract(fileToCheck) + ContractMetadata contractToCheck = new ContractMetadata(fileToCheck.toPath(), + false, 2, 2, convertAsCollection(new File('/'), fileToCheck)) + and: + ContractVerifierConfigProperties properties = new ContractVerifierConfigProperties() + properties.testFramework = testFramework + properties.ignoredFiles = [fileToIgnore.name] + and: + JavaTestGenerator testGenerator = new JavaTestGenerator() + + when: + String clazz = testGenerator.buildClass(properties, [contractToCheck, contractToIgnore], 'com/foo', + new SingleTestGenerator.GeneratedClassData('test', 'test', file.toPath())) + + then: + countOccurrencesOf(clazz, ignoreAnnotation) == 1 + + where: + testFramework | ignoreAnnotation + JUNIT | '@Ignore' + JUNIT5 | '@Disabled' + TESTNG | '@Test(enabled = false)' + SPOCK | '@Ignore' + } + def 'should not allow the usage of ignore annotations for TestNG '() { given: TestFramework testNG = TESTNG From fbf9def4c18d296a204c974e83cb8dc06ae3a1f4 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Fri, 21 Feb 2020 08:28:50 +0100 Subject: [PATCH 2/2] Upgraded base image; fixes gh-1330 --- docker/spring-cloud-contract-docker/Dockerfile | 2 +- docker/spring-cloud-contract-stub-runner-docker/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/spring-cloud-contract-docker/Dockerfile b/docker/spring-cloud-contract-docker/Dockerfile index d3d78c27f1..e14551dc5e 100644 --- a/docker/spring-cloud-contract-docker/Dockerfile +++ b/docker/spring-cloud-contract-docker/Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:18.10 +FROM ubuntu:19.10 ARG SDKMAN_JAVA_INSTALLATION=8.0.242.hs-adpt diff --git a/docker/spring-cloud-contract-stub-runner-docker/Dockerfile b/docker/spring-cloud-contract-stub-runner-docker/Dockerfile index 9b45ecacfa..e33e16c400 100644 --- a/docker/spring-cloud-contract-stub-runner-docker/Dockerfile +++ b/docker/spring-cloud-contract-stub-runner-docker/Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:18.10 +FROM ubuntu:19.10 ARG SDKMAN_JAVA_INSTALLATION=8.0.242.hs-adpt