Merge branch '2.2.x'

This commit is contained in:
Marcin Grzejszczak
2020-12-10 13:30:26 +01:00
12 changed files with 27 additions and 59 deletions

View File

@@ -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());

View File

@@ -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();
}
}

View File

@@ -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()));
}
}

View File

@@ -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());
}
}

View File

@@ -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()));
}
}

View File

@@ -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());
}
}

View File

@@ -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,

View File

@@ -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()));
}
}

View File

@@ -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());
}
}

View File

@@ -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;
}

View File

@@ -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) {
}
};

View File

@@ -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