diff --git a/test/Makefile b/test/Makefile new file mode 100644 index 0000000..5a65a62 --- /dev/null +++ b/test/Makefile @@ -0,0 +1,49 @@ +CC = gcc +ifeq ($(shell uname -s), Darwin) +CC = clang +endif +#DEBUG = -O0 -g +CFLAGS += -std=c99 -pedantic -Wall -Wextra -Werror +CFLAGS += $(DEBUG) +DEFINES = -D UNITY_OUTPUT_CHAR=putcharSpy -D UNITY_INCLUDE_DOUBLE +SRC = ../src/unity.c tests/testunity.c build/testunityRunner.c +INC_DIR = -I ../src +COV_FLAGS = -fprofile-arcs -ftest-coverage -I ../../src +BUILD_DIR = build +TARGET = build/testunity-cov.exe + +# To generate coverage, call 'make -s', the default target runs. +# To see missing coverage, follow up with 'make uncovered'. +# For verbose output of all the tests, run 'make test'. +default: coverage +.PHONY: default coverage uncovered test clean +coverage: $(BUILD_DIR)/testunityRunner.c + cd $(BUILD_DIR) && \ + $(CC) $(CFLAGS) $(DEFINES) $(foreach i,$(SRC), ../$i) $(COV_FLAGS) -o ../$(TARGET) + rm -f $(BUILD_DIR)/*.gcda + ./$(TARGET) | grep Tests -A1 + cd $(BUILD_DIR) && \ + gcov unity.c | head -3 + +uncovered: + grep '###' $(BUILD_DIR)/unity.c.gcov -C2 || true + +test: $(BUILD_DIR)/testunityRunner.c + $(CC) $(CFLAGS) $(DEFINES) $(INC_DIR) $(SRC) -o $(TARGET) + ./$(TARGET) + +$(BUILD_DIR)/testunityRunner.c: tests/testunity.c | $(BUILD_DIR) + awk $(AWK_SCRIPT) tests/testunity.c > $@ + +AWK_SCRIPT='/^void test/{ declarations[d++]=$$0; gsub(/\(?void\)? ?/,""); tests[t++]=$$0 } \ + END{ print "\#include \"unity.h\" //Autogenerated by awk in Makefile" ; \ + for (i=0; i