From 3abc7886a9aef7010e27d6e48adcd418b62ebbca Mon Sep 17 00:00:00 2001 From: Robert Walton Date: Fri, 11 Jun 2021 16:13:49 +0100 Subject: [PATCH 1/6] CMake: unit-tests: CircularBuffer: Remove trailing whitespace --- platform/tests/UNITTESTS/CircularBuffer/CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/platform/tests/UNITTESTS/CircularBuffer/CMakeLists.txt b/platform/tests/UNITTESTS/CircularBuffer/CMakeLists.txt index 45fd750888e..df896807515 100644 --- a/platform/tests/UNITTESTS/CircularBuffer/CMakeLists.txt +++ b/platform/tests/UNITTESTS/CircularBuffer/CMakeLists.txt @@ -6,14 +6,14 @@ set(TEST_NAME circularbuffer-unittest) add_executable(${TEST_NAME}) target_sources(${TEST_NAME} - PRIVATE + PRIVATE test_CircularBuffer.cpp ) target_link_libraries(${TEST_NAME} PRIVATE - mbed-headers - mbed-stubs-platform + mbed-headers + mbed-stubs-platform gmock_main ) From 40435fd9b3a1be85a468f4d0a48e7d1051c23067 Mon Sep 17 00:00:00 2001 From: Robert Walton Date: Thu, 10 Jun 2021 23:17:30 +0100 Subject: [PATCH 2/6] CMake: Move platform stubs to the mbed-os/platform directory Move the platform stub library into the platform component directory. This change is so we can avoid duplicating the mbed-os source tree in a central UNITTESTS folder. --- UNITTESTS/stubs/CMakeLists.txt | 1 - platform/tests/UNITTESTS/CMakeLists.txt | 1 + .../platform => platform/tests/UNITTESTS/doubles}/CMakeLists.txt | 0 .../tests/UNITTESTS/doubles}/FileHandle_stub.cpp | 0 .../tests/UNITTESTS/doubles}/mbed_assert_stub.cpp | 0 .../tests/UNITTESTS/doubles}/mbed_atomic_stub.c | 0 .../tests/UNITTESTS/doubles}/mbed_critical_stub.c | 0 .../platform => platform/tests/UNITTESTS/doubles}/mbed_error.c | 0 .../tests/UNITTESTS/doubles}/mbed_poll_stub.cpp | 0 .../tests/UNITTESTS/doubles}/mbed_retarget_stub.cpp | 0 .../tests/UNITTESTS/doubles}/mbed_wait_api_stub.cpp | 0 .../tests/UNITTESTS/doubles}/nvic_wrapper_stub.c | 0 .../platform => platform/tests/UNITTESTS/doubles}/randLIB_stub.c | 0 .../tests/UNITTESTS/doubles}/randLIB_stub.cpp | 0 14 files changed, 1 insertion(+), 1 deletion(-) rename {UNITTESTS/stubs/platform => platform/tests/UNITTESTS/doubles}/CMakeLists.txt (100%) rename {UNITTESTS/stubs/platform => platform/tests/UNITTESTS/doubles}/FileHandle_stub.cpp (100%) rename {UNITTESTS/stubs/platform => platform/tests/UNITTESTS/doubles}/mbed_assert_stub.cpp (100%) rename {UNITTESTS/stubs/platform => platform/tests/UNITTESTS/doubles}/mbed_atomic_stub.c (100%) rename {UNITTESTS/stubs/platform => platform/tests/UNITTESTS/doubles}/mbed_critical_stub.c (100%) rename {UNITTESTS/stubs/platform => platform/tests/UNITTESTS/doubles}/mbed_error.c (100%) rename {UNITTESTS/stubs/platform => platform/tests/UNITTESTS/doubles}/mbed_poll_stub.cpp (100%) rename {UNITTESTS/stubs/platform => platform/tests/UNITTESTS/doubles}/mbed_retarget_stub.cpp (100%) rename {UNITTESTS/stubs/platform => platform/tests/UNITTESTS/doubles}/mbed_wait_api_stub.cpp (100%) rename {UNITTESTS/stubs/platform => platform/tests/UNITTESTS/doubles}/nvic_wrapper_stub.c (100%) rename {UNITTESTS/stubs/platform => platform/tests/UNITTESTS/doubles}/randLIB_stub.c (100%) rename {UNITTESTS/stubs/platform => platform/tests/UNITTESTS/doubles}/randLIB_stub.cpp (100%) diff --git a/UNITTESTS/stubs/CMakeLists.txt b/UNITTESTS/stubs/CMakeLists.txt index ad0e22b6732..87161667996 100644 --- a/UNITTESTS/stubs/CMakeLists.txt +++ b/UNITTESTS/stubs/CMakeLists.txt @@ -80,7 +80,6 @@ target_include_directories(mbed-stubs-headers add_subdirectory(connectivity) add_subdirectory(events) -add_subdirectory(platform) add_library(mbed-stubs INTERFACE) diff --git a/platform/tests/UNITTESTS/CMakeLists.txt b/platform/tests/UNITTESTS/CMakeLists.txt index 65eb23055d7..88b941022a0 100644 --- a/platform/tests/UNITTESTS/CMakeLists.txt +++ b/platform/tests/UNITTESTS/CMakeLists.txt @@ -1,5 +1,6 @@ # Copyright (c) 2021 ARM Limited. All rights reserved. # SPDX-License-Identifier: Apache-2.0 +add_subdirectory(doubles) add_subdirectory(ATCmdParser) add_subdirectory(CircularBuffer) diff --git a/UNITTESTS/stubs/platform/CMakeLists.txt b/platform/tests/UNITTESTS/doubles/CMakeLists.txt similarity index 100% rename from UNITTESTS/stubs/platform/CMakeLists.txt rename to platform/tests/UNITTESTS/doubles/CMakeLists.txt diff --git a/UNITTESTS/stubs/platform/FileHandle_stub.cpp b/platform/tests/UNITTESTS/doubles/FileHandle_stub.cpp similarity index 100% rename from UNITTESTS/stubs/platform/FileHandle_stub.cpp rename to platform/tests/UNITTESTS/doubles/FileHandle_stub.cpp diff --git a/UNITTESTS/stubs/platform/mbed_assert_stub.cpp b/platform/tests/UNITTESTS/doubles/mbed_assert_stub.cpp similarity index 100% rename from UNITTESTS/stubs/platform/mbed_assert_stub.cpp rename to platform/tests/UNITTESTS/doubles/mbed_assert_stub.cpp diff --git a/UNITTESTS/stubs/platform/mbed_atomic_stub.c b/platform/tests/UNITTESTS/doubles/mbed_atomic_stub.c similarity index 100% rename from UNITTESTS/stubs/platform/mbed_atomic_stub.c rename to platform/tests/UNITTESTS/doubles/mbed_atomic_stub.c diff --git a/UNITTESTS/stubs/platform/mbed_critical_stub.c b/platform/tests/UNITTESTS/doubles/mbed_critical_stub.c similarity index 100% rename from UNITTESTS/stubs/platform/mbed_critical_stub.c rename to platform/tests/UNITTESTS/doubles/mbed_critical_stub.c diff --git a/UNITTESTS/stubs/platform/mbed_error.c b/platform/tests/UNITTESTS/doubles/mbed_error.c similarity index 100% rename from UNITTESTS/stubs/platform/mbed_error.c rename to platform/tests/UNITTESTS/doubles/mbed_error.c diff --git a/UNITTESTS/stubs/platform/mbed_poll_stub.cpp b/platform/tests/UNITTESTS/doubles/mbed_poll_stub.cpp similarity index 100% rename from UNITTESTS/stubs/platform/mbed_poll_stub.cpp rename to platform/tests/UNITTESTS/doubles/mbed_poll_stub.cpp diff --git a/UNITTESTS/stubs/platform/mbed_retarget_stub.cpp b/platform/tests/UNITTESTS/doubles/mbed_retarget_stub.cpp similarity index 100% rename from UNITTESTS/stubs/platform/mbed_retarget_stub.cpp rename to platform/tests/UNITTESTS/doubles/mbed_retarget_stub.cpp diff --git a/UNITTESTS/stubs/platform/mbed_wait_api_stub.cpp b/platform/tests/UNITTESTS/doubles/mbed_wait_api_stub.cpp similarity index 100% rename from UNITTESTS/stubs/platform/mbed_wait_api_stub.cpp rename to platform/tests/UNITTESTS/doubles/mbed_wait_api_stub.cpp diff --git a/UNITTESTS/stubs/platform/nvic_wrapper_stub.c b/platform/tests/UNITTESTS/doubles/nvic_wrapper_stub.c similarity index 100% rename from UNITTESTS/stubs/platform/nvic_wrapper_stub.c rename to platform/tests/UNITTESTS/doubles/nvic_wrapper_stub.c diff --git a/UNITTESTS/stubs/platform/randLIB_stub.c b/platform/tests/UNITTESTS/doubles/randLIB_stub.c similarity index 100% rename from UNITTESTS/stubs/platform/randLIB_stub.c rename to platform/tests/UNITTESTS/doubles/randLIB_stub.c diff --git a/UNITTESTS/stubs/platform/randLIB_stub.cpp b/platform/tests/UNITTESTS/doubles/randLIB_stub.cpp similarity index 100% rename from UNITTESTS/stubs/platform/randLIB_stub.cpp rename to platform/tests/UNITTESTS/doubles/randLIB_stub.cpp From e2704749f11eada9f901dcf2412f4ce4b35f2fd9 Mon Sep 17 00:00:00 2001 From: Robert Walton Date: Fri, 11 Jun 2021 15:55:13 +0100 Subject: [PATCH 3/6] CMake: unit-tests: Move mbed-headers-platform to platform directory Move the header-only mbed-headers-platform library the unit test stubs depend on into the platform component directory. This makes the platform stubs more self contained and improves composition of the library. --- UNITTESTS/stubs/CMakeLists.txt | 10 ---------- platform/tests/UNITTESTS/doubles/CMakeLists.txt | 13 ++++++++++--- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/UNITTESTS/stubs/CMakeLists.txt b/UNITTESTS/stubs/CMakeLists.txt index 87161667996..93bceb51d8b 100644 --- a/UNITTESTS/stubs/CMakeLists.txt +++ b/UNITTESTS/stubs/CMakeLists.txt @@ -4,7 +4,6 @@ add_library(mbed-stubs-headers INTERFACE) add_library(mbed-headers INTERFACE) add_library(mbed-headers-base INTERFACE) -add_library(mbed-headers-platform INTERFACE) add_library(mbed-headers-connectivity INTERFACE) add_library(mbed-headers-events INTERFACE) @@ -19,15 +18,6 @@ target_link_libraries(mbed-headers mbed-headers-rtos ) -target_include_directories(mbed-headers-platform - INTERFACE - ${mbed-os_SOURCE_DIR}/platform/include - ${mbed-os_SOURCE_DIR}/platform/include/platform - ${mbed-os_SOURCE_DIR}/platform/randlib/include/mbed-client-randlib/ - ${mbed-os_SOURCE_DIR}/platform/randlib/include/ - ${mbed-os_SOURCE_DIR}/platform/mbed-trace/include -) - target_include_directories(mbed-headers-base INTERFACE ${mbed-os_SOURCE_DIR}/UNITTESTS/target_h diff --git a/platform/tests/UNITTESTS/doubles/CMakeLists.txt b/platform/tests/UNITTESTS/doubles/CMakeLists.txt index 051bc678779..814f605ecb4 100644 --- a/platform/tests/UNITTESTS/doubles/CMakeLists.txt +++ b/platform/tests/UNITTESTS/doubles/CMakeLists.txt @@ -1,8 +1,17 @@ # Copyright (c) 2021 ARM Limited. All rights reserved. # SPDX-License-Identifier: Apache-2.0 -add_library(mbed-stubs-platform) +add_library(mbed-headers-platform INTERFACE) +target_include_directories(mbed-headers-platform + INTERFACE + ${mbed-os_SOURCE_DIR}/platform/include + ${mbed-os_SOURCE_DIR}/platform/include/platform + ${mbed-os_SOURCE_DIR}/platform/randlib/include/mbed-client-randlib/ + ${mbed-os_SOURCE_DIR}/platform/randlib/include/ + ${mbed-os_SOURCE_DIR}/platform/mbed-trace/include +) +add_library(mbed-stubs-platform) target_sources(mbed-stubs-platform PRIVATE mbed_critical_stub.c @@ -17,12 +26,10 @@ target_sources(mbed-stubs-platform randLIB_stub.c randLIB_stub.cpp ) - target_link_options(mbed-stubs-platform PRIVATE --coverage ) - target_link_libraries(mbed-stubs-platform PRIVATE mbed-headers From b73b38a01f3452e16938637e47105c3f02245575 Mon Sep 17 00:00:00 2001 From: Robert Walton Date: Fri, 11 Jun 2021 16:03:00 +0100 Subject: [PATCH 4/6] CMake: unit-tests: Make platform stub only depend on headers it uses Previously the platform stub library depended on `mbed-headers`, which is a collection of all available headers in mbed-os. To make it easier to separate the library, only depend on the headers we're actually using. --- platform/tests/UNITTESTS/ATCmdParser/CMakeLists.txt | 2 -- platform/tests/UNITTESTS/CircularBuffer/CMakeLists.txt | 1 - platform/tests/UNITTESTS/doubles/CMakeLists.txt | 6 ++++-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/platform/tests/UNITTESTS/ATCmdParser/CMakeLists.txt b/platform/tests/UNITTESTS/ATCmdParser/CMakeLists.txt index eeda6edee16..0876c100bd3 100644 --- a/platform/tests/UNITTESTS/ATCmdParser/CMakeLists.txt +++ b/platform/tests/UNITTESTS/ATCmdParser/CMakeLists.txt @@ -13,8 +13,6 @@ target_sources(${TEST_NAME} target_link_libraries(${TEST_NAME} PRIVATE - mbed-headers - mbed-stubs-headers mbed-stubs-platform gmock_main ) diff --git a/platform/tests/UNITTESTS/CircularBuffer/CMakeLists.txt b/platform/tests/UNITTESTS/CircularBuffer/CMakeLists.txt index df896807515..caf75637e55 100644 --- a/platform/tests/UNITTESTS/CircularBuffer/CMakeLists.txt +++ b/platform/tests/UNITTESTS/CircularBuffer/CMakeLists.txt @@ -12,7 +12,6 @@ target_sources(${TEST_NAME} target_link_libraries(${TEST_NAME} PRIVATE - mbed-headers mbed-stubs-platform gmock_main ) diff --git a/platform/tests/UNITTESTS/doubles/CMakeLists.txt b/platform/tests/UNITTESTS/doubles/CMakeLists.txt index 814f605ecb4..f54e89e1cf9 100644 --- a/platform/tests/UNITTESTS/doubles/CMakeLists.txt +++ b/platform/tests/UNITTESTS/doubles/CMakeLists.txt @@ -31,7 +31,9 @@ target_link_options(mbed-stubs-platform --coverage ) target_link_libraries(mbed-stubs-platform - PRIVATE - mbed-headers + PUBLIC + mbed-headers-base + mbed-headers-hal + mbed-headers-platform mbed-stubs-headers ) From 021baa68e714d8ab3bb07a2996046b5c59f82198 Mon Sep 17 00:00:00 2001 From: Robert Walton Date: Fri, 11 Jun 2021 22:06:49 +0100 Subject: [PATCH 5/6] CMake: unit-tests: Split platform headers out of mbed-stubs-headers We have a central collection of "stub headers", which makes reasoning about dependencies rather difficult, as it forces every stub library to depend on all available stub headers. The standard approach would be for each stub library to expose its public headers, and its dependents to explicitly specify a dependency on the stub library containing the headers it needs. This is a more modular design than creating a header-only monolith library. Move the platform stub headers from this central library into the mbed-stubs-platform library to increase modularity. mbed-stubs-connectivity now depends on the mbed-stubs-platform because it requires some headers which were moved to mbed-stubs-platform. --- UNITTESTS/stubs/connectivity/CMakeLists.txt | 1 + connectivity/cellular/tests/UNITTESTS/doubles/CMakeLists.txt | 2 +- platform/tests/UNITTESTS/doubles/CMakeLists.txt | 5 ++++- .../tests/UNITTESTS/doubles}/FileHandle_stub.h | 0 .../tests/UNITTESTS/doubles}/mbed_poll_stub.h | 0 5 files changed, 6 insertions(+), 2 deletions(-) rename {UNITTESTS/stubs => platform/tests/UNITTESTS/doubles}/FileHandle_stub.h (100%) rename {UNITTESTS/stubs => platform/tests/UNITTESTS/doubles}/mbed_poll_stub.h (100%) diff --git a/UNITTESTS/stubs/connectivity/CMakeLists.txt b/UNITTESTS/stubs/connectivity/CMakeLists.txt index 51664425b3f..e2056da7895 100644 --- a/UNITTESTS/stubs/connectivity/CMakeLists.txt +++ b/UNITTESTS/stubs/connectivity/CMakeLists.txt @@ -48,5 +48,6 @@ target_link_libraries(mbed-stubs-connectivity mbed-headers mbed-stubs-headers mbed-stubs-rtos + mbed-stubs-platform gtest ) diff --git a/connectivity/cellular/tests/UNITTESTS/doubles/CMakeLists.txt b/connectivity/cellular/tests/UNITTESTS/doubles/CMakeLists.txt index adbed153d5a..ffc3c646cd9 100644 --- a/connectivity/cellular/tests/UNITTESTS/doubles/CMakeLists.txt +++ b/connectivity/cellular/tests/UNITTESTS/doubles/CMakeLists.txt @@ -46,7 +46,7 @@ target_link_libraries(mbed-stubs-cellular PRIVATE mbed-headers-base mbed-headers-connectivity - mbed-headers-platform + mbed-stubs-platform mbed-headers-rtos mbed-headers-drivers mbed-headers-hal diff --git a/platform/tests/UNITTESTS/doubles/CMakeLists.txt b/platform/tests/UNITTESTS/doubles/CMakeLists.txt index f54e89e1cf9..81c34b1291c 100644 --- a/platform/tests/UNITTESTS/doubles/CMakeLists.txt +++ b/platform/tests/UNITTESTS/doubles/CMakeLists.txt @@ -26,6 +26,10 @@ target_sources(mbed-stubs-platform randLIB_stub.c randLIB_stub.cpp ) +target_include_directories(mbed-stubs-platform + PUBLIC + . +) target_link_options(mbed-stubs-platform PRIVATE --coverage @@ -35,5 +39,4 @@ target_link_libraries(mbed-stubs-platform mbed-headers-base mbed-headers-hal mbed-headers-platform - mbed-stubs-headers ) diff --git a/UNITTESTS/stubs/FileHandle_stub.h b/platform/tests/UNITTESTS/doubles/FileHandle_stub.h similarity index 100% rename from UNITTESTS/stubs/FileHandle_stub.h rename to platform/tests/UNITTESTS/doubles/FileHandle_stub.h diff --git a/UNITTESTS/stubs/mbed_poll_stub.h b/platform/tests/UNITTESTS/doubles/mbed_poll_stub.h similarity index 100% rename from UNITTESTS/stubs/mbed_poll_stub.h rename to platform/tests/UNITTESTS/doubles/mbed_poll_stub.h From 55f77ea77f2ad5ce67d99c3de7999570e1766d87 Mon Sep 17 00:00:00 2001 From: Robert Walton Date: Wed, 30 Jun 2021 11:34:34 +0100 Subject: [PATCH 6/6] CMake: unit-tests: Remove --coverage option from mbed-stubs-platform We set the --coverage flag globally in UNITTESTS/CMakeLists.txt. We shouldn't need to also set it on mbed-stubs-platform, so remove it. --- platform/tests/UNITTESTS/doubles/CMakeLists.txt | 4 ---- 1 file changed, 4 deletions(-) diff --git a/platform/tests/UNITTESTS/doubles/CMakeLists.txt b/platform/tests/UNITTESTS/doubles/CMakeLists.txt index 81c34b1291c..ac94aabebad 100644 --- a/platform/tests/UNITTESTS/doubles/CMakeLists.txt +++ b/platform/tests/UNITTESTS/doubles/CMakeLists.txt @@ -30,10 +30,6 @@ target_include_directories(mbed-stubs-platform PUBLIC . ) -target_link_options(mbed-stubs-platform - PRIVATE - --coverage -) target_link_libraries(mbed-stubs-platform PUBLIC mbed-headers-base