module lang::java::tests::BasicM3Tests
rascal-0.41.2
org.rascalmpl.java-air-1.0.1
Regression tests and backward compatibility tests for AST construction and M3 extraction for Java
Usage
import lang::java::tests::BasicM3Tests;
Dependencies
import util::Reflective;
import List;
import Message;
import IO;
import util::FileSystem;
import util::Math;
import ValueIO;
import Node;
import String;
import lang::java::m3::Core;
import lang::java::m3::AST;
function unpackExampleProject
Unpack a test source zip in a temporary folder for downstream analysis.
loc unpackExampleProject(str name, loc projectZip)
function compareM3s
Comparison and simplistic differential diagnosis between two M3 models
bool compareM3s(M3 a, M3 b)
Tests
test junitM3RemainedTheSame
test bool junitM3RemainedTheSame() {
reference = readBinaryValueFile(#M3, junitBinaryM3);
root = junitProject;
models = createM3sFromFiles(find(root + "src", "java"),
sourcePath = junitSourcePath,
classPath = junitClassPath,
javaVersion = JLS13());
result = composeJavaM3(|project://junit4|, models);
if (OVERWRITE) {
writeBinaryValueFile(junitBinaryM3, result);
}
return compareM3s(reference, result);
}
test snakesM3RemainedTheSame
test bool snakesM3RemainedTheSame() {
reference = readBinaryValueFile(#M3, snakesAndLaddersBinaryM3);
root = snakesAndLaddersProject;
models = createM3sFromFiles(find(root + "src", "java"),
sourcePath = snakesSourcePath,
classPath = snakesClassPath,
javaVersion = JLS13());
result = composeJavaM3(|project://snakes-and-ladders/|, models);
if (OVERWRITE) {
writeBinaryValueFile(snakesAndLaddersBinaryM3, result);
}
return compareM3s(reference, result);
}
test junitASTsRemainedTheSame
test bool junitASTsRemainedTheSame() {
reference = readBinaryValueFile(#set[Declaration], junitBinaryASTs);
root = junitProject;
asts = createAstsFromFiles(find(root + "src", "java"), true,
sourcePath = junitSourcePath,
classPath = junitClassPath,
javaVersion = JLS13());
// Because java.lang.SecurityManager no longer exists in JLS13 and we are compiling
// an older version of Junit4, we get unresolved decl's for all things related to SecurityManager.
astNodeSpecification(asts, checkNameResolution=true, checkSourceLocation=true);
if (OVERWRITE) {
writeBinaryValueFile(junitBinaryASTs, asts);
}
return reference == asts;
}
test snakesASTsRemainedTheSame
test bool snakesASTsRemainedTheSame() {
reference = readBinaryValueFile(#set[Declaration], snakesAndLaddersBinaryAST);
root = snakesAndLaddersProject;
asts = createAstsFromFiles(find(root + "src", "java"), true,
sourcePath = junitSourcePath,
classPath = junitClassPath,
javaVersion = JLS13());
astNodeSpecification(asts, checkNameResolution=true, checkSourceLocation=true);
if (OVERWRITE) {
writeBinaryValueFile(snakesAndLaddersBinaryAST, asts);
}
return reference == asts;
}
test hamcrestJarM3RemainedTheSame
test bool hamcrestJarM3RemainedTheSame() {
reference = readBinaryValueFile(#M3, hamcrestBinaryM3);
// move to a location that is the same on all build machines
targetJar = |tmp:///| + hamcrestJar.file;
copy(hamcrestJar, targetJar, overwrite=true);
result = createM3FromJar(targetJar);
if (OVERWRITE) {
writeBinaryValueFile(hamcrestBinaryM3, result);
}
return compareM3s(reference, result);
}