summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikolai Kosjar <nikolai.kosjar@theqtcompany.com>2014-12-09 18:42:15 +0100
committerErik Verbruggen <erik.verbruggen@theqtcompany.com>2014-12-19 10:29:16 +0100
commit6cafc424e837aa64ecfad3828fb840d08b747452 (patch)
tree4b48d06bb2ba0117481944393f82b0f99b67d806
parentcb3c7538be3f5ddb26f48b5dfce23bd3ea6daacc (diff)
downloadqt-creator-6cafc424e837aa64ecfad3828fb840d08b747452.tar.gz
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>
-rw-r--r--src/plugins/cpptools/cppcodegen_test.cpp430
-rw-r--r--src/plugins/cpptools/cppcompletion_test.cpp7
-rw-r--r--src/plugins/cpptools/cppheadersource_test.cpp8
-rw-r--r--src/plugins/cpptools/cppmodelmanager_test.cpp58
-rw-r--r--src/plugins/cpptools/cpppointerdeclarationformatter_test.cpp9
-rw-r--r--src/plugins/cpptools/cppsourceprocessor_test.cpp41
-rw-r--r--src/plugins/cpptools/cpptoolstestcase.cpp22
-rw-r--r--src/plugins/cpptools/cpptoolstestcase.h24
-rw-r--r--src/plugins/cpptools/includeutils.cpp82
-rw-r--r--src/plugins/cpptools/typehierarchybuilder_test.cpp14
-rw-r--r--src/plugins/genericprojectmanager/genericprojectplugin_test.cpp1
-rw-r--r--tests/auto/cplusplus/preprocessor/data/include-data/local/test_main_allDiagnostics.cpp3
-rw-r--r--tests/auto/cplusplus/preprocessor/data/include-data/local/test_main_detectIncludeGroupsByIncludeDir.cpp9
-rw-r--r--tests/auto/cplusplus/preprocessor/data/include-data/local/test_main_detectIncludeGroupsByIncludeType.cpp9
-rw-r--r--tests/auto/cplusplus/preprocessor/data/include-data/local/test_main_detectIncludeGroupsByNewLines.cpp24
-rw-r--r--tests/auto/cplusplus/preprocessor/data/include-data/local/test_main_macroUses.cpp4
-rw-r--r--tests/auto/cplusplus/preprocessor/data/include-data/local/test_main_resolvedUnresolved.cpp2
17 files changed, 365 insertions, 382 deletions
diff --git a/src/plugins/cpptools/cppcodegen_test.cpp b/src/plugins/cpptools/cppcodegen_test.cpp
index 2d0ec01f54..e1c125edbc 100644
--- a/src/plugins/cpptools/cppcodegen_test.cpp
+++ b/src/plugins/cpptools/cppcodegen_test.cpp
@@ -33,6 +33,7 @@
#include "insertionpointlocator.h"
#include <utils/fileutils.h>
+#include <utils/qtcassert.h>
#include <QtTest>
#include <QDebug>
@@ -46,6 +47,34 @@ using namespace CPlusPlus;
using namespace CppTools;
using namespace CppTools::Internal;
+namespace {
+
+Document::Ptr createDocument(const QString filePath, const QByteArray text,
+ unsigned expectedGlobalSymbolCount)
+{
+ Document::Ptr document = Document::create(filePath);
+ document->setUtf8Source(text);
+ document->check();
+ QTC_ASSERT(document->diagnosticMessages().isEmpty(), return Document::Ptr());
+ QTC_ASSERT(document->globalSymbolCount() == expectedGlobalSymbolCount, return Document::Ptr());
+
+ return document;
+}
+
+Document::Ptr createDocumentAndFile(Tests::TemporaryDir *temporaryDir,
+ const QByteArray relativeFilePath,
+ const QByteArray text,
+ unsigned expectedGlobalSymbolCount)
+{
+ QTC_ASSERT(temporaryDir, return Document::Ptr());
+ const QString absoluteFilePath = temporaryDir->createFile(relativeFilePath, text);
+ QTC_ASSERT(!absoluteFilePath.isEmpty(), return Document::Ptr());
+
+ return createDocument(absoluteFilePath, text, expectedGlobalSymbolCount);
+}
+
+} // anonymous namespace
+
/*!
Should insert at line 3, column 1, with "public:\n" as prefix and without suffix.
*/
@@ -56,14 +85,8 @@ void CppToolsPlugin::test_codegen_public_in_empty_class()
"{\n"
"};\n"
"\n";
-
- Document::Ptr doc = Document::create(QLatin1String("public_in_empty_class"));
- doc->setUtf8Source(src);
- doc->parse();
- doc->check();
-
- QCOMPARE(doc->diagnosticMessages().size(), 0);
- QCOMPARE(doc->globalSymbolCount(), 1U);
+ Document::Ptr doc = createDocument(QLatin1String("public_in_empty_class"), src, 1U);
+ QVERIFY(doc);
Class *foo = doc->globalSymbolAt(0)->asClass();
QVERIFY(foo);
@@ -96,14 +119,8 @@ void CppToolsPlugin::test_codegen_public_in_nonempty_class()
"public:\n" // line 3
"};\n" // line 4
"\n";
-
- Document::Ptr doc = Document::create(QLatin1String("public_in_nonempty_class"));
- doc->setUtf8Source(src);
- doc->parse();
- doc->check();
-
- QCOMPARE(doc->diagnosticMessages().size(), 0);
- QCOMPARE(doc->globalSymbolCount(), 1U);
+ Document::Ptr doc = createDocument(QLatin1String("public_in_nonempty_class"), src, 1U);
+ QVERIFY(doc);
Class *foo = doc->globalSymbolAt(0)->asClass();
QVERIFY(foo);
@@ -136,14 +153,8 @@ void CppToolsPlugin::test_codegen_public_before_protected()
"protected:\n" // line 3
"};\n"
"\n";
-
- Document::Ptr doc = Document::create(QLatin1String("public_before_protected"));
- doc->setUtf8Source(src);
- doc->parse();
- doc->check();
-
- QCOMPARE(doc->diagnosticMessages().size(), 0);
- QCOMPARE(doc->globalSymbolCount(), 1U);
+ Document::Ptr doc = createDocument(QLatin1String("public_before_protected"), src, 1U);
+ QVERIFY(doc);
Class *foo = doc->globalSymbolAt(0)->asClass();
QVERIFY(foo);
@@ -177,14 +188,8 @@ void CppToolsPlugin::test_codegen_private_after_protected()
"protected:\n" // line 3
"};\n"
"\n";
-
- Document::Ptr doc = Document::create(QLatin1String("private_after_protected"));
- doc->setUtf8Source(src);
- doc->parse();
- doc->check();
-
- QCOMPARE(doc->diagnosticMessages().size(), 0);
- QCOMPARE(doc->globalSymbolCount(), 1U);
+ Document::Ptr doc = createDocument(QLatin1String("private_after_protected"), src, 1U);
+ QVERIFY(doc);
Class *foo = doc->globalSymbolAt(0)->asClass();
QVERIFY(foo);
@@ -218,14 +223,8 @@ void CppToolsPlugin::test_codegen_protected_in_nonempty_class()
"public:\n" // line 3
"};\n" // line 4
"\n";
-
- Document::Ptr doc = Document::create(QLatin1String("protected_in_nonempty_class"));
- doc->setUtf8Source(src);
- doc->parse();
- doc->check();
-
- QCOMPARE(doc->diagnosticMessages().size(), 0);
- QCOMPARE(doc->globalSymbolCount(), 1U);
+ Document::Ptr doc = createDocument(QLatin1String("protected_in_nonempty_class"), src, 1U);
+ QVERIFY(doc);
Class *foo = doc->globalSymbolAt(0)->asClass();
QVERIFY(foo);
@@ -259,14 +258,8 @@ void CppToolsPlugin::test_codegen_protected_between_public_and_private()
"private:\n" // line 4
"};\n" // line 5
"\n";
-
- Document::Ptr doc = Document::create(QLatin1String("protected_betwee_public_and_private"));
- doc->setUtf8Source(src);
- doc->parse();
- doc->check();
-
- QCOMPARE(doc->diagnosticMessages().size(), 0);
- QCOMPARE(doc->globalSymbolCount(), 1U);
+ Document::Ptr doc = createDocument(QLatin1String("protected_betwee_public_and_private"), src, 1U);
+ QVERIFY(doc);
Class *foo = doc->globalSymbolAt(0)->asClass();
QVERIFY(foo);
@@ -321,13 +314,8 @@ void CppToolsPlugin::test_codegen_qtdesigner_integration()
"\n"
"#endif // MAINWINDOW_H\n";
- Document::Ptr doc = Document::create(QLatin1String("qtdesigner_integration"));
- doc->setUtf8Source(src);
- doc->parse();
- doc->check();
-
- QCOMPARE(doc->diagnosticMessages().size(), 0);
- QCOMPARE(doc->globalSymbolCount(), 2U);
+ Document::Ptr doc = createDocument(QLatin1String("qtdesigner_integration"), src, 2U);
+ QVERIFY(doc);
Class *foo = doc->globalSymbolAt(1)->asClass();
QVERIFY(foo);
@@ -351,38 +339,29 @@ void CppToolsPlugin::test_codegen_qtdesigner_integration()
void CppToolsPlugin::test_codegen_definition_empty_class()
{
- const QByteArray srcText = "\n"
+ Tests::TemporaryDir temporaryDir;
+ QVERIFY(temporaryDir.isValid());
+
+ const QByteArray headerText = "\n"
"class Foo\n" // line 1
"{\n"
"void foo();\n" // line 3
"};\n"
"\n";
+ Document::Ptr headerDocument = createDocumentAndFile(&temporaryDir, "file.h", headerText, 1U);
+ QVERIFY(headerDocument);
- const QByteArray dstText = "\n"
+ const QByteArray sourceText = "\n"
"int x;\n" // line 1
"\n";
-
- Document::Ptr src = Document::create(QDir::tempPath() + QLatin1String("/file.h"));
- QVERIFY(CppTools::Tests::TestCase::writeFile(src->fileName(), srcText));
- src->setUtf8Source(srcText);
- src->parse();
- src->check();
- QCOMPARE(src->diagnosticMessages().size(), 0);
- QCOMPARE(src->globalSymbolCount(), 1U);
-
- Document::Ptr dst = Document::create(QDir::tempPath() + QLatin1String("/file.cpp"));
- QVERIFY(CppTools::Tests::TestCase::writeFile(dst->fileName(), dstText));
- dst->setUtf8Source(dstText);
- dst->parse();
- dst->check();
- QCOMPARE(dst->diagnosticMessages().size(), 0);
- QCOMPARE(dst->globalSymbolCount(), 1U);
+ Document::Ptr sourceDocument = createDocumentAndFile(&temporaryDir, "file.cpp", sourceText, 1U);
+ QVERIFY(sourceDocument);
Snapshot snapshot;
- snapshot.insert(src);
- snapshot.insert(dst);
+ snapshot.insert(headerDocument);
+ snapshot.insert(sourceDocument);
- Class *foo = src->globalSymbolAt(0)->asClass();
+ Class *foo = headerDocument->globalSymbolAt(0)->asClass();
QVERIFY(foo);
QCOMPARE(foo->line(), 1U);
QCOMPARE(foo->column(), 7U);
@@ -397,7 +376,7 @@ void CppToolsPlugin::test_codegen_definition_empty_class()
QList<InsertionLocation> locList = find.methodDefinition(decl);
QVERIFY(locList.size() == 1);
InsertionLocation loc = locList.first();
- QCOMPARE(loc.fileName(), dst->fileName());
+ QCOMPARE(loc.fileName(), sourceDocument->fileName());
QCOMPARE(loc.prefix(), QLatin1String("\n\n"));
QCOMPARE(loc.suffix(), QString());
QCOMPARE(loc.line(), 3U);
@@ -406,49 +385,41 @@ void CppToolsPlugin::test_codegen_definition_empty_class()
void CppToolsPlugin::test_codegen_definition_first_member()
{
- const QByteArray srcText = "\n"
+ Tests::TemporaryDir temporaryDir;
+ QVERIFY(temporaryDir.isValid());
+
+ const QByteArray headerText = "\n"
"class Foo\n" // line 1
"{\n"
"void foo();\n" // line 3
"void bar();\n" // line 4
"};\n"
"\n";
+ Document::Ptr headerDocument = createDocumentAndFile(&temporaryDir, "file.h", headerText, 1U);
+ QVERIFY(headerDocument);
- const QByteArray dstText = QString::fromLatin1(
- "\n"
- "#include \"%1/file.h\"\n" // line 1
- "int x;\n"
- "\n"
- "void Foo::bar()\n" // line 4
- "{\n"
- "\n"
- "}\n"
- "\n"
- "int y;\n").arg(QDir::tempPath()).toLatin1();
-
- Document::Ptr src = Document::create(QDir::tempPath() + QLatin1String("/file.h"));
- QVERIFY(CppTools::Tests::TestCase::writeFile(src->fileName(), srcText));
- src->setUtf8Source(srcText);
- src->parse();
- src->check();
- QCOMPARE(src->diagnosticMessages().size(), 0);
- QCOMPARE(src->globalSymbolCount(), 1U);
-
- Document::Ptr dst = Document::create(QDir::tempPath() + QLatin1String("/file.cpp"));
- dst->addIncludeFile(Document::Include(QLatin1String("file.h"), src->fileName(), 1,
- Client::IncludeLocal));
- QVERIFY(CppTools::Tests::TestCase::writeFile(dst->fileName(), dstText));
- dst->setUtf8Source(dstText);
- dst->parse();
- dst->check();
- QCOMPARE(dst->diagnosticMessages().size(), 0);
- QCOMPARE(dst->globalSymbolCount(), 3U);
+ const QByteArray sourceText = QString::fromLatin1(
+ "\n"
+ "#include \"%1/file.h\"\n" // line 1
+ "int x;\n"
+ "\n"
+ "void Foo::bar()\n" // line 4
+ "{\n"
+ "\n"
+ "}\n"
+ "\n"
+ "int y;\n").arg(temporaryDir.path()).toLatin1();
+ Document::Ptr sourceDocument = createDocumentAndFile(&temporaryDir, "file.cpp", sourceText, 3U);
+ QVERIFY(sourceDocument);
+ sourceDocument->addIncludeFile(Document::Include(QLatin1String("file.h"),
+ headerDocument->fileName(), 1,
+ Client::IncludeLocal));
Snapshot snapshot;
- snapshot.insert(src);
- snapshot.insert(dst);
+ snapshot.insert(headerDocument);
+ snapshot.insert(sourceDocument);
- Class *foo = src->globalSymbolAt(0)->asClass();
+ Class *foo = headerDocument->globalSymbolAt(0)->asClass();
QVERIFY(foo);
QCOMPARE(foo->line(), 1U);
QCOMPARE(foo->column(), 7U);
@@ -463,7 +434,7 @@ void CppToolsPlugin::test_codegen_definition_first_member()
QList<InsertionLocation> locList = find.methodDefinition(decl);
QVERIFY(locList.size() == 1);
InsertionLocation loc = locList.first();
- QCOMPARE(loc.fileName(), dst->fileName());
+ QCOMPARE(loc.fileName(), sourceDocument->fileName());
QCOMPARE(loc.line(), 4U);
QCOMPARE(loc.column(), 1U);
QCOMPARE(loc.suffix(), QLatin1String("\n\n"));
@@ -472,49 +443,42 @@ void CppToolsPlugin::test_codegen_definition_first_member()
void CppToolsPlugin::test_codegen_definition_last_member()
{
- const QByteArray srcText = "\n"
+ Tests::TemporaryDir temporaryDir;
+ QVERIFY(temporaryDir.isValid());
+
+ const QByteArray headerText = "\n"
"class Foo\n" // line 1
"{\n"
"void foo();\n" // line 3
"void bar();\n" // line 4
"};\n"
"\n";
+ Document::Ptr headerDocument = createDocumentAndFile(&temporaryDir, "file.h", headerText, 1U);
+ QVERIFY(headerDocument);
- const QByteArray dstText = QString::fromLatin1(
- "\n"
- "#include \"%1/file.h\"\n" // line 1
- "int x;\n"
- "\n"
- "void Foo::foo()\n" // line 4
- "{\n"
- "\n"
- "}\n" // line 7
- "\n"
- "int y;\n").arg(QDir::tempPath()).toLatin1();
-
- Document::Ptr src = Document::create(QDir::tempPath() + QLatin1String("/file.h"));
- QVERIFY(CppTools::Tests::TestCase::writeFile(src->fileName(), srcText));
- src->setUtf8Source(srcText);
- src->parse();
- src->check();
- QCOMPARE(src->diagnosticMessages().size(), 0);
- QCOMPARE(src->globalSymbolCount(), 1U);
-
- Document::Ptr dst = Document::create(QDir::tempPath() + QLatin1String("/file.cpp"));
- dst->addIncludeFile(Document::Include(QLatin1String("file.h"), src->fileName(), 1,
- Client::IncludeLocal));
- QVERIFY(CppTools::Tests::TestCase::writeFile(dst->fileName(), dstText));
- dst->setUtf8Source(dstText);
- dst->parse();
- dst->check();
- QCOMPARE(dst->diagnosticMessages().size(), 0);
- QCOMPARE(dst->globalSymbolCount(), 3U);
+ const QByteArray sourceText = QString::fromLatin1(
+ "\n"
+ "#include \"%1/file.h\"\n" // line 1
+ "int x;\n"
+ "\n"
+ "void Foo::foo()\n" // line 4
+ "{\n"
+ "\n"
+ "}\n" // line 7
+ "\n"
+ "int y;\n").arg(temporaryDir.path()).toLatin1();
+
+ Document::Ptr sourceDocument = createDocumentAndFile(&temporaryDir, "file.cpp", sourceText, 3U);
+ QVERIFY(sourceDocument);
+ sourceDocument->addIncludeFile(Document::Include(QLatin1String("file.h"),
+ headerDocument->fileName(), 1,
+ Client::IncludeLocal));
Snapshot snapshot;
- snapshot.insert(src);
- snapshot.insert(dst);
+ snapshot.insert(headerDocument);
+ snapshot.insert(sourceDocument);
- Class *foo = src->globalSymbolAt(0)->asClass();
+ Class *foo = headerDocument->globalSymbolAt(0)->asClass();
QVERIFY(foo);
QCOMPARE(foo->line(), 1U);
QCOMPARE(foo->column(), 7U);
@@ -529,7 +493,7 @@ void CppToolsPlugin::test_codegen_definition_last_member()
QList<InsertionLocation> locList = find.methodDefinition(decl);
QVERIFY(locList.size() == 1);
InsertionLocation loc = locList.first();
- QCOMPARE(loc.fileName(), dst->fileName());
+ QCOMPARE(loc.fileName(), sourceDocument->fileName());
QCOMPARE(loc.line(), 7U);
QCOMPARE(loc.column(), 2U);
QCOMPARE(loc.prefix(), QLatin1String("\n\n"));
@@ -538,7 +502,10 @@ void CppToolsPlugin::test_codegen_definition_last_member()
void CppToolsPlugin::test_codegen_definition_middle_member()
{
- const QByteArray srcText = "\n"
+ Tests::TemporaryDir temporaryDir;
+ QVERIFY(temporaryDir.isValid());
+
+ const QByteArray headerText = "\n"
"class Foo\n" // line 1
"{\n"
"void foo();\n" // line 3
@@ -547,46 +514,37 @@ void CppToolsPlugin::test_codegen_definition_middle_member()
"};\n"
"\n";
- const QByteArray dstText = QString::fromLatin1(
- "\n"
- "#include \"%1/file.h\"\n" // line 1
- "int x;\n"
- "\n"
- "void Foo::foo()\n" // line 4
- "{\n"
- "\n"
- "}\n" // line 7
- "\n"
- "void Foo::car()\n" // line 9
- "{\n"
- "\n"
- "}\n"
- "\n"
- "int y;\n").arg(QDir::tempPath()).toLatin1();
-
- Document::Ptr src = Document::create(QDir::tempPath() + QLatin1String("/file.h"));
- QVERIFY(CppTools::Tests::TestCase::writeFile(src->fileName(), srcText));
- src->setUtf8Source(srcText);
- src->parse();
- src->check();
- QCOMPARE(src->diagnosticMessages().size(), 0);
- QCOMPARE(src->globalSymbolCount(), 1U);
-
- Document::Ptr dst = Document::create(QDir::tempPath() + QLatin1String("/file.cpp"));
- dst->addIncludeFile(Document::Include(QLatin1String("file.h"), src->fileName(), 1,
- Client::IncludeLocal));
- QVERIFY(CppTools::Tests::TestCase::writeFile(dst->fileName(), dstText));
- dst->setUtf8Source(dstText);
- dst->parse();
- dst->check();
- QCOMPARE(dst->diagnosticMessages().size(), 0);
- QCOMPARE(dst->globalSymbolCount(), 4U);
+ Document::Ptr headerDocument = createDocumentAndFile(&temporaryDir, "file.h", headerText, 1U);
+ QVERIFY(headerDocument);
+
+ const QByteArray sourceText = QString::fromLatin1(
+ "\n"
+ "#include \"%1/file.h\"\n" // line 1
+ "int x;\n"
+ "\n"
+ "void Foo::foo()\n" // line 4
+ "{\n"
+ "\n"
+ "}\n" // line 7
+ "\n"
+ "void Foo::car()\n" // line 9
+ "{\n"
+ "\n"
+ "}\n"
+ "\n"
+ "int y;\n").arg(QDir::tempPath()).toLatin1();
+
+ Document::Ptr sourceDocument = createDocumentAndFile(&temporaryDir, "file.cpp", sourceText, 4U);
+ QVERIFY(sourceDocument);
+ sourceDocument->addIncludeFile(Document::Include(QLatin1String("file.h"),
+ headerDocument->fileName(), 1,
+ Client::IncludeLocal));
Snapshot snapshot;
- snapshot.insert(src);
- snapshot.insert(dst);
+ snapshot.insert(headerDocument);
+ snapshot.insert(sourceDocument);
- Class *foo = src->globalSymbolAt(0)->asClass();
+ Class *foo = headerDocument->globalSymbolAt(0)->asClass();
QVERIFY(foo);
QCOMPARE(foo->line(), 1U);
QCOMPARE(foo->column(), 7U);
@@ -601,7 +559,7 @@ void CppToolsPlugin::test_codegen_definition_middle_member()
QList<InsertionLocation> locList = find.methodDefinition(decl);
QVERIFY(locList.size() == 1);
InsertionLocation loc = locList.first();
- QCOMPARE(loc.fileName(), dst->fileName());
+ QCOMPARE(loc.fileName(), sourceDocument->fileName());
QCOMPARE(loc.line(), 7U);
QCOMPARE(loc.column(), 2U);
QCOMPARE(loc.prefix(), QLatin1String("\n\n"));
@@ -610,7 +568,10 @@ void CppToolsPlugin::test_codegen_definition_middle_member()
void CppToolsPlugin::test_codegen_definition_middle_member_surrounded_by_undefined()
{
- const QByteArray srcText = "\n"
+ Tests::TemporaryDir temporaryDir;
+ QVERIFY(temporaryDir.isValid());
+
+ const QByteArray headerText = "\n"
"class Foo\n" // line 1
"{\n"
"void foo();\n" // line 3
@@ -619,8 +580,10 @@ void CppToolsPlugin::test_codegen_definition_middle_member_surrounded_by_undefin
"void car();\n" // line 6
"};\n"
"\n";
+ Document::Ptr headerDocument = createDocumentAndFile(&temporaryDir, "file.h", headerText, 1U);
+ QVERIFY(headerDocument);
- const QByteArray dstText = QString::fromLatin1(
+ const QByteArray sourceText = QString::fromLatin1(
"\n"
"#include \"%1/file.h\"\n" // line 1
"int x;\n"
@@ -630,31 +593,18 @@ void CppToolsPlugin::test_codegen_definition_middle_member_surrounded_by_undefin
"\n"
"}\n"
"\n"
- "int y;\n").arg(QDir::tempPath()).toLatin1();
-
- Document::Ptr src = Document::create(QDir::tempPath() + QLatin1String("/file.h"));
- QVERIFY(CppTools::Tests::TestCase::writeFile(src->fileName(), srcText));
- src->setUtf8Source(srcText);
- src->parse();
- src->check();
- QCOMPARE(src->diagnosticMessages().size(), 0);
- QCOMPARE(src->globalSymbolCount(), 1U);
-
- Document::Ptr dst = Document::create(QDir::tempPath() + QLatin1String("/file.cpp"));
- dst->addIncludeFile(Document::Include(QLatin1String("file.h"), src->fileName(), 1,
- Client::IncludeLocal));
- QVERIFY(CppTools::Tests::TestCase::writeFile(dst->fileName(), dstText));
- dst->setUtf8Source(dstText);
- dst->parse();
- dst->check();
- QCOMPARE(dst->diagnosticMessages().size(), 0);
- QCOMPARE(dst->globalSymbolCount(), 3U);
+ "int y;\n").arg(temporaryDir.path()).toLatin1();
+ Document::Ptr sourceDocument = createDocumentAndFile(&temporaryDir, "file.cpp", sourceText, 3U);
+ QVERIFY(sourceDocument);
+ sourceDocument->addIncludeFile(Document::Include(QLatin1String("file.h"),
+ headerDocument->fileName(), 1,
+ Client::IncludeLocal));
Snapshot snapshot;
- snapshot.insert(src);
- snapshot.insert(dst);
+ snapshot.insert(headerDocument);
+ snapshot.insert(sourceDocument);
- Class *foo = src->globalSymbolAt(0)->asClass();
+ Class *foo = headerDocument->globalSymbolAt(0)->asClass();
QVERIFY(foo);
QCOMPARE(foo->line(), 1U);
QCOMPARE(foo->column(), 7U);
@@ -669,7 +619,7 @@ void CppToolsPlugin::test_codegen_definition_middle_member_surrounded_by_undefin
QList<InsertionLocation> locList = find.methodDefinition(decl);
QVERIFY(locList.size() == 1);
InsertionLocation loc = locList.first();
- QCOMPARE(loc.fileName(), dst->fileName());
+ QCOMPARE(loc.fileName(), sourceDocument->fileName());
QCOMPARE(loc.line(), 4U);
QCOMPARE(loc.column(), 1U);
QCOMPARE(loc.prefix(), QString());
@@ -678,7 +628,10 @@ void CppToolsPlugin::test_codegen_definition_middle_member_surrounded_by_undefin
void CppToolsPlugin::test_codegen_definition_member_specific_file()
{
- const QByteArray srcText = "\n"
+ Tests::TemporaryDir temporaryDir;
+ QVERIFY(temporaryDir.isValid());
+
+ const QByteArray headerText = "\n"
"class Foo\n" // line 1
"{\n"
"void foo();\n" // line 3
@@ -690,42 +643,31 @@ void CppToolsPlugin::test_codegen_definition_member_specific_file()
"{\n"
"\n"
"}\n";
+ Document::Ptr headerDocument = createDocumentAndFile(&temporaryDir, "file.h", headerText, 2U);
+ QVERIFY(headerDocument);
- const QByteArray dstText = QString::fromLatin1(
- "\n"
- "#include \"%1/file.h\"\n" // line 1
- "int x;\n"
- "\n"
- "void Foo::foo()\n" // line 4
- "{\n"
- "\n"
- "}\n" // line 7
- "\n"
- "int y;\n").arg(QDir::tempPath()).toLatin1();
-
- Document::Ptr src = Document::create(QDir::tempPath() + QLatin1String("/file.h"));
- QVERIFY(CppTools::Tests::TestCase::writeFile(src->fileName(), srcText));
- src->setUtf8Source(srcText);
- src->parse();
- src->check();
- QCOMPARE(src->diagnosticMessages().size(), 0);
- QCOMPARE(src->globalSymbolCount(), 2U);
-
- Document::Ptr dst = Document::create(QDir::tempPath() + QLatin1String("/file.cpp"));
- dst->addIncludeFile(Document::Include(QLatin1String("file.h"), src->fileName(), 1,
- Client::IncludeLocal));
- QVERIFY(CppTools::Tests::TestCase::writeFile(dst->fileName(), dstText));
- dst->setUtf8Source(dstText);
- dst->parse();
- dst->check();
- QCOMPARE(dst->diagnosticMessages().size(), 0);
- QCOMPARE(dst->globalSymbolCount(), 3U);
+ const QByteArray sourceText = QString::fromLatin1(
+ "\n"
+ "#include \"%1/file.h\"\n" // line 1
+ "int x;\n"
+ "\n"
+ "void Foo::foo()\n" // line 4
+ "{\n"
+ "\n"
+ "}\n" // line 7
+ "\n"
+ "int y;\n").arg(temporaryDir.path()).toLatin1();
+ Document::Ptr sourceDocument = createDocumentAndFile(&temporaryDir, "file.cpp", sourceText, 3U);
+ QVERIFY(sourceDocument);
+ sourceDocument->addIncludeFile(Document::Include(QLatin1String("file.h"),
+ headerDocument->fileName(), 1,
+ Client::IncludeLocal));
Snapshot snapshot;
- snapshot.insert(src);
- snapshot.insert(dst);
+ snapshot.insert(headerDocument);
+ snapshot.insert(sourceDocument);
- Class *foo = src->globalSymbolAt(0)->asClass();
+ Class *foo = headerDocument->globalSymbolAt(0)->asClass();
QVERIFY(foo);
QCOMPARE(foo->line(), 1U);
QCOMPARE(foo->column(), 7U);
@@ -737,10 +679,10 @@ void CppToolsPlugin::test_codegen_definition_member_specific_file()
CppRefactoringChanges changes(snapshot);
InsertionPointLocator find(changes);
- QList<InsertionLocation> locList = find.methodDefinition(decl, true, dst->fileName());
+ QList<InsertionLocation> locList = find.methodDefinition(decl, true, sourceDocument->fileName());
QVERIFY(locList.size() == 1);
InsertionLocation loc = locList.first();
- QCOMPARE(loc.fileName(), dst->fileName());
+ QCOMPARE(loc.fileName(), sourceDocument->fileName());
QCOMPARE(loc.line(), 7U);
QCOMPARE(loc.column(), 2U);
QCOMPARE(loc.prefix(), QLatin1String("\n\n"));
diff --git a/src/plugins/cpptools/cppcompletion_test.cpp b/src/plugins/cpptools/cppcompletion_test.cpp
index a5eef43fa5..c88a62293e 100644
--- a/src/plugins/cpptools/cppcompletion_test.cpp
+++ b/src/plugins/cpptools/cppcompletion_test.cpp
@@ -73,8 +73,10 @@ public:
m_source[m_position] = ' ';
// Write source to file
- const QString fileName = QDir::tempPath() + QLatin1String("/file.h");
- QVERIFY(writeFile(fileName, m_source));
+ m_temporaryDir.reset(new Tests::TemporaryDir());
+ QVERIFY(m_temporaryDir->isValid());
+ const QString fileName = m_temporaryDir->createFile("file.h", m_source);
+ QVERIFY(!fileName.isEmpty());
// Open in editor
m_editor = EditorManager::openEditor(fileName);
@@ -150,6 +152,7 @@ private:
QByteArray m_source;
int m_position;
Snapshot m_snapshot;
+ QScopedPointer<Tests::TemporaryDir> m_temporaryDir;
TextEditorWidget *m_editorWidget;
QTextDocument *m_textDocument;
IEditor *m_editor;
diff --git a/src/plugins/cpptools/cppheadersource_test.cpp b/src/plugins/cpptools/cppheadersource_test.cpp
index ed67fa9217..e739320de6 100644
--- a/src/plugins/cpptools/cppheadersource_test.cpp
+++ b/src/plugins/cpptools/cppheadersource_test.cpp
@@ -30,6 +30,7 @@
#include "cpptoolsplugin.h"
#include "cpptoolsreuse.h"
+#include "cpptoolstestcase.h"
#include "cppfilesettingspage.h"
#include <utils/fileutils.h>
@@ -60,15 +61,16 @@ void CppToolsPlugin::test_headersource()
QFETCH(QString, sourceFileName);
QFETCH(QString, headerFileName);
- bool wasHeader;
- const QString baseDir = baseTestDir();
- QDir path = QDir(baseDir + _(QTest::currentDataTag()));
+ Tests::TemporaryDir temporaryDir;
+ QVERIFY(temporaryDir.isValid());
+ const QDir path = QDir(temporaryDir.path() + QLatin1Char('/') + _(QTest::currentDataTag()));
const QString sourcePath = path.absoluteFilePath(sourceFileName);
const QString headerPath = path.absoluteFilePath(headerFileName);
createTempFile(sourcePath);
createTempFile(headerPath);
+ bool wasHeader;
clearHeaderSourceCache();
QCOMPARE(correspondingHeaderOrSource(sourcePath, &wasHeader), headerPath);
QVERIFY(!wasHeader);
diff --git a/src/plugins/cpptools/cppmodelmanager_test.cpp b/src/plugins/cpptools/cppmodelmanager_test.cpp
index 8258dcf710..915da3828c 100644
--- a/src/plugins/cpptools/cppmodelmanager_test.cpp
+++ b/src/plugins/cpptools/cppmodelmanager_test.cpp
@@ -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());
diff --git a/src/plugins/cpptools/cpppointerdeclarationformatter_test.cpp b/src/plugins/cpptools/cpppointerdeclarationformatter_test.cpp
index 7ab12f77a2..9ac573c38d 100644
--- a/src/plugins/cpptools/cpppointerdeclarationformatter_test.cpp
+++ b/src/plugins/cpptools/cpppointerdeclarationformatter_test.cpp
@@ -87,15 +87,18 @@ public:
}
// Write source to temprorary file
- const QString filePath = QDir::tempPath() + QLatin1String("/file.h");
- Document::Ptr document = Document::create(filePath);
- QVERIFY(writeFile(document->fileName(), sourceWithoutCursorMarker.toUtf8()));
+ Tests::TemporaryDir temporaryDir;
+ QVERIFY(temporaryDir.isValid());
+ const QString filePath = temporaryDir.createFile("file.h",
+ sourceWithoutCursorMarker.toUtf8());
+ QVERIFY(!filePath.isEmpty());
// Preprocess source
Environment env;
Preprocessor preprocess(0, &env);
const QByteArray preprocessedSource = preprocess.run(filePath, sourceWithoutCursorMarker);
+ Document::Ptr document = Document::create(filePath);
document->setUtf8Source(preprocessedSource);
document->parse(parseMode);
document->check();
diff --git a/src/plugins/cpptools/cppsourceprocessor_test.cpp b/src/plugins/cpptools/cppsourceprocessor_test.cpp
index 624f730d68..d40fcfb889 100644
--- a/src/plugins/cpptools/cppsourceprocessor_test.cpp
+++ b/src/plugins/cpptools/cppsourceprocessor_test.cpp
@@ -63,22 +63,16 @@ public:
cleanUp();
}
- Document::Ptr run(const QByteArray &source)
+ Document::Ptr run(const QString &filePath)
{
- const QString fileName = TestIncludePaths::testFilePath();
-
- FileWriterAndRemover scopedFile(fileName, source);
- if (!scopedFile.writtenSuccessfully())
- return Document::Ptr();
-
QScopedPointer<CppSourceProcessor> sourceProcessor(
CppModelManager::createSourceProcessor());
const ProjectPart::HeaderPath hp(TestIncludePaths::directoryOfTestFile(),
ProjectPart::HeaderPath::IncludePath);
sourceProcessor->setHeaderPaths(ProjectPart::HeaderPaths() << hp);
- sourceProcessor->run(fileName);
+ sourceProcessor->run(filePath);
- Document::Ptr document = m_cmm->document(fileName);
+ Document::Ptr document = m_cmm->document(filePath);
return document;
}
@@ -101,14 +95,11 @@ private:
/// Check: Resolved and unresolved includes are properly tracked.
void CppToolsPlugin::test_cppsourceprocessor_includes_resolvedUnresolved()
{
- QByteArray source =
- "#include \"header.h\"\n"
- "#include \"notresolvable.h\"\n"
- "\n"
- ;
+ const QString testFilePath
+ = TestIncludePaths::testFilePath(QLatin1String("test_main_resolvedUnresolved.cpp"));
SourcePreprocessor processor;
- Document::Ptr document = processor.run(source);
+ Document::Ptr document = processor.run(testFilePath);
QVERIFY(document);
const QList<Document::Include> resolvedIncludes = document->resolvedIncludes();
@@ -167,15 +158,11 @@ void CppToolsPlugin::test_cppsourceprocessor_includes_cyclic()
/// Check: All include errors are reported as diagnostic messages.
void CppToolsPlugin::test_cppsourceprocessor_includes_allDiagnostics()
{
- QByteArray source =
- "#include <NotResolvable1>\n"
- "#include <NotResolvable2>\n"
- "#include \"/some/nonexisting/file123.h\"\n"
- "\n"
- ;
+ const QString testFilePath
+ = TestIncludePaths::testFilePath(QLatin1String("test_main_allDiagnostics.cpp"));
SourcePreprocessor processor;
- Document::Ptr document = processor.run(source);
+ Document::Ptr document = processor.run(testFilePath);
QVERIFY(document);
QCOMPARE(document->resolvedIncludes().size(), 0);
@@ -185,15 +172,11 @@ void CppToolsPlugin::test_cppsourceprocessor_includes_allDiagnostics()
void CppToolsPlugin::test_cppsourceprocessor_macroUses()
{
- QByteArray source =
- "#define SOMEDEFINE 1\n"
- "#if SOMEDEFINE == 1\n"
- " int someNumber;\n"
- "#endif\n"
- ;
+ const QString testFilePath
+ = TestIncludePaths::testFilePath(QLatin1String("test_main_macroUses.cpp"));
SourcePreprocessor processor;
- Document::Ptr document = processor.run(source);
+ Document::Ptr document = processor.run(testFilePath);
QVERIFY(document);
const QList<Document::MacroUse> macroUses = document->macroUses();
QCOMPARE(macroUses.size(), 1);
diff --git a/src/plugins/cpptools/cpptoolstestcase.cpp b/src/plugins/cpptools/cpptoolstestcase.cpp
index 271410bf4c..8ee8aa6304 100644
--- a/src/plugins/cpptools/cpptoolstestcase.cpp
+++ b/src/plugins/cpptools/cpptoolstestcase.cpp
@@ -77,8 +77,12 @@ TestDocument::TestDocument(const QByteArray &fileName, const QByteArray &source,
QString TestDocument::filePath() const
{
+ if (!m_baseDirectory.isEmpty())
+ return QDir::cleanPath(m_baseDirectory + QLatin1Char('/') + m_fileName);
+
if (!QFileInfo(m_fileName).isAbsolute())
return QDir::tempPath() + QLatin1Char('/') + m_fileName;
+
return m_fileName;
}
@@ -263,10 +267,26 @@ void ProjectOpenerAndCloser::onGcFinished()
m_gcFinished = true;
}
-TemporaryCopiedDir::TemporaryCopiedDir(const QString &sourceDirPath)
+TemporaryDir::TemporaryDir()
: m_temporaryDir(QDir::tempPath() + QLatin1String("/qtcreator-tests-XXXXXX"))
, m_isValid(m_temporaryDir.isValid())
{
+}
+
+QString TemporaryDir::createFile(const QByteArray &relativePath, const QByteArray &contents)
+{
+ const QString relativePathString = QString::fromUtf8(relativePath);
+ if (relativePathString.isEmpty() || QFileInfo(relativePathString).isAbsolute())
+ return QString();
+
+ const QString filePath = m_temporaryDir.path() + QLatin1Char('/') + relativePathString;
+ if (!TestCase::writeFile(filePath, contents))
+ return QString();
+ return filePath;
+}
+
+TemporaryCopiedDir::TemporaryCopiedDir(const QString &sourceDirPath)
+{
if (!m_isValid)
return;
diff --git a/src/plugins/cpptools/cpptoolstestcase.h b/src/plugins/cpptools/cpptoolstestcase.h
index bbe4629858..5cfa8eba40 100644
--- a/src/plugins/cpptools/cpptoolstestcase.h
+++ b/src/plugins/cpptools/cpptoolstestcase.h
@@ -60,10 +60,13 @@ class CPPTOOLS_EXPORT TestDocument
public:
TestDocument(const QByteArray &fileName, const QByteArray &source, char cursorMarker = '@');
+ void setBaseDirectory(const QString &baseDirectory) { m_baseDirectory = baseDirectory; }
+
QString filePath() const;
bool writeToDisk() const;
public:
+ QString m_baseDirectory;
QString m_fileName;
QString m_source;
char m_cursorMarker;
@@ -124,20 +127,33 @@ private:
QList<ProjectExplorer::Project *> m_openProjects;
};
-class CPPTOOLS_EXPORT TemporaryCopiedDir
+class TemporaryDir
{
+ Q_DISABLE_COPY(TemporaryDir)
+
public:
- TemporaryCopiedDir(const QString &sourceDirPath);
+ TemporaryDir();
bool isValid() const { return m_isValid; }
QString path() const { return m_temporaryDir.path(); }
- QString absolutePath(const QByteArray &relativePath) const;
-private:
+ QString createFile(const QByteArray &relativePath, const QByteArray &contents);
+
+protected:
QTemporaryDir m_temporaryDir;
bool m_isValid;
};
+class CPPTOOLS_EXPORT TemporaryCopiedDir : public TemporaryDir
+{
+public:
+ TemporaryCopiedDir(const QString &sourceDirPath);
+ QString absolutePath(const QByteArray &relativePath) const;
+
+private:
+ TemporaryCopiedDir();
+};
+
class CPPTOOLS_EXPORT VerifyCleanCppModelManager
{
public:
diff --git a/src/plugins/cpptools/includeutils.cpp b/src/plugins/cpptools/includeutils.cpp
index 8f3e4daf26..f79b306c8e 100644
--- a/src/plugins/cpptools/includeutils.cpp
+++ b/src/plugins/cpptools/includeutils.cpp
@@ -544,14 +544,8 @@ bool IncludeGroup::hasCommonIncludeDir() const
using namespace Tests;
using CppTools::Internal::CppToolsPlugin;
-static QList<Include> includesForSource(const QByteArray &source)
+static QList<Include> includesForSource(const QString &filePath)
{
- const QString fileName = TestIncludePaths::testFilePath();
-
- FileWriterAndRemover scopedFile(fileName, source);
- if (!scopedFile.writtenSuccessfully())
- return QList<Include>();
-
using namespace CppTools::Internal;
CppModelManager *cmm = CppModelManager::instance();
cmm->GC();
@@ -560,44 +554,18 @@ static QList<Include> includesForSource(const QByteArray &source)
<< ProjectPart::HeaderPath(
TestIncludePaths::globalIncludePath(),
ProjectPart::HeaderPath::IncludePath));
- sourceProcessor->run(fileName);
+ sourceProcessor->run(filePath);
- Document::Ptr document = cmm->document(fileName);
+ Document::Ptr document = cmm->document(filePath);
return document->resolvedIncludes();
}
void CppToolsPlugin::test_includeGroups_detectIncludeGroupsByNewLines()
{
- // Source referencing those files
- QByteArray source =
- "#include \"header.h\"\n"
- "\n"
- "#include \"file.h\"\n"
- "#include \"fileother.h\"\n"
- "\n"
- "#include <lib/fileother.h>\n"
- "#include <lib/file.h>\n"
- "\n"
- "#include \"otherlib/file.h\"\n"
- "#include \"otherlib/fileother.h\"\n"
- "\n"
- "#include \"utils/utils.h\"\n"
- "\n"
- "#include <QDebug>\n"
- "#include <QDir>\n"
- "#include <QString>\n"
- "\n"
- "#include <iostream>\n"
- "#include <string>\n"
- "#include <except>\n"
- "\n"
- "#include <iostream>\n"
- "#include \"stuff\"\n"
- "#include <except>\n"
- "\n"
- ;
-
- QList<Include> includes = includesForSource(source);
+ const QString testFilePath = TestIncludePaths::testFilePath(
+ QLatin1String("test_main_detectIncludeGroupsByNewLines.cpp"));
+
+ QList<Include> includes = includesForSource(testFilePath);
QCOMPARE(includes.size(), 17);
QList<IncludeGroup> includeGroups
= IncludeGroup::detectIncludeGroupsByNewLines(includes);
@@ -636,20 +604,10 @@ void CppToolsPlugin::test_includeGroups_detectIncludeGroupsByNewLines()
void CppToolsPlugin::test_includeGroups_detectIncludeGroupsByIncludeDir()
{
- QByteArray source =
- "#include \"file.h\"\n"
- "#include \"fileother.h\"\n"
- "#include <lib/file.h>\n"
- "#include <lib/fileother.h>\n"
- "#include \"otherlib/file.h\"\n"
- "#include \"otherlib/fileother.h\"\n"
- "#include <iostream>\n"
- "#include <string>\n"
- "#include <except>\n"
- "\n"
- ;
-
- QList<Include> includes = includesForSource(source);
+ const QString testFilePath = TestIncludePaths::testFilePath(
+ QLatin1String("test_main_detectIncludeGroupsByIncludeDir.cpp"));
+
+ QList<Include> includes = includesForSource(testFilePath);
QCOMPARE(includes.size(), 9);
QList<IncludeGroup> includeGroups
= IncludeGroup::detectIncludeGroupsByIncludeDir(includes);
@@ -670,20 +628,10 @@ void CppToolsPlugin::test_includeGroups_detectIncludeGroupsByIncludeDir()
void CppToolsPlugin::test_includeGroups_detectIncludeGroupsByIncludeType()
{
- QByteArray source =
- "#include \"file.h\"\n"
- "#include \"fileother.h\"\n"
- "#include <lib/file.h>\n"
- "#include <lib/fileother.h>\n"
- "#include \"otherlib/file.h\"\n"
- "#include \"otherlib/fileother.h\"\n"
- "#include <iostream>\n"
- "#include <string>\n"
- "#include <except>\n"
- "\n"
- ;
-
- QList<Include> includes = includesForSource(source);
+ const QString testFilePath = TestIncludePaths::testFilePath(
+ QLatin1String("test_main_detectIncludeGroupsByIncludeType.cpp"));
+
+ QList<Include> includes = includesForSource(testFilePath);
QCOMPARE(includes.size(), 9);
QList<IncludeGroup> includeGroups
= IncludeGroup::detectIncludeGroupsByIncludeDir(includes);
diff --git a/src/plugins/cpptools/typehierarchybuilder_test.cpp b/src/plugins/cpptools/typehierarchybuilder_test.cpp
index 64fff6ceec..0db7e58b0a 100644
--- a/src/plugins/cpptools/typehierarchybuilder_test.cpp
+++ b/src/plugins/cpptools/typehierarchybuilder_test.cpp
@@ -103,11 +103,17 @@ public:
{
QVERIFY(succeededSoFar());
+ Tests::TemporaryDir temporaryDir;
+ QVERIFY(temporaryDir.isValid());
+
+ QList<Tests::TestDocument> documents_ = documents;
+
// Write files
QSet<QString> filePaths;
- foreach (const Tests::TestDocument &document, documents) {
- QVERIFY(document.writeToDisk());
- filePaths << document.filePath();
+ for (int i = 0, size = documents_.size(); i < size; ++i) {
+ documents_[i].setBaseDirectory(temporaryDir.path());
+ QVERIFY(documents_[i].writeToDisk());
+ filePaths << documents_[i].filePath();
}
// Parse files
@@ -115,7 +121,7 @@ public:
const Snapshot snapshot = globalSnapshot();
// Get class for which to generate the hierarchy
- const Document::Ptr firstDocument = snapshot.document(documents.first().filePath());
+ const Document::Ptr firstDocument = snapshot.document(documents_.first().filePath());
QVERIFY(firstDocument);
QVERIFY(firstDocument->diagnosticMessages().isEmpty());
Class *clazz = FindFirstClassInDocument()(firstDocument);
diff --git a/src/plugins/genericprojectmanager/genericprojectplugin_test.cpp b/src/plugins/genericprojectmanager/genericprojectplugin_test.cpp
index 1a74608f9e..ea2471c602 100644
--- a/src/plugins/genericprojectmanager/genericprojectplugin_test.cpp
+++ b/src/plugins/genericprojectmanager/genericprojectplugin_test.cpp
@@ -38,7 +38,6 @@
#include <cpptools/cpptoolstestcase.h>
#include <QFileInfo>
-#include <QTemporaryDir>
#include <QTest>
using namespace CppTools;
diff --git a/tests/auto/cplusplus/preprocessor/data/include-data/local/test_main_allDiagnostics.cpp b/tests/auto/cplusplus/preprocessor/data/include-data/local/test_main_allDiagnostics.cpp
new file mode 100644
index 0000000000..25403659d7
--- /dev/null
+++ b/tests/auto/cplusplus/preprocessor/data/include-data/local/test_main_allDiagnostics.cpp
@@ -0,0 +1,3 @@
+#include <NotResolvable1>
+#include <NotResolvable2>
+#include "/some/nonexisting/file123.h"
diff --git a/tests/auto/cplusplus/preprocessor/data/include-data/local/test_main_detectIncludeGroupsByIncludeDir.cpp b/tests/auto/cplusplus/preprocessor/data/include-data/local/test_main_detectIncludeGroupsByIncludeDir.cpp
new file mode 100644
index 0000000000..bab15e6311
--- /dev/null
+++ b/tests/auto/cplusplus/preprocessor/data/include-data/local/test_main_detectIncludeGroupsByIncludeDir.cpp
@@ -0,0 +1,9 @@
+#include "file.h"
+#include "fileother.h"
+#include <lib/file.h>
+#include <lib/fileother.h>
+#include "otherlib/file.h"
+#include "otherlib/fileother.h"
+#include <iostream>
+#include <string>
+#include <except>
diff --git a/tests/auto/cplusplus/preprocessor/data/include-data/local/test_main_detectIncludeGroupsByIncludeType.cpp b/tests/auto/cplusplus/preprocessor/data/include-data/local/test_main_detectIncludeGroupsByIncludeType.cpp
new file mode 100644
index 0000000000..bab15e6311
--- /dev/null
+++ b/tests/auto/cplusplus/preprocessor/data/include-data/local/test_main_detectIncludeGroupsByIncludeType.cpp
@@ -0,0 +1,9 @@
+#include "file.h"
+#include "fileother.h"
+#include <lib/file.h>
+#include <lib/fileother.h>
+#include "otherlib/file.h"
+#include "otherlib/fileother.h"
+#include <iostream>
+#include <string>
+#include <except>
diff --git a/tests/auto/cplusplus/preprocessor/data/include-data/local/test_main_detectIncludeGroupsByNewLines.cpp b/tests/auto/cplusplus/preprocessor/data/include-data/local/test_main_detectIncludeGroupsByNewLines.cpp
new file mode 100644
index 0000000000..532347bb6b
--- /dev/null
+++ b/tests/auto/cplusplus/preprocessor/data/include-data/local/test_main_detectIncludeGroupsByNewLines.cpp
@@ -0,0 +1,24 @@
+#include "header.h"
+
+#include "file.h"
+#include "fileother.h"
+
+#include <lib/fileother.h>
+#include <lib/file.h>
+
+#include "otherlib/file.h"
+#include "otherlib/fileother.h"
+
+#include "utils/utils.h"
+
+#include <QDebug>
+#include <QDir>
+#include <QString>
+
+#include <iostream>
+#include <string>
+#include <except>
+
+#include <iostream>
+#include "stuff"
+#include <except>
diff --git a/tests/auto/cplusplus/preprocessor/data/include-data/local/test_main_macroUses.cpp b/tests/auto/cplusplus/preprocessor/data/include-data/local/test_main_macroUses.cpp
new file mode 100644
index 0000000000..1d2571bc43
--- /dev/null
+++ b/tests/auto/cplusplus/preprocessor/data/include-data/local/test_main_macroUses.cpp
@@ -0,0 +1,4 @@
+#define SOMEDEFINE 1
+#if SOMEDEFINE == 1
+ int someNumber;
+#endif
diff --git a/tests/auto/cplusplus/preprocessor/data/include-data/local/test_main_resolvedUnresolved.cpp b/tests/auto/cplusplus/preprocessor/data/include-data/local/test_main_resolvedUnresolved.cpp
new file mode 100644
index 0000000000..5af6f88ed4
--- /dev/null
+++ b/tests/auto/cplusplus/preprocessor/data/include-data/local/test_main_resolvedUnresolved.cpp
@@ -0,0 +1,2 @@
+#include "header.h"
+#include "notresolvable.h"