From 828b61e941fb2247c49c846103f7be5c7c5cbb0a Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Mon, 27 Jul 2015 16:07:47 +0200 Subject: Add qbs project files to unit tests Change-Id: I27918b0beaa39926c13dbf54e1479502a598a598 Reviewed-by: Christian Kandeler --- plugins/autotest/autotest.qbs | 1 + plugins/autotest/autotest_dependencies.pri | 1 + plugins/autotest/autotestunittests.cpp | 60 ++++++++++++++++++++++ plugins/autotest/autotestunittests.h | 2 + plugins/autotest/autotestunittests.qrc | 11 ++++ plugins/autotest/unit_test/mixed_atp/mixed_atp.qbs | 8 +++ plugins/autotest/unit_test/mixed_atp/src/src.qbs | 11 ++++ .../unit_test/mixed_atp/tests/auto/auto.qbs | 13 +++++ .../unit_test/mixed_atp/tests/auto/bench/bench.qbs | 14 +++++ .../unit_test/mixed_atp/tests/auto/dummy/dummy.qbs | 12 +++++ .../unit_test/mixed_atp/tests/auto/gui/gui.qbs | 13 +++++ .../mixed_atp/tests/auto/quickauto/quickauto.qbs | 33 ++++++++++++ .../mixed_atp/tests/auto/quickauto2/quickauto2.qbs | 29 +++++++++++ .../autotest/unit_test/mixed_atp/tests/tests.qbs | 7 +++ plugins/autotest/unit_test/plain/plain.qbs | 7 +++ .../unit_test/plain/test_plain/test_plain.qbs | 10 ++++ 16 files changed, 232 insertions(+) create mode 100644 plugins/autotest/unit_test/mixed_atp/mixed_atp.qbs create mode 100644 plugins/autotest/unit_test/mixed_atp/src/src.qbs create mode 100644 plugins/autotest/unit_test/mixed_atp/tests/auto/auto.qbs create mode 100644 plugins/autotest/unit_test/mixed_atp/tests/auto/bench/bench.qbs create mode 100644 plugins/autotest/unit_test/mixed_atp/tests/auto/dummy/dummy.qbs create mode 100644 plugins/autotest/unit_test/mixed_atp/tests/auto/gui/gui.qbs create mode 100644 plugins/autotest/unit_test/mixed_atp/tests/auto/quickauto/quickauto.qbs create mode 100644 plugins/autotest/unit_test/mixed_atp/tests/auto/quickauto2/quickauto2.qbs create mode 100644 plugins/autotest/unit_test/mixed_atp/tests/tests.qbs create mode 100644 plugins/autotest/unit_test/plain/plain.qbs create mode 100644 plugins/autotest/unit_test/plain/test_plain/test_plain.qbs diff --git a/plugins/autotest/autotest.qbs b/plugins/autotest/autotest.qbs index a75f91da6d..f746d7fae1 100644 --- a/plugins/autotest/autotest.qbs +++ b/plugins/autotest/autotest.qbs @@ -12,6 +12,7 @@ QtcCommercialPlugin { Depends { name: "Utils" } pluginTestDepends: [ + "QbsProjectManager", "QmakeProjectManager" ] diff --git a/plugins/autotest/autotest_dependencies.pri b/plugins/autotest/autotest_dependencies.pri index fd6653ecf1..9410d77950 100644 --- a/plugins/autotest/autotest_dependencies.pri +++ b/plugins/autotest/autotest_dependencies.pri @@ -14,6 +14,7 @@ QTC_LIB_DEPENDS += \ utils QTC_TEST_DEPENDS += \ + qbsprojectmanager \ qmakeprojectmanager \ qtsupport diff --git a/plugins/autotest/autotestunittests.cpp b/plugins/autotest/autotestunittests.cpp index 15f32db669..8878f75418 100644 --- a/plugins/autotest/autotestunittests.cpp +++ b/plugins/autotest/autotestunittests.cpp @@ -117,6 +117,66 @@ void AutoTestUnitTests::testCodeParser_data() QTest::newRow("mixedAutoTestAndQuickTests") << QString(m_tmpDir->path() + QLatin1String("/mixed_atp/mixed_atp.pro")) << 3 << 5 << 3; + QTest::newRow("plainAutoTestQbs") + << QString(m_tmpDir->path() + QLatin1String("/plain/plain.qbs")) + << 1 << 0 << 0; + QTest::newRow("mixedAuotTestAndQuickTestsQbs") + << QString(m_tmpDir->path() + QLatin1String("/mixed_atp/mixed_atp.qbs")) + << 3 << 5 << 3; +} + +void AutoTestUnitTests::testCodeParserSwitchStartup() +{ + QFETCH(QStringList, projectFilePaths); + QFETCH(QList, expectedAutoTestsCount); + QFETCH(QList, expectedNamedQuickTestsCount); + QFETCH(QList, expectedUnnamedQuickTestsCount); + + NavigationWidget *navigation = NavigationWidget::instance(); + navigation->activateSubWidget(Constants::AUTOTEST_ID); + + CppTools::Tests::ProjectOpenerAndCloser projectManager; + for (int i = 0; i < projectFilePaths.size(); ++i) { + qDebug() << "Opening project" << projectFilePaths.at(i); + CppTools::ProjectInfo projectInfo = projectManager.open(projectFilePaths.at(i), true); + QVERIFY(projectInfo.isValid()); + + QSignalSpy parserSpy(m_model->parser(), SIGNAL(parsingFinished())); + QVERIFY(parserSpy.wait(20000)); + + QCOMPARE(m_model->autoTestsCount(), expectedAutoTestsCount.at(i)); + QCOMPARE(m_model->namedQuickTestsCount(), + m_isQt4 ? 0 : expectedNamedQuickTestsCount.at(i)); + QCOMPARE(m_model->unnamedQuickTestsCount(), + m_isQt4 ? 0 : expectedUnnamedQuickTestsCount.at(i)); + + QCOMPARE(m_model->parser()->autoTestsCount(), expectedAutoTestsCount.at(i)); + QCOMPARE(m_model->parser()->namedQuickTestsCount(), + m_isQt4 ? 0 : expectedNamedQuickTestsCount.at(i)); + QCOMPARE(m_model->parser()->unnamedQuickTestsCount(), + m_isQt4 ? 0 : expectedUnnamedQuickTestsCount.at(i)); + } +} + +void AutoTestUnitTests::testCodeParserSwitchStartup_data() +{ + QTest::addColumn("projectFilePaths"); + QTest::addColumn >("expectedAutoTestsCount"); + QTest::addColumn >("expectedNamedQuickTestsCount"); + QTest::addColumn >("expectedUnnamedQuickTestsCount"); + + QStringList projects = QStringList() + << QString(m_tmpDir->path() + QLatin1String("/plain/plain.pro")) + << QString(m_tmpDir->path() + QLatin1String("/mixed_atp/mixed_atp.pro")) + << QString(m_tmpDir->path() + QLatin1String("/plain/plain.qbs")) + << QString(m_tmpDir->path() + QLatin1String("/mixed_atp/mixed_atp.qbs")); + + QList expectedAutoTests = QList() << 1 << 3 << 1 << 3; + QList expectedNamedQuickTests = QList() << 0 << 5 << 0 << 5; + QList expectedUnnamedQuickTests = QList() << 0 << 3 << 0 << 3; + + QTest::newRow("loadMultipleProjects") + << projects << expectedAutoTests << expectedNamedQuickTests << expectedUnnamedQuickTests; } } // namespace Internal diff --git a/plugins/autotest/autotestunittests.h b/plugins/autotest/autotestunittests.h index ab2b7c1b9b..e359e4175d 100644 --- a/plugins/autotest/autotestunittests.h +++ b/plugins/autotest/autotestunittests.h @@ -43,6 +43,8 @@ private slots: void cleanupTestCase(); void testCodeParser(); void testCodeParser_data(); + void testCodeParserSwitchStartup(); + void testCodeParserSwitchStartup_data(); private: TestTreeModel *m_model; diff --git a/plugins/autotest/autotestunittests.qrc b/plugins/autotest/autotestunittests.qrc index 6fb5348e54..25ce4044fe 100644 --- a/plugins/autotest/autotestunittests.qrc +++ b/plugins/autotest/autotestunittests.qrc @@ -28,5 +28,16 @@ unit_test/mixed_atp/tests/auto/quickauto/quickauto.pro unit_test/mixed_atp/tests/auto/quickauto2/quickauto2.pro unit_test/mixed_atp/tests/auto/auto.pro + unit_test/plain/plain.qbs + unit_test/plain/test_plain/test_plain.qbs + unit_test/mixed_atp/mixed_atp.qbs + unit_test/mixed_atp/src/src.qbs + unit_test/mixed_atp/tests/tests.qbs + unit_test/mixed_atp/tests/auto/auto.qbs + unit_test/mixed_atp/tests/auto/bench/bench.qbs + unit_test/mixed_atp/tests/auto/dummy/dummy.qbs + unit_test/mixed_atp/tests/auto/gui/gui.qbs + unit_test/mixed_atp/tests/auto/quickauto/quickauto.qbs + unit_test/mixed_atp/tests/auto/quickauto2/quickauto2.qbs diff --git a/plugins/autotest/unit_test/mixed_atp/mixed_atp.qbs b/plugins/autotest/unit_test/mixed_atp/mixed_atp.qbs new file mode 100644 index 0000000000..dfc99c15df --- /dev/null +++ b/plugins/autotest/unit_test/mixed_atp/mixed_atp.qbs @@ -0,0 +1,8 @@ +import qbs + +Project { + references: [ + "src/src.qbs", + "tests/tests.qbs" + ] +} diff --git a/plugins/autotest/unit_test/mixed_atp/src/src.qbs b/plugins/autotest/unit_test/mixed_atp/src/src.qbs new file mode 100644 index 0000000000..5ed4dd4a36 --- /dev/null +++ b/plugins/autotest/unit_test/mixed_atp/src/src.qbs @@ -0,0 +1,11 @@ +import qbs + +CppApplication { + type: "application" + name: "Dummy Application" + + Depends { name: "Qt.gui" } + Depends { name: "Qt.widgets" } + + files: [ "main.cpp" ] +} diff --git a/plugins/autotest/unit_test/mixed_atp/tests/auto/auto.qbs b/plugins/autotest/unit_test/mixed_atp/tests/auto/auto.qbs new file mode 100644 index 0000000000..a27b392244 --- /dev/null +++ b/plugins/autotest/unit_test/mixed_atp/tests/auto/auto.qbs @@ -0,0 +1,13 @@ +import qbs + +Project { + name: "Auto tests" + + references: [ + "bench/bench.qbs", + "dummy/dummy.qbs", + "gui/gui.qbs", + "quickauto/quickauto.qbs", + "quickauto2/quickauto2.qbs" + ] +} diff --git a/plugins/autotest/unit_test/mixed_atp/tests/auto/bench/bench.qbs b/plugins/autotest/unit_test/mixed_atp/tests/auto/bench/bench.qbs new file mode 100644 index 0000000000..d10891316a --- /dev/null +++ b/plugins/autotest/unit_test/mixed_atp/tests/auto/bench/bench.qbs @@ -0,0 +1,14 @@ +import qbs + +CppApplication { + type: "application" + name: "Benchmark Auto Test" + targetName: "tst_benchtest" + + Depends { name: "cpp" } + Depends { name: "Qt.test" } + + files: [ "tst_benchtest.cpp" ] + + cpp.defines: base.concat("SRCDIR=" + path) +} diff --git a/plugins/autotest/unit_test/mixed_atp/tests/auto/dummy/dummy.qbs b/plugins/autotest/unit_test/mixed_atp/tests/auto/dummy/dummy.qbs new file mode 100644 index 0000000000..012ba11a67 --- /dev/null +++ b/plugins/autotest/unit_test/mixed_atp/tests/auto/dummy/dummy.qbs @@ -0,0 +1,12 @@ +import qbs + +CppApplication { + type: "application" + name: "Dummy auto test" + targetName: "tst_FooBar" + + Depends { name: "Qt.test" } + Depends { name: "Qt.gui" } + + files: [ "tst_foo.cpp", "tst_foo.h" ] +} diff --git a/plugins/autotest/unit_test/mixed_atp/tests/auto/gui/gui.qbs b/plugins/autotest/unit_test/mixed_atp/tests/auto/gui/gui.qbs new file mode 100644 index 0000000000..05359cf10f --- /dev/null +++ b/plugins/autotest/unit_test/mixed_atp/tests/auto/gui/gui.qbs @@ -0,0 +1,13 @@ +import qbs + +CppApplication { + name: "Gui auto test" + targetName: "tst_gui" + + Depends { name: "Qt"; submodules: [ "gui", "widgets", "test" ] } + Depends { name: "cpp" } + + files: [ "tst_guitest.cpp" ] + + cpp.defines: base.concat("SRCDIR=" + path) +} diff --git a/plugins/autotest/unit_test/mixed_atp/tests/auto/quickauto/quickauto.qbs b/plugins/autotest/unit_test/mixed_atp/tests/auto/quickauto/quickauto.qbs new file mode 100644 index 0000000000..1697cd51a2 --- /dev/null +++ b/plugins/autotest/unit_test/mixed_atp/tests/auto/quickauto/quickauto.qbs @@ -0,0 +1,33 @@ +import qbs + +CppApplication { + name: "Qt Quick auto test" + targetName: "test_mal_qtquick" + + Depends { name: "cpp" } + Depends { name: "Qt.core" } + Depends { + condition: Qt.core.versionMajor > 4 + name: "Qt.qmltest" + } + + Group { + name: "main application" + condition: Qt.core.versionMajor > 4 + + files: [ "main.cpp" ] + } + + Group { + name: "qml test files" + qbs.install: true + + files: [ + "tst_test1.qml", "tst_test2.qml", "TestDummy.qml", + "bar/tst_foo.qml", "tst_test3.qml" + ] + } + + // this should be set automatically, but it seems as if this does not happen + cpp.defines: base.concat("QUICK_TEST_SOURCE_DIR=\"" + path + "\"") +} diff --git a/plugins/autotest/unit_test/mixed_atp/tests/auto/quickauto2/quickauto2.qbs b/plugins/autotest/unit_test/mixed_atp/tests/auto/quickauto2/quickauto2.qbs new file mode 100644 index 0000000000..a5fe65fbd6 --- /dev/null +++ b/plugins/autotest/unit_test/mixed_atp/tests/auto/quickauto2/quickauto2.qbs @@ -0,0 +1,29 @@ +import qbs + +CppApplication { + name: "Qt Quick auto test 2" + targetName: "test_mal_qtquick" + + Depends { name: "cpp" } + Depends { name: "Qt.core" } + Depends { + condition: Qt.core.versionMajor > 4 + name: "Qt.qmltest" + } + + Group { + condition: Qt.core.versionMajor > 4 + name: "main application" + files: [ "main.cpp" ] + } + + Group { + name: "qml test files" + qbs.install: true + + files: [ "tst_test1.qml", "tst_test2.qml" ] + } + + // this should be set automatically, but it seems as if this does not happen + cpp.defines: base.concat("QUICK_TEST_SOURCE_DIR=\"" + path + "\"") +} diff --git a/plugins/autotest/unit_test/mixed_atp/tests/tests.qbs b/plugins/autotest/unit_test/mixed_atp/tests/tests.qbs new file mode 100644 index 0000000000..e62815789f --- /dev/null +++ b/plugins/autotest/unit_test/mixed_atp/tests/tests.qbs @@ -0,0 +1,7 @@ +import qbs + +Project { + name: "Tests" + + references: [ "auto/auto.qbs" ] +} diff --git a/plugins/autotest/unit_test/plain/plain.qbs b/plugins/autotest/unit_test/plain/plain.qbs new file mode 100644 index 0000000000..c2fe33618a --- /dev/null +++ b/plugins/autotest/unit_test/plain/plain.qbs @@ -0,0 +1,7 @@ +import qbs + +Project { + name: "Plain test project" + + references: [ "test_plain/test_plain.qbs" ] +} diff --git a/plugins/autotest/unit_test/plain/test_plain/test_plain.qbs b/plugins/autotest/unit_test/plain/test_plain/test_plain.qbs new file mode 100644 index 0000000000..1b7937ce6a --- /dev/null +++ b/plugins/autotest/unit_test/plain/test_plain/test_plain.qbs @@ -0,0 +1,10 @@ +import qbs + +CppApplication { + type: "application" // suppress bundle generation on OSX + + Depends { name: "Qt.gui" } + Depends { name: "Qt.test" } + + files: [ "tst_simple.cpp", "tst_simple.h" ] +} -- cgit v1.2.1