Makes in progress contract tests disabled
without this change all tests from a package were not generated if at least one was in progress with this change all tests are generated but those in progress are disabled / ignored fixes gh-1449
This commit is contained in:
@@ -131,7 +131,7 @@ class TestGenerator {
|
||||
if (!inProgress.isEmpty() && configProperties.failOnInProgress) {
|
||||
throw new IllegalStateException("In progress contracts found in paths [" + inProgress.collect { it.key.toString() }.join(",") + "] and the switch [failOnInProgress] is set to [true]. Either unmark those contracts as in progress, or set the switch to [false].")
|
||||
}
|
||||
processAllNotInProgress(contracts,basePackageName)
|
||||
processAll(contracts, basePackageName)
|
||||
}
|
||||
|
||||
@CompileDynamic
|
||||
@@ -142,9 +142,8 @@ class TestGenerator {
|
||||
|
||||
@PackageScope
|
||||
@CompileDynamic
|
||||
Set<Map.Entry<Path,List<ContractMetadata>>> processAllNotInProgress(MultiValueMap<Path,ContractMetadata> contracts, String basePackageName) {
|
||||
Set<Map.Entry<Path,List<ContractMetadata>>> processAll(MultiValueMap<Path,ContractMetadata> contracts, String basePackageName) {
|
||||
contracts.entrySet()
|
||||
.findAll { Map.Entry<Path, List<ContractMetadata>> entry -> !entry.value.any { it.anyInProgress() }}
|
||||
.each {
|
||||
Map.Entry<Path, List<ContractMetadata>> entry ->
|
||||
processIncludedDirectory(
|
||||
@@ -170,6 +169,7 @@ class TestGenerator {
|
||||
if (contracts.size()) {
|
||||
def className = afterLast(includedDirectoryRelativePath.toString(), File.separator) + resolveNameSuffix()
|
||||
def convertedClassName = convertIllegalPackageChars(className)
|
||||
convertedClassName = ensureNameDoesNotStartWithNumber(convertedClassName)
|
||||
def packageName =
|
||||
buildPackage(basePackageNameForClass, includedDirectoryRelativePath)
|
||||
Path dir = saver.generateTestBaseDir(basePackageNameForClass,
|
||||
@@ -184,6 +184,10 @@ class TestGenerator {
|
||||
}
|
||||
}
|
||||
|
||||
private String ensureNameDoesNotStartWithNumber(String convertedClassName) {
|
||||
return convertedClassName.matches("[0-9]+.*") ? ("_" + convertedClassName) : convertedClassName
|
||||
}
|
||||
|
||||
private String resolveNameSuffix() {
|
||||
return configProperties.nameSuffixForTests ?: configProperties.testFramework.classNameSuffix
|
||||
}
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
/*
|
||||
* Copyright 2013-2020 the original author or authors.
|
||||
*
|
||||
* 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
|
||||
*
|
||||
* https://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 org.springframework.cloud.contract.verifier.builder;
|
||||
|
||||
import org.springframework.cloud.contract.verifier.file.SingleContractMetadata;
|
||||
|
||||
class InProgressContractMethodPreProcessor implements MethodPreProcessor {
|
||||
|
||||
@Override
|
||||
public boolean shouldContinue() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean accept(SingleContractMetadata metadata) {
|
||||
return metadata.isInProgress();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -17,7 +17,6 @@
|
||||
package org.springframework.cloud.contract.verifier.builder;
|
||||
|
||||
import org.springframework.cloud.contract.verifier.config.TestFramework;
|
||||
import org.springframework.cloud.contract.verifier.file.SingleContractMetadata;
|
||||
|
||||
class JUnit4IgnoreImports implements Imports {
|
||||
|
||||
@@ -42,9 +41,9 @@ class JUnit4IgnoreImports implements Imports {
|
||||
return this.generatedClassMetaData.configProperties
|
||||
.getTestFramework() == TestFramework.JUNIT
|
||||
&& this.generatedClassMetaData.listOfFiles.stream()
|
||||
.anyMatch(metadata -> metadata.isIgnored()
|
||||
|| metadata.getConvertedContractWithMetadata().stream()
|
||||
.anyMatch(SingleContractMetadata::isIgnored));
|
||||
.anyMatch(metadata -> metadata.isIgnored() || metadata
|
||||
.getConvertedContractWithMetadata().stream()
|
||||
.anyMatch(m -> m.isIgnored() || m.isInProgress()));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -47,7 +47,8 @@ class JUnit4IgnoreMethodAnnotation implements MethodAnnotations {
|
||||
return this.generatedClassMetaData.configProperties
|
||||
.getTestFramework() == TestFramework.JUNIT
|
||||
&& (singleContractMetadata.getContractMetadata().isIgnored()
|
||||
|| singleContractMetadata.getContract().isIgnored());
|
||||
|| singleContractMetadata.getContract().isIgnored()
|
||||
|| singleContractMetadata.getContract().isInProgress());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
package org.springframework.cloud.contract.verifier.builder;
|
||||
|
||||
import org.springframework.cloud.contract.verifier.config.TestFramework;
|
||||
import org.springframework.cloud.contract.verifier.file.SingleContractMetadata;
|
||||
|
||||
class JUnit5IgnoreImports implements Imports {
|
||||
|
||||
@@ -42,9 +41,9 @@ class JUnit5IgnoreImports implements Imports {
|
||||
return this.generatedClassMetaData.configProperties
|
||||
.getTestFramework() == TestFramework.JUNIT5
|
||||
&& this.generatedClassMetaData.listOfFiles.stream()
|
||||
.anyMatch(metadata -> metadata.isIgnored()
|
||||
|| metadata.getConvertedContractWithMetadata().stream()
|
||||
.anyMatch(SingleContractMetadata::isIgnored));
|
||||
.anyMatch(metadata -> metadata.isIgnored() || metadata
|
||||
.getConvertedContractWithMetadata().stream()
|
||||
.anyMatch(m -> m.isIgnored() || m.isInProgress()));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -47,7 +47,8 @@ class JUnit5IgnoreMethodAnnotation implements MethodAnnotations {
|
||||
return this.generatedClassMetaData.configProperties
|
||||
.getTestFramework() == TestFramework.JUNIT5
|
||||
&& (singleContractMetadata.getContractMetadata().isIgnored()
|
||||
|| singleContractMetadata.getContract().isIgnored());
|
||||
|| singleContractMetadata.getContract().isIgnored()
|
||||
|| singleContractMetadata.getContract().isInProgress());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -93,7 +93,6 @@ class SingleMethodBuilder {
|
||||
SingleMethodBuilder restAssured() {
|
||||
return given(
|
||||
new JavaRestAssuredGiven(this.blockBuilder, this.generatedClassMetaData))
|
||||
.methodPreProcessor(new InProgressContractMethodPreProcessor())
|
||||
.given(new SpockRestAssuredGiven(this.blockBuilder,
|
||||
this.generatedClassMetaData))
|
||||
.when(new JavaRestAssuredWhen(this.blockBuilder,
|
||||
@@ -109,8 +108,7 @@ class SingleMethodBuilder {
|
||||
}
|
||||
|
||||
SingleMethodBuilder jaxRs() {
|
||||
return methodPreProcessor(new InProgressContractMethodPreProcessor())
|
||||
.given(new JaxRsGiven(this.generatedClassMetaData))
|
||||
return given(new JaxRsGiven(this.generatedClassMetaData))
|
||||
.when(new JavaJaxRsWhen(this.blockBuilder, this.generatedClassMetaData))
|
||||
.when(new SpockJaxRsWhen(this.blockBuilder, this.generatedClassMetaData))
|
||||
.then(new JavaJaxRsThen(this.blockBuilder, this.generatedClassMetaData))
|
||||
@@ -121,8 +119,7 @@ class SingleMethodBuilder {
|
||||
|
||||
SingleMethodBuilder messaging() {
|
||||
// @formatter:off
|
||||
return methodPreProcessor(new InProgressContractMethodPreProcessor())
|
||||
.given(new JavaMessagingGiven(this.blockBuilder, this.generatedClassMetaData))
|
||||
return given(new JavaMessagingGiven(this.blockBuilder, this.generatedClassMetaData))
|
||||
.given(new SpockMessagingGiven(this.blockBuilder, this.generatedClassMetaData))
|
||||
.when(new MessagingWhen(this.blockBuilder, this.generatedClassMetaData))
|
||||
.then(new JavaMessagingWithBodyThen(this.blockBuilder,
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
package org.springframework.cloud.contract.verifier.builder;
|
||||
|
||||
import org.springframework.cloud.contract.verifier.config.TestFramework;
|
||||
import org.springframework.cloud.contract.verifier.file.SingleContractMetadata;
|
||||
|
||||
class SpockIgnoreImports implements Imports {
|
||||
|
||||
@@ -42,9 +41,9 @@ class SpockIgnoreImports implements Imports {
|
||||
return this.generatedClassMetaData.configProperties
|
||||
.getTestFramework() == TestFramework.SPOCK
|
||||
&& this.generatedClassMetaData.listOfFiles.stream()
|
||||
.anyMatch(metadata -> metadata.isIgnored()
|
||||
|| metadata.getConvertedContractWithMetadata().stream()
|
||||
.anyMatch(SingleContractMetadata::isIgnored));
|
||||
.anyMatch(metadata -> metadata.isIgnored() || metadata
|
||||
.getConvertedContractWithMetadata().stream()
|
||||
.anyMatch(m -> m.isIgnored() || m.isInProgress()));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -47,7 +47,8 @@ class SpockIgnoreMethodAnnotation implements MethodAnnotations {
|
||||
return this.generatedClassMetaData.configProperties
|
||||
.getTestFramework() == TestFramework.SPOCK
|
||||
&& (singleContractMetadata.getContractMetadata().isIgnored()
|
||||
|| singleContractMetadata.getContract().isIgnored());
|
||||
|| singleContractMetadata.getContract().isIgnored()
|
||||
|| singleContractMetadata.getContract().isInProgress());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -40,6 +40,7 @@ import org.springframework.util.Assert
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@CompileStatic
|
||||
@ToString(includes = ["path", "ignored", "order"])
|
||||
class ContractMetadata {
|
||||
/**
|
||||
* Path to the file
|
||||
@@ -183,7 +184,7 @@ class SingleContractMetadata {
|
||||
}
|
||||
|
||||
boolean isIgnored() {
|
||||
return this.contract.ignored || this.contractMetadata.ignored
|
||||
return this.contract.ignored || this.contract.inProgress || this.contractMetadata.ignored
|
||||
}
|
||||
|
||||
boolean isXml() {
|
||||
|
||||
@@ -113,7 +113,7 @@ public class TestGeneratorTests {
|
||||
TestGenerator testGenerator = new TestGenerator(properties, singleTestGenerator,
|
||||
fileSaver, scanner) {
|
||||
@Override
|
||||
Set<Map.Entry<Path, List<ContractMetadata>>> processAllNotInProgress(
|
||||
Set<Map.Entry<Path, List<ContractMetadata>>> processAll(
|
||||
MultiValueMap<Path, ContractMetadata> contracts,
|
||||
String basePackageName) {
|
||||
return null;
|
||||
|
||||
@@ -3176,12 +3176,14 @@ DocumentContext parsedJson = JsonPath.parse(json);
|
||||
test.contains('''httpContractNotInProgress''')
|
||||
test.contains('''messagingContractNotInProgress''')
|
||||
and:
|
||||
!test.contains('''httpContractInProgress''')
|
||||
!test.contains('''messagingContractInProgress''')
|
||||
test.contains('''httpContractInProgress''')
|
||||
test.contains('''messagingContractInProgress''')
|
||||
test.count("@Ignore") == 2 || test.count("@Disabled") == 2 || test.count("@Test(enabled = false)") == 2
|
||||
where:
|
||||
methodBuilderName | methodBuilder
|
||||
"spock" | { properties.testFramework = TestFramework.SPOCK }
|
||||
"testng" | { properties.testFramework = TestFramework.TESTNG }
|
||||
"junit5" | { properties.testFramework = TestFramework.JUNIT5 }
|
||||
"mockmvc" | { properties.testMode = TestMode.MOCKMVC }
|
||||
"jaxrs-spock" | {
|
||||
properties.testFramework = TestFramework.SPOCK; properties.testMode = TestMode.JAXRSCLIENT
|
||||
|
||||
@@ -289,7 +289,7 @@ public class WireMockConfiguration implements SmartLifecycle {
|
||||
private int httpsPort() {
|
||||
return this.server.isRunning()
|
||||
&& this.server.getOptions().httpsSettings().enabled()
|
||||
? this.server.httpsPort() : -1;
|
||||
? this.server.httpsPort() : -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user