Search in sources :

Example 1 with SMTRunnerUIActionsHandler

use of com.intellij.execution.testframework.sm.runner.ui.SMTRunnerUIActionsHandler in project intellij-community by JetBrains.

the class SMTestRunnerConnectionUtil method attachEventsProcessors.

private static void attachEventsProcessors(TestConsoleProperties consoleProperties, SMTestRunnerResultsForm resultsViewer, ProcessHandler processHandler, String testFrameworkName, @Nullable SMTestLocator locator, boolean idBasedTestTree, @Nullable TestProxyPrinterProvider printerProvider) {
    // build messages consumer
    final OutputToGeneralTestEventsConverter outputConsumer;
    if (consoleProperties instanceof SMCustomMessagesParsing) {
        outputConsumer = ((SMCustomMessagesParsing) consoleProperties).createTestEventsConverter(testFrameworkName, consoleProperties);
    } else {
        outputConsumer = new OutputToGeneralTestEventsConverter(testFrameworkName, consoleProperties);
    }
    // events processor
    final GeneralTestEventsProcessor eventsProcessor;
    if (idBasedTestTree) {
        eventsProcessor = new GeneralIdBasedToSMTRunnerEventsConvertor(consoleProperties.getProject(), resultsViewer.getTestsRootNode(), testFrameworkName);
    } else {
        eventsProcessor = new GeneralToSMTRunnerEventsConvertor(consoleProperties.getProject(), resultsViewer.getTestsRootNode(), testFrameworkName);
    }
    if (locator != null) {
        eventsProcessor.setLocator(locator);
    }
    if (printerProvider != null) {
        eventsProcessor.setPrinterProvider(printerProvider);
    }
    // UI actions
    final SMTRunnerUIActionsHandler uiActionsHandler = new SMTRunnerUIActionsHandler(consoleProperties);
    // subscribe to events
    // subscribes event processor on output consumer events
    outputConsumer.setProcessor(eventsProcessor);
    // subscribes result viewer on event processor
    eventsProcessor.addEventsListener(resultsViewer);
    // subscribes test runner's actions on results viewer events
    resultsViewer.addEventsListener(uiActionsHandler);
    processHandler.addProcessListener(new ProcessAdapter() {

        @Override
        public void processTerminated(final ProcessEvent event) {
            outputConsumer.flushBufferBeforeTerminating();
            eventsProcessor.onFinishTesting();
            Disposer.dispose(eventsProcessor);
            Disposer.dispose(outputConsumer);
        }

        @Override
        public void startNotified(final ProcessEvent event) {
            eventsProcessor.onStartTesting();
            outputConsumer.onStartTesting();
        }

        @Override
        public void onTextAvailable(final ProcessEvent event, final Key outputType) {
            outputConsumer.process(event.getText(), outputType);
        }
    });
}
Also used : SMTRunnerUIActionsHandler(com.intellij.execution.testframework.sm.runner.ui.SMTRunnerUIActionsHandler) ProcessAdapter(com.intellij.execution.process.ProcessAdapter) ProcessEvent(com.intellij.execution.process.ProcessEvent) Key(com.intellij.openapi.util.Key)

Aggregations

ProcessAdapter (com.intellij.execution.process.ProcessAdapter)1 ProcessEvent (com.intellij.execution.process.ProcessEvent)1 SMTRunnerUIActionsHandler (com.intellij.execution.testframework.sm.runner.ui.SMTRunnerUIActionsHandler)1 Key (com.intellij.openapi.util.Key)1