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 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 8ec6d853c4..3e5f07ff90 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 3942953b29..0e2b16b0d0 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 cb3d622c5f..852059afc8 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 0331f03f6b..6ba35fba77 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