From dce309bf4e18cc20f3f9b03fbd33f63f5c60d025 Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Wed, 16 Jul 2014 18:50:45 +0200 Subject: invalidate artifacts if a dependency is removed Artifacts must be invalidated if a dependency is removed. Consider a foo.cpp that includes bar.h. If bar.h is removed from the project, then we must recompile foo.cpp to trigger the compile error that stems from the wrong include. Change-Id: Ifc2bc3085be553f87685a17c5ff05273daa6579c Task-number: QBS-631 Reviewed-by: Christian Kandeler --- .../testdata/renameDependency/after/lib2.cpp | 7 +++++++ .../blackbox/testdata/renameDependency/after/lib2.h | 1 + .../testdata/renameDependency/before/lib.cpp | 7 +++++++ .../blackbox/testdata/renameDependency/before/lib.h | 1 + .../testdata/renameDependency/before/main.cpp | 8 ++++++++ .../renameDependency/before/renameDependency.qbs | 5 +++++ tests/auto/blackbox/tst_blackbox.cpp | 20 ++++++++++++++++++++ tests/auto/blackbox/tst_blackbox.h | 1 + 8 files changed, 50 insertions(+) create mode 100644 tests/auto/blackbox/testdata/renameDependency/after/lib2.cpp create mode 100644 tests/auto/blackbox/testdata/renameDependency/after/lib2.h create mode 100644 tests/auto/blackbox/testdata/renameDependency/before/lib.cpp create mode 100644 tests/auto/blackbox/testdata/renameDependency/before/lib.h create mode 100644 tests/auto/blackbox/testdata/renameDependency/before/main.cpp create mode 100644 tests/auto/blackbox/testdata/renameDependency/before/renameDependency.qbs (limited to 'tests/auto/blackbox') diff --git a/tests/auto/blackbox/testdata/renameDependency/after/lib2.cpp b/tests/auto/blackbox/testdata/renameDependency/after/lib2.cpp new file mode 100644 index 000000000..cf45da25a --- /dev/null +++ b/tests/auto/blackbox/testdata/renameDependency/after/lib2.cpp @@ -0,0 +1,7 @@ +#include "lib2.h" +#include + +void print_two_numbers(int a, int b, int c) +{ + std::cout << "a=" << a << ", b=" << b << ", c=" << c << std::endl; +} diff --git a/tests/auto/blackbox/testdata/renameDependency/after/lib2.h b/tests/auto/blackbox/testdata/renameDependency/after/lib2.h new file mode 100644 index 000000000..30e6c55fb --- /dev/null +++ b/tests/auto/blackbox/testdata/renameDependency/after/lib2.h @@ -0,0 +1 @@ +void print_two_numbers(int a, int b, int c); diff --git a/tests/auto/blackbox/testdata/renameDependency/before/lib.cpp b/tests/auto/blackbox/testdata/renameDependency/before/lib.cpp new file mode 100644 index 000000000..9ad8f3857 --- /dev/null +++ b/tests/auto/blackbox/testdata/renameDependency/before/lib.cpp @@ -0,0 +1,7 @@ +#include "lib.h" +#include + +void print_two_numbers(int a, int b/*, int c*/) +{ + std::cout << "a=" << a << ", b=" << b /*<< ", c=" << c */ << std::endl; +} diff --git a/tests/auto/blackbox/testdata/renameDependency/before/lib.h b/tests/auto/blackbox/testdata/renameDependency/before/lib.h new file mode 100644 index 000000000..b98a95484 --- /dev/null +++ b/tests/auto/blackbox/testdata/renameDependency/before/lib.h @@ -0,0 +1 @@ +void print_two_numbers(int a, int b/*, int c*/); diff --git a/tests/auto/blackbox/testdata/renameDependency/before/main.cpp b/tests/auto/blackbox/testdata/renameDependency/before/main.cpp new file mode 100644 index 000000000..d78950ee9 --- /dev/null +++ b/tests/auto/blackbox/testdata/renameDependency/before/main.cpp @@ -0,0 +1,8 @@ +#include +#include "lib.h" + +int main() +{ + print_two_numbers(2, 3); + return 0; +} diff --git a/tests/auto/blackbox/testdata/renameDependency/before/renameDependency.qbs b/tests/auto/blackbox/testdata/renameDependency/before/renameDependency.qbs new file mode 100644 index 000000000..e6f3cf66b --- /dev/null +++ b/tests/auto/blackbox/testdata/renameDependency/before/renameDependency.qbs @@ -0,0 +1,5 @@ +import qbs + +CppApplication { + files: ["*.cpp", "*.h"] +} diff --git a/tests/auto/blackbox/tst_blackbox.cpp b/tests/auto/blackbox/tst_blackbox.cpp index f998f8b95..30cf99cd1 100644 --- a/tests/auto/blackbox/tst_blackbox.cpp +++ b/tests/auto/blackbox/tst_blackbox.cpp @@ -662,6 +662,26 @@ void TestBlackbox::rc() QCOMPARE(rcFileWasCompiled, HostOsInfo::isWindowsHost()); } +void TestBlackbox::renameDependency() +{ + QDir::setCurrent(testDataDir + "/renameDependency"); + if (QFile::exists("work")) + rmDirR("work"); + QDir().mkdir("work"); + ccp("before", "work"); + QDir::setCurrent(testDataDir + "/renameDependency/work"); + QCOMPARE(runQbs(), 0); + + waitForNewTimestamp(); + QFile::remove("lib.h"); + QFile::remove("lib.cpp"); + ccp("../after", "."); + QbsRunParameters params; + params.expectFailure = true; + QVERIFY(runQbs(params) != 0); + QVERIFY(m_qbsStdout.contains("compiling main.cpp")); +} + void TestBlackbox::renameProduct() { QDir::setCurrent(testDataDir + "/renameProduct"); diff --git a/tests/auto/blackbox/tst_blackbox.h b/tests/auto/blackbox/tst_blackbox.h index aa8310a28..c975a9815 100644 --- a/tests/auto/blackbox/tst_blackbox.h +++ b/tests/auto/blackbox/tst_blackbox.h @@ -147,6 +147,7 @@ private slots: void exportWithRecursiveDepends(); void fileTagger(); void rc(); + void renameDependency(); void renameProduct(); void renameTargetArtifact(); void softDependency(); -- cgit v1.2.3