2011-08-03 16:26:39 +00:00
|
|
|
#include "ConsoleOutput.h"
|
|
|
|
|
|
|
|
namespace HeadlessSpecRunner {
|
|
|
|
ConsoleOutput::ConsoleOutput() : QObject(),
|
2011-08-29 17:35:36 +00:00
|
|
|
showColors(false),
|
|
|
|
consoleLogUsed(false) {
|
2011-08-03 16:26:39 +00:00
|
|
|
outputIO = &std::cout;
|
|
|
|
}
|
|
|
|
|
|
|
|
void ConsoleOutput::passed(const QString &specDetail) {
|
|
|
|
green();
|
|
|
|
*outputIO << '.';
|
|
|
|
clear();
|
2011-08-27 14:53:29 +00:00
|
|
|
outputIO->flush();
|
2011-08-03 16:26:39 +00:00
|
|
|
|
2011-08-29 17:35:36 +00:00
|
|
|
consoleLogUsed = false;
|
2011-08-03 16:26:39 +00:00
|
|
|
successes.push(specDetail);
|
|
|
|
}
|
|
|
|
|
2011-08-30 15:56:35 +00:00
|
|
|
void ConsoleOutput::failed(const QString &specDetail) {
|
2011-08-03 16:26:39 +00:00
|
|
|
red();
|
|
|
|
*outputIO << 'F';
|
|
|
|
clear();
|
2011-08-27 14:53:29 +00:00
|
|
|
outputIO->flush();
|
2011-08-03 16:26:39 +00:00
|
|
|
|
2011-08-29 17:35:36 +00:00
|
|
|
consoleLogUsed = false;
|
2011-08-03 16:26:39 +00:00
|
|
|
failures.push(specDetail);
|
|
|
|
}
|
|
|
|
|
|
|
|
void ConsoleOutput::green() {
|
|
|
|
if (showColors) std::cout << "\033[0;32m";
|
|
|
|
}
|
|
|
|
|
|
|
|
void ConsoleOutput::clear() {
|
|
|
|
if (showColors) std::cout << "\033[m";
|
|
|
|
}
|
|
|
|
|
|
|
|
void ConsoleOutput::red() {
|
|
|
|
if (showColors) std::cout << "\033[0;31m";
|
|
|
|
}
|
2011-08-26 15:18:04 +00:00
|
|
|
|
2011-08-30 15:56:35 +00:00
|
|
|
void ConsoleOutput::yellow()
|
|
|
|
{
|
|
|
|
if (showColors) std::cout << "\033[0;33m";
|
|
|
|
}
|
|
|
|
|
2011-08-26 15:18:04 +00:00
|
|
|
void ConsoleOutput::errorLog(const QString &msg, int lineNumber, const QString &sourceID) {
|
|
|
|
red();
|
|
|
|
*outputIO << "[error] ";
|
|
|
|
clear();
|
|
|
|
*outputIO << qPrintable(sourceID) << ":" << lineNumber << " : " << qPrintable(msg);
|
|
|
|
*outputIO << std::endl;
|
|
|
|
}
|
2011-08-29 17:35:36 +00:00
|
|
|
|
|
|
|
void ConsoleOutput::internalLog(const QString ¬e, const QString &msg) {
|
|
|
|
red();
|
|
|
|
*outputIO << "[" << qPrintable(note) << "] ";
|
|
|
|
clear();
|
|
|
|
*outputIO << qPrintable(msg);
|
|
|
|
*outputIO << std::endl;
|
|
|
|
}
|
|
|
|
|
|
|
|
void ConsoleOutput::consoleLog(const QString &msg) {
|
|
|
|
if (!consoleLogUsed) {
|
|
|
|
*outputIO << std::endl;
|
|
|
|
consoleLogUsed = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
green();
|
|
|
|
*outputIO << "[console] ";
|
|
|
|
if (msg.contains("\n"))
|
|
|
|
*outputIO << std::endl;
|
|
|
|
clear();
|
|
|
|
*outputIO << qPrintable(msg);
|
|
|
|
*outputIO << std::endl;
|
|
|
|
}
|
|
|
|
|
|
|
|
void ConsoleOutput::logSpecFilename(const QString &name) {
|
|
|
|
*outputIO << std::endl << std::endl;
|
|
|
|
red();
|
|
|
|
*outputIO << qPrintable(name) << std::endl;
|
|
|
|
clear();
|
|
|
|
}
|
2011-08-30 15:56:35 +00:00
|
|
|
|
|
|
|
void ConsoleOutput::logSpecResult(const QString &result) {
|
|
|
|
red();
|
|
|
|
*outputIO << " " << qPrintable(result) << std::endl;
|
|
|
|
clear();
|
|
|
|
}
|
|
|
|
|
|
|
|
void ConsoleOutput::reportFailure(const QString &totalTests, const QString &failedTests, const QString &duration) {
|
|
|
|
red();
|
|
|
|
*outputIO << std::endl << "FAIL: ";
|
|
|
|
formatTestResults(totalTests, failedTests, duration);
|
|
|
|
*outputIO << std::endl;
|
|
|
|
clear();
|
|
|
|
}
|
|
|
|
|
|
|
|
void ConsoleOutput::reportSuccess(const QString &totalTests, const QString &failedTests, const QString &duration) {
|
|
|
|
green();
|
|
|
|
*outputIO << std::endl << "PASS: ";
|
|
|
|
formatTestResults(totalTests, failedTests, duration);
|
|
|
|
*outputIO << std::endl;
|
|
|
|
clear();
|
|
|
|
}
|
|
|
|
|
|
|
|
void ConsoleOutput::reportSuccessWithJSErrors(const QString &totalTests, const QString &failedTests, const QString &duration) {
|
|
|
|
yellow();
|
|
|
|
*outputIO << std::endl << "PASS with JS errors: ";
|
|
|
|
formatTestResults(totalTests, failedTests, duration);
|
|
|
|
*outputIO << std::endl;
|
|
|
|
clear();
|
|
|
|
}
|
|
|
|
|
|
|
|
void ConsoleOutput::formatTestResults(const QString &totalTests, const QString &failedTests, const QString &duration) {
|
|
|
|
*outputIO << qPrintable(totalTests) << " ";
|
|
|
|
if (totalTests == "1") {
|
|
|
|
*outputIO << "test";
|
|
|
|
} else {
|
|
|
|
*outputIO << "tests";
|
|
|
|
}
|
|
|
|
|
|
|
|
*outputIO << ", ";
|
|
|
|
|
|
|
|
*outputIO << qPrintable(failedTests) << " ";
|
|
|
|
if (failedTests == "1") {
|
|
|
|
*outputIO << "failure";
|
|
|
|
} else {
|
|
|
|
*outputIO << "failures";
|
|
|
|
}
|
|
|
|
|
|
|
|
*outputIO << ", ";
|
|
|
|
|
|
|
|
*outputIO << qPrintable(duration) << " ";
|
|
|
|
if (duration == "1") {
|
|
|
|
*outputIO << "sec.";
|
|
|
|
} else {
|
|
|
|
*outputIO << "secs.";
|
|
|
|
}
|
|
|
|
}
|
2011-08-03 16:26:39 +00:00
|
|
|
}
|
2011-08-29 17:35:36 +00:00
|
|
|
|