From 4de23ccb87bc93afefded644edd4285ee1d7a6dd Mon Sep 17 00:00:00 2001 From: Denis Shienkov Date: Mon, 22 Jun 2020 19:06:38 +0300 Subject: baremetal: Add auto-test for 'static library' dependenties This commit adds a blackbox auto-test which provides a project with a multiple static library products 'a-e' and an one application product. An application depends on the 'e' library, but this library also depends on other libraries 'a-d'. Tested for MCS51 architecture with IAR, KEIL, and SDCC toolchains. Change-Id: Ib79f4f7bed4ac0bf6f06d39705bb19bd4284f22d Reviewed-by: Christian Kandeler Reviewed-by: Ivan Komissarov --- .../static-library-dependencies/a1.c | 4 +++ .../static-library-dependencies/a2.c | 4 +++ .../static-library-dependencies/app.c | 6 ++++ .../static-library-dependencies/b.c | 6 ++++ .../static-library-dependencies/c.c | 6 ++++ .../static-library-dependencies/d.c | 7 ++++ .../static-library-dependencies/e.c | 7 ++++ .../static-library-dependencies.qbs | 37 ++++++++++++++++++++++ tests/auto/blackbox/tst_blackboxbaremetal.cpp | 13 ++++++++ tests/auto/blackbox/tst_blackboxbaremetal.h | 2 ++ 10 files changed, 92 insertions(+) create mode 100644 tests/auto/blackbox/testdata-baremetal/static-library-dependencies/a1.c create mode 100644 tests/auto/blackbox/testdata-baremetal/static-library-dependencies/a2.c create mode 100644 tests/auto/blackbox/testdata-baremetal/static-library-dependencies/app.c create mode 100644 tests/auto/blackbox/testdata-baremetal/static-library-dependencies/b.c create mode 100644 tests/auto/blackbox/testdata-baremetal/static-library-dependencies/c.c create mode 100644 tests/auto/blackbox/testdata-baremetal/static-library-dependencies/d.c create mode 100644 tests/auto/blackbox/testdata-baremetal/static-library-dependencies/e.c create mode 100644 tests/auto/blackbox/testdata-baremetal/static-library-dependencies/static-library-dependencies.qbs diff --git a/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/a1.c b/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/a1.c new file mode 100644 index 000000000..b593e95d8 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/a1.c @@ -0,0 +1,4 @@ +int a1(void) +{ + return 0; +} diff --git a/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/a2.c b/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/a2.c new file mode 100644 index 000000000..35ab7feb3 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/a2.c @@ -0,0 +1,4 @@ +int a2(void) +{ + return 0; +} diff --git a/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/app.c b/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/app.c new file mode 100644 index 000000000..9814bfd9c --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/app.c @@ -0,0 +1,6 @@ +extern int e(void); + +int main(void) +{ + return e(); +} diff --git a/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/b.c b/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/b.c new file mode 100644 index 000000000..92df418d1 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/b.c @@ -0,0 +1,6 @@ +extern int a1(void); + +int b(void) +{ + return a1(); +} diff --git a/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/c.c b/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/c.c new file mode 100644 index 000000000..0c0e350f2 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/c.c @@ -0,0 +1,6 @@ +extern int a2(void); + +int c(void) +{ + return a2(); +} diff --git a/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/d.c b/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/d.c new file mode 100644 index 000000000..a3fc084f5 --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/d.c @@ -0,0 +1,7 @@ +extern int b(void); +extern int c(void); + +int d(void) +{ + return b() + c(); +} diff --git a/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/e.c b/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/e.c new file mode 100644 index 000000000..9381e845c --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/e.c @@ -0,0 +1,7 @@ +extern int d(void); + +int e(void) +{ + return d(); +} + diff --git a/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/static-library-dependencies.qbs b/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/static-library-dependencies.qbs new file mode 100644 index 000000000..9a257ddfd --- /dev/null +++ b/tests/auto/blackbox/testdata-baremetal/static-library-dependencies/static-library-dependencies.qbs @@ -0,0 +1,37 @@ +Project { + StaticLibrary { + name: "lib-a" + Depends { name: "cpp" } + files: ["a1.c", "a2.c"] + } + StaticLibrary { + name: "lib-b" + Depends { name: "cpp" } + Depends { name: "lib-a" } + files: ["b.c"] + } + StaticLibrary { + name: "lib-c" + Depends { name: "cpp" } + Depends { name: "lib-a" } + files: ["c.c"] + } + StaticLibrary { + name: "lib-d" + Depends { name: "cpp" } + Depends { name: "lib-b" } + Depends { name: "lib-c" } + files: ["d.c"] + } + StaticLibrary { + name: "lib-e" + Depends { name: "cpp" } + Depends { name: "lib-d" } + files: ["e.c"] + } + CppApplication { + name: "app" + Depends { name: "lib-e" } + files: ["app.c"] + } +} diff --git a/tests/auto/blackbox/tst_blackboxbaremetal.cpp b/tests/auto/blackbox/tst_blackboxbaremetal.cpp index de034cdd5..40ecde5a7 100644 --- a/tests/auto/blackbox/tst_blackboxbaremetal.cpp +++ b/tests/auto/blackbox/tst_blackboxbaremetal.cpp @@ -51,6 +51,19 @@ void TestBlackboxBareMetal::application() QCOMPARE(runQbs(), 0); } +void TestBlackboxBareMetal::staticLibraryDependencies() +{ + QDir::setCurrent(testDataDir + "/static-library-dependencies"); + QCOMPARE(runQbs(QStringList{"-p", "lib-a,lib-b,lib-c,lib-d,lib-e"}), 0); + QCOMPARE(runQbs(QStringList{"--command-echo-mode", "command-line"}), 0); + const QByteArray output = m_qbsStdout + '\n' + m_qbsStderr; + QVERIFY(output.contains("lib-a")); + QVERIFY(output.contains("lib-b")); + QVERIFY(output.contains("lib-c")); + QVERIFY(output.contains("lib-d")); + QVERIFY(output.contains("lib-e")); +} + void TestBlackboxBareMetal::userIncludePaths() { QDir::setCurrent(testDataDir + "/user-include-paths"); diff --git a/tests/auto/blackbox/tst_blackboxbaremetal.h b/tests/auto/blackbox/tst_blackboxbaremetal.h index eeff08fa2..1656415f5 100644 --- a/tests/auto/blackbox/tst_blackboxbaremetal.h +++ b/tests/auto/blackbox/tst_blackboxbaremetal.h @@ -44,6 +44,8 @@ private slots: void application_data(); void application(); + void staticLibraryDependencies(); + void userIncludePaths(); void systemIncludePaths(); void distributionIncludePaths(); -- cgit v1.2.3