From 09e494db8c6c820475e899a7e86f133a7ec2ed59 Mon Sep 17 00:00:00 2001 From: Shannon Pamperl Date: Thu, 4 Feb 2021 06:38:25 -0600 Subject: [PATCH] Ensure stdout/stderr are logged when using debug mode logging. (#1607) Relates to gh-1600 --- .../verifier/plugin/ContractsCopyTask.java | 23 +++++++++------- .../GenerateClientStubsFromDslTask.java | 26 ++++++++++++------- .../plugin/GenerateServerTestsTask.java | 19 +++++++------- 3 files changed, 40 insertions(+), 28 deletions(-) diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/java/org/springframework/cloud/contract/verifier/plugin/ContractsCopyTask.java b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/java/org/springframework/cloud/contract/verifier/plugin/ContractsCopyTask.java index e6baf7271f..0a088322c9 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/java/org/springframework/cloud/contract/verifier/plugin/ContractsCopyTask.java +++ b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/java/org/springframework/cloud/contract/verifier/plugin/ContractsCopyTask.java @@ -186,15 +186,20 @@ class ContractsCopyTask extends DefaultTask { } else { os = NullOutputStream.INSTANCE; } - getProject().javaexec(exec -> { - exec.setMain("org.springframework.cloud.contract.verifier.converter.ToYamlConverterApplication"); - exec.classpath(classpath); - exec.args(quoteAndEscape(outputContractsFolder.getAbsolutePath())); - exec.setStandardOutput(os); - exec.setErrorOutput(os); - }); - if (getLogger().isDebugEnabled()) { - getLogger().debug(os.toString()); + try { + getProject().javaexec(exec -> { + exec.setMain("org.springframework.cloud.contract.verifier.converter.ToYamlConverterApplication"); + exec.classpath(classpath); + exec.args(quoteAndEscape(outputContractsFolder.getAbsolutePath())); + exec.setStandardOutput(os); + exec.setErrorOutput(os); + }); + } catch (Exception e) { + throw new GradleException("Spring Cloud Contract Verifier Plugin exception: " + e.getMessage(), e); + } finally { + if (getLogger().isDebugEnabled()) { + getLogger().debug(os.toString()); + } } getLogger().info("Replaced DSL files with their YAML representation at [{}]", outputContractsFolder); } diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/java/org/springframework/cloud/contract/verifier/plugin/GenerateClientStubsFromDslTask.java b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/java/org/springframework/cloud/contract/verifier/plugin/GenerateClientStubsFromDslTask.java index f5a71df40a..92b00f6345 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/java/org/springframework/cloud/contract/verifier/plugin/GenerateClientStubsFromDslTask.java +++ b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/java/org/springframework/cloud/contract/verifier/plugin/GenerateClientStubsFromDslTask.java @@ -24,6 +24,7 @@ import javax.inject.Inject; import org.eclipse.jgit.util.io.NullOutputStream; import org.gradle.api.DefaultTask; +import org.gradle.api.GradleException; import org.gradle.api.file.ConfigurableFileCollection; import org.gradle.api.file.Directory; import org.gradle.api.file.DirectoryProperty; @@ -88,16 +89,21 @@ class GenerateClientStubsFromDslTask extends DefaultTask { } else { os = NullOutputStream.INSTANCE; } - getProject().javaexec(exec -> { - exec.setMain("org.springframework.cloud.contract.verifier.converter.RecursiveFilesConverterApplication"); - exec.classpath(classpath); - exec.args(quoteAndEscape(output.getAbsolutePath()), quoteAndEscape(contractsDslDir.get().getAsFile().getAbsolutePath()), - quoteAndEscape(StringUtils.collectionToCommaDelimitedString(excludedFiles.get())), quoteAndEscape(".*"), excludeBuildFolders.get()); - exec.setStandardOutput(os); - exec.setErrorOutput(os); - }); - if (getLogger().isDebugEnabled()) { - getLogger().debug(os.toString()); + try { + getProject().javaexec(exec -> { + exec.setMain("org.springframework.cloud.contract.verifier.converter.RecursiveFilesConverterApplication"); + exec.classpath(classpath); + exec.args(quoteAndEscape(output.getAbsolutePath()), quoteAndEscape(contractsDslDir.get().getAsFile().getAbsolutePath()), + quoteAndEscape(StringUtils.collectionToCommaDelimitedString(excludedFiles.get())), quoteAndEscape(".*"), excludeBuildFolders.get()); + exec.setStandardOutput(os); + exec.setErrorOutput(os); + }); + } catch (Exception e) { + throw new GradleException("Spring Cloud Contract Verifier Plugin exception: " + e.getMessage(), e); + } finally { + if (getLogger().isDebugEnabled()) { + getLogger().debug(os.toString()); + } } } diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/java/org/springframework/cloud/contract/verifier/plugin/GenerateServerTestsTask.java b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/java/org/springframework/cloud/contract/verifier/plugin/GenerateServerTestsTask.java index 5d1691c0b4..cce26ffef9 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/java/org/springframework/cloud/contract/verifier/plugin/GenerateServerTestsTask.java +++ b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/java/org/springframework/cloud/contract/verifier/plugin/GenerateServerTestsTask.java @@ -131,14 +131,14 @@ class GenerateServerTestsTask extends DefaultTask { getLogger().info("Contracts are unpacked to [{}]", contractsDslDir); getLogger().info("Included contracts are [{}]", includedContracts); ContractVerifierConfigProperties properties = toConfigProperties(contractsDslDir, includedContracts, generatedTestSources, generatedTestResources); + OutputStream os; + if (getLogger().isDebugEnabled()) { + os = new ByteArrayOutputStream(); + } else { + os = NullOutputStream.INSTANCE; + } try { String propertiesJson = new ObjectMapper().writeValueAsString(properties); - OutputStream os; - if (getLogger().isDebugEnabled()) { - os = new ByteArrayOutputStream(); - } else { - os = NullOutputStream.INSTANCE; - } getProject().javaexec(exec -> { exec.setMain("org.springframework.cloud.contract.verifier.TestGeneratorApplication"); exec.classpath(classpath); @@ -146,12 +146,13 @@ class GenerateServerTestsTask extends DefaultTask { exec.setStandardOutput(os); exec.setErrorOutput(os); }); - if (getLogger().isDebugEnabled()) { - getLogger().debug(os.toString()); - } } catch (Exception e) { throw new GradleException("Spring Cloud Contract Verifier Plugin exception: " + e.getMessage(), e); + } finally { + if (getLogger().isDebugEnabled()) { + getLogger().debug(os.toString()); + } } }