From 3698f3454a2b8dad4eb812667d98638669ac589e Mon Sep 17 00:00:00 2001 From: Yuval Peress Date: Tue, 21 Sep 2021 21:42:17 -0600 Subject: [PATCH 1/2] Support zephyr module integration Add a basic zephyr/module.yml to allow Zephyr integration of FFF as a module. See https://docs.zephyrproject.org/ for more information about Zephyr. --- zephyr/module.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 zephyr/module.yml diff --git a/zephyr/module.yml b/zephyr/module.yml new file mode 100644 index 0000000..0507ce4 --- /dev/null +++ b/zephyr/module.yml @@ -0,0 +1,5 @@ +name: fff +build: + cmake-ext: True + kconfig-ext: True + From c7ddc83156f5b6572c559f0a05d7e50d83647ba9 Mon Sep 17 00:00:00 2001 From: Yuval Peress Date: Mon, 27 Sep 2021 11:53:49 -0600 Subject: [PATCH 2/2] Refactor C tests to work with Zephyr Update the c_test_framework header to further abstract the components of the test framework to allow Zephyr to test the library using its own tools (ztest and twister). 1. Abstract the main entry point for the test suite. Instead of the tests defining their own main() function, they implement fff_test_suite(). A new main_c.c will run the common main function and link to the correct test suite. 2. Abstract printf so that Zephyr can use printk 3. Move c_test_framework.h into a framework/ directory. This allows Zephyr to avoid including this file in the path and instead provide its own version of the test framework. --- examples/embedded_ui/test_suite_template.c | 2 +- test/Makefile | 10 +++++---- test/fff_test_c.c | 21 ++----------------- test/fff_test_global_c.c | 14 +------------ test/{ => framework}/c_test_framework.h | 6 +++++- test/main_c.c | 17 +++++++++++++++ .../ms_vc_fff_test_c/ms_vc_fff_test_c.vcxproj | 2 +- .../ms_vc_fff_test_c.vcxproj.filters | 2 +- .../ms_vc_fff_test_global_c.vcxproj | 2 +- .../ms_vc_fff_test_global_c.vcxproj.filters | 2 +- 10 files changed, 36 insertions(+), 42 deletions(-) rename test/{ => framework}/c_test_framework.h (56%) create mode 100644 test/main_c.c diff --git a/examples/embedded_ui/test_suite_template.c b/examples/embedded_ui/test_suite_template.c index 00df5bb..11513ab 100644 --- a/examples/embedded_ui/test_suite_template.c +++ b/examples/embedded_ui/test_suite_template.c @@ -1,4 +1,4 @@ -#include "../../test/c_test_framework.h" +#include "../../test/framework/c_test_framework.h" /* Initialializers called for every test */ void setup() diff --git a/test/Makefile b/test/Makefile index 3368be0..5695a4c 100644 --- a/test/Makefile +++ b/test/Makefile @@ -12,11 +12,12 @@ $(BUILD_DIR)/global_fakes.o \ $(BUILD_DIR)/gtest-all.o \ $(BUILD_DIR)/gtest-main.o -FFF_TEST_C_OBJS = $(BUILD_DIR)/fff_test_c.o +FFF_TEST_C_OBJS = $(BUILD_DIR)/fff_test_c.o $(BUILD_DIR)/main_c.o FFF_TEST_GLOBAL_C_OBJS += \ $(BUILD_DIR)/global_fakes.o \ -$(BUILD_DIR)/fff_test_global_c.o +$(BUILD_DIR)/fff_test_global_c.o \ +$(BUILD_DIR)/main_c.o FFF_TEST_CPP_TARGET = $(BUILD_DIR)/fff_test_cpp FFF_TEST_C_TARGET = $(BUILD_DIR)/fff_test_c @@ -24,6 +25,7 @@ FFF_TEST_GLOBAL_C_TARGET = $(BUILD_DIR)/fff_test_glob_c FFF_TEST_GLOBAL_CPP_TARGET = $(BUILD_DIR)/fff_test_glob_cpp LIBS := -lpthread +INCLUDES := -I../ -I../test/framework/ # All Target all: $(FFF_TEST_CPP_TARGET) $(FFF_TEST_C_TARGET) $(FFF_TEST_GLOBAL_C_TARGET) $(FFF_TEST_GLOBAL_CPP_TARGET) @@ -32,16 +34,16 @@ all: $(FFF_TEST_CPP_TARGET) $(FFF_TEST_C_TARGET) $(FFF_TEST_GLOBAL_C_TARGET) $(F $(BUILD_DIR)/%.o: %.cpp @echo 'Building file: $<' @echo 'Invoking: GCC C++ Compiler' - g++ -I../ -O0 -g3 -Wall -DGTEST_USE_OWN_TR1_TUPLE=1 -c -o "$@" "$<" + g++ $(INCLUDES) -O0 -g3 -Wall -DGTEST_USE_OWN_TR1_TUPLE=1 -c -o "$@" "$<" @echo 'Finished building: $<' @echo ' ' $(BUILD_DIR)/%.o: %.c @echo 'Building file: $<' @echo 'Invoking: GCC C Compiler' - gcc -I../ -O0 -g3 -Wall -std=c99 -c -o "$@" "$<" @echo 'Finished building: $<' @echo ' ' + gcc -v $(INCLUDES) -O0 -g3 -Wall -std=c99 -c -o "$@" "$<" # Link targets diff --git a/test/fff_test_c.c b/test/fff_test_c.c index 8f7af90..3692bff 100644 --- a/test/fff_test_c.c +++ b/test/fff_test_c.c @@ -6,14 +6,9 @@ #define OVERRIDE_CALL_HIST_LEN 17u #define FFF_CALL_HISTORY_LEN OVERRIDE_CALL_HIST_LEN -#include "../fff.h" +#include "fff.h" #include "c_test_framework.h" -#include -#include -#include - - enum MYBOOL { FALSE = 899, TRUE }; struct MyStruct { @@ -72,14 +67,8 @@ TEST_F(FFFTestSuite, default_constants_can_be_overridden) } DEFINE_FFF_GLOBALS; -int main() +void fff_test_suite() { - setbuf(stdout, NULL); - fprintf(stdout, "-------------\n"); - fprintf(stdout, "Running Tests\n"); - fprintf(stdout, "-------------\n\n"); - fflush(0); - /* Run tests */ RUN_TEST(FFFTestSuite, when_void_func_never_called_then_callcount_is_zero); RUN_TEST(FFFTestSuite, when_void_func_called_once_then_callcount_is_one); @@ -123,10 +112,4 @@ int main() RUN_TEST(FFFTestSuite, can_capture_upto_20_arguments_correctly); RUN_TEST(FFFTestSuite, value_func_can_capture_upto_20_arguments_correctly); - - printf("\n-------------\n"); - printf("Complete\n"); - printf("-------------\n\n"); - - return 0; } diff --git a/test/fff_test_global_c.c b/test/fff_test_global_c.c index c74ea6a..6200dab 100644 --- a/test/fff_test_global_c.c +++ b/test/fff_test_global_c.c @@ -25,14 +25,8 @@ void setup() #include "test_cases.include" -int main() +void fff_test_suite() { - setbuf(stdout, NULL); - fprintf(stdout, "-------------\n"); - fprintf(stdout, "Running Tests\n"); - fprintf(stdout, "-------------\n\n"); - fflush(0); - /* Run tests */ RUN_TEST(FFFTestSuite, when_void_func_never_called_then_callcount_is_zero); RUN_TEST(FFFTestSuite, when_void_func_called_once_then_callcount_is_one); @@ -75,10 +69,4 @@ int main() RUN_TEST(FFFTestSuite, can_capture_upto_20_arguments_correctly); RUN_TEST(FFFTestSuite, value_func_can_capture_upto_20_arguments_correctly); - - printf("\n-------------\n"); - printf("Complete\n"); - printf("-------------\n\n"); - - return 0; } diff --git a/test/c_test_framework.h b/test/framework/c_test_framework.h similarity index 56% rename from test/c_test_framework.h rename to test/framework/c_test_framework.h index 297a33a..cc9b6a4 100644 --- a/test/c_test_framework.h +++ b/test/framework/c_test_framework.h @@ -7,8 +7,12 @@ /* Test Framework :-) */ void setup(); +void fff_test_suite(); + +#define PRINTF(FMT, args...) printf(FMT, ##args) + #define TEST_F(SUITE, NAME) void NAME() -#define RUN_TEST(SUITE, TESTNAME) do { printf(" Running %s.%s: \n", #SUITE, #TESTNAME); setup(); TESTNAME(); printf(" SUCCESS\n"); } while (0) +#define RUN_TEST(SUITE, TESTNAME) do { PRINTF(stdout, " Running %s.%s: \n", #SUITE, #TESTNAME); setup(); TESTNAME(); PRINTF(stdout, " SUCCESS\n"); } while (0) #define ASSERT_EQ(A, B) assert((A) == (B)) #define ASSERT_TRUE(A) assert((A)) diff --git a/test/main_c.c b/test/main_c.c new file mode 100644 index 0000000..b4f7c94 --- /dev/null +++ b/test/main_c.c @@ -0,0 +1,17 @@ +#include "c_test_framework.h" + +int main() +{ + setbuf(stdout, NULL); + fprintf(stdout, "-------------\n"); + fprintf(stdout, "Running Tests\n"); + fprintf(stdout, "-------------\n\n"); + fflush(0); + + fff_test_suite(); + + printf("\n-------------\n"); + printf("Complete\n"); + printf("-------------\n\n"); + return 0; +} diff --git a/test/ms_vc_fff_test/ms_vc_fff_test_c/ms_vc_fff_test_c.vcxproj b/test/ms_vc_fff_test/ms_vc_fff_test_c/ms_vc_fff_test_c.vcxproj index bcb67c2..3870c45 100644 --- a/test/ms_vc_fff_test/ms_vc_fff_test_c/ms_vc_fff_test_c.vcxproj +++ b/test/ms_vc_fff_test/ms_vc_fff_test_c/ms_vc_fff_test_c.vcxproj @@ -23,7 +23,7 @@ - + ClCompile diff --git a/test/ms_vc_fff_test/ms_vc_fff_test_c/ms_vc_fff_test_c.vcxproj.filters b/test/ms_vc_fff_test/ms_vc_fff_test_c/ms_vc_fff_test_c.vcxproj.filters index 8d3e60a..fa87c8e 100644 --- a/test/ms_vc_fff_test/ms_vc_fff_test_c/ms_vc_fff_test_c.vcxproj.filters +++ b/test/ms_vc_fff_test/ms_vc_fff_test_c/ms_vc_fff_test_c.vcxproj.filters @@ -20,7 +20,7 @@ - + Header Files diff --git a/test/ms_vc_fff_test/ms_vc_fff_test_global_c/ms_vc_fff_test_global_c.vcxproj b/test/ms_vc_fff_test/ms_vc_fff_test_global_c/ms_vc_fff_test_global_c.vcxproj index b92fdae..43d77e8 100644 --- a/test/ms_vc_fff_test/ms_vc_fff_test_global_c/ms_vc_fff_test_global_c.vcxproj +++ b/test/ms_vc_fff_test/ms_vc_fff_test_global_c/ms_vc_fff_test_global_c.vcxproj @@ -138,7 +138,7 @@ - + diff --git a/test/ms_vc_fff_test/ms_vc_fff_test_global_c/ms_vc_fff_test_global_c.vcxproj.filters b/test/ms_vc_fff_test/ms_vc_fff_test_global_c/ms_vc_fff_test_global_c.vcxproj.filters index db5afef..8c14397 100644 --- a/test/ms_vc_fff_test/ms_vc_fff_test_global_c/ms_vc_fff_test_global_c.vcxproj.filters +++ b/test/ms_vc_fff_test/ms_vc_fff_test_global_c/ms_vc_fff_test_global_c.vcxproj.filters @@ -26,7 +26,7 @@ Header Files - + Header Files