diff --git a/tests/auto/cplusplus/checksymbols/tst_checksymbols.cpp b/tests/auto/cplusplus/checksymbols/tst_checksymbols.cpp index 13799083b4b810879c2e6471752a4dcc5756a1e8..fd3ba9ddccd0633c81c3916ea4589f2f743aca03 100644 --- a/tests/auto/cplusplus/checksymbols/tst_checksymbols.cpp +++ b/tests/auto/cplusplus/checksymbols/tst_checksymbols.cpp @@ -34,8 +34,8 @@ #include <cpptools/cppchecksymbols.h> #include <cpptools/cppsemanticinfo.h> +#include <cpptools/cpptoolstestcase.h> #include <texteditor/semantichighlighter.h> -#include <utils/fileutils.h> #include <QDebug> #include <QDir> @@ -116,28 +116,15 @@ public: { // Write source to temprorary file const QString filePath = QDir::tempPath() + QLatin1String("/file.h"); - Document::Ptr document = Document::create(filePath); - Utils::FileSaver documentSaver(document->fileName()); - documentSaver.write(source); - documentSaver.finalize(); - - // Preprocess source - Environment env; - Preprocessor preprocess(0, &env); - preprocess.setKeepComments(true); - const QByteArray preprocessedSource = preprocess.run(filePath, source); + CppTools::Tests::TestCase::writeFile(filePath, source); - document->setUtf8Source(preprocessedSource); - QVERIFY(document->parse()); - document->check(); - QVERIFY(document->diagnosticMessages().isEmpty()); + // Processs source + const Document::Ptr document = createDocument(filePath, source); Snapshot snapshot; snapshot.insert(document); // Collect symbols - LookupContext context(document, snapshot); - CheckSymbols::Future future = CheckSymbols::go(document, context, expectedUsesMacros); - future.waitForFinished(); + CheckSymbols::Future future = runCheckSymbols(document, snapshot, expectedUsesMacros); const int resultCount = future.resultCount(); UseList actualUses; @@ -161,6 +148,34 @@ public: QCOMPARE(actualUse, expectedUse); } } + + static CheckSymbols::Future runCheckSymbols(const Document::Ptr &document, + const Snapshot &snapshot, + const UseList &expectedUsesMacros = UseList()) + { + LookupContext context(document, snapshot); + CheckSymbols::Future future = CheckSymbols::go(document, context, expectedUsesMacros); + future.waitForFinished(); + return future; + } + + static Document::Ptr createDocument(const QString &filePath, const QByteArray &source) + { + Environment env; + Preprocessor preprocess(0, &env); + preprocess.setKeepComments(true); + const QByteArray preprocessedSource = preprocess.run(filePath, source); + + Document::Ptr document = Document::create(filePath); + document->setUtf8Source(preprocessedSource); + if (!document->parse()) + return Document::Ptr(); + document->check(); + if (!document->diagnosticMessages().isEmpty()) + return Document::Ptr(); + + return document; + } }; } // anonymous namespace