Merge branch '2.2.x'
This commit is contained in:
@@ -139,7 +139,7 @@ public class TestGenerator {
|
||||
throw new IllegalStateException("In progress contracts found in paths [" + inProgressContractsPaths
|
||||
+ "] 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);
|
||||
}
|
||||
|
||||
private Set<Map.Entry<Path, List<ContractMetadata>>> inProgress(MultiValueMap<Path, ContractMetadata> contracts) {
|
||||
@@ -148,11 +148,9 @@ public class TestGenerator {
|
||||
.collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
void processAllNotInProgress(MultiValueMap<Path, ContractMetadata> contracts, final String basePackageName) {
|
||||
contracts.entrySet().stream()
|
||||
.filter(entry -> entry.getValue().stream().noneMatch(ContractMetadata::anyInProgress))
|
||||
.forEach(entry -> processIncludedDirectory(relativizeContractPath(entry), entry.getValue(),
|
||||
basePackageName));
|
||||
void processAll(MultiValueMap<Path, ContractMetadata> contracts, final String basePackageName) {
|
||||
contracts.entrySet().stream().forEach(
|
||||
entry -> processIncludedDirectory(relativizeContractPath(entry), entry.getValue(), basePackageName));
|
||||
}
|
||||
|
||||
private String relativizeContractPath(Map.Entry<Path, List<ContractMetadata>> entry) {
|
||||
@@ -166,7 +164,7 @@ public class TestGenerator {
|
||||
includedDirectoryRelativePath);
|
||||
if (!contracts.isEmpty()) {
|
||||
String className = afterLast(includedDirectoryRelativePath, File.separator) + resolveNameSuffix();
|
||||
String convertedClassName = convertIllegalPackageChars(className);
|
||||
String convertedClassName = ensureNameDoesNotStartWithNumber(convertIllegalPackageChars(className));
|
||||
String packageName = buildPackage(basePackageNameForClass, includedDirectoryRelativePath);
|
||||
Path dir = saver.generateTestBaseDir(basePackageNameForClass,
|
||||
convertIllegalPackageChars(includedDirectoryRelativePath));
|
||||
@@ -180,6 +178,10 @@ public class TestGenerator {
|
||||
}
|
||||
}
|
||||
|
||||
private String ensureNameDoesNotStartWithNumber(String convertedClassName) {
|
||||
return convertedClassName.matches("[0-9]+.*") ? ("_" + convertedClassName) : convertedClassName;
|
||||
}
|
||||
|
||||
private String resolveNameSuffix() {
|
||||
return StringUtils.defaultIfEmpty(configProperties.getNameSuffixForTests(),
|
||||
configProperties.getTestFramework().getClassNameSuffix());
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -41,7 +40,7 @@ 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));
|
||||
.stream().anyMatch(m -> m.isIgnored() || m.isInProgress()));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -44,7 +44,8 @@ class JUnit4IgnoreMethodAnnotation implements MethodAnnotations {
|
||||
public boolean accept(SingleContractMetadata singleContractMetadata) {
|
||||
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 {
|
||||
|
||||
@@ -41,7 +40,7 @@ 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));
|
||||
.stream().anyMatch(m -> m.isIgnored() || m.isInProgress()));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -44,7 +44,8 @@ class JUnit5IgnoreMethodAnnotation implements MethodAnnotations {
|
||||
public boolean accept(SingleContractMetadata singleContractMetadata) {
|
||||
return this.generatedClassMetaData.configProperties.getTestFramework() == TestFramework.JUNIT5
|
||||
&& (singleContractMetadata.getContractMetadata().isIgnored()
|
||||
|| singleContractMetadata.getContract().isIgnored());
|
||||
|| singleContractMetadata.getContract().isIgnored()
|
||||
|| singleContractMetadata.getContract().isInProgress());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -90,7 +90,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, this.generatedClassMetaData))
|
||||
.when(new SpockRestAssuredWhen(this.blockBuilder, this.generatedClassMetaData))
|
||||
@@ -101,7 +100,6 @@ class SingleMethodBuilder {
|
||||
|
||||
SingleMethodBuilder customMode() {
|
||||
return given(new CustomModeGiven(this.blockBuilder, this.generatedClassMetaData, CustomModeBodyParser.INSTANCE))
|
||||
.methodPreProcessor(new InProgressContractMethodPreProcessor())
|
||||
.when(new CustomModeWhen(this.blockBuilder, this.generatedClassMetaData))
|
||||
.then(new CustomModeThen(this.blockBuilder, this.generatedClassMetaData, CustomModeBodyParser.INSTANCE,
|
||||
ComparisonBuilder.JAVA_HTTP_INSTANCE))
|
||||
@@ -109,8 +107,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))
|
||||
@@ -120,8 +117,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 {
|
||||
|
||||
@@ -41,7 +40,7 @@ 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));
|
||||
.stream().anyMatch(m -> m.isIgnored() || m.isInProgress()));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -44,7 +44,8 @@ class SpockIgnoreMethodAnnotation implements MethodAnnotations {
|
||||
public boolean accept(SingleContractMetadata singleContractMetadata) {
|
||||
return this.generatedClassMetaData.configProperties.getTestFramework() == TestFramework.SPOCK
|
||||
&& (singleContractMetadata.getContractMetadata().isIgnored()
|
||||
|| singleContractMetadata.getContract().isIgnored());
|
||||
|| singleContractMetadata.getContract().isIgnored()
|
||||
|| singleContractMetadata.getContract().isInProgress());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -32,7 +32,8 @@ class TestNGMethodAnnotation implements MethodAnnotations {
|
||||
|
||||
@Override
|
||||
public MethodVisitor<MethodAnnotations> apply(SingleContractMetadata singleContractMetadata) {
|
||||
final String annotation = singleContractMetadata.isIgnored() ? "@Test(enabled = false)" : "@Test";
|
||||
final String annotation = (singleContractMetadata.isIgnored() || singleContractMetadata.isInProgress())
|
||||
? "@Test(enabled = false)" : "@Test";
|
||||
this.blockBuilder.addIndented(annotation);
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -101,7 +101,7 @@ public class TestGeneratorTests {
|
||||
// and:
|
||||
TestGenerator testGenerator = new TestGenerator(properties, singleTestGenerator, fileSaver, scanner) {
|
||||
@Override
|
||||
void processAllNotInProgress(MultiValueMap<Path, ContractMetadata> contracts, String basePackageName) {
|
||||
void processAll(MultiValueMap<Path, ContractMetadata> contracts, String basePackageName) {
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -3177,12 +3177,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" | { configProperties.testFramework = TestFramework.SPOCK }
|
||||
"testng" | { configProperties.testFramework = TestFramework.TESTNG }
|
||||
"junit5" | { configProperties.testFramework = TestFramework.JUNIT5 }
|
||||
"mockmvc" | { configProperties.testMode = TestMode.MOCKMVC }
|
||||
"jaxrs-spock" | {
|
||||
configProperties.testFramework = TestFramework.SPOCK; configProperties.testMode = TestMode.JAXRSCLIENT
|
||||
|
||||
Reference in New Issue
Block a user