summaryrefslogtreecommitdiff
path: root/plugins/autotest/testsquishtools.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/autotest/testsquishtools.cpp')
-rw-r--r--plugins/autotest/testsquishtools.cpp29
1 files changed, 25 insertions, 4 deletions
diff --git a/plugins/autotest/testsquishtools.cpp b/plugins/autotest/testsquishtools.cpp
index 49739271ee..62bde4e62b 100644
--- a/plugins/autotest/testsquishtools.cpp
+++ b/plugins/autotest/testsquishtools.cpp
@@ -21,6 +21,7 @@
#include "squishsettings.h"
#include "testsquishtools.h"
#include "testresultspane.h"
+#include "squishxmloutputhandler.h"
#include <QDebug> // TODO remove
@@ -56,10 +57,16 @@ TestSquishTools::TestSquishTools(QObject *parent)
m_state(Idle),
m_currentResultsXML(0),
m_resultsFileWatcher(0),
- m_testRunning(false)
+ m_testRunning(false),
+ m_xmlOutputHandler(0)
{
+ TestResultsPane *resultPane = TestResultsPane::instance();
connect(this, &TestSquishTools::logOutputReceived,
- TestResultsPane::instance(), &TestResultsPane::addLogoutput, Qt::QueuedConnection);
+ resultPane, &TestResultsPane::addLogoutput, Qt::QueuedConnection);
+ connect(this, &TestSquishTools::squishTestRunStarted,
+ resultPane, &TestResultsPane::clearContents);
+ connect(this, &TestSquishTools::squishTestRunFinished,
+ resultPane, &TestResultsPane::updateSquishSummaryLabel);
}
TestSquishTools::~TestSquishTools()
@@ -80,6 +87,9 @@ TestSquishTools::~TestSquishTools()
delete m_serverProcess;
m_serverProcess = 0;
}
+
+ if (m_xmlOutputHandler)
+ delete m_xmlOutputHandler;
}
struct SquishToolsSettings
@@ -135,6 +145,12 @@ void TestSquishTools::runTestCases(const QString &suitePath, const QStringList &
<< QLatin1String("--resultdir")
<< QDir::toNativeSeparators(m_currentResultsDirectory);
+ if (m_xmlOutputHandler)
+ delete m_xmlOutputHandler;
+ m_xmlOutputHandler = new SquishXmlOutputHandler(this);
+ connect(this, &TestSquishTools::resultOutputCreated,
+ m_xmlOutputHandler, &SquishXmlOutputHandler::outputAvailable, Qt::QueuedConnection);
+
m_testRunning = true;
emit squishTestRunStarted();
startSquishServer(RunTestRequested);
@@ -212,9 +228,14 @@ void TestSquishTools::setState(TestSquishTools::State state)
if (m_testCases.isEmpty()) {
m_request = ServerStopRequested;
stopSquishServer();
- // TODO merge result files
+ QString error;
+ SquishXmlOutputHandler::mergeResultFiles(m_reportFiles, m_currentResultsDirectory,
+ QDir(m_suitePath).dirName(), &error);
+ if (!error.isEmpty())
+ QMessageBox::critical(Core::ICore::dialogParent(), tr("Error"), error);
logrotateTestResults();
} else {
+ m_xmlOutputHandler->clearForNextRun();
startSquishRunner();
}
break;
@@ -590,7 +611,7 @@ void TestSquishTools::onRunnerOutput(const QString)
if (firstNonWhitespace(output) == '<') {
// output that must be used for the TestResultsPane
- qDebug() << "RunnerOutput:" << output;
+ emit resultOutputCreated(output);
} else {
foreach (const QByteArray &line, output.split('\n')) {
const QByteArray trimmed = line.trimmed();