diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2017-06-09 13:07:25 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2017-06-14 09:47:11 +0000 |
commit | 4a3a382ea2f7ed6f55b0655acbf780f28ba25159 (patch) | |
tree | e9f6c5a50a0637fd74d3fabc348c7ff73fdac988 /tests | |
parent | 002542825419d63291e69569f82aa6857ec16117 (diff) |
API: Allow synchronous retrieval of build graph data
This is needed to import builds into Qt Creator.
Task-number: QBS-1059
Change-Id: I8a1b226d3f0044c7e90a61d195796a1e8be9a9de
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/api/testdata/buildgraph-info/buildgraph-info.qbs | 5 | ||||
-rw-r--r-- | tests/auto/api/tst_api.cpp | 35 | ||||
-rw-r--r-- | tests/auto/api/tst_api.h | 1 |
3 files changed, 41 insertions, 0 deletions
diff --git a/tests/auto/api/testdata/buildgraph-info/buildgraph-info.qbs b/tests/auto/api/testdata/buildgraph-info/buildgraph-info.qbs new file mode 100644 index 000000000..8828f3a19 --- /dev/null +++ b/tests/auto/api/testdata/buildgraph-info/buildgraph-info.qbs @@ -0,0 +1,5 @@ +import qbs + +Product { + qbs.shellPath: "/bin/bash" +} diff --git a/tests/auto/api/tst_api.cpp b/tests/auto/api/tst_api.cpp index bfe744ddb..5cd56c218 100644 --- a/tests/auto/api/tst_api.cpp +++ b/tests/auto/api/tst_api.cpp @@ -255,6 +255,41 @@ void TestApi::baseProperties() VERIFY_NO_ERROR(errorInfo); } +void TestApi::buildGraphInfo() +{ + SettingsPtr s = settings(); + qbs::Internal::TemporaryProfile p("bgInfoProfile", s.get()); + p.p.setValue("qbs.targetOS", QStringList{"xenix"}); + qbs::SetupProjectParameters setupParams + = defaultSetupParameters("buildgraph-info"); + setupParams.setTopLevelProfile(p.p.name()); + setupParams.setOverriddenValues({std::make_pair("qbs.architecture", "arm")}); + QScopedPointer<qbs::SetupProjectJob> setupJob(qbs::Project().setupProject(setupParams, + m_logSink, 0)); + waitForFinished(setupJob.data()); + QVERIFY2(!setupJob->error().hasError(), qPrintable(setupJob->error().toString())); + const QString bgFilePath = setupParams.buildRoot() + QLatin1Char('/') + + relativeBuildGraphFilePath(); + QVERIFY2(QFileInfo::exists(bgFilePath), qPrintable(bgFilePath)); + qbs::Project::BuildGraphInfo bgInfo + = qbs::Project::getBuildGraphInfo(bgFilePath, QStringList()); + QVERIFY(bgInfo.error.hasError()); // Build graph is still locked. + setupJob.reset(nullptr); + const QStringList requestedProperties({"qbs.architecture", "qbs.shellPath", "qbs.targetOS"}); + bgInfo = qbs::Project::getBuildGraphInfo(bgFilePath, requestedProperties); + QVERIFY2(!bgInfo.error.hasError(), qPrintable(bgInfo.error.toString())); + QCOMPARE(bgFilePath, bgInfo.bgFilePath); + QCOMPARE(bgInfo.profileData.count(), 1); + QCOMPARE(bgInfo.profileData.value(p.p.name()).toMap().count(), 1); + QCOMPARE(bgInfo.profileData.value(p.p.name()).toMap().value("qbs").toMap().value("targetOS"), + p.p.value("qbs.targetOS")); + QCOMPARE(bgInfo.overriddenProperties, setupParams.overriddenValues()); + QCOMPARE(bgInfo.requestedProperties.count(), requestedProperties.count()); + QCOMPARE(bgInfo.requestedProperties.value("qbs.architecture").toString(), QString("arm")); + QCOMPARE(bgInfo.requestedProperties.value("qbs.shellPath").toString(), QString("/bin/bash")); + QCOMPARE(bgInfo.requestedProperties.value("qbs.targetOS").toStringList(), QStringList("xenix")); +} + void TestApi::buildGraphLocking() { qbs::SetupProjectParameters setupParams diff --git a/tests/auto/api/tst_api.h b/tests/auto/api/tst_api.h index abfc35500..8af149e3f 100644 --- a/tests/auto/api/tst_api.h +++ b/tests/auto/api/tst_api.h @@ -59,6 +59,7 @@ private slots: void addQObjectMacroToCppFile(); void addedFilePersistent(); void baseProperties(); + void buildGraphInfo(); void buildGraphLocking(); void buildProject(); void buildProject_data(); |