From effb5d3cd922b0004f23ecd5d40f5cf753915fba Mon Sep 17 00:00:00 2001
From: rschoene <rene.schoene@tu-dresden.de>
Date: Fri, 8 May 2020 12:20:14 +0200
Subject: [PATCH] Ensure in RelastTest, that output directories are created.

---
 .../org/jastadd/relast/plugin/RelastTest.java   | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/buildSrc/src/main/java/org/jastadd/relast/plugin/RelastTest.java b/buildSrc/src/main/java/org/jastadd/relast/plugin/RelastTest.java
index 6ee91a8..4c84a86 100644
--- a/buildSrc/src/main/java/org/jastadd/relast/plugin/RelastTest.java
+++ b/buildSrc/src/main/java/org/jastadd/relast/plugin/RelastTest.java
@@ -8,6 +8,9 @@ import org.gradle.api.tasks.SourceSet;
 import org.gradle.api.tasks.SourceSetContainer;
 import org.gradle.api.tasks.TaskAction;
 
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -165,7 +168,7 @@ public class RelastTest extends DefaultTask {
   private String[] genSuffixes = {".ast", ".jadd", "RefResolver.jadd", "ResolverStubs.jrag", "Serializer.jadd"};
 
   @TaskAction
-  void runTest() {
+  void runTest() throws IOException {
     setGroup("verification");
     setDescription("Runs a relast test");
     Project project = getProject();
@@ -188,6 +191,9 @@ public class RelastTest extends DefaultTask {
         deleteSpec.delete(Paths.get(getOutputDir(), getPackageName()));
       }
     });
+    // create output directories, if not existing
+    createDirectory(Paths.get(getOutputDir()));
+    createDirectory(Paths.get(getGrammarName()).getParent());
     if (isVerbose()) {
       System.out.println("Pre processing, running relast");
     }
@@ -261,4 +267,13 @@ public class RelastTest extends DefaultTask {
     }
   }
 
+  private void createDirectory(Path path) throws IOException {
+    try {
+      Files.createDirectories(path);
+    } catch (IOException e) {
+      System.err.println("Could not create output directory " + path);
+      throw e;
+    }
+  }
+
 }
-- 
GitLab