aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2017-06-09 13:07:25 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2017-06-14 09:47:11 +0000
commit4a3a382ea2f7ed6f55b0655acbf780f28ba25159 (patch)
treee9f6c5a50a0637fd74d3fabc348c7ff73fdac988 /tests
parent002542825419d63291e69569f82aa6857ec16117 (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.qbs5
-rw-r--r--tests/auto/api/tst_api.cpp35
-rw-r--r--tests/auto/api/tst_api.h1
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();