Skip to content
Snippets Groups Projects
Commit f00da960 authored by Johannes Mey's avatar Johannes Mey
Browse files

add individual tests

parent 4ab23d17
Branches
No related tags found
No related merge requests found
...@@ -8,14 +8,13 @@ import org.apache.commons.io.filefilter.FileFilterUtils; ...@@ -8,14 +8,13 @@ import org.apache.commons.io.filefilter.FileFilterUtils;
import org.apache.commons.io.filefilter.TrueFileFilter; import org.apache.commons.io.filefilter.TrueFileFilter;
import org.assertj.core.util.Files; import org.assertj.core.util.Files;
import org.jastadd.relast.tests.config.Configuration; import org.jastadd.relast.tests.config.Configuration;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.*;
import org.junit.jupiter.api.DynamicTest;
import org.junit.jupiter.api.TestFactory;
import java.io.*; import java.io.*;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.nio.file.Path; import java.nio.file.Path;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
public class RelAstProcessorTestBase { public class RelAstProcessorTestBase {
...@@ -77,21 +76,30 @@ public class RelAstProcessorTestBase { ...@@ -77,21 +76,30 @@ public class RelAstProcessorTestBase {
return runProcess(workingDirectory, command, outStringBuider, errStringBuilder); return runProcess(workingDirectory, command, outStringBuider, errStringBuilder);
} }
protected void directoryTest(Class<?> mainClass, Path dir) throws IOException, InterruptedException { protected Iterator<DynamicNode> directoryTest(Class<?> mainClass, Path dir) {
dir = dir.toAbsolutePath(); dir = dir.toAbsolutePath();
Path configFile = dir.resolve("config.yaml"); Path configFile = dir.resolve("config.yaml");
ObjectMapper mapper = new ObjectMapper(new YAMLFactory()); ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
List<Configuration> configs = mapper.readValue(configFile.toFile(), new TypeReference<List<Configuration>>() { List<Configuration> configs = null;
try {
configs = mapper.readValue(configFile.toFile(), new TypeReference<List<Configuration>>() {
}); });
} catch (IOException e) {
e.printStackTrace(System.err);
return Collections.emptyIterator();
}
for (Configuration config : configs) { Path finalDir = dir;
FileUtils.forceMkdir(dir.resolve(config.getOut()).toFile()); return configs.stream().map(config ->
FileUtils.cleanDirectory(dir.resolve(config.getOut()).toFile()); (DynamicNode) DynamicTest.dynamicTest(config.getName(), () -> {
FileUtils.forceMkdir(finalDir.resolve(config.getOut()).toFile());
FileUtils.cleanDirectory(finalDir.resolve(config.getOut()).toFile());
StringBuilder outBuilder = new StringBuilder(); StringBuilder outBuilder = new StringBuilder();
StringBuilder errBuilder = new StringBuilder(); StringBuilder errBuilder = new StringBuilder();
int returnValue = runJavaProcess(mainClass, dir.toFile(), Arrays.asList(config.getArgs()), outBuilder, errBuilder); int returnValue = runJavaProcess(mainClass, finalDir.toFile(), Arrays.asList(config.getArgs()), outBuilder, errBuilder);
String out = outBuilder.toString(); String out = outBuilder.toString();
String err = errBuilder.toString(); String err = errBuilder.toString();
...@@ -107,11 +115,12 @@ public class RelAstProcessorTestBase { ...@@ -107,11 +115,12 @@ public class RelAstProcessorTestBase {
checkOutput(config, out, err); checkOutput(config, out, err);
if (config.shouldCompare()) { if (config.shouldCompare()) {
Path outPath = dir.resolve(config.getOut()); Path outPath = finalDir.resolve(config.getOut());
Path expectedPath = dir.resolve(config.getExpected()); Path expectedPath = finalDir.resolve(config.getExpected());
comparePaths(outPath, expectedPath); comparePaths(outPath, expectedPath);
} }
}
})).iterator();
} }
private void checkOutput(Configuration config, String out, String err) { private void checkOutput(Configuration config, String out, String err) {
...@@ -162,7 +171,7 @@ public class RelAstProcessorTestBase { ...@@ -162,7 +171,7 @@ public class RelAstProcessorTestBase {
} }
@TestFactory @TestFactory
Stream<DynamicTest> testAll() { Stream<DynamicContainer> testAll() {
File baseDir = new File("src/test/resources/"); File baseDir = new File("src/test/resources/");
Assertions.assertTrue(baseDir.exists()); Assertions.assertTrue(baseDir.exists());
...@@ -173,7 +182,7 @@ public class RelAstProcessorTestBase { ...@@ -173,7 +182,7 @@ public class RelAstProcessorTestBase {
// TODO consider also supporting "config.yml" // TODO consider also supporting "config.yml"
.filter(f -> Objects.requireNonNull(f.listFiles(x -> x.getName().matches("config\\.yaml"))).length == 1) .filter(f -> Objects.requireNonNull(f.listFiles(x -> x.getName().matches("config\\.yaml"))).length == 1)
.map(File::toPath) .map(File::toPath)
.map(f -> DynamicTest.dynamicTest(f.getFileName().toString(), () -> directoryTest(mainClass, f))); .map(f -> DynamicContainer.dynamicContainer(f.getFileName().toString(), () -> directoryTest(mainClass, f)));
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment