| /* |
| * Copyright 2000-2011 JetBrains s.r.o. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package com.intellij.execution.testframework.sm.runner; |
| |
| import com.intellij.execution.executors.DefaultRunExecutor; |
| import com.intellij.execution.process.ProcessOutputTypes; |
| import com.intellij.openapi.util.text.StringUtil; |
| |
| import java.util.Collections; |
| import java.util.List; |
| |
| /** |
| * @author Roman.Chernyatchik |
| */ |
| public class OutputToGeneralTestsEventsConverterTest extends BaseSMTRunnerTestCase { |
| private ProcessOutputConsumer myOutputConsumer; |
| public MockGeneralTestEventsProcessorAdapter myEnventsProcessor; |
| |
| @Override |
| protected void setUp() throws Exception { |
| super.setUp(); |
| |
| final String testFrameworkName = "SMRunnerTests"; |
| final SMTRunnerConsoleProperties properties = new SMTRunnerConsoleProperties(createRunConfiguration(), |
| testFrameworkName, |
| DefaultRunExecutor.getRunExecutorInstance()); |
| myOutputConsumer = new OutputToGeneralTestEventsConverter(testFrameworkName, properties); |
| myEnventsProcessor = new MockGeneralTestEventsProcessorAdapter(); |
| myOutputConsumer.setProcessor(myEnventsProcessor); |
| } |
| |
| public void testLineBreaks_ServiceMessage() { |
| doCheckOutptut("\n##teamcity[enteredTheMatrix timestamp = '2011-06-03T13:00:08.259+0400']\n", "", true); |
| } |
| |
| public void testLineBreaks_NormalOutput() { |
| doCheckOutptut("\na\nb\n\nc\n", "[stdout]\n" + |
| "[stdout]a" + |
| "[stdout]\n" + |
| "[stdout]b" + |
| "[stdout]\n" + |
| "[stdout]\n" + |
| "[stdout]c" + |
| "[stdout]\n", |
| true); |
| } |
| |
| public void testLineBreaks_OutptutAndCommands() { |
| doCheckOutptut("\na\n##teamcity[enteredTheMatrix timestamp = '2011-06-03T13:00:08.259+0400']\nb\n##teamcity[enteredTheMatrix timestamp = '2011-06-03T13:00:08.259+0400']\n\nc\n", |
| "[stdout]\n" + |
| "[stdout]a" + |
| "[stdout]b" + |
| "[stdout]\n" + |
| "[stdout]c" + |
| "[stdout]\n", |
| true); |
| } |
| |
| public void testLineBreaks_AutoSplitIfProcessHandlerDoestSupportIt() { |
| doCheckOutptut("\na\n##teamcity[enteredTheMatrix timestamp = '2011-06-03T13:00:08.259+0400']\nb\n##teamcity[testCount count = '1' timestamp = '2011-06-03T13:00:08.259+0400']\n\nc\n", |
| "[stdout]\n" + |
| "[stdout]a" + |
| "[stdout]b" + |
| "[stdout]\n" + |
| "[stdout]c" + |
| "[stdout]\n", |
| false); |
| } |
| |
| private void doCheckOutptut(String outputStr, String expected, boolean splitByLines) { |
| final List<String> lines; |
| if (splitByLines) { |
| lines = StringUtil.split(outputStr, "\n", false); |
| } else { |
| lines = Collections.singletonList(outputStr); |
| } |
| for (String line : lines) { |
| myOutputConsumer.process(line, ProcessOutputTypes.STDOUT); |
| } |
| myOutputConsumer.flushBufferBeforeTerminating(); |
| |
| assertEquals(expected, myEnventsProcessor.getOutput()); |
| } |
| } |