Commit cfe3c0be authored by Nikolai Kosjar's avatar Nikolai Kosjar

CppTools: Remove test file after test

In test_includeGroups_detectIncludeGroupsByIncludeType the test file was
not removed and thus subsequent and isolated executions of this test
failed.

Change-Id: I5eeb4f004f5b146ac794ca913b4092629131fca3
Reviewed-by: default avatarErik Verbruggen <erik.verbruggen@digia.com>
parent 9acdb0bd
......@@ -64,17 +64,16 @@ public:
Document::Ptr run(const QByteArray &source)
{
const QString fileName = TestIncludePaths::testFilePath();
if (QFileInfo(fileName).exists())
return Document::Ptr(); // Test file was not removed.
TestCase::writeFile(fileName, source);
FileWriterAndRemover scopedFile(fileName, source);
if (!scopedFile.writtenSuccessfully())
return Document::Ptr();
CppSourceProcessor sourceProcessor((QPointer<CppModelManager>(m_cmm)));
sourceProcessor.setIncludePaths(QStringList(TestIncludePaths::directoryOfTestFile()));
sourceProcessor.run(fileName);
Document::Ptr document = m_cmm->document(fileName);
QFile(fileName).remove();
return document;
}
......
......@@ -189,5 +189,28 @@ bool TestCase::writeFile(const QString &filePath, const QByteArray &contents)
return true;
}
FileWriterAndRemover::FileWriterAndRemover(const QString &filePath, const QByteArray &contents)
: m_filePath(filePath)
{
if (QFileInfo(filePath).exists()) {
const QString warning = QString::fromLatin1(
"Will not overwrite existing file: \"%1\"."
" If this file is left over due to a(n) abort/crash, please remove manually.")
.arg(m_filePath);
QWARN(qPrintable(warning));
m_writtenSuccessfully = false;
} else {
m_writtenSuccessfully = TestCase::writeFile(filePath, contents);
}
}
FileWriterAndRemover::~FileWriterAndRemover()
{
if (m_writtenSuccessfully && !QFile::remove(m_filePath)) {
const QString warning = QLatin1String("Failed to remove file from disk: ") + m_filePath;
QWARN(qPrintable(warning));
}
}
} // namespace Tests
} // namespace CppTools
......@@ -96,6 +96,18 @@ private:
bool m_runGarbageCollector;
};
class FileWriterAndRemover
{
public:
FileWriterAndRemover(const QString &filePath, const QByteArray &contents); // Writes file
bool writtenSuccessfully() const { return m_writtenSuccessfully; }
~FileWriterAndRemover(); // Removes file
private:
const QString m_filePath;
bool m_writtenSuccessfully;
};
} // namespace Tests
} // namespace CppTools
......
......@@ -509,10 +509,12 @@ using CppTools::Internal::CppToolsPlugin;
static QList<Include> includesForSource(const QByteArray &source)
{
const QString fileName = TestIncludePaths::testFilePath();
CppTools::Tests::TestCase::writeFile(fileName, source);
using namespace CppTools::Internal;
FileWriterAndRemover scopedFile(fileName, source);
if (!scopedFile.writtenSuccessfully())
return QList<Include>();
using namespace CppTools::Internal;
CppModelManager *cmm = CppModelManager::instance();
cmm->GC();
CppSourceProcessor sourceProcessor((QPointer<CppModelManager>(cmm)));
......
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