From 2e8f03a66a8690dcd137834e0a3479e20b560b78 Mon Sep 17 00:00:00 2001 From: Klaus Aehlig Date: Fri, 9 Aug 2024 15:32:40 +0200 Subject: Add a test for components having components --- tests/test_cases/deps/TARGETS | 34 ++++++++++++ .../test_cases/deps/transitive-components/TARGETS | 64 ++++++++++++++++++++++ .../test_cases/deps/transitive-components/bar.cpp | 10 ++++ .../test_cases/deps/transitive-components/bar.hpp | 8 +++ .../deps/transitive-components/bardep.cpp | 9 +++ .../deps/transitive-components/bardep.hpp | 8 +++ .../test_cases/deps/transitive-components/baz.cpp | 10 ++++ .../test_cases/deps/transitive-components/baz.hpp | 8 +++ .../deps/transitive-components/bazdep.cpp | 9 +++ .../deps/transitive-components/bazdep.hpp | 8 +++ .../test_cases/deps/transitive-components/foo.cpp | 10 ++++ .../test_cases/deps/transitive-components/foo.hpp | 8 +++ .../deps/transitive-components/foodep.cpp | 9 +++ .../deps/transitive-components/foodep.hpp | 8 +++ .../test_cases/deps/transitive-components/main.cpp | 11 ++++ 15 files changed, 214 insertions(+) create mode 100644 tests/test_cases/deps/transitive-components/TARGETS create mode 100644 tests/test_cases/deps/transitive-components/bar.cpp create mode 100644 tests/test_cases/deps/transitive-components/bar.hpp create mode 100644 tests/test_cases/deps/transitive-components/bardep.cpp create mode 100644 tests/test_cases/deps/transitive-components/bardep.hpp create mode 100644 tests/test_cases/deps/transitive-components/baz.cpp create mode 100644 tests/test_cases/deps/transitive-components/baz.hpp create mode 100644 tests/test_cases/deps/transitive-components/bazdep.cpp create mode 100644 tests/test_cases/deps/transitive-components/bazdep.hpp create mode 100644 tests/test_cases/deps/transitive-components/foo.cpp create mode 100644 tests/test_cases/deps/transitive-components/foo.hpp create mode 100644 tests/test_cases/deps/transitive-components/foodep.cpp create mode 100644 tests/test_cases/deps/transitive-components/foodep.hpp create mode 100644 tests/test_cases/deps/transitive-components/main.cpp (limited to 'tests') diff --git a/tests/test_cases/deps/TARGETS b/tests/test_cases/deps/TARGETS index b9b1344..fb3060a 100644 --- a/tests/test_cases/deps/TARGETS +++ b/tests/test_cases/deps/TARGETS @@ -344,6 +344,39 @@ ] , "data": [["TREE", null, "components"]] } +, "transitive-components": + { "type": ["test_rules", "test_case"] + , "name": ["deps_transitive_components"] + , "targets": + ["+baz", "+bar", "+foo", "+main", "+shared-foo", "+installed-shared-main"] + , "asserts": + [ "test -f foo/libfoo.a" + , "test -f foo/foo.hpp" + , "test -f foo/bar.hpp" + , "test -f foo/baz.hpp" + , "! test -f foo/foodep.hpp" + , "! test -f foo/bardep.hpp" + , "! test -f foo/bazdep.hpp" + , "./main/main" + , "./main/main | grep main" + , "./main/main | grep foodep" + , "./main/main | grep bardep" + , "./main/main | grep bazdep" + , "test -f shared-foo/libfoo.so" + , "test -f shared-foo/foo.hpp" + , "test -f shared-foo/bar.hpp" + , "test -f shared-foo/baz.hpp" + , "! test -f shared-foo/foodep.hpp" + , "! test -f shared-foo/bardep.hpp" + , "! test -f shared-foo/bazdep.hpp" + , "./installed-shared-main/bin/main" + , "./installed-shared-main/bin/main | grep main" + , "./installed-shared-main/bin/main | grep foodep" + , "./installed-shared-main/bin/main | grep bardep" + , "./installed-shared-main/bin/main | grep bazdep" + ] + , "data": [["TREE", null, "transitive-components"]] + } , "ALL": { "type": "install" , "deps": @@ -355,6 +388,7 @@ , "cmake" , "install" , "components" + , "transitive-components" ] , "tainted": ["test"] } diff --git a/tests/test_cases/deps/transitive-components/TARGETS b/tests/test_cases/deps/transitive-components/TARGETS new file mode 100644 index 0000000..969fbe0 --- /dev/null +++ b/tests/test_cases/deps/transitive-components/TARGETS @@ -0,0 +1,64 @@ +{ "foo": + { "type": ["@", "rules", "CC", "library"] + , "name": ["foo"] + , "hdrs": ["foo.hpp"] + , "srcs": ["foo.cpp"] + , "deps": ["foodep"] + , "components": ["bar"] + } +, "foodep": + { "type": ["@", "rules", "CC", "library"] + , "name": ["foodep"] + , "hdrs": ["foodep.hpp"] + , "srcs": ["foodep.cpp"] + } +, "bar": + { "type": ["@", "rules", "CC", "library"] + , "name": ["bar"] + , "hdrs": ["bar.hpp"] + , "srcs": ["bar.cpp"] + , "deps": ["bardep"] + , "components": ["baz"] + } +, "bardep": + { "type": ["@", "rules", "CC", "library"] + , "name": ["bardep"] + , "hdrs": ["bardep.hpp"] + , "srcs": ["bardep.cpp"] + } +, "baz": + { "type": ["@", "rules", "CC", "library"] + , "name": ["baz"] + , "hdrs": ["baz.hpp"] + , "srcs": ["baz.cpp"] + , "deps": ["bazdep"] + } +, "bazdep": + { "type": ["@", "rules", "CC", "library"] + , "name": ["bazdep"] + , "hdrs": ["bazdep.hpp"] + , "srcs": ["bazdep.cpp"] + } +, "main": + { "type": ["@", "rules", "CC", "binary"] + , "name": ["main"] + , "srcs": ["main.cpp"] + , "private-deps": ["foo"] + } +, "shared-foo": + { "type": ["@", "rules", "CC", "library"] + , "name": ["foo"] + , "shared": [""] + , "components": ["foo"] + } +, "shared-main": + { "type": ["@", "rules", "CC", "binary"] + , "name": ["main"] + , "srcs": ["main.cpp"] + , "private-deps": ["foo"] + } +, "installed-shared-main": + { "type": ["@", "rules", "CC", "install-with-deps"] + , "targets": ["shared-main"] + } +} diff --git a/tests/test_cases/deps/transitive-components/bar.cpp b/tests/test_cases/deps/transitive-components/bar.cpp new file mode 100644 index 0000000..437619c --- /dev/null +++ b/tests/test_cases/deps/transitive-components/bar.cpp @@ -0,0 +1,10 @@ +#include "bar.hpp" + +#include "bardep.hpp" +#include +#include + +int bar(int x) { + std::cout << "bar(" << x << ")" << std::endl; + return bardep(x) * 7; +} diff --git a/tests/test_cases/deps/transitive-components/bar.hpp b/tests/test_cases/deps/transitive-components/bar.hpp new file mode 100644 index 0000000..e29bfd7 --- /dev/null +++ b/tests/test_cases/deps/transitive-components/bar.hpp @@ -0,0 +1,8 @@ +#ifndef BAR_HPP +#define BAR_HPP + +#include "bardep.hpp" + +bar_t bar(bar_t); + +#endif diff --git a/tests/test_cases/deps/transitive-components/bardep.cpp b/tests/test_cases/deps/transitive-components/bardep.cpp new file mode 100644 index 0000000..33931da --- /dev/null +++ b/tests/test_cases/deps/transitive-components/bardep.cpp @@ -0,0 +1,9 @@ +#include "bardep.hpp" + +#include +#include + +bar_t bardep(bar_t x) { + std::cout << "bardep(" << x << ")" << std::endl; + return x + 5; +} diff --git a/tests/test_cases/deps/transitive-components/bardep.hpp b/tests/test_cases/deps/transitive-components/bardep.hpp new file mode 100644 index 0000000..ebfaef4 --- /dev/null +++ b/tests/test_cases/deps/transitive-components/bardep.hpp @@ -0,0 +1,8 @@ +#ifndef BARDEP_HPP +#define BARDEP_HPP + +typedef int bar_t; + +bar_t bardep(bar_t); + +#endif diff --git a/tests/test_cases/deps/transitive-components/baz.cpp b/tests/test_cases/deps/transitive-components/baz.cpp new file mode 100644 index 0000000..0354d55 --- /dev/null +++ b/tests/test_cases/deps/transitive-components/baz.cpp @@ -0,0 +1,10 @@ +#include "baz.hpp" + +#include "bazdep.hpp" +#include +#include + +int baz(int x) { + std::cout << "baz(" << x << ")" << std::endl; + return bazdep(x) * 13; +} diff --git a/tests/test_cases/deps/transitive-components/baz.hpp b/tests/test_cases/deps/transitive-components/baz.hpp new file mode 100644 index 0000000..926dd6d --- /dev/null +++ b/tests/test_cases/deps/transitive-components/baz.hpp @@ -0,0 +1,8 @@ +#ifndef BAZ_HPP +#define BAZ_HPP + +#include "bazdep.hpp" + +baz_t baz(baz_t); + +#endif diff --git a/tests/test_cases/deps/transitive-components/bazdep.cpp b/tests/test_cases/deps/transitive-components/bazdep.cpp new file mode 100644 index 0000000..c097661 --- /dev/null +++ b/tests/test_cases/deps/transitive-components/bazdep.cpp @@ -0,0 +1,9 @@ +#include "bazdep.hpp" + +#include +#include + +baz_t bazdep(baz_t x) { + std::cout << "bazdep(" << x << ")" << std::endl; + return x + 11; +} diff --git a/tests/test_cases/deps/transitive-components/bazdep.hpp b/tests/test_cases/deps/transitive-components/bazdep.hpp new file mode 100644 index 0000000..d2add97 --- /dev/null +++ b/tests/test_cases/deps/transitive-components/bazdep.hpp @@ -0,0 +1,8 @@ +#ifndef BAZDEP_HPP +#define BAZDEP_HPP + +typedef int baz_t; + +baz_t bazdep(baz_t); + +#endif diff --git a/tests/test_cases/deps/transitive-components/foo.cpp b/tests/test_cases/deps/transitive-components/foo.cpp new file mode 100644 index 0000000..197e1fb --- /dev/null +++ b/tests/test_cases/deps/transitive-components/foo.cpp @@ -0,0 +1,10 @@ +#include "foo.hpp" + +#include "foodep.hpp" +#include +#include + +int foo(int x) { + std::cout << "foo(" << x << ")" << std::endl; + return foodep(x) * 3; +} diff --git a/tests/test_cases/deps/transitive-components/foo.hpp b/tests/test_cases/deps/transitive-components/foo.hpp new file mode 100644 index 0000000..45c286c --- /dev/null +++ b/tests/test_cases/deps/transitive-components/foo.hpp @@ -0,0 +1,8 @@ +#ifndef FOO_HPP +#define FOO_HPP + +#include "foodep.hpp" + +foo_t foo(foo_t); + +#endif diff --git a/tests/test_cases/deps/transitive-components/foodep.cpp b/tests/test_cases/deps/transitive-components/foodep.cpp new file mode 100644 index 0000000..e26c335 --- /dev/null +++ b/tests/test_cases/deps/transitive-components/foodep.cpp @@ -0,0 +1,9 @@ +#include "foodep.hpp" + +#include +#include + +foo_t foodep(foo_t x) { + std::cout << "foodep(" << x << ")" << std::endl; + return x + 2; +} diff --git a/tests/test_cases/deps/transitive-components/foodep.hpp b/tests/test_cases/deps/transitive-components/foodep.hpp new file mode 100644 index 0000000..ea16bb0 --- /dev/null +++ b/tests/test_cases/deps/transitive-components/foodep.hpp @@ -0,0 +1,8 @@ +#ifndef FOODEP_HPP +#define FOODEP_HPP + +typedef int foo_t; + +foo_t foodep(foo_t); + +#endif diff --git a/tests/test_cases/deps/transitive-components/main.cpp b/tests/test_cases/deps/transitive-components/main.cpp new file mode 100644 index 0000000..3e2ae1c --- /dev/null +++ b/tests/test_cases/deps/transitive-components/main.cpp @@ -0,0 +1,11 @@ +#include "foo.hpp" +#include "bar.hpp" +#include "baz.hpp" + +#include +#include + +int main(int argc, char **argv) { + std::cout << "Hello-from-main" << std::endl; + std::cout << foo(bar(baz(13))) << std::endl; +} -- cgit v1.2.3