diff --git a/spring-cloud-contract-tools/spring-cloud-contract-converters/src/main/groovy/org/springframework/cloud/contract/verifier/converter/RecursiveFilesConverter.groovy b/spring-cloud-contract-tools/spring-cloud-contract-converters/src/main/groovy/org/springframework/cloud/contract/verifier/converter/RecursiveFilesConverter.groovy index 772a936ecd..efbb938dbd 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-converters/src/main/groovy/org/springframework/cloud/contract/verifier/converter/RecursiveFilesConverter.groovy +++ b/spring-cloud-contract-tools/spring-cloud-contract-converters/src/main/groovy/org/springframework/cloud/contract/verifier/converter/RecursiveFilesConverter.groovy @@ -95,10 +95,12 @@ class RecursiveFilesConverter { convertedContent.entrySet().eachWithIndex { Map.Entry content, int index -> Contract dsl = content.key String converted = content.value - Path absoluteTargetPath = createAndReturnTargetDirectory(sourceFile) - File newJsonFile = createTargetFileWithProperName(stubGenerator, absoluteTargetPath, - sourceFile, contractsSize, index, dsl) - newJsonFile.setText(converted, StandardCharsets.UTF_8.toString()) + if (converted) { + Path absoluteTargetPath = createAndReturnTargetDirectory(sourceFile) + File newJsonFile = createTargetFileWithProperName(stubGenerator, absoluteTargetPath, + sourceFile, contractsSize, index, dsl) + newJsonFile.setText(converted, StandardCharsets.UTF_8.toString()) + } } } } catch (Exception e) { diff --git a/spring-cloud-contract-tools/spring-cloud-contract-converters/src/test/groovy/org/springframework/cloud/contract/verifier/converter/RecursiveFilesConverterSpec.groovy b/spring-cloud-contract-tools/spring-cloud-contract-converters/src/test/groovy/org/springframework/cloud/contract/verifier/converter/RecursiveFilesConverterSpec.groovy index d3628d8542..baca9e39ff 100755 --- a/spring-cloud-contract-tools/spring-cloud-contract-converters/src/test/groovy/org/springframework/cloud/contract/verifier/converter/RecursiveFilesConverterSpec.groovy +++ b/spring-cloud-contract-tools/spring-cloud-contract-converters/src/test/groovy/org/springframework/cloud/contract/verifier/converter/RecursiveFilesConverterSpec.groovy @@ -130,6 +130,34 @@ class RecursiveFilesConverterSpec extends Specification { tmpFolder.root.list().toList().containsAll("foo", "bar") } + def "should not create stub file when generated stub is empty"() { + given: + def sourceFile = tmpFolder.newFile("test.groovy") + sourceFile.text = """ + org.springframework.cloud.contract.spec.Contract.make { + request { + url "/baz" + method "GET" + } + response { + status 200 + } + } + """ + and: + StubGenerator stubGenerator = stubGenerator("") + and: + ContractVerifierConfigProperties properties = new ContractVerifierConfigProperties() + properties.contractsDslDir = tmpFolder.root + properties.stubsOutputDir = tmpFolder.newFolder("target") + and: + RecursiveFilesConverter recursiveFilesConverter = new RecursiveFilesConverter(properties, new StubGeneratorProvider([stubGenerator])) + when: + recursiveFilesConverter.processFiles() + then: + properties.stubsOutputDir.list().toList().isEmpty() + } + private static Set getRelativePathsForFilesInDirectory(Collection createdFiles, File targetRootDirectory) { Path rootSourcePath = Paths.get(targetRootDirectory.toURI()) Set relativizedCreatedFiles = createdFiles.collect { File file ->