blob: 09723745cab6a726dd1b50b63ec49784cf3af412 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.testing.local;
import org.junit.runner.Description;
import org.junit.runner.notification.Failure;
import java.io.PrintStream;
import java.util.Set;
/**
* Formats and logs test status information in googletest-style.
*/
public class GtestLogger {
private final PrintStream mOutputStream;
public GtestLogger(PrintStream outputStream) {
mOutputStream = outputStream;
}
/**
* Logs the start of an individual test.
*/
public void testStarted(Description test) {
mOutputStream.format("[ RUN ] %s.%s", test.getClassName(), test.getMethodName());
mOutputStream.println();
}
/**
* Logs a test failure.
*/
public void testFailed(Failure f) {
if (f.getException() != null) {
f.getException().printStackTrace(mOutputStream);
}
}
/**
* Logs the end of an individual test.
*/
public void testFinished(Description test, boolean passed, long elapsedTimeMillis) {
if (passed) {
mOutputStream.format("[ OK ] %s.%s (%d ms)",
test.getClassName(), test.getMethodName(), elapsedTimeMillis);
} else {
mOutputStream.format("[ FAILED ] %s.%s (%d ms)",
test.getClassName(), test.getMethodName(), elapsedTimeMillis);
}
mOutputStream.println();
}
/**
* Logs the start of a test case.
*/
public void testCaseStarted(Description test, int testCount) {
mOutputStream.format("[----------] Run %d test cases from %s", testCount,
test.getClassName());
mOutputStream.println();
}
/**
* Logs the end of a test case.
*/
public void testCaseFinished(Description test, int testCount,
long elapsedTimeMillis) {
mOutputStream.format("[----------] Run %d test cases from %s (%d ms)",
testCount, test.getClassName(), elapsedTimeMillis);
mOutputStream.println();
mOutputStream.println();
}
/**
* Logs the start of a test run.
*/
public void testRunStarted(int testCount) {
mOutputStream.format("[==========] Running %d tests.", testCount);
mOutputStream.println();
mOutputStream.println("[----------] Global test environment set-up.");
mOutputStream.println();
}
/**
* Logs the end of a test run.
*/
public void testRunFinished(int passedTestCount, Set<Description> failedTests,
long elapsedTimeMillis) {
int totalTestCount = passedTestCount + failedTests.size();
mOutputStream.println("[----------] Global test environment tear-down.");
mOutputStream.format("[==========] %d tests ran. (%d ms total)",
totalTestCount, elapsedTimeMillis);
mOutputStream.println();
mOutputStream.format("[ PASSED ] %d tests.", passedTestCount);
mOutputStream.println();
if (!failedTests.isEmpty()) {
mOutputStream.format("[ FAILED ] %d tests.", failedTests.size());
mOutputStream.println();
for (Description d : failedTests) {
mOutputStream.format("[ FAILED ] %s.%s", d.getClassName(), d.getMethodName());
mOutputStream.println();
}
mOutputStream.println();
}
}
}