From 2b98ccb9e20d24dcaf2f8e42e32004cc6c82a712 Mon Sep 17 00:00:00 2001 From: Gabriel Ferreira Date: Sat, 1 Apr 2023 13:07:02 -0300 Subject: [PATCH] test: test-ns3.py case to check if modules from src can depend on contrib --- .../test-contrib-dependency/CMakeLists.txt | 6 ++++ .../test-contrib-dependency/contrib-header.h | 6 ++++ .../test-contrib-dependency/contrib-source.cc | 9 +++++ .../CMakeLists.txt | 8 +++++ .../examples/CMakeLists.txt | 6 ++++ .../examples/source-example.cc | 8 +++++ .../src-header.h | 6 ++++ .../src-source.cc | 7 ++++ utils/codespell-ignored-words | 3 ++ utils/tests/test-ns3.py | 34 +++++++++++++++++++ 10 files changed, 93 insertions(+) create mode 100644 build-support/test-files/test-contrib-dependency/CMakeLists.txt create mode 100644 build-support/test-files/test-contrib-dependency/contrib-header.h create mode 100644 build-support/test-files/test-contrib-dependency/contrib-source.cc create mode 100644 build-support/test-files/test-src-dependant-on-contrib/CMakeLists.txt create mode 100644 build-support/test-files/test-src-dependant-on-contrib/examples/CMakeLists.txt create mode 100644 build-support/test-files/test-src-dependant-on-contrib/examples/source-example.cc create mode 100644 build-support/test-files/test-src-dependant-on-contrib/src-header.h create mode 100644 build-support/test-files/test-src-dependant-on-contrib/src-source.cc diff --git a/build-support/test-files/test-contrib-dependency/CMakeLists.txt b/build-support/test-files/test-contrib-dependency/CMakeLists.txt new file mode 100644 index 000000000..c3eef2dca --- /dev/null +++ b/build-support/test-files/test-contrib-dependency/CMakeLists.txt @@ -0,0 +1,6 @@ +build_lib( + LIBNAME test-contrib-dependency + SOURCE_FILES contrib-source.cc + HEADER_FILES contrib-header.h + LIBRARIES_TO_LINK ${libcore} +) diff --git a/build-support/test-files/test-contrib-dependency/contrib-header.h b/build-support/test-files/test-contrib-dependency/contrib-header.h new file mode 100644 index 000000000..39325f2f0 --- /dev/null +++ b/build-support/test-files/test-contrib-dependency/contrib-header.h @@ -0,0 +1,6 @@ +#ifndef NS3_CONTRIB_HEADER_H +#define NS3_CONTRIB_HEADER_H + +void testPrint(); + +#endif // NS3_CONTRIB_HEADER_H diff --git a/build-support/test-files/test-contrib-dependency/contrib-source.cc b/build-support/test-files/test-contrib-dependency/contrib-source.cc new file mode 100644 index 000000000..5c6e4831d --- /dev/null +++ b/build-support/test-files/test-contrib-dependency/contrib-source.cc @@ -0,0 +1,9 @@ +#include "contrib-header.h" + +#include + +void +testPrint() +{ + std::cout << ns3::Simulator::Now() << std::endl; +} diff --git a/build-support/test-files/test-src-dependant-on-contrib/CMakeLists.txt b/build-support/test-files/test-src-dependant-on-contrib/CMakeLists.txt new file mode 100644 index 000000000..6da487312 --- /dev/null +++ b/build-support/test-files/test-src-dependant-on-contrib/CMakeLists.txt @@ -0,0 +1,8 @@ +build_lib( + LIBNAME test-src-dependant-on-contrib + SOURCE_FILES src-source.cc + HEADER_FILES src-header.h + LIBRARIES_TO_LINK ${libcore} + ${libtest-contrib-dependency} +) + diff --git a/build-support/test-files/test-src-dependant-on-contrib/examples/CMakeLists.txt b/build-support/test-files/test-src-dependant-on-contrib/examples/CMakeLists.txt new file mode 100644 index 000000000..2146b7fac --- /dev/null +++ b/build-support/test-files/test-src-dependant-on-contrib/examples/CMakeLists.txt @@ -0,0 +1,6 @@ +build_lib_example( + NAME source-example + SOURCE_FILES source-example.cc + LIBRARIES_TO_LINK + ${libtest-src-dependant-on-contrib} +) diff --git a/build-support/test-files/test-src-dependant-on-contrib/examples/source-example.cc b/build-support/test-files/test-src-dependant-on-contrib/examples/source-example.cc new file mode 100644 index 000000000..de2a710d6 --- /dev/null +++ b/build-support/test-files/test-src-dependant-on-contrib/examples/source-example.cc @@ -0,0 +1,8 @@ +#include + +int +main() +{ + testPrint2(); + return 0; +} diff --git a/build-support/test-files/test-src-dependant-on-contrib/src-header.h b/build-support/test-files/test-src-dependant-on-contrib/src-header.h new file mode 100644 index 000000000..f92194ee9 --- /dev/null +++ b/build-support/test-files/test-src-dependant-on-contrib/src-header.h @@ -0,0 +1,6 @@ +#ifndef NS3_SRC_SOURCE2_H +#define NS3_SRC_SOURCE2_H + +void testPrint2(); + +#endif // NS3_SOURCE_H diff --git a/build-support/test-files/test-src-dependant-on-contrib/src-source.cc b/build-support/test-files/test-src-dependant-on-contrib/src-source.cc new file mode 100644 index 000000000..7b8074da2 --- /dev/null +++ b/build-support/test-files/test-src-dependant-on-contrib/src-source.cc @@ -0,0 +1,7 @@ +#include + +void +testPrint2() +{ + testPrint(); +} diff --git a/utils/codespell-ignored-words b/utils/codespell-ignored-words index 1e3ca01f7..fed8fb2bb 100644 --- a/utils/codespell-ignored-words +++ b/utils/codespell-ignored-words @@ -76,3 +76,6 @@ inout #Utils filetest + +#test-ns3.py +dependant diff --git a/utils/tests/test-ns3.py b/utils/tests/test-ns3.py index e0fc56d87..c0b33810e 100755 --- a/utils/tests/test-ns3.py +++ b/utils/tests/test-ns3.py @@ -2338,6 +2338,40 @@ class NS3BuildBaseTestCase(NS3BaseTestCase): return_code, stdout, stderr = run_ns3("build brite click openflow") self.assertEqual(return_code, 0) + def test_14_LinkContribModuleToSrcModule(self): + """! + Test if we can link contrib modules to src modules + @return None + """ + if shutil.which("git") is None: + self.skipTest("Missing git") + + destination_contrib = os.path.join(ns3_path, "contrib/test-contrib-dependency") + destination_src = os.path.join(ns3_path, "src/test-src-dependant-on-contrib") + # Remove pre-existing directories + if os.path.exists(destination_contrib): + shutil.rmtree(destination_contrib) + if os.path.exists(destination_src): + shutil.rmtree(destination_src) + + # Always use a fresh copy + shutil.copytree(os.path.join(ns3_path, "build-support/test-files/test-contrib-dependency"), + destination_contrib) + shutil.copytree(os.path.join(ns3_path, "build-support/test-files/test-src-dependant-on-contrib"), + destination_src) + + # Then configure + return_code, stdout, stderr = run_ns3("configure --enable-examples") + self.assertEqual(return_code, 0) + + # Build the src module that depend on a contrib module + return_code, stdout, stderr = run_ns3("run source-example") + self.assertEqual(return_code, 0) + + # Remove module copies + shutil.rmtree(destination_contrib) + shutil.rmtree(destination_src) + class NS3ExpectedUseTestCase(NS3BaseTestCase): """!