From 2a18401d21b4dd09348ea0e7cd1001d6817c27a5 Mon Sep 17 00:00:00 2001 From: Martin Budden Date: Wed, 21 Dec 2016 22:44:57 +0000 Subject: [PATCH] Unit test tidy --- src/test/Makefile | 291 ++++++++++++--------- src/test/unit/parameter_group.ld | 22 ++ src/test/unit/parameter_groups_unittest.cc | 5 +- 3 files changed, 194 insertions(+), 124 deletions(-) create mode 100644 src/test/unit/parameter_group.ld diff --git a/src/test/Makefile b/src/test/Makefile index 9ce4d742e6..91dec1c074 100644 --- a/src/test/Makefile +++ b/src/test/Makefile @@ -48,6 +48,14 @@ COVERAGE_FLAGS := --coverage C_FLAGS += $(COVERAGE_FLAGS) CXX_FLAGS += $(COVERAGE_FLAGS) +# Determine the OS and set up the parameter group linker flags accordingly +UNAME := $(shell uname -s) +ifeq ($(UNAME), Darwin) +PG_FLAGS = -Wl,-map,$(OBJECT_DIR)/$@.map +else +PG_FLAGS = -Wl,-T,$(TEST_DIR)/parameter_group.ld -Wl,-Map,$(OBJECT_DIR)/$@.map +endif + # Gather up all of the tests. TEST_SRC = $(sort $(wildcard $(TEST_DIR)/*.cc)) TESTS = $(TEST_SRC:$(TEST_DIR)/%.cc=%) @@ -59,11 +67,14 @@ GTEST_HEADERS = $(GTEST_DIR)/inc/gtest/*.h # House-keeping build targets. +## all : Build all Unit Tests (Default goal) all : $(TEST_BINARIES) +## clean : Cleanup the UnitTest binaries. clean : rm -rf $(OBJECT_DIR) + # Builds gtest.a and gtest_main.a. # Usually you shouldn't tweak such internal variables, indicated by a @@ -110,13 +121,19 @@ $(OBJECT_DIR)/common/maths.o : \ @mkdir -p $(dir $@) $(CC) $(C_FLAGS) $(TEST_CFLAGS) -c $(USER_DIR)/common/maths.c -o $@ -$(OBJECT_DIR)/common/typeconversion.o : \ - $(USER_DIR)/common/typeconversion.c \ - $(USER_DIR)/common/typeconversion.h \ +$(OBJECT_DIR)/maths_unittest.o : \ + $(TEST_DIR)/maths_unittest.cc \ $(GTEST_HEADERS) @mkdir -p $(dir $@) - $(CC) $(C_FLAGS) $(TEST_CFLAGS) -c $(USER_DIR)/common/typeconversion.c -o $@ + $(CXX) $(CXX_FLAGS) $(TEST_CFLAGS) -c $(TEST_DIR)/maths_unittest.cc -o $@ + +$(OBJECT_DIR)/maths_unittest : \ + $(OBJECT_DIR)/maths_unittest.o \ + $(OBJECT_DIR)/common/maths.o \ + $(OBJECT_DIR)/gtest_main.a + + $(CXX) $(CXX_FLAGS) $^ -o $(OBJECT_DIR)/$@ $(OBJECT_DIR)/common/filter.o : \ $(USER_DIR)/common/filter.c \ @@ -140,54 +157,6 @@ $(OBJECT_DIR)/common_filter_unittest : \ $(CXX) $(CXX_FLAGS) $^ -o $(OBJECT_DIR)/$@ - -$(OBJECT_DIR)/common/streambuf.o : \ - $(USER_DIR)/common/streambuf.c \ - $(USER_DIR)/common/streambuf.h \ - $(GTEST_HEADERS) - - @mkdir -p $(dir $@) - $(CC) $(C_FLAGS) $(TEST_CFLAGS) -D'__TARGET__="TEST"' -D'__REVISION__="revision"' -c $(USER_DIR)/common/streambuf.c -o $@ - - -$(OBJECT_DIR)/drivers/io.o : \ - $(USER_DIR)/drivers/io.c \ - $(USER_DIR)/drivers/io.h \ - $(GTEST_HEADERS) - - @mkdir -p $(dir $@) - $(CC) $(C_FLAGS) $(TEST_CFLAGS) -c $(USER_DIR)/drivers/io.c -o $@ - - -$(OBJECT_DIR)/fc/runtime_config.o : \ - $(USER_DIR)/fc/runtime_config.c \ - $(USER_DIR)/fc/runtime_config.h \ - $(GTEST_HEADERS) - - @mkdir -p $(dir $@) - $(CC) $(C_FLAGS) $(TEST_CFLAGS) -D'FLASH_SIZE = 128' -DSTM32F10X_MD -c $(USER_DIR)/fc/runtime_config.c -o $@ - - -$(OBJECT_DIR)/sensors/battery.o : $(USER_DIR)/sensors/battery.c $(USER_DIR)/sensors/battery.h $(GTEST_HEADERS) - @mkdir -p $(dir $@) - $(CC) $(C_FLAGS) $(TEST_CFLAGS) -c $(USER_DIR)/sensors/battery.c -o $@ - -$(OBJECT_DIR)/battery_unittest.o : \ - $(TEST_DIR)/battery_unittest.cc \ - $(USER_DIR)/sensors/battery.h \ - $(GTEST_HEADERS) - - @mkdir -p $(dir $@) - $(CXX) $(CXX_FLAGS) $(TEST_CFLAGS) -c $< -o $@ - -$(OBJECT_DIR)/battery_unittest : \ - $(OBJECT_DIR)/sensors/battery.o \ - $(OBJECT_DIR)/common/maths.o \ - $(OBJECT_DIR)/battery_unittest.o \ - $(OBJECT_DIR)/gtest_main.a - - $(CXX) $(CXX_FLAGS) $^ -o $@ - $(OBJECT_DIR)/common/encoding.o : $(USER_DIR)/common/encoding.c $(USER_DIR)/common/encoding.h $(GTEST_HEADERS) @mkdir -p $(dir $@) $(CC) $(C_FLAGS) $(TEST_CFLAGS) -c $(USER_DIR)/common/encoding.c -o $@ @@ -207,6 +176,37 @@ $(OBJECT_DIR)/encoding_unittest : \ $(CXX) $(CXX_FLAGS) $^ -o $(OBJECT_DIR)/$@ +$(OBJECT_DIR)/common/typeconversion.o : \ + $(USER_DIR)/common/typeconversion.c \ + $(USER_DIR)/common/typeconversion.h \ + $(GTEST_HEADERS) + + @mkdir -p $(dir $@) + $(CC) $(C_FLAGS) $(TEST_CFLAGS) -c $(USER_DIR)/common/typeconversion.c -o $@ + +$(OBJECT_DIR)/type_conversion_unittest.o : \ + $(TEST_DIR)/type_conversion_unittest.cc \ + $(USER_DIR)/common/typeconversion.h \ + $(GTEST_HEADERS) + + @mkdir -p $(dir $@) + $(CXX) $(CXX_FLAGS) $(TEST_CFLAGS) -c $(TEST_DIR)/type_conversion_unittest.cc -o $@ + +$(OBJECT_DIR)/type_conversion_unittest : \ + $(OBJECT_DIR)/common/typeconversion.o \ + $(OBJECT_DIR)/type_conversion_unittest.o \ + $(OBJECT_DIR)/gtest_main.a + + $(CXX) $(CXX_FLAGS) $^ -o $(OBJECT_DIR)/$@ + +$(OBJECT_DIR)/fc/runtime_config.o : \ + $(USER_DIR)/fc/runtime_config.c \ + $(USER_DIR)/fc/runtime_config.h \ + $(GTEST_HEADERS) + + @mkdir -p $(dir $@) + $(CC) $(C_FLAGS) $(TEST_CFLAGS) -D'FLASH_SIZE = 128' -DSTM32F10X_MD -c $(USER_DIR)/fc/runtime_config.c -o $@ + $(OBJECT_DIR)/flight/imu.o : \ $(USER_DIR)/flight/imu.c \ $(USER_DIR)/flight/imu.h \ @@ -232,20 +232,6 @@ $(OBJECT_DIR)/flight_imu_unittest : \ $(CXX) $(CXX_FLAGS) $^ -o $(OBJECT_DIR)/$@ -$(OBJECT_DIR)/maths_unittest.o : \ - $(TEST_DIR)/maths_unittest.cc \ - $(GTEST_HEADERS) - - @mkdir -p $(dir $@) - $(CXX) $(CXX_FLAGS) $(TEST_CFLAGS) -c $(TEST_DIR)/maths_unittest.cc -o $@ - -$(OBJECT_DIR)/maths_unittest : \ - $(OBJECT_DIR)/maths_unittest.o \ - $(OBJECT_DIR)/common/maths.o \ - $(OBJECT_DIR)/gtest_main.a - - $(CXX) $(CXX_FLAGS) $^ -o $(OBJECT_DIR)/$@ - $(OBJECT_DIR)/flight/altitudehold.o : \ $(USER_DIR)/flight/altitudehold.c \ $(USER_DIR)/flight/altitudehold.h \ @@ -295,6 +281,65 @@ $(OBJECT_DIR)/gps_conversion_unittest : \ +$(OBJECT_DIR)/flight/mixer.o : \ + $(USER_DIR)/flight/mixer.c \ + $(USER_DIR)/flight/mixer.h \ + $(GTEST_HEADERS) + + @mkdir -p $(dir $@) + $(CC) $(C_FLAGS) $(TEST_CFLAGS) -c $(USER_DIR)/flight/mixer.c -o $@ + +$(OBJECT_DIR)/flight/servos.o : \ + $(USER_DIR)/flight/servos.c \ + $(USER_DIR)/flight/servos.h \ + $(GTEST_HEADERS) + + @mkdir -p $(dir $@) + $(CC) $(C_FLAGS) $(TEST_CFLAGS) -c $(USER_DIR)/flight/servos.c -o $@ + +$(OBJECT_DIR)/flight_mixer_unittest.o : \ + $(TEST_DIR)/flight_mixer_unittest.cc \ + $(USER_DIR)/flight/mixer.h \ + $(GTEST_HEADERS) + + @mkdir -p $(dir $@) + $(CXX) $(CXX_FLAGS) $(TEST_CFLAGS) -c $(TEST_DIR)/flight_mixer_unittest.cc -o $@ + +$(OBJECT_DIR)/flight_mixer_unittest : \ + $(OBJECT_DIR)/flight/mixer.o \ + $(OBJECT_DIR)/flight/servos.o \ + $(OBJECT_DIR)/flight_mixer_unittest.o \ + $(OBJECT_DIR)/common/maths.o \ + $(OBJECT_DIR)/gtest_main.a + + $(CXX) $(CXX_FLAGS) $^ -o $(OBJECT_DIR)/$@ + +$(OBJECT_DIR)/flight/failsafe.o : \ + $(USER_DIR)/flight/failsafe.c \ + $(USER_DIR)/flight/failsafe.h \ + $(GTEST_HEADERS) + + @mkdir -p $(dir $@) + $(CC) $(C_FLAGS) $(TEST_CFLAGS) -c $(USER_DIR)/flight/failsafe.c -o $@ + +$(OBJECT_DIR)/flight_failsafe_unittest.o : \ + $(TEST_DIR)/flight_failsafe_unittest.cc \ + $(USER_DIR)/flight/failsafe.h \ + $(GTEST_HEADERS) + + @mkdir -p $(dir $@) + $(CXX) $(CXX_FLAGS) $(TEST_CFLAGS) -c $(TEST_DIR)/flight_failsafe_unittest.cc -o $@ + +$(OBJECT_DIR)/flight_failsafe_unittest : \ + $(OBJECT_DIR)/flight/failsafe.o \ + $(OBJECT_DIR)/flight_failsafe_unittest.o \ + $(OBJECT_DIR)/common/maths.o \ + $(OBJECT_DIR)/gtest_main.a + + $(CXX) $(CXX_FLAGS) $^ -o $(OBJECT_DIR)/$@ + + + $(OBJECT_DIR)/telemetry/hott.o : \ $(USER_DIR)/telemetry/hott.c \ $(USER_DIR)/telemetry/hott.h \ @@ -320,18 +365,17 @@ $(OBJECT_DIR)/telemetry_hott_unittest : \ $(CXX) $(CXX_FLAGS) $^ -o $(OBJECT_DIR)/$@ - -$(OBJECT_DIR)/io/rc_controls.o : \ - $(USER_DIR)/io/rc_controls.c \ - $(USER_DIR)/io/rc_controls.h \ +$(OBJECT_DIR)/fc/rc_controls.o : \ + $(USER_DIR)/fc/rc_controls.c \ + $(USER_DIR)/fc/rc_controls.h \ $(GTEST_HEADERS) @mkdir -p $(dir $@) - $(CC) $(C_FLAGS) $(TEST_CFLAGS) -c $(USER_DIR)/io/rc_controls.c -o $@ + $(CC) $(C_FLAGS) $(TEST_CFLAGS) -c $(USER_DIR)/fc/rc_controls.c -o $@ $(OBJECT_DIR)/rc_controls_unittest.o : \ $(TEST_DIR)/rc_controls_unittest.cc \ - $(USER_DIR)/io/rc_controls.h \ + $(USER_DIR)/fc/rc_controls.h \ $(GTEST_HEADERS) @mkdir -p $(dir $@) @@ -339,7 +383,7 @@ $(OBJECT_DIR)/rc_controls_unittest.o : \ $(OBJECT_DIR)/rc_controls_unittest : \ $(OBJECT_DIR)/common/maths.o \ - $(OBJECT_DIR)/io/rc_controls.o \ + $(OBJECT_DIR)/fc/rc_controls.o \ $(OBJECT_DIR)/rc_controls_unittest.o \ $(OBJECT_DIR)/gtest_main.a @@ -395,54 +439,6 @@ $(OBJECT_DIR)/ws2811_unittest : \ $(CXX) $(CXX_FLAGS) $^ -o $(OBJECT_DIR)/$@ -$(OBJECT_DIR)/flight/mixer.o : \ - $(USER_DIR)/flight/mixer.c \ - $(USER_DIR)/flight/mixer.h \ - $(GTEST_HEADERS) - - @mkdir -p $(dir $@) - $(CC) $(C_FLAGS) $(TEST_CFLAGS) -c $(USER_DIR)/flight/mixer.c -o $@ - -$(OBJECT_DIR)/flight_mixer_unittest.o : \ - $(TEST_DIR)/flight_mixer_unittest.cc \ - $(USER_DIR)/flight/mixer.h \ - $(GTEST_HEADERS) - - @mkdir -p $(dir $@) - $(CXX) $(CXX_FLAGS) $(TEST_CFLAGS) -c $(TEST_DIR)/flight_mixer_unittest.cc -o $@ - -$(OBJECT_DIR)/flight_mixer_unittest : \ - $(OBJECT_DIR)/flight/mixer.o \ - $(OBJECT_DIR)/flight_mixer_unittest.o \ - $(OBJECT_DIR)/common/maths.o \ - $(OBJECT_DIR)/gtest_main.a - - $(CXX) $(CXX_FLAGS) $^ -o $(OBJECT_DIR)/$@ - -$(OBJECT_DIR)/flight/failsafe.o : \ - $(USER_DIR)/flight/failsafe.c \ - $(USER_DIR)/flight/failsafe.h \ - $(GTEST_HEADERS) - - @mkdir -p $(dir $@) - $(CC) $(C_FLAGS) $(TEST_CFLAGS) -c $(USER_DIR)/flight/failsafe.c -o $@ - -$(OBJECT_DIR)/flight_failsafe_unittest.o : \ - $(TEST_DIR)/flight_failsafe_unittest.cc \ - $(USER_DIR)/flight/failsafe.h \ - $(GTEST_HEADERS) - - @mkdir -p $(dir $@) - $(CXX) $(CXX_FLAGS) $(TEST_CFLAGS) -c $(TEST_DIR)/flight_failsafe_unittest.cc -o $@ - -$(OBJECT_DIR)/flight_failsafe_unittest : \ - $(OBJECT_DIR)/flight/failsafe.o \ - $(OBJECT_DIR)/flight_failsafe_unittest.o \ - $(OBJECT_DIR)/common/maths.o \ - $(OBJECT_DIR)/gtest_main.a - - $(CXX) $(CXX_FLAGS) $^ -o $(OBJECT_DIR)/$@ - $(OBJECT_DIR)/io/serial.o : \ $(USER_DIR)/io/serial.c \ $(USER_DIR)/io/serial.h \ @@ -563,6 +559,27 @@ $(OBJECT_DIR)/rx_ranges_unittest : \ $(CXX) $(CXX_FLAGS) $^ -o $(OBJECT_DIR)/$@ + +$(OBJECT_DIR)/sensors/battery.o : $(USER_DIR)/sensors/battery.c $(USER_DIR)/sensors/battery.h $(GTEST_HEADERS) + @mkdir -p $(dir $@) + $(CC) $(C_FLAGS) $(TEST_CFLAGS) -c $(USER_DIR)/sensors/battery.c -o $@ + +$(OBJECT_DIR)/battery_unittest.o : \ + $(TEST_DIR)/battery_unittest.cc \ + $(USER_DIR)/sensors/battery.h \ + $(GTEST_HEADERS) + + @mkdir -p $(dir $@) + $(CXX) $(CXX_FLAGS) $(TEST_CFLAGS) -c $< -o $@ + +$(OBJECT_DIR)/battery_unittest : \ + $(OBJECT_DIR)/sensors/battery.o \ + $(OBJECT_DIR)/common/maths.o \ + $(OBJECT_DIR)/battery_unittest.o \ + $(OBJECT_DIR)/gtest_main.a + + $(CXX) $(CXX_FLAGS) $^ -o $@ + $(OBJECT_DIR)/drivers/barometer_ms5611.o : \ $(USER_DIR)/drivers/barometer_ms5611.c \ $(USER_DIR)/drivers/barometer_ms5611.h \ @@ -658,6 +675,30 @@ $(OBJECT_DIR)/alignsensor_unittest : \ $(CXX) $(CXX_FLAGS) $^ -o $(OBJECT_DIR)/$@ +$(OBJECT_DIR)/build/version.o : \ + $(USER_DIR)/build/version.c \ + $(USER_DIR)/build/version.h \ + $(GTEST_HEADERS) + + @mkdir -p $(dir $@) + $(CC) $(C_FLAGS) $(TEST_CFLAGS) -D'__TARGET__="TEST"' -D'__REVISION__="revision"' -c $(USER_DIR)/build/version.c -o $@ + +$(OBJECT_DIR)/drivers/buf_writer.o : \ + $(USER_DIR)/drivers/buf_writer.c \ + $(USER_DIR)/drivers/buf_writer.h \ + $(GTEST_HEADERS) + + @mkdir -p $(dir $@) + $(CC) $(C_FLAGS) $(TEST_CFLAGS) -D'__TARGET__="TEST"' -D'__REVISION__="revision"' -c $(USER_DIR)/drivers/buf_writer.c -o $@ + +$(OBJECT_DIR)/common/streambuf.o : \ + $(USER_DIR)/common/streambuf.c \ + $(USER_DIR)/common/streambuf.h \ + $(GTEST_HEADERS) + + @mkdir -p $(dir $@) + $(CC) $(C_FLAGS) $(TEST_CFLAGS) -D'__TARGET__="TEST"' -D'__REVISION__="revision"' -c $(USER_DIR)/common/streambuf.c -o $@ + $(OBJECT_DIR)/drivers/display.o : \ $(USER_DIR)/drivers/display.c \ $(USER_DIR)/drivers/display.h \ @@ -690,6 +731,14 @@ $(OBJECT_DIR)/cms_unittest : \ $(CXX) $(CXX_FLAGS) $^ -o $(OBJECT_DIR)/$@ +$(OBJECT_DIR)/drivers/io.o : \ + $(USER_DIR)/drivers/io.c \ + $(USER_DIR)/drivers/io.h \ + $(GTEST_HEADERS) + + @mkdir -p $(dir $@) + $(CC) $(C_FLAGS) $(TEST_CFLAGS) -c $(USER_DIR)/drivers/io.c -o $@ + $(OBJECT_DIR)/config/parameter_group.o : \ $(USER_DIR)/config/parameter_group.c \ $(USER_DIR)/config/parameter_group.h \ diff --git a/src/test/unit/parameter_group.ld b/src/test/unit/parameter_group.ld new file mode 100644 index 0000000000..86487d2899 --- /dev/null +++ b/src/test/unit/parameter_group.ld @@ -0,0 +1,22 @@ + +SECTIONS { + /* BLOCK: on Windows (PE) output section must be page-aligned. Use 4-byte alignment otherwise */ + /* SUBALIGN: force 4-byte alignment of input sections for pg_registry. + Gcc defaults to 32 bytes; padding is then inserted between object files, breaking the init structure. */ + .pg_registry BLOCK( DEFINED(__section_alignment__) ? __section_alignment__ : 4 ) : SUBALIGN(4) + { + PROVIDE_HIDDEN (__pg_registry_start = . ); + PROVIDE_HIDDEN (___pg_registry_start = . ); + KEEP (*(.pg_registry)) + KEEP (*(SORT(.pg_registry.*))) + PROVIDE_HIDDEN (__pg_registry_end = . ); + PROVIDE_HIDDEN (___pg_registry_end = . ); + + PROVIDE_HIDDEN (__pg_resetdata_start = . ); + PROVIDE_HIDDEN (___pg_resetdata_start = . ); + KEEP (*(.pg_resetdata)) + PROVIDE_HIDDEN (__pg_resetdata_end = . ); + PROVIDE_HIDDEN (___pg_resetdata_end = . ); + } +} +INSERT AFTER .text; diff --git a/src/test/unit/parameter_groups_unittest.cc b/src/test/unit/parameter_groups_unittest.cc index 5618375fbe..df45a1829c 100644 --- a/src/test/unit/parameter_groups_unittest.cc +++ b/src/test/unit/parameter_groups_unittest.cc @@ -31,8 +31,6 @@ extern "C" { #include "io/motors.h" -} - PG_DECLARE(motorConfig_t, motorConfig); PG_REGISTER_WITH_RESET_TEMPLATE(motorConfig_t, motorConfig, PG_MOTOR_CONFIG, 1); @@ -43,6 +41,8 @@ PG_RESET_TEMPLATE(motorConfig_t, motorConfig, .mincommand = 1000, .motorPwmRate = 400, ); +} + #include "unittest_macros.h" #include "gtest/gtest.h" @@ -88,6 +88,5 @@ TEST(ParameterGroupsfTest, Test_pgFind) // STUBS extern "C" { - }