@@ -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