diff --git a/csl.api/test/unit/src/org/netbeans/modules/csl/api/test/CslTestBase.java b/csl.api/test/unit/src/org/netbeans/modules/csl/api/test/CslTestBase.java --- a/csl.api/test/unit/src/org/netbeans/modules/csl/api/test/CslTestBase.java +++ b/csl.api/test/unit/src/org/netbeans/modules/csl/api/test/CslTestBase.java @@ -125,6 +125,7 @@ import java.util.List; import java.util.Map; import java.util.concurrent.CountDownLatch; +import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; import java.util.logging.Handler; import java.util.logging.Level; @@ -1369,7 +1370,7 @@ assertNotNull("getOccurrencesFinder must be implemented", finder); finder.setCaretPosition(caretOffset); - ParserManager.parse(Collections.singleton(testSource), new UserTask() { + UserTask task = new UserTask() { public @Override void run(ResultIterator resultIterator) throws Exception { Parser.Result r = resultIterator.getParserResult(caretOffset); if (r instanceof ParserResult) { @@ -1395,7 +1396,15 @@ } } } - }); + }; + if (classPathsForTest == null || classPathsForTest.isEmpty()) { + ParserManager.parse(Collections.singleton(testSource), task); + } else { + Future future = ParserManager.parseWhenScanFinished(Collections.singleton(testSource), task); + if (!future.isDone()) { + future.get(); + } + } } protected String annotateFinderResult(Snapshot snapshot, Map highlights, int caretOffset) throws Exception { @@ -1484,7 +1493,7 @@ enforceCaretOffset(testSource, caretOffset); } - ParserManager.parse(Collections.singleton(testSource), new UserTask() { + UserTask task = new UserTask() { public @Override void run(ResultIterator resultIterator) throws Exception { Parser.Result r = resultIterator.getParserResult(); assertTrue(r instanceof ParserResult); @@ -1506,7 +1515,17 @@ String annotatedSource = annotateSemanticResults(doc, highlights); assertDescriptionMatches(relFilePath, annotatedSource, false, ".semantic"); } - }); + }; + + if (classPathsForTest == null || classPathsForTest.isEmpty()) { + ParserManager.parse(Collections.singleton(testSource), task); + } else { + Future future = ParserManager.parseWhenScanFinished(Collections.singleton(testSource), task); + if (!future.isDone()) { + future.get(); + } + } + } protected void checkNoOverlaps(Set ranges, Document doc) throws BadLocationException { @@ -2796,7 +2815,10 @@ if (classPathsForTest == null || classPathsForTest.isEmpty()) { ParserManager.parse(Collections.singleton(testSource), task); } else { - ParserManager.parseWhenScanFinished(Collections.singleton(testSource), task); + Future future = ParserManager.parseWhenScanFinished(Collections.singleton(testSource), task); + if (!future.isDone()) { + future.get(); + } } } @@ -4135,7 +4157,7 @@ } final ComputedHints [] result = new ComputedHints[] { null }; - ParserManager.parse(Collections.singleton(testSource), new UserTask() { + UserTask task = new UserTask() { public @Override void run(ResultIterator resultIterator) throws Exception { Parser.Result r = resultIterator.getParserResult(); assertTrue(r instanceof ParserResult); @@ -4252,7 +4274,16 @@ } } } - }); + }; + + if (classPathsForTest == null || classPathsForTest.isEmpty()) { + ParserManager.parse(Collections.singleton(testSource), task); + } else { + Future future = ParserManager.parseWhenScanFinished(Collections.singleton(testSource), task); + if (!future.isDone()) { + future.get(); + } + } return result[0]; } @@ -4507,7 +4538,7 @@ enforceCaretOffset(testSource, caretOffset); final DeclarationLocation [] location = new DeclarationLocation[] { null }; - ParserManager.parse(Collections.singleton(testSource), new UserTask() { + UserTask task = new UserTask() { public @Override void run(ResultIterator resultIterator) throws Exception { Parser.Result r = resultIterator.getParserResult(); assertTrue(r instanceof ParserResult); @@ -4516,7 +4547,16 @@ DeclarationFinder finder = getFinder(); location[0] = finder.findDeclaration(pr, caretOffset); } - }); + }; + + if (classPathsForTest == null || classPathsForTest.isEmpty()) { + ParserManager.parse(Collections.singleton(testSource), task); + } else { + Future future = ParserManager.parseWhenScanFinished(Collections.singleton(testSource), task); + if (!future.isDone()) { + future.get(); + } + } return location[0]; }