summaryrefslogtreecommitdiff
path: root/plugins/autotest/testsquishtools.h
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/autotest/testsquishtools.h')
-rw-r--r--plugins/autotest/testsquishtools.h121
1 files changed, 121 insertions, 0 deletions
diff --git a/plugins/autotest/testsquishtools.h b/plugins/autotest/testsquishtools.h
new file mode 100644
index 0000000000..65e23312ac
--- /dev/null
+++ b/plugins/autotest/testsquishtools.h
@@ -0,0 +1,121 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd
+** All rights reserved.
+** For any questions to The Qt Company, please use contact form at
+** http://www.qt.io/contact-us
+**
+** This file is part of the Qt Creator Enterprise Auto Test Add-on.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://www.qt.io/contact-us
+**
+****************************************************************************/
+
+#ifndef TESTSQUISHTOOLS_H
+#define TESTSQUISHTOOLS_H
+
+#include <QObject>
+#include <QProcess>
+#include <QStringList>
+#include <QWindowList>
+
+QT_BEGIN_NAMESPACE
+class QFile;
+class QFileSystemWatcher;
+QT_END_NAMESPACE
+
+namespace Autotest {
+namespace Internal {
+
+class TestSquishTools : public QObject
+{
+ Q_OBJECT
+public:
+ explicit TestSquishTools(QObject *parent = 0);
+ ~TestSquishTools();
+
+ enum State
+ {
+ Idle,
+ ServerStarting,
+ ServerStarted,
+ ServerStartFailed,
+ ServerStopped,
+ ServerStopFailed,
+ RunnerStarting,
+ RunnerStarted,
+ RunnerStartFailed,
+ RunnerStopped
+ };
+
+ State state() const { return m_state; }
+
+ void runTestCases(const QString &suitePath, const QStringList &testCases = QStringList(),
+ const QStringList &additionalServerArgs = QStringList(),
+ const QStringList &additionalRunnerArgs = QStringList());
+
+signals:
+ void logOutputReceived(const QString &output);
+ void squishTestRunStarted();
+ void squishTestRunFinished();
+
+private:
+ enum Request
+ {
+ None,
+ ServerStopRequested,
+ ServerQueryRequested,
+ RunnerQueryRequested,
+ RunTestRequested,
+ RecordTestRequested,
+ KillOldBeforeRunRunner,
+ KillOldBeforeRecordRunner,
+ KillOldBeforeQueryRunner
+ };
+
+ void setState(State state);
+
+ void startSquishServer(Request request);
+ void stopSquishServer();
+ void startSquishRunner();
+ QProcessEnvironment squishEnvironment() const;
+ Q_SLOT void onServerFinished(int exitCode, QProcess::ExitStatus status = QProcess::NormalExit);
+ Q_SLOT void onRunnerFinished(int exitCode, QProcess::ExitStatus status = QProcess::NormalExit);
+ void onServerOutput();
+ void onServerErrorOutput();
+ void onRunnerOutput(const QString);
+ void onRunnerErrorOutput();
+ void onResultsDirChanged(const QString &filePath);
+ void logrotateTestResults();
+ void minimizeQtCreatorWindows();
+ void restoreQtCreatorWindows();
+
+ QProcess *m_serverProcess;
+ QProcess *m_runnerProcess;
+ int m_serverPort;
+ QString m_serverHost;
+ Request m_request;
+ State m_state;
+ QString m_suitePath;
+ QStringList m_testCases;
+ QStringList m_reportFiles;
+ QString m_currentResultsDirectory;
+ QFile *m_currentResultsXML;
+ QFileSystemWatcher *m_resultsFileWatcher;
+ QStringList m_additionalServerArguments;
+ QStringList m_additionalRunnerArguments;
+ QWindowList m_lastTopLevelWindows;
+ bool m_testRunning;
+ qint64 m_readResultsCount;
+};
+
+} // namespace Internal
+} // namespace Autotest
+
+#endif // TESTSQUISHTOOLS_H