diff options
| author | Christian Kandeler <christian.kandeler@digia.com> | 2013-07-08 15:48:41 +0200 |
|---|---|---|
| committer | Christian Kandeler <christian.kandeler@digia.com> | 2013-07-11 15:18:48 +0200 |
| commit | 880c8d03cba5833bc3b0c12e408ff31e7572db86 (patch) | |
| tree | b6c49e656566350c5c990cae1c5a2b9ee6fa728a | |
| parent | bf2a579903d44b8d856c5199044a96e803a79e1d (diff) | |
| download | qbs-880c8d03cba5833bc3b0c12e408ff31e7572db86.tar.gz | |
Remember all the properties read in prepare scripts.
The current code throws some away due to wrong assumptions about when
Transformer::createCommands() is called.
Task-number: QBS-360
Change-Id: I0f2360d5b56bda3b683aa580ee823089255b6e76
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
| -rw-r--r-- | src/lib/buildgraph/transformer.cpp | 2 | ||||
| -rw-r--r-- | tests/auto/blackbox/testdata/renameTargetArtifact/lib.cpp | 3 | ||||
| -rw-r--r-- | tests/auto/blackbox/testdata/renameTargetArtifact/main.cpp | 6 | ||||
| -rw-r--r-- | tests/auto/blackbox/testdata/renameTargetArtifact/rename.qbs | 18 | ||||
| -rw-r--r-- | tests/auto/blackbox/tst_blackbox.cpp | 23 | ||||
| -rw-r--r-- | tests/auto/blackbox/tst_blackbox.h | 1 |
6 files changed, 52 insertions, 1 deletions
diff --git a/src/lib/buildgraph/transformer.cpp b/src/lib/buildgraph/transformer.cpp index f0ecb2dc9..ce6baa76c 100644 --- a/src/lib/buildgraph/transformer.cpp +++ b/src/lib/buildgraph/transformer.cpp @@ -145,9 +145,9 @@ void Transformer::createCommands(const PrepareScriptConstPtr &script, throw ErrorInfo(Tr::tr("Invalid prepare script."), script->location); } - engine->clearProperties(); QScriptValue scriptValue = script->scriptFunction.call(); modulePropertiesUsedInPrepareScript = engine->properties(); + engine->clearProperties(); if (Q_UNLIKELY(engine->hasUncaughtException())) throw ErrorInfo("evaluating prepare script: " + engine->uncaughtException().toString(), CodeLocation(script->location.fileName(), diff --git a/tests/auto/blackbox/testdata/renameTargetArtifact/lib.cpp b/tests/auto/blackbox/testdata/renameTargetArtifact/lib.cpp new file mode 100644 index 000000000..47ce43bc9 --- /dev/null +++ b/tests/auto/blackbox/testdata/renameTargetArtifact/lib.cpp @@ -0,0 +1,3 @@ +#include <QtGlobal> + +MY_EXPORT void f() { } diff --git a/tests/auto/blackbox/testdata/renameTargetArtifact/main.cpp b/tests/auto/blackbox/testdata/renameTargetArtifact/main.cpp new file mode 100644 index 000000000..6a0bac9f1 --- /dev/null +++ b/tests/auto/blackbox/testdata/renameTargetArtifact/main.cpp @@ -0,0 +1,6 @@ +void f(); + +int main() +{ + f(); +} diff --git a/tests/auto/blackbox/testdata/renameTargetArtifact/rename.qbs b/tests/auto/blackbox/testdata/renameTargetArtifact/rename.qbs new file mode 100644 index 000000000..5a8c765e4 --- /dev/null +++ b/tests/auto/blackbox/testdata/renameTargetArtifact/rename.qbs @@ -0,0 +1,18 @@ +import qbs + +Project { + CppApplication { + Depends { name: "TheLib" } + cpp.defines: "MY_EXPORT=" + files: "main.cpp" + } + + DynamicLibrary { + name: "TheLib" + targetName: "the_lib" + Depends { name: "cpp" } + Depends { name: "Qt.core" } + cpp.defines: "MY_EXPORT=Q_DECL_EXPORT" + files: "lib.cpp" + } +} diff --git a/tests/auto/blackbox/tst_blackbox.cpp b/tests/auto/blackbox/tst_blackbox.cpp index 79ebb7ae1..347586fc7 100644 --- a/tests/auto/blackbox/tst_blackbox.cpp +++ b/tests/auto/blackbox/tst_blackbox.cpp @@ -441,6 +441,29 @@ void TestBlackbox::renameProduct() QVERIFY(runQbs(params) != 0); } +void TestBlackbox::renameTargetArtifact() +{ + QDir::setCurrent(testDataDir + "/renameTargetArtifact"); + + // Initial run. + QCOMPARE(runQbs(), 0); + QVERIFY(m_qbsStdout.contains("compiling")); + QCOMPARE(m_qbsStdout.count("linking"), 2); + + // Rename library file name. + waitForNewTimestamp(); + QFile f("rename.qbs"); + QVERIFY(f.open(QIODevice::ReadWrite)); + QByteArray contents = f.readAll(); + contents.replace("the_lib", "TheLib"); + f.resize(0); + f.write(contents); + f.close(); + QCOMPARE(runQbs(), 0); + QVERIFY(!m_qbsStdout.contains("compiling")); + QCOMPARE(m_qbsStdout.count("linking"), 2); +} + void TestBlackbox::subProjects() { QDir::setCurrent(testDataDir + "/subprojects"); diff --git a/tests/auto/blackbox/tst_blackbox.h b/tests/auto/blackbox/tst_blackbox.h index f703a51c7..b969c62ee 100644 --- a/tests/auto/blackbox/tst_blackbox.h +++ b/tests/auto/blackbox/tst_blackbox.h @@ -105,6 +105,7 @@ private slots: void resolve_project_dry_run(); void clean(); void renameProduct(); + void renameTargetArtifact(); void subProjects(); void track_qrc(); void track_qobject_change(); |
