Commit 59f0a0d3 authored by Don Gagne's avatar Don Gagne

Merge pull request #1089 from DonLakeFlyer/UTLogFiles

Delete any temp log file before each unit test case
parents fc1228be fbf8ebb0
......@@ -97,14 +97,17 @@ QGCApplication::QGCApplication(int &argc, char* argv[], bool unitTesting) :
// First thing we want to do is set up the qtlogging.ini file. If it doesn't already exist we copy
// it to the correct location. This way default debug builds will have logging turned off.
static const char* qtProjectDir = "QtProject";
static const char* qtLoggingFile = "qtlogging.ini";
bool loggingDirectoryOk = false;
QDir iniFileLocation(QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation));
if (!iniFileLocation.cd("QtProjects")) {
if (!iniFileLocation.mkdir("QtProjects")) {
qDebug() << "Unable to create qtlogging.ini directory" << iniFileLocation.filePath("QtProjects");
if (!iniFileLocation.cd(qtProjectDir)) {
if (!iniFileLocation.mkdir(qtProjectDir)) {
qDebug() << "Unable to create qtlogging.ini directory" << iniFileLocation.filePath(qtProjectDir);
} else {
if (!iniFileLocation.cd("QtProjects")) {
qDebug() << "Unable to access qtlogging.ini directory" << iniFileLocation.filePath("QtProjects");;
if (!iniFileLocation.cd(qtProjectDir)) {
qDebug() << "Unable to access qtlogging.ini directory" << iniFileLocation.filePath(qtProjectDir);;
}
loggingDirectoryOk = true;
}
......@@ -114,9 +117,9 @@ QGCApplication::QGCApplication(int &argc, char* argv[], bool unitTesting) :
if (loggingDirectoryOk) {
qDebug () << iniFileLocation;
if (!iniFileLocation.exists("qtlogging.ini")) {
if (!QFile::copy(":QLoggingCategory/qtlogging.ini", iniFileLocation.filePath("qtlogging.ini"))) {
qDebug() << "Unable to copy qtlogging.ini to" << iniFileLocation;
if (!iniFileLocation.exists(qtLoggingFile)) {
if (!QFile::copy(":QLoggingCategory/qtlogging.ini", iniFileLocation.filePath(qtLoggingFile))) {
qDebug() << "Unable to copy" << QString(qtLoggingFile) << "to" << iniFileLocation;
}
}
}
......
......@@ -757,3 +757,15 @@ void MAVLinkProtocol::suspendLogForReplay(bool suspend)
_logSuspendReplay = suspend;
}
void MAVLinkProtocol::deleteTempLogFiles(void)
{
QDir tempDir(QStandardPaths::writableLocation(QStandardPaths::TempLocation));
QString filter(QString("*.%1").arg(_logFileExtension));
QFileInfoList fileInfoList = tempDir.entryInfoList(QStringList(filter), QDir::Files);
foreach(const QFileInfo fileInfo, fileInfoList) {
QFile::remove(fileInfo.filePath());
}
}
......@@ -199,6 +199,9 @@ public slots:
/// and not called directly in order to synchronize with the bytesReady signal
/// which may be ahead of it in the signal queue.
void suspendLogForReplay(bool suspend);
/// @brief Deletes any log files which are in the temp directory
static void deleteTempLogFiles(void);
protected:
// Override from QObject
......
......@@ -125,7 +125,7 @@ void MavlinkLogTest::_bootLogDetectionSave_test(void)
void MavlinkLogTest::_bootLogDetectionZeroLength_test(void)
{
// Create a fake eempty mavlink log
// Create a fake empty mavlink log
_createTempLogFile(true);
// Zero length log files should not generate any additional UI pop-ups. It should just be deleted silently.
......@@ -170,3 +170,13 @@ void MavlinkLogTest::_connectLog_test(void)
QTest::qWait(1000); // Need to allow signals to move between threads to shutdown MainWindow
}
void MavlinkLogTest::_deleteTempLogFiles_test(void)
{
// Verify that the MAVLinkProtocol::deleteTempLogFiles api works correctly
_createTempLogFile(false);
MAVLinkProtocol::deleteTempLogFiles();
QDir tmpDir(QStandardPaths::writableLocation(QStandardPaths::TempLocation));
QStringList logFiles(tmpDir.entryList(QStringList(QString("*.%1").arg(_logFileExtension)), QDir::Files));
QCOMPARE(logFiles.count(), 0);
}
......@@ -46,6 +46,7 @@ private slots:
void _bootLogDetectionSave_test(void);
void _bootLogDetectionZeroLength_test(void);
void _connectLog_test(void);
void _deleteTempLogFiles_test(void);
private:
void _createTempLogFile(bool zeroLength);
......
......@@ -28,6 +28,7 @@
#include "UnitTest.h"
#include "QGCApplication.h"
#include "MAVLinkProtocol.h"
bool UnitTest::_messageBoxRespondedTo = false;
bool UnitTest::_badResponseButton = false;
......@@ -115,6 +116,8 @@ void UnitTest::init(void)
// Each test gets a clean global state
qgcApp()->destroySingletonsForUnitTest();
qgcApp()->createSingletonsForUnitTest();
MAVLinkProtocol::deleteTempLogFiles();
}
/// @brief Called after each test.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment