| /******************************************************************************* |
| * Copyright (c) 2006, 2017 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| * David Saff (saff@mit.edu) - initial API and implementation |
| * (bug 102632: [JUnit] Support for JUnit 4.) |
| *******************************************************************************/ |
| |
| package org.eclipse.jdt.internal.junit.runner; |
| |
| public class FirstRunExecutionListener implements IListensToTestExecutions { |
| protected MessageSender fSender; |
| |
| private TestIdMap fIds; |
| |
| FirstRunExecutionListener(MessageSender sender, TestIdMap ids) { |
| fSender = sender; |
| if (ids == null) |
| throw new NullPointerException(); |
| fIds = ids; |
| } |
| |
| public void notifyTestEnded(ITestIdentifier test) { |
| sendMessage(test, MessageIds.TEST_END); |
| } |
| |
| public void notifyTestFailed(TestReferenceFailure failure) { |
| sendMessage(failure.getTest(), failure.getStatus()); |
| sendFailure(failure, MessageIds.TRACE_START, MessageIds.TRACE_END); |
| } |
| |
| public void notifyTestStarted(ITestIdentifier test) { |
| sendMessage(test, MessageIds.TEST_START); |
| fSender.flush(); |
| } |
| |
| private String getTestId(ITestIdentifier test) { |
| return fIds.getTestId(test); |
| } |
| |
| protected void sendFailure(TestReferenceFailure failure, String startTrace, |
| String endTrace) { |
| FailedComparison comparison = failure.getComparison(); |
| if (comparison != null) |
| comparison.sendMessages(fSender); |
| |
| fSender.sendMessage(startTrace); |
| fSender.sendMessage(failure.getTrace()); |
| fSender.sendMessage(endTrace); |
| fSender.flush(); |
| } |
| |
| private void sendMessage(ITestIdentifier test, String status) { |
| fSender.sendMessage(status + getTestId(test) + ',' + RemoteTestRunner.escapeText(test.getName())); |
| } |
| |
| } |