summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@digia.com>2013-07-08 15:48:41 +0200
committerChristian Kandeler <christian.kandeler@digia.com>2013-07-11 15:18:48 +0200
commit880c8d03cba5833bc3b0c12e408ff31e7572db86 (patch)
treeb6c49e656566350c5c990cae1c5a2b9ee6fa728a
parentbf2a579903d44b8d856c5199044a96e803a79e1d (diff)
downloadqbs-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.cpp2
-rw-r--r--tests/auto/blackbox/testdata/renameTargetArtifact/lib.cpp3
-rw-r--r--tests/auto/blackbox/testdata/renameTargetArtifact/main.cpp6
-rw-r--r--tests/auto/blackbox/testdata/renameTargetArtifact/rename.qbs18
-rw-r--r--tests/auto/blackbox/tst_blackbox.cpp23
-rw-r--r--tests/auto/blackbox/tst_blackbox.h1
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();