diff --git a/build.gradle b/build.gradle index ba5ae26b1a4dfc3af0bc97cad7764ec7882478ed..3151c067ff90905b79e258f37e70a9fc72df2017 100644 --- a/build.gradle +++ b/build.gradle @@ -22,8 +22,8 @@ dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.4.0' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.4.0' compile group: 'net.sf.beaver', name: 'beaver-rt', version: '0.9.11' -// compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.10.0' -// compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.10.0' + compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.10.0' + compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.10.0' } sourceSets { @@ -100,5 +100,6 @@ jastadd { test { + outputs.upToDateWhen { false } useJUnitPlatform() } \ No newline at end of file diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml new file mode 100644 index 0000000000000000000000000000000000000000..98cfd73c75df58d8598521bc10b043e214ec4ad8 --- /dev/null +++ b/src/main/resources/log4j2.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Configuration status="INFO"> + <Appenders> + <Console name="Console" target="SYSTEM_OUT"> + <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> + </Console> + </Appenders> + <Loggers> + <Root level="info"> + <AppenderRef ref="Console"/> + </Root> + </Loggers> +</Configuration> \ No newline at end of file diff --git a/src/test/jastadd/errors/.gitignore b/src/test/jastadd/errors/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..fa929750c2d8892c7aa0c375e397e1d450780a7c --- /dev/null +++ b/src/test/jastadd/errors/.gitignore @@ -0,0 +1 @@ +*.out \ No newline at end of file diff --git a/tests/errors/Errors.expected b/src/test/jastadd/errors/Errors.expected similarity index 100% rename from tests/errors/Errors.expected rename to src/test/jastadd/errors/Errors.expected diff --git a/tests/errors/Errors.relast b/src/test/jastadd/errors/Errors.relast similarity index 100% rename from tests/errors/Errors.relast rename to src/test/jastadd/errors/Errors.relast diff --git a/tests/errors/Inheritance.expected b/src/test/jastadd/errors/Inheritance.expected similarity index 100% rename from tests/errors/Inheritance.expected rename to src/test/jastadd/errors/Inheritance.expected diff --git a/tests/errors/Inheritance.relast b/src/test/jastadd/errors/Inheritance.relast similarity index 100% rename from tests/errors/Inheritance.relast rename to src/test/jastadd/errors/Inheritance.relast diff --git a/src/test/java/org/jastadd/relast/tests/errors/Errors.java b/src/test/java/org/jastadd/relast/tests/errors/Errors.java new file mode 100644 index 0000000000000000000000000000000000000000..67d005a3e29582856d51f2cf25c0e2f5c53114b2 --- /dev/null +++ b/src/test/java/org/jastadd/relast/tests/errors/Errors.java @@ -0,0 +1,95 @@ +package org.jastadd.relast.tests.errors; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.jastadd.relast.compiler.Compiler; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.Charset; +import java.nio.file.Files; +import java.nio.file.Paths; + + +public class Errors { + + private static final Logger logger = LogManager.getLogger(Errors.class); + + static String readFile(String path, Charset encoding) + throws IOException { + byte[] encoded = Files.readAllBytes(Paths.get(path)); + return new String(encoded, encoding); + } + + static int exec(Class klass, String[] args, File err) throws IOException, + InterruptedException { + String javaHome = System.getProperty("java.home"); + String javaBin = javaHome + File.separator + "bin" + File.separator + "java"; + String classpath = System.getProperty("java.class.path"); + String className = klass.getName(); + + String[] newArgs = new String[args.length + 4]; + newArgs[0] = javaBin; + newArgs[1] = "-cp"; + newArgs[2] = classpath; + newArgs[3] = className; + System.arraycopy(args, 0, newArgs, 4, args.length); + + ProcessBuilder builder = new ProcessBuilder(newArgs); + builder.redirectError(err); + + Process process = builder.start(); + process.waitFor(); + return process.exitValue(); + } + + @Test + void test1() throws IOException { + + String inFile = "./src/test/jastadd/errors/Errors.relast"; + String outFile = "./src/test/jastadd/errors/Errors.out"; + String expectedFile = "./src/test/jastadd/errors/Errors.expected"; + + try { + System.out.println(System.getProperty("user.dir")); + int returnValue = exec(Compiler.class, new String[]{inFile}, new File(outFile)); + Assertions.assertEquals(1, returnValue, "Relast did not return with value 1"); + } catch (IOException | InterruptedException e) { + e.printStackTrace(); + } + + String out = readFile(outFile, Charset.defaultCharset()); + String expected = readFile(expectedFile, Charset.defaultCharset()); + + Assertions.assertEquals(out, expected); + + logger.info("'relast Errors.relast' returned \n{}", out); + } + + @Test + void test2() throws IOException { + + String inFile = "./src/test/jastadd/errors/Inheritance.relast"; + String outFile = "./src/test/jastadd/errors/Inheritance.out"; + String expectedFile = "./src/test/jastadd/errors/Inheritance.expected"; + + try { + System.out.println(System.getProperty("user.dir")); + int returnValue = exec(Compiler.class, new String[]{inFile}, new File(outFile)); + Assertions.assertEquals(1, returnValue, "Relast did not return with value 1"); + } catch (IOException | InterruptedException e) { + e.printStackTrace(); + } + + String out = readFile(outFile, Charset.defaultCharset()); + String expected = readFile(expectedFile, Charset.defaultCharset()); + + Assertions.assertEquals(out, expected); + + logger.info("'relast Inheritance.relast' returned \n{}", out); + } + + +} diff --git a/tests/errors/.gitignore b/tests/errors/.gitignore deleted file mode 100644 index e87afd97c3b381b83d7829594d887e153a4534e7..0000000000000000000000000000000000000000 --- a/tests/errors/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/*.out diff --git a/tests/errors/Makefile b/tests/errors/Makefile deleted file mode 100644 index 11d492d2fc0ef05a9af8a52851935ac6a5f8622b..0000000000000000000000000000000000000000 --- a/tests/errors/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -all: build-jar test - -build-jar: - (cd ../../ && ./gradlew jar) -test: - java -jar ../../build/libs/relast.jar Errors.relast 2> Errors.out || true - diff Errors.out Errors.expected - - java -jar ../../build/libs/relast.jar Inheritance.relast 2> Inheritance.out || true - diff Inheritance.out Inheritance.expected - - @echo "#" - @echo "# ERROR TESTS OK" - @echo "#"