forked from qt-creator/qt-creator
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: Erik Verbruggen <erik.verbruggen@digia.com>
This commit is contained in:
@@ -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);
|
||||
|
||||
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)));
|
||||
|
||||
Reference in New Issue
Block a user