Skip to content

Commit

Permalink
Check expected warning messages in eol test scripts
Browse files Browse the repository at this point in the history
  • Loading branch information
pkourouklidis committed Jun 14, 2024
1 parent db868f6 commit 8fb453a
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -84,42 +84,48 @@ public void testFileParsing() throws Exception {

private void parseFile(File file) throws Exception {
String content = new String(Files.readAllBytes(file.toPath()));
String firstLine = content.split("\n")[0];
if (firstLine.substring(0,3).equals("//!")) {
assertErrorMessage(content, firstLine.substring(3));
}
else {
assertValid(content);
}
String[] lines = content.split("\n");
List<String> errorMessages = new ArrayList<String>();
List<String> warningMessages = new ArrayList<String>();
for (String line: lines) {
if (!line.substring(0,2).equals("//")){
break;
}


if (line.substring(0,3).equals("//!")) {
errorMessages.add(line.substring(3));
}
else if (line.substring(0,3).equals("//?")){
warningMessages.add(line.substring(3));
}
}
assertValid(content, errorMessages, warningMessages);
}

public void assertErrorMessage(String eol, String message) throws Exception {
EolModule module = new EolModule();
module.parse(eol);
EolStaticAnalyser staticAnalyser = new EolStaticAnalyser(new StaticModelFactory());
List<ModuleMarker> errors = staticAnalyser.validate(module);

assertEquals("unexpected number of errors (" + errors.size() + ") in eol module", 1, errors.size());
assertEquals(message, errors.get(0).getMessage());
}

public void assertValid(String eol) throws Exception {
public void assertValid(String eol, List<String> expectedErrorMessages, List<String> expectedWarningMessages) throws Exception {
EolModule module = new EolModule();
module.parse(eol);
EolStaticAnalyser staticAnalyser = new EolStaticAnalyser(new StaticModelFactory());
List<ModuleMarker> markers = staticAnalyser.validate(module);
List<ModuleMarker> errors = markers.stream().filter(m -> m.getSeverity()==Severity.Error).collect(Collectors.toList());
List<ModuleMarker> warnings = markers.stream().filter(m -> m.getSeverity()==Severity.Warning).collect(Collectors.toList());


String errorMessages = errors.stream().map((e) -> e.getMessage() + " line: " + e.getRegion().getStart().getLine())
.collect(Collectors.joining("\n"));
assertEquals("Unexpected number of errors\n" + errorMessages + "\n", 0, errors.size());
assertEquals("Unexpected number of errors\n" + errorMessages + "\n", expectedErrorMessages.size(), errors.size());
for (String expectedErrorMessage: expectedErrorMessages) {
//assume maximum one expected/thrown error for now
assertEquals(expectedErrorMessage, errors.get(0).getMessage());
}


String warningMessages = warnings.stream().map((e) -> e.getMessage() + " line: " + e.getRegion().getStart().getLine())
.collect(Collectors.joining("\n"));
assertEquals("Unexpected number of warnings\n" + warningMessages + "\n", 0, warnings.size());
assertEquals("Unexpected number of warnings\n" + warningMessages + "\n", expectedWarningMessages.size(), warnings.size());
for (String expectedWarningMessage: expectedWarningMessages) {
//assume maximum one expected/thrown warning for now
assertEquals(expectedWarningMessage, warnings.get(0).getMessage());
}
visit(module.getChildren());
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
//?Any may not be assigned to EClass
model M driver EMF {nsuri="http://www.eclipse.org/emf/2002/Ecore"};

var c : EClass;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
//?Any may not be assigned to EPackage
model M driver EMF {nsuri="http://www.eclipse.org/emf/2002/Ecore"};

var c : EClass;
Expand Down

0 comments on commit 8fb453a

Please sign in to comment.