From dd4d7dfe1c4f17881a9e63e294ba4648f3761bbb Mon Sep 17 00:00:00 2001 From: rschoene <rene.schoene@tu-dresden.de> Date: Fri, 8 May 2020 19:40:36 +0200 Subject: [PATCH] Resolve problem with relative paths. - some files were not found, because their relative path was not correctly resolved --- .../org/jastadd/relast/plugin/RelastTest.java | 38 ++++++++++++++----- ros2rag.tests/build.gradle | 4 ++ 2 files changed, 33 insertions(+), 9 deletions(-) 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 4c84a86..2193eab 100644 --- a/buildSrc/src/main/java/org/jastadd/relast/plugin/RelastTest.java +++ b/buildSrc/src/main/java/org/jastadd/relast/plugin/RelastTest.java @@ -9,9 +9,7 @@ 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.nio.file.*; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -165,22 +163,23 @@ public class RelastTest extends DefaultTask { return option != null && !option.isEmpty(); } - private String[] genSuffixes = {".ast", ".jadd", "RefResolver.jadd", "ResolverStubs.jrag", "Serializer.jadd"}; + private final String[] genSuffixes = {".ast", ".jadd", "RefResolver.jadd", "ResolverStubs.jrag", "Serializer.jadd"}; @TaskAction void runTest() throws IOException { setGroup("verification"); setDescription("Runs a relast test"); Project project = getProject(); + String absoluteProjectPath = project.getProjectDir().getAbsolutePath(); if (isVerbose()) { - System.out.println("Running relast test"); + System.out.println("Running relast test in " + project.getDisplayName()); System.out.println("relast files: " + getRelastFiles()); System.out.println("Deleting files"); } // first, delete generated files - List<String> genFiles = new ArrayList<>(); + List<Path> genFiles = new ArrayList<>(); for (String suffix : genSuffixes) { - genFiles.add(getGrammarName() + suffix); + genFiles.add(Paths.get(absoluteProjectPath, getGrammarName() + suffix)); } if (isVerbose()) { System.out.println("gen files: " + genFiles); @@ -235,14 +234,14 @@ public class RelastTest extends DefaultTask { System.out.println("Start relast with args: " + args); } javaExecSpec.args(args); - }); + }).assertNormalExitValue(); }); if (isRunJastAdd()) { if (isVerbose()) { System.out.println("Compile with JastAdd"); } // check which files were actually generated - genFiles.removeIf(s -> !Paths.get(s).toFile().exists()); + genFiles.removeIf(this::verboseFileNotExists); // finally, compile generated files project.getPlugins().withType(JavaPlugin.class, javaPlugin -> { SourceSetContainer sourceSets = (SourceSetContainer) project.getProperties().get("sourceSets"); @@ -267,9 +266,30 @@ public class RelastTest extends DefaultTask { } } + private String fileExtension(String filename) { + int indexOfDot = filename.lastIndexOf('.'); + return indexOfDot == -1 ? filename : filename.substring(indexOfDot + 1); + } + + private boolean verboseFileNotExists(Path path) { + boolean fileDoesNotExist = !Files.exists(path); + if (fileDoesNotExist && isVerbose()) { + System.out.println("Do not include " + path); + } + return fileDoesNotExist; + } + private void createDirectory(Path path) throws IOException { + if (Files.exists(path) && Files.isDirectory(path)) { + return; + } + if (isVerbose()) { + System.out.println("Creating " + path.toAbsolutePath()); + } try { Files.createDirectories(path); + } catch (FileAlreadyExistsException e) { + System.err.println("Skipping creation of already existing " + path); } catch (IOException e) { System.err.println("Could not create output directory " + path); throw e; diff --git a/ros2rag.tests/build.gradle b/ros2rag.tests/build.gradle index f5cf3a7..5ed8650 100644 --- a/ros2rag.tests/build.gradle +++ b/ros2rag.tests/build.gradle @@ -98,3 +98,7 @@ task compileExampleTest(type: RelastTest) { test.dependsOn compileExampleTest compileExampleTest.dependsOn preprocessExampleTest + +clean { + delete 'src/test/02-after-ros2rag/example/', 'src/test/03-after-relast/example/' +} -- GitLab