Redesign AbstractTest::Run.

--HG--
branch : develop
This commit is contained in:
Roman Telezhynskyi 2016-12-03 10:20:45 +02:00
parent 166ef0b82e
commit df758fd159
4 changed files with 34 additions and 24 deletions

View File

@ -99,15 +99,14 @@ QString AbstractTest::TranslationsPath() const
}
//---------------------------------------------------------------------------------------------------------------------
int AbstractTest::Run(int exit, const QString &program, const QStringList &arguments, int msecs)
int AbstractTest::Run(int exit, const QString &program, const QStringList &arguments, QString &error, int msecs)
{
const QString parameters = QString("Program: %1 \nArguments: %2.").arg(program).arg(arguments.join(", "));
QFileInfo info(program);
if (not info.exists())
{
const QString msg = QString("Can't find binary.\n%1").arg(parameters);
QWARN(qUtf8Printable(msg));
error = QString("Can't find binary.\n%1").arg(parameters);
return TST_EX_BIN;
}
@ -115,26 +114,29 @@ int AbstractTest::Run(int exit, const QString &program, const QStringList &argum
process->setWorkingDirectory(info.absoluteDir().absolutePath());
process->start(program, arguments);
if (not process->waitForStarted(msecs))
{
error = QString("The start operation timed out or an error occurred.\n%1").arg(parameters);
process->kill();
return TST_EX_START_TIME_OUT;
}
if (not process->waitForFinished(msecs))
{
const QString msg = QString("The operation timed out or an error occurred.\n%1").arg(parameters);
QWARN(qUtf8Printable(msg));
error = QString("The finish operation timed out or an error occurred.\n%1").arg(parameters);
process->kill();
return TST_EX_TIME_OUT;
return TST_EX_FINISH_TIME_OUT;
}
if (process->exitStatus() == QProcess::CrashExit)
{
const QString msg = QString("Program crashed.\n%1\n%2").arg(parameters)
.arg(QString(process->readAllStandardError()));
QWARN(qUtf8Printable(msg));
error = QString("Program crashed.\n%1\n%2").arg(parameters).arg(QString(process->readAllStandardError()));
return TST_EX_CRASH;
}
if (process->exitCode() != exit)
{
const QString msg = QString("Unexpected finish.\n%1").arg(QString(process->readAllStandardError()));
QWARN(qUtf8Printable(msg));
error = QString("Unexpected finish.\n%1").arg(QString(process->readAllStandardError()));
return process->exitCode();
}

View File

@ -49,8 +49,9 @@ template <class T> class QVector;
// Return codes for testing run application
static const auto V_UNUSED TST_EX_BIN = -1; // Can't find binary.
static const auto V_UNUSED TST_EX_TIME_OUT = -2; // The operation timed out or an error occurred.
static const auto V_UNUSED TST_EX_CRASH = -3; // Program crashed.
static const auto V_UNUSED TST_EX_FINISH_TIME_OUT = -2; // The operation timed out or an error occurred.
static const auto V_UNUSED TST_EX_START_TIME_OUT = -3; // The operation timed out or an error occurred.
static const auto V_UNUSED TST_EX_CRASH = -4; // Program crashed.
#undef V_UNUSED
@ -69,7 +70,7 @@ protected:
QString TapePath() const;
QString TranslationsPath() const;
int Run(int exit, const QString &program, const QStringList &arguments, int msecs = 120000);
int Run(int exit, const QString &program, const QStringList &arguments, QString &error, int msecs = 120000);
bool CopyRecursively(const QString &srcFilePath, const QString &tgtFilePath) const;
};

View File

@ -28,6 +28,7 @@
#include "tst_tapecommandline.h"
#include "../vmisc/vsysexits.h"
#include "logging.h"
#include <QtTest>
@ -114,11 +115,12 @@ void TST_TapeCommandLine::OpenMeasurements()
QFETCH(QString, file);
QFETCH(int, exitCode);
QString error;
const int exit = Run(exitCode, TapePath(), QStringList() << "--test"
<< QApplication::applicationDirPath() + QDir::separator() + tmpTestFolder + QDir::separator() +
file);
file, error);
QCOMPARE(exit, exitCode);
QVERIFY2(exit == exitCode, qUtf8Printable(error));
}
//---------------------------------------------------------------------------------------------------------------------

View File

@ -28,6 +28,7 @@
#include "tst_valentinacommandline.h"
#include "../vmisc/vsysexits.h"
#include "logging.h"
#include <QtTest>
@ -102,11 +103,12 @@ void TST_ValentinaCommandLine::OpenPatterns()
QFETCH(QString, file);
QFETCH(int, exitCode);
QString error;
const QString tmp = QApplication::applicationDirPath() + QDir::separator() + tmpTestFolder;
const int exit = Run(exitCode, ValentinaPath(), QStringList() << "--test"
<< tmp + QDir::separator() + file);
<< tmp + QDir::separator() + file, error);
QCOMPARE(exit, exitCode);
QVERIFY2(exit == exitCode, qUtf8Printable(error));
}
//---------------------------------------------------------------------------------------------------------------------
@ -152,12 +154,13 @@ void TST_ValentinaCommandLine::ExportMode()
QFETCH(QString, arguments);
QFETCH(int, exitCode);
QString error;
const QString tmp = QApplication::applicationDirPath() + QDir::separator() + tmpTestFolder;
const QStringList arg = QStringList() << tmp + QDir::separator() + file
<< arguments.split(";;");
const int exit = Run(exitCode, ValentinaPath(), arg);
const int exit = Run(exitCode, ValentinaPath(), arg, error);
QCOMPARE(exit, exitCode);
QVERIFY2(exit == exitCode, qUtf8Printable(error));
}
//---------------------------------------------------------------------------------------------------------------------
@ -209,12 +212,13 @@ void TST_ValentinaCommandLine::TestMode()
QFETCH(QString, arguments);
QFETCH(int, exitCode);
QString error;
const QString tmp = QApplication::applicationDirPath() + QDir::separator() + tmpTestFolder;
const QStringList arg = QStringList() << tmp + QDir::separator() + file
<< arguments.split(";;");
const int exit = Run(exitCode, ValentinaPath(), arg);
const int exit = Run(exitCode, ValentinaPath(), arg, error);
QCOMPARE(exit, exitCode);
QVERIFY2(exit == exitCode, qUtf8Printable(error));
}
//---------------------------------------------------------------------------------------------------------------------
@ -269,12 +273,13 @@ void TST_ValentinaCommandLine::TestOpenCollection()
QFETCH(QString, arguments);
QFETCH(int, exitCode);
QString error;
const QString tmp = QApplication::applicationDirPath() + QDir::separator() + tmpTestCollectionFolder;
const QStringList arg = QStringList() << tmp + QDir::separator() + file
<< arguments.split(";;");
const int exit = Run(exitCode, ValentinaPath(), arg);
const int exit = Run(exitCode, ValentinaPath(), arg, error);
QCOMPARE(exit, exitCode);
QVERIFY2(exit == exitCode, qUtf8Printable(error));
}
//---------------------------------------------------------------------------------------------------------------------