aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/api
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2018-04-17 14:17:16 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2018-04-20 12:10:16 +0000
commit034be2038d9316fdc6565f8caaa95bfdad544595 (patch)
tree854cf55e9d8ded517b0d021acf6cb2c80589c86c /tests/auto/api
parent5a6daaf7dfb78c23573ce88fbecca8b8d40c812c (diff)
API: Make transformer data available
Expose transformer information such as the input and output lists and the associated commands to interested parties. In particular, generators might have a need for that. Change-Id: I18f60e3a6fcb7792638b5786dde50e8722d7f417 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'tests/auto/api')
-rw-r--r--tests/auto/api/testdata/transformer-data/transformer-data.qbs36
-rw-r--r--tests/auto/api/tst_api.cpp43
-rw-r--r--tests/auto/api/tst_api.h1
3 files changed, 80 insertions, 0 deletions
diff --git a/tests/auto/api/testdata/transformer-data/transformer-data.qbs b/tests/auto/api/testdata/transformer-data/transformer-data.qbs
new file mode 100644
index 000000000..b24deebe5
--- /dev/null
+++ b/tests/auto/api/testdata/transformer-data/transformer-data.qbs
@@ -0,0 +1,36 @@
+import qbs
+import qbs.File
+import qbs.TextFile
+
+Product {
+ type: ["theType"]
+ Rule {
+ multiplex: true
+ Artifact {
+ filePath: "artifact1"
+ fileTags: ["type1"]
+ }
+ prepare: {
+ var cmd = new JavaScriptCommand();
+ cmd.description = "Creating " + output.fileName;
+ cmd.sourceCode = function() {
+ var f = new TextFile(output.filePath, TextFile.WriteOnly);
+ f.close();
+ };
+ return [cmd];
+ }
+ }
+ Rule {
+ inputs: ["type1"]
+ Artifact {
+ filePath: "artifact2"
+ fileTags: ["theType"]
+ }
+ prepare: {
+ var cmd = new JavaScriptCommand();
+ cmd.description = "Creating " + output.fileName;
+ cmd.sourceCode = function() { File.copy(input.filePath, output.filePath); };
+ return [cmd];
+ }
+ }
+}
diff --git a/tests/auto/api/tst_api.cpp b/tests/auto/api/tst_api.cpp
index 4fb2d8a3a..ae2b3b684 100644
--- a/tests/auto/api/tst_api.cpp
+++ b/tests/auto/api/tst_api.cpp
@@ -2816,6 +2816,49 @@ void TestApi::trackRemoveQObjectHeader()
QVERIFY2(isAboutUndefinedSymbols(receiver.output), qPrintable(receiver.output));
}
+void TestApi::transformerData()
+{
+ const qbs::SetupProjectParameters params
+ = defaultSetupParameters("transformer-data/transformer-data.qbs");
+ const std::unique_ptr<qbs::SetupProjectJob> setupJob(qbs::Project().setupProject(params,
+ m_logSink, 0));
+ QVERIFY(waitForFinished(setupJob.get()));
+ QVERIFY2(!setupJob->error().hasError(), qPrintable(setupJob->error().toString()));
+ const qbs::Project project = setupJob->project();
+ const std::unique_ptr<qbs::BuildJob> buildJob(project.buildAllProducts(qbs::BuildOptions()));
+ QVERIFY(waitForFinished(buildJob.get()));
+ QVERIFY2(!buildJob->error().hasError(), qPrintable(buildJob->error().toString()));
+ qbs::ErrorInfo error;
+ const qbs::ProjectTransformerData projectTData = project.transformerData(&error);
+ QVERIFY2(!error.hasError(), qPrintable(error.toString()));
+ QCOMPARE(projectTData.size(), 1);
+ const qbs::ProductTransformerData productTData = projectTData.first().second;
+ QCOMPARE(productTData.size(), 2);
+ bool firstTransformerFound = false;
+ bool secondTransformerFound = false;
+ for (const qbs::TransformerData &tData : productTData) {
+ if (tData.inputs().empty()) {
+ firstTransformerFound = true;
+ QCOMPARE(tData.outputs().size(), 1);
+ QCOMPARE(QFileInfo(tData.outputs().first().filePath()).fileName(),
+ QString("artifact1"));
+ QCOMPARE(tData.commands().size(), 1);
+ QCOMPARE(tData.commands().first().type(), qbs::RuleCommand::JavaScriptCommandType);
+ } else {
+ secondTransformerFound = true;
+ QCOMPARE(tData.inputs().size(), 1);
+ QCOMPARE(QFileInfo(tData.inputs().first().filePath()).fileName(), QString("artifact1"));
+ QCOMPARE(tData.outputs().size(), 1);
+ QCOMPARE(QFileInfo(tData.outputs().first().filePath()).fileName(),
+ QString("artifact2"));
+ QCOMPARE(tData.commands().size(), 1);
+ QCOMPARE(tData.commands().first().type(), qbs::RuleCommand::JavaScriptCommandType);
+ }
+ }
+ QVERIFY(firstTransformerFound);
+ QVERIFY(secondTransformerFound);
+}
+
void TestApi::transformers()
{
const qbs::ErrorInfo errorInfo = doBuildProject("transformers/transformers.qbs");
diff --git a/tests/auto/api/tst_api.h b/tests/auto/api/tst_api.h
index 3f5b88715..26f6655ad 100644
--- a/tests/auto/api/tst_api.h
+++ b/tests/auto/api/tst_api.h
@@ -142,6 +142,7 @@ private slots:
void toolInModule();
void trackAddQObjectHeader();
void trackRemoveQObjectHeader();
+ void transformerData();
void transformers();
void typeChange();
void uic();