From 91fd56cb6a7865a207ffce6dd8e7a2504ae8db94 Mon Sep 17 00:00:00 2001 From: Andrey Loskutov Date: Wed, 25 Feb 2026 11:51:52 +0100 Subject: [PATCH] Stabilize ProcessConsoleTests Process console and manager maintain few jobs which might be triggered during tests reacting on different console related events. Some of the jobs start with the delay, some have different families. Let wait for all related job families and also give a minimal wait time just in case some async event triggers new job right after we start waiting. Fixes https://github.com/eclipse-platform/eclipse.platform/issues/1033 --- .../debug/tests/console/ProcessConsoleTests.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/debug/org.eclipse.debug.tests/src/org/eclipse/debug/tests/console/ProcessConsoleTests.java b/debug/org.eclipse.debug.tests/src/org/eclipse/debug/tests/console/ProcessConsoleTests.java index 41657182776..5a707283a91 100644 --- a/debug/org.eclipse.debug.tests/src/org/eclipse/debug/tests/console/ProcessConsoleTests.java +++ b/debug/org.eclipse.debug.tests/src/org/eclipse/debug/tests/console/ProcessConsoleTests.java @@ -109,6 +109,7 @@ public void setUp(TestInfo testInfo) throws Exception { @AfterEach public void tearDown() throws Exception { Platform.removeLogListener(errorLogListener); + waitForConsoleRelatedJobs(); for (File tmpFile : tmpFiles) { tmpFile.delete(); } @@ -117,6 +118,11 @@ public void tearDown() throws Exception { assertThat(errorsToStrings()).as("logged errors").isEmpty(); } + private void waitForConsoleRelatedJobs() { + TestUtil.waitForJobs(testInfo.getDisplayName(), ConsoleManager.CONSOLE_JOB_FAMILY, 100, 10000); + TestUtil.waitForJobs(testInfo.getDisplayName(), ProcessConsole.class, 0, 10000); + } + private Stream errorsToStrings() { return loggedErrors.stream().map(status -> status.toString() + throwableToString(status.getException())); } @@ -301,7 +307,7 @@ public void processTerminationTest(ILaunchConfiguration launchConfig, boolean te waitWhile(() -> !terminationSignaled.get(), () -> "No console complete notification received."); } finally { consoleManager.removeConsoles(new IConsole[] { console }); - TestUtil.waitForJobs(testInfo.getDisplayName(), ConsoleManager.CONSOLE_JOB_FAMILY, 0, 10000); + waitForConsoleRelatedJobs(); } } @@ -419,7 +425,7 @@ private IOConsole doConsoleOutputTest(byte[] testContent, Map la process.terminate(); } consoleManager.removeConsoles(new IConsole[] { console }); - TestUtil.waitForJobs(testInfo.getDisplayName(), ConsoleManager.CONSOLE_JOB_FAMILY, 0, 1000); + waitForConsoleRelatedJobs(); } }