From c656d0322cfd481efae3365fc96ad3991ce7ef4d Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Fri, 18 Nov 2022 17:26:11 +0100 Subject: [PATCH] maven now fails when no contracts present in the contracts folder; fixes 1846 --- .../maven/verifier/GenerateTestsMojo.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/spring-cloud-contract-tools/spring-cloud-contract-maven-plugin/src/main/java/org/springframework/cloud/contract/maven/verifier/GenerateTestsMojo.java b/spring-cloud-contract-tools/spring-cloud-contract-maven-plugin/src/main/java/org/springframework/cloud/contract/maven/verifier/GenerateTestsMojo.java index 74d3d49c5d..9979b235fc 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-maven-plugin/src/main/java/org/springframework/cloud/contract/maven/verifier/GenerateTestsMojo.java +++ b/spring-cloud-contract-tools/spring-cloud-contract-maven-plugin/src/main/java/org/springframework/cloud/contract/maven/verifier/GenerateTestsMojo.java @@ -41,6 +41,7 @@ import org.springframework.cloud.contract.verifier.TestGenerator; import org.springframework.cloud.contract.verifier.config.ContractVerifierConfigProperties; import org.springframework.cloud.contract.verifier.config.TestFramework; import org.springframework.cloud.contract.verifier.config.TestMode; +import org.springframework.util.StringUtils; /** * From the provided directory with contracts generates the acceptance tests on the @@ -274,6 +275,7 @@ public class GenerateTestsMojo extends AbstractMojo { this.contractsRepositoryProxyPort, this.deleteStubsAfterTest, this.contractsProperties, this.failOnNoContracts).downloadAndUnpackContractsIfRequired(config, this.contractsDirectory); getLog().info("Directory with contract is present at [" + contractsDirectory + "]"); + throwExceptionWhenFailOnNoContracts(contractsDirectory, this.contractsRepositoryUrl); if (this.incrementalContractTests && !ChangeDetector.inputFilesChangeDetected(contractsDirectory, mojoExecution, session)) { @@ -307,6 +309,22 @@ public class GenerateTestsMojo extends AbstractMojo { } } + private void throwExceptionWhenFailOnNoContracts(File file, String contractsRepository) + throws MojoExecutionException { + if (StringUtils.hasText(contractsRepository)) { + if (getLog().isDebugEnabled()) { + getLog().debug( + "Contracts repository is set, will not throw an exception that the contracts are not found"); + } + return; + } + if (this.failOnNoContracts && (!file.exists() || file.listFiles().length == 0)) { + String path = file.getAbsolutePath(); + throw new MojoExecutionException("Contracts could not be found: [" + path + + "]\nPlease make sure that the contracts were defined, or set the [failOnNoContracts] property to [false]"); + } + } + private void setupConfig(ContractVerifierConfigProperties config, File contractsDirectory) { config.setContractsDslDir(contractsDirectory); config.setGeneratedTestSourcesDir(this.generatedTestSourcesDir);