mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
ensure test output appears in the console: ensure order: first clear the old output, then print current output
This commit is contained in:
+19
@@ -17,6 +17,7 @@ package com.intellij.execution.testframework.sm.runner;
|
||||
|
||||
import com.intellij.execution.process.ProcessOutputTypes;
|
||||
import com.intellij.execution.runners.ExecutionEnvironment;
|
||||
import com.intellij.execution.testframework.CompositePrintable;
|
||||
import com.intellij.execution.testframework.Printable;
|
||||
import com.intellij.execution.testframework.Printer;
|
||||
import com.intellij.execution.testframework.TestConsoleProperties;
|
||||
@@ -27,6 +28,8 @@ import com.intellij.execution.testframework.sm.runner.ui.SMTestRunnerResultsForm
|
||||
import com.intellij.execution.testframework.ui.TestsOutputConsolePrinter;
|
||||
import com.intellij.execution.ui.ConsoleViewContentType;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.psi.impl.DebugUtil;
|
||||
import com.intellij.util.concurrency.Semaphore;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
@@ -536,6 +539,22 @@ public class SMTRunnerConsoleTest extends BaseSMTRunnerTestCase {
|
||||
assertAllOutputs(myMockResettablePrinter, "preved", "","Empty test suite.\n");
|
||||
}
|
||||
|
||||
public void testEnsureOrderedClearFlush() throws Exception {
|
||||
StringBuffer buf = new StringBuffer();
|
||||
String expected = "";
|
||||
for(int i = 0; i < 100; i++) {
|
||||
expected += "1" ;
|
||||
expected += "2" ;
|
||||
CompositePrintable.invokeInAlarm(() -> buf.append("1"), false);
|
||||
CompositePrintable.invokeInAlarm(() -> buf.append("2"), false);
|
||||
}
|
||||
Semaphore s = new Semaphore();
|
||||
s.down();
|
||||
CompositePrintable.invokeInAlarm(s::up, false);
|
||||
assertTrue(s.waitFor(1000));
|
||||
assertEquals(expected, buf.toString());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private SMTestProxy startTestWithPrinter(final String testName) {
|
||||
myEventsProcessor.onTestStarted(new TestStartedEvent(testName, null));
|
||||
|
||||
+4
-2
@@ -31,6 +31,7 @@ import org.jetbrains.annotations.Nullable;
|
||||
import java.io.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
|
||||
public class CompositePrintable implements Printable, Disposable {
|
||||
public static final String NEW_LINE = "\n";
|
||||
@@ -41,6 +42,7 @@ public class CompositePrintable implements Printable, Disposable {
|
||||
private int myCurrentSize = 0;
|
||||
private String myOutputFile = null;
|
||||
private String myFrameworkOutputFile;
|
||||
private static final ExecutorService ourTestExecutorService = AppExecutorUtil.createBoundedApplicationPoolExecutor("tests", 1);
|
||||
|
||||
public void flush() {
|
||||
synchronized (myNestedPrintables) {
|
||||
@@ -65,7 +67,7 @@ public class CompositePrintable implements Printable, Disposable {
|
||||
if (sync) {
|
||||
runnable.run();
|
||||
} else {
|
||||
AppExecutorUtil.getAppExecutorService().execute(runnable);
|
||||
ourTestExecutorService.execute(runnable);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -140,7 +142,7 @@ public class CompositePrintable implements Printable, Disposable {
|
||||
public void setOutputFilePath(String outputFile) {
|
||||
myOutputFile = outputFile;
|
||||
}
|
||||
|
||||
|
||||
public void setFrameworkOutputFile(String frameworkOutputFile) {
|
||||
myFrameworkOutputFile = frameworkOutputFile;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user