diff options
| author | Joerg Bornemann <joerg.bornemann@digia.com> | 2013-04-02 14:40:15 +0200 |
|---|---|---|
| committer | Christian Kandeler <christian.kandeler@digia.com> | 2013-04-03 13:21:20 +0200 |
| commit | f501c82eb66f478c0447ffa08dee1b629f0baa6b (patch) | |
| tree | 2569a897ef4ba548d86a0a28f62741dfd032655c | |
| parent | 87c7b7ec82193527f30fc248fe61c256fa34b608 (diff) | |
| download | qbs-f501c82eb66f478c0447ffa08dee1b629f0baa6b.tar.gz | |
tst_language: refactor handling of init/cleanup datatags
Change-Id: I70af2f43848cb7315eb7dfe64b32447670a62e23
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
| -rw-r--r-- | src/lib/language/tst_language.cpp | 136 | ||||
| -rw-r--r-- | src/lib/language/tst_language.h | 1 |
2 files changed, 42 insertions, 95 deletions
diff --git a/src/lib/language/tst_language.cpp b/src/lib/language/tst_language.cpp index 66b19f6a0..2160b9c3a 100644 --- a/src/lib/language/tst_language.cpp +++ b/src/lib/language/tst_language.cpp @@ -85,6 +85,37 @@ QVariant TestLanguage::productPropertyValue(ResolvedProductPtr product, QString return getConfigProperty(product->properties->value(), propertyNameComponents); } +void TestLanguage::handleInitCleanupDataTags(const char *projectFileName, bool *handled) +{ + const QByteArray dataTag = QTest::currentDataTag(); + if (dataTag == "init") { + *handled = true; + bool exceptionCaught = false; + try { + defaultParameters.projectFilePath = testProject(projectFileName); + project = loader->loadProject(defaultParameters); + QVERIFY(project); + } catch (const Error &e) { + exceptionCaught = true; + qDebug() << e.toString(); + } + QCOMPARE(exceptionCaught, false); + } else if (dataTag == "cleanup") { + *handled = true; + project.clear(); + } else { + *handled = false; + } +} + +#define HANDLE_INIT_CLEANUP_DATATAGS(fn) {\ + bool handled;\ + handleInitCleanupDataTags(fn, &handled);\ + if (handled)\ + return;\ + QVERIFY(project);\ +} + void TestLanguage::initTestCase() { const Logger logger(m_logSink); @@ -292,29 +323,12 @@ void TestLanguage::groupConditions_data() void TestLanguage::groupConditions() { - const QString productName = QString::fromLocal8Bit(QTest::currentDataTag()); - if (productName == "init") { - bool exceptionCaught = false; - try { - defaultParameters.projectFilePath = testProject("groupconditions.qbs"); - project = loader->loadProject(defaultParameters); - QVERIFY(project); - } catch (const Error &e) { - exceptionCaught = true; - qDebug() << e.toString(); - } - QCOMPARE(exceptionCaught, false); - return; - } else if (productName == "cleanup") { - project.clear(); - return; - } - - QVERIFY(project); + HANDLE_INIT_CLEANUP_DATATAGS("groupconditions.qbs"); QFETCH(int, groupCount); QFETCH(QList<bool>, groupEnabled); QCOMPARE(groupCount, groupEnabled.count()); const QHash<QString, ResolvedProductPtr> products = productsFromProject(project); + const QString productName = QString::fromLocal8Bit(QTest::currentDataTag()); ResolvedProductPtr product = products.value(productName); QVERIFY(product); QCOMPARE(product->name, productName); @@ -512,28 +526,11 @@ void TestLanguage::moduleProperties_data() void TestLanguage::moduleProperties() { - QString productName = QString::fromLocal8Bit(QTest::currentDataTag()); - if (productName == "init") { - bool exceptionCaught = false; - try { - defaultParameters.projectFilePath = testProject("moduleproperties.qbs"); - project = loader->loadProject(defaultParameters); - QVERIFY(project); - } catch (const Error &e) { - exceptionCaught = true; - qDebug() << e.toString(); - } - QCOMPARE(exceptionCaught, false); - return; - } else if (productName == "cleanup") { - project.clear(); - return; - } - - QVERIFY(project); + HANDLE_INIT_CLEANUP_DATATAGS("moduleproperties.qbs"); QFETCH(QString, propertyName); QFETCH(QStringList, expectedValues); QHash<QString, ResolvedProductPtr> products = productsFromProject(project); + const QString productName = QString::fromLocal8Bit(QTest::currentDataTag()); ResolvedProductPtr product = products.value(productName); QVERIFY(product); QVariantList values = PropertyFinder().propertyValues(product->properties->value(), @@ -568,28 +565,11 @@ void TestLanguage::modules_data() void TestLanguage::modules() { - QString productName = QString::fromLocal8Bit(QTest::currentDataTag()); - if (productName == "init") { - bool exceptionCaught = false; - try { - defaultParameters.projectFilePath = testProject("modules.qbs"); - project = loader->loadProject(defaultParameters); - QVERIFY(project); - } catch (const Error &e) { - exceptionCaught = true; - qDebug() << e.toString(); - } - QCOMPARE(exceptionCaught, false); - return; - } else if (productName == "cleanup") { - project.clear(); - return; - } - - QVERIFY(project); + HANDLE_INIT_CLEANUP_DATATAGS("modules.qbs"); QFETCH(QStringList, expectedModulesInProduct); QFETCH(QString, expectedProductProperty); QHash<QString, ResolvedProductPtr> products = productsFromProject(project); + const QString productName = QString::fromLocal8Bit(QTest::currentDataTag()); ResolvedProductPtr product = products.value(productName); QVERIFY(product); QCOMPARE(product->name, productName); @@ -792,28 +772,12 @@ void TestLanguage::propertiesBlocks_data() void TestLanguage::propertiesBlocks() { - QString productName = QString::fromLocal8Bit(QTest::currentDataTag()); - if (productName == "init") { - bool exceptionCaught = false; - try { - defaultParameters.projectFilePath = testProject("propertiesblocks.qbs"); - project = loader->loadProject(defaultParameters); - QVERIFY(project); - } catch (const Error &e) { - exceptionCaught = true; - qDebug() << e.toString(); - } - QCOMPARE(exceptionCaught, false); - return; - } else if (productName == "cleanup") { - project = ResolvedProjectPtr(); - return; - } - + HANDLE_INIT_CLEANUP_DATATAGS("propertiesblocks.qbs"); QFETCH(QString, propertyName); QFETCH(QStringList, expectedValues); QVERIFY(project); QHash<QString, ResolvedProductPtr> products = productsFromProject(project); + const QString productName = QString::fromLocal8Bit(QTest::currentDataTag()); ResolvedProductPtr product = products.value(productName); QVERIFY(product); QCOMPARE(product->name, productName); @@ -839,30 +803,12 @@ void TestLanguage::fileTags_data() void TestLanguage::fileTags() { - QString productName = QString::fromLocal8Bit(QTest::currentDataTag()); - if (productName == QLatin1String("init")) { - bool exceptionCaught = false; - try { - defaultParameters.projectFilePath = testProject("filetags.qbs"); - project = loader->loadProject(defaultParameters); - QVERIFY(project); - } - catch (const Error &e) { - exceptionCaught = true; - qDebug() << e.toString(); - } - QCOMPARE(exceptionCaught, false); - return; - } else if (productName == QLatin1String("cleanup")) { - project = ResolvedProjectPtr(); - return; - } - - QVERIFY(project); + HANDLE_INIT_CLEANUP_DATATAGS("filetags.qbs"); QFETCH(int, numberOfGroups); QFETCH(QStringList, expectedFileTags); QHash<QString, ResolvedProductPtr> products = productsFromProject(project); ResolvedProductPtr product; + const QString productName = QString::fromLocal8Bit(QTest::currentDataTag()); QVERIFY(product = products.value(productName)); QCOMPARE(product->groups.count(), numberOfGroups); GroupPtr group = product->groups.last(); diff --git a/src/lib/language/tst_language.h b/src/lib/language/tst_language.h index 4f4ce19b6..452e57e50 100644 --- a/src/lib/language/tst_language.h +++ b/src/lib/language/tst_language.h @@ -57,6 +57,7 @@ private: QHash<QString, ResolvedProductPtr> productsFromProject(ResolvedProjectPtr project); ResolvedModuleConstPtr findModuleByName(ResolvedProductPtr product, const QString &name); QVariant productPropertyValue(ResolvedProductPtr product, QString propertyName); + void handleInitCleanupDataTags(const char *projectFileName, bool *handled); private slots: void initTestCase(); |
