Skip to content

Commit 8bd8b01

Browse files
committed
Add missing import diagnostics test
1 parent 8d01b50 commit 8bd8b01

1 file changed

Lines changed: 61 additions & 0 deletions

File tree

de.peeeq.wurstscript/src/test/java/tests/wurstscript/tests/ModelManagerTests.java

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,67 @@ public void renamePackage() throws IOException {
246246

247247
}
248248

249+
@Test
250+
public void unresolvedImportsAreAllReported() throws IOException {
251+
File projectFolder = new File("./temp/testProject_all_import_errors/");
252+
File wurstFolder = new File(projectFolder, "wurst");
253+
newCleanFolder(wurstFolder);
254+
255+
WFile fileMainA = WFile.create(new File(wurstFolder, "MainA.wurst"));
256+
WFile fileMainB = WFile.create(new File(wurstFolder, "MainB.wurst"));
257+
WFile fileMainC = WFile.create(new File(wurstFolder, "MainC.wurst"));
258+
WFile fileWurst = WFile.create(new File(wurstFolder, "Wurst.wurst"));
259+
260+
writeFile(fileMainA, string(
261+
"package MainA",
262+
"import DoesNotExistA",
263+
"import DoesNotExistB",
264+
"import DoesNotExistC",
265+
"import DoesNotExistD",
266+
"endpackage"
267+
));
268+
writeFile(fileMainB, string(
269+
"package MainB",
270+
"import MissingPkg1",
271+
"import MissingPkg2",
272+
"import MissingPkg3",
273+
"endpackage"
274+
));
275+
writeFile(fileMainC, string(
276+
"package MainC",
277+
"import UnknownAlpha",
278+
"import UnknownBeta",
279+
"endpackage"
280+
));
281+
writeFile(fileWurst, "package Wurst\n");
282+
283+
ModelManagerImpl manager = new ModelManagerImpl(projectFolder, new BufferManager());
284+
Map<WFile, String> errors = keepErrorsInMap(manager);
285+
manager.buildProject();
286+
287+
String errorsMainA = errors.getOrDefault(fileMainA, "");
288+
assertImportMissing(errorsMainA, "DoesNotExistA");
289+
assertImportMissing(errorsMainA, "DoesNotExistB");
290+
assertImportMissing(errorsMainA, "DoesNotExistC");
291+
assertImportMissing(errorsMainA, "DoesNotExistD");
292+
293+
String errorsMainB = errors.getOrDefault(fileMainB, "");
294+
assertImportMissing(errorsMainB, "MissingPkg1");
295+
assertImportMissing(errorsMainB, "MissingPkg2");
296+
assertImportMissing(errorsMainB, "MissingPkg3");
297+
298+
String errorsMainC = errors.getOrDefault(fileMainC, "");
299+
assertImportMissing(errorsMainC, "UnknownAlpha");
300+
assertImportMissing(errorsMainC, "UnknownBeta");
301+
}
302+
303+
private void assertImportMissing(String diagnostics, String packageName) {
304+
boolean hasResolvedError = diagnostics.contains("The import '" + packageName + "' could not be resolved.");
305+
boolean hasValidatorError = diagnostics.contains("Could not find imported package " + packageName);
306+
assertEquals(hasResolvedError || hasValidatorError, true,
307+
"Expected missing-import diagnostic for " + packageName + " in:\n" + diagnostics);
308+
}
309+
249310
@Test
250311
public void deletingFileClearsErrorsFromModel() throws IOException {
251312
File projectFolder = new File("./temp/testProject_delete_clears_errors/");

0 commit comments

Comments
 (0)