From b8be7192c68853555bd935855daecfbc36cf23cf Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Thu, 6 Jul 2017 18:30:04 +0200 Subject: [PATCH] Added missing mkdirs for template generation; fixes #36 --- .../internal/template/TemplateGenerator.java | 21 ++++++++++++++++--- .../template/TemplateGeneratorTests.java | 10 +++++++++ 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/template/TemplateGenerator.java b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/template/TemplateGenerator.java index a32ec579..f4c33dc5 100644 --- a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/template/TemplateGenerator.java +++ b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/template/TemplateGenerator.java @@ -19,13 +19,23 @@ public class TemplateGenerator { private static final String EMAIL_TEMPLATE = "email"; private static final String BLOG_TEMPLATE = "blog"; private static final String TWITTER_TEMPLATE = "tweet"; - private final File emailOutput = new File("target/email.txt"); - private final File blogOutput = new File("target/blog.md"); - private final File tweetOutput = new File("target/tweet.txt"); + private final File emailOutput; + private final File blogOutput; + private final File tweetOutput; private final ReleaserProperties props; public TemplateGenerator(ReleaserProperties props) { this.props = props; + this.emailOutput = new File("target/email.txt"); + this.blogOutput = new File("target/blog.md"); + this.tweetOutput = new File("target/tweet.txt"); + } + + TemplateGenerator(ReleaserProperties props, File output) { + this.props = props; + this.emailOutput = output; + this.blogOutput = output; + this.tweetOutput = output; } public File email() { @@ -40,6 +50,11 @@ public class TemplateGenerator { if (file.exists()) { file.delete(); } + File parentFile = file.getParentFile(); + boolean mkdirs = parentFile.mkdirs(); + if (!mkdirs) { + throw new IllegalStateException("Failed to create the parent directory [" + parentFile + "]"); + } if (!file.createNewFile()) { throw new IllegalStateException("Couldn't create a file [" + file + "]"); } diff --git a/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/template/TemplateGeneratorTests.java b/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/template/TemplateGeneratorTests.java index ef930d99..916219f9 100644 --- a/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/template/TemplateGeneratorTests.java +++ b/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/template/TemplateGeneratorTests.java @@ -27,6 +27,16 @@ public class TemplateGeneratorTests { then(generatedMail).hasContent(expectedEmail()); } + @Test + public void should_generate_email_from_template_when_output_folder_is_missing() { + ReleaserProperties props = new ReleaserProperties(); + props.getPom().setBranch("vDalston.RELEASE"); + + File generatedMail = new TemplateGenerator(props, new File("target/foo/bar/baz/template.txt")).email(); + + then(generatedMail).hasContent(expectedEmail()); + } + @Test public void should_generate_email_from_template_for_tag_without_v_prefix() { ReleaserProperties props = new ReleaserProperties();