CppTools: Tests: Stop writing into source dir

Instead, always write into a unique temporary directory in
QDir::tempPath().

Where applicable, read the test source from files instead of first
writing the file.

Some clean ups in test_codegen*.

Change-Id: Id48dc50c6ca16252edfd9fc8a86ba0de9f9be486
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
This commit is contained in:
Nikolai Kosjar
2014-12-09 18:42:15 +01:00
committed by Erik Verbruggen
parent cb3c7538be
commit 6cafc424e8
17 changed files with 359 additions and 376 deletions

View File

@@ -46,7 +46,6 @@
#include <QDebug>
#include <QFileInfo>
#include <QTemporaryDir>
#include <QtTest>
using namespace CppTools;
@@ -79,6 +78,15 @@ public:
{ return directory(_("sources")) + fileName; }
};
QStringList toAbsolutePaths(const QStringList &relativePathList,
const Tests::TemporaryCopiedDir &temporaryDir)
{
QStringList result;
foreach (const QString &file, relativePathList)
result << temporaryDir.absolutePath(file.toUtf8());
return result;
}
// TODO: When possible, use this helper class in all tests
class ProjectCreator
{
@@ -478,8 +486,14 @@ void CppToolsPlugin::test_modelmanager_refresh_added_and_purge_removed()
void CppToolsPlugin::test_modelmanager_refresh_timeStampModified_if_sourcefiles_change()
{
QFETCH(QString, fileToChange);
QFETCH(QList<ProjectFile>, initialProjectFiles);
QFETCH(QList<ProjectFile>, finalProjectFiles);
QFETCH(QStringList, initialProjectFiles);
QFETCH(QStringList, finalProjectFiles);
Tests::TemporaryCopiedDir temporaryDir(
MyTestDataDir(QLatin1String("testdata_refresh2")).path());
fileToChange = temporaryDir.absolutePath(fileToChange.toUtf8());
initialProjectFiles = toAbsolutePaths(initialProjectFiles, temporaryDir);
finalProjectFiles = toAbsolutePaths(finalProjectFiles, temporaryDir);
ModelManagerTestHelper helper;
CppModelManager *mm = CppModelManager::instance();
@@ -490,8 +504,8 @@ void CppToolsPlugin::test_modelmanager_refresh_timeStampModified_if_sourcefiles_
ProjectPart::Ptr part(new ProjectPart);
part->languageVersion = ProjectPart::CXX14;
part->qtVersion = ProjectPart::Qt5;
foreach (const ProjectFile &file, initialProjectFiles)
part->files.append(file);
foreach (const QString &file, initialProjectFiles)
part->files.append(ProjectFile(file, ProjectFile::CXXSource));
pi = ProjectInfo(project);
pi.appendProjectPart(part);
pi.finish();
@@ -504,9 +518,9 @@ void CppToolsPlugin::test_modelmanager_refresh_timeStampModified_if_sourcefiles_
QCOMPARE(refreshedFiles.size(), initialProjectFiles.size());
snapshot = mm->snapshot();
foreach (const ProjectFile &file, initialProjectFiles) {
QVERIFY(refreshedFiles.contains(file.path));
QVERIFY(snapshot.contains(file.path));
foreach (const QString &file, initialProjectFiles) {
QVERIFY(refreshedFiles.contains(file));
QVERIFY(snapshot.contains(file));
}
document = snapshot.document(fileToChange);
@@ -524,8 +538,8 @@ void CppToolsPlugin::test_modelmanager_refresh_timeStampModified_if_sourcefiles_
// Add or remove source file. The configuration stays the same.
part->files.clear();
foreach (const ProjectFile &file, finalProjectFiles)
part->files.append(file);
foreach (const QString &file, finalProjectFiles)
part->files.append(ProjectFile(file, ProjectFile::CXXSource));
pi = ProjectInfo(project);
pi.appendProjectPart(part);
pi.finish();
@@ -534,9 +548,9 @@ void CppToolsPlugin::test_modelmanager_refresh_timeStampModified_if_sourcefiles_
QCOMPARE(refreshedFiles.size(), finalProjectFiles.size());
snapshot = mm->snapshot();
foreach (const ProjectFile &file, finalProjectFiles) {
QVERIFY(refreshedFiles.contains(file.path));
QVERIFY(snapshot.contains(file.path));
foreach (const QString &file, finalProjectFiles) {
QVERIFY(refreshedFiles.contains(file));
QVERIFY(snapshot.contains(file));
}
document = snapshot.document(fileToChange);
const QDateTime lastModifiedAfter = document->lastModified();
@@ -549,19 +563,15 @@ void CppToolsPlugin::test_modelmanager_refresh_timeStampModified_if_sourcefiles_
void CppToolsPlugin::test_modelmanager_refresh_timeStampModified_if_sourcefiles_change_data()
{
QTest::addColumn<QString>("fileToChange");
QTest::addColumn<QList<ProjectFile> >("initialProjectFiles");
QTest::addColumn<QList<ProjectFile> >("finalProjectFiles");
QTest::addColumn<QStringList>("initialProjectFiles");
QTest::addColumn<QStringList>("finalProjectFiles");
const MyTestDataDir testDataDir(_("testdata_refresh2"));
const QString testCpp(testDataDir.file(_("source.cpp")));
const QString testCpp2(testDataDir.file(_("source2.cpp")));
const QString testCpp = QLatin1String("source.cpp");
const QString testCpp2 = QLatin1String("source2.cpp");
const QString fileToChange = testCpp;
QList<ProjectFile> projectFiles1 = QList<ProjectFile>()
<< ProjectFile(testCpp, ProjectFile::CXXSource);
QList<ProjectFile> projectFiles2 = QList<ProjectFile>()
<< ProjectFile(testCpp, ProjectFile::CXXSource)
<< ProjectFile(testCpp2, ProjectFile::CXXSource);
const QStringList projectFiles1 = QStringList() << testCpp;
const QStringList projectFiles2 = QStringList() << testCpp << testCpp2;
// Add a file
QTest::newRow("case: add project file") << fileToChange << projectFiles1 << projectFiles2;
@@ -1059,7 +1069,7 @@ void CppToolsPlugin::test_modelmanager_renameIncludes()
} GCHelper;
Q_UNUSED(GCHelper); // do not warn about being unused
QTemporaryDir tmpDir;
TemporaryDir tmpDir;
QVERIFY(tmpDir.isValid());
const QDir workingDir(tmpDir.path());