summaryrefslogtreecommitdiff
path: root/test/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'test/Makefile')
-rw-r--r--test/Makefile125
1 files changed, 86 insertions, 39 deletions
diff --git a/test/Makefile b/test/Makefile
index d5e9d0033..4f9dd22c9 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -10,29 +10,35 @@ TESTS := \
urlescape \
utils \
messages \
- time #llcache
+ time \
+ mimesniff \
+ corestrings #llcache
+
+# sources necessary to use nsurl functionality
+NSURL_SOURCES := utils/nsurl/nsurl.c utils/nsurl/parse.c utils/idna.c \
+ utils/punycode.c
# nsurl sources
-nsurl_SRCS := utils/corestrings.c utils/nsurl.c utils/idna.c utils/punycode.c \
- test/log.c test/nsurl.c
+nsurl_SRCS := $(NSURL_SOURCES) utils/corestrings.c test/log.c test/nsurl.c
# url database test sources
-urldbtest_SRCS := content/urldb.c \
- utils/idna.c utils/bloom.c utils/nsoption.c utils/nsurl.c \
- utils/corestrings.c utils/punycode.c \
- utils/hashtable.c utils/messages.c utils/time.c utils/utils.c \
- test/log.c test/urldbtest.c
+urldbtest_SRCS := $(NSURL_SOURCES) \
+ utils/bloom.c utils/nsoption.c utils/corestrings.c utils/time.c \
+ utils/hashtable.c utils/messages.c utils/utils.c \
+ utils/http/primitives.c utils/http/generics.c \
+ utils/http/strict-transport-security.c \
+ content/urldb.c \
+ test/log.c test/urldbtest.c
# low level cache sources
llcache_SRCS := content/fetch.c content/fetchers/curl.c \
- content/fetchers/about.c content/fetchers/data.c \
- content/fetchers/resource.c content/llcache.c \
- content/urldb.c \
- image/image_cache.c \
- utils/base64.c utils/corestrings.c utils/hashtable.c \
- utils/nsurl.c utils/messages.c utils/url.c utils/useragent.c \
- utils/utils.c \
- test/log.c test/llcache.c
+ content/fetchers/about.c content/fetchers/data.c \
+ content/fetchers/resource.c content/llcache.c \
+ content/urldb.c \
+ image/image_cache.c \
+ $(NSURL_SOURCES) utils/base64.c utils/corestrings.c utils/hashtable.c \
+ utils/messages.c utils/url.c utils/useragent.c utils/utils.c \
+ test/log.c test/llcache.c
# messages test sources
messages_SRCS := utils/messages.c utils/hashtable.c test/log.c test/messages.c
@@ -50,13 +56,26 @@ hashtable_SRCS := utils/hashtable.c test/log.c test/hashtable.c
urlescape_SRCS := utils/url.c test/log.c test/urlescape.c
# utility test sources
-utils_SRCS := utils/utils.c utils/messages.c utils/hashtable.c \
- utils/corestrings.c utils/nsurl.c utils/idna.c utils/punycode.c \
- test/log.c test/utils.c
+utils_SRCS := $(NSURL_SOURCES) utils/utils.c utils/messages.c \
+ utils/hashtable.c utils/corestrings.c \
+ test/log.c test/utils.c
# time test sources
time_SRCS := utils/time.c test/log.c test/time.c
+# mimesniff test sources
+mimesniff_SRCS := $(NSURL_SOURCES) utils/hashtable.c utils/corestrings.c \
+ utils/http/generics.c utils/http/content-type.c \
+ utils/http/primitives.c utils/messages.c utils/http/parameter.c \
+ content/mimesniff.c \
+ test/log.c test/mimesniff.c
+
+# corestrings test sources
+corestrings_SRCS := $(NSURL_SOURCES) utils/corestrings.c \
+ test/log.c test/corestrings.c
+corestrings_LD := -lmalloc_fig
+
+
# Coverage builds need additional flags
COV_ROOT := build/$(HOST)-coverage
ifeq ($(MAKECMDGOALS),coverage)
@@ -64,10 +83,19 @@ ifeq ($(MAKECMDGOALS),coverage)
COV_CXXFLAGS ?= -fprofile-arcs -ftest-coverage -O0
COV_LDFLAGS ?= -lgcov -fprofile-arcs
TESTROOT := $(COV_ROOT)
+ ifeq ($(NOASSERTCOVERAGE),yes)
+ NOCOV_TESTSOURCES ?=
+ COV_CPPFLAGS ?=
+ else
+ NOCOV_TESTSOURCES ?= test/assert.c
+ COV_CPPFLAGS ?= -D__assert_fail=__ns_assert_fail
+ endif
else
COV_CFLAGS ?= -O0
COV_CXXFLAGS ?= -O0
+ COV_CPPFLAGS ?=
TESTROOT := build/$(HOST)-test
+ NOCOV_TESTSOURCES ?=
endif
@@ -106,21 +134,29 @@ ifneq ($(CC_MAJOR),2)
COMMON_WARNFLAGS += -Wno-unused-parameter
endif
-TESTCFLAGS := -std=c99 -g \
- $(COMMON_WARNFLAGS) \
- -D_BSD_SOURCE \
- -D_POSIX_C_SOURCE=200809L \
- -D_XOPEN_SOURCE=600 \
- -Itest -Iinclude -Icontent/handlers -Ifrontends -I. -I.. \
- -Dnsgtk \
- $(shell pkg-config --cflags libcurl libparserutils libwapcaplet libdom libnsutils libutf8proc) \
- $(LIB_CFLAGS) \
- $(COV_CFLAGS)
-
-TESTLDFLAGS := $(shell pkg-config --libs libcurl libparserutils libwapcaplet libdom libnsutils libutf8proc) -lz \
- $(LIB_LDFLAGS)\
- $(COV_LDFLAGS)
-
+BASE_TESTCFLAGS := -std=c99 -g \
+ $(COMMON_WARNFLAGS) \
+ -D_DEFAULT_SOURCE \
+ -D_POSIX_C_SOURCE=200809L \
+ -D_XOPEN_SOURCE=600 \
+ -Itest -Iinclude -Icontent/handlers -Ifrontends -I. -I.. \
+ -Dnsgtk \
+ $(SAN_FLAGS) \
+ $(shell pkg-config --cflags libcurl libparserutils libwapcaplet libdom libnsutils libutf8proc) \
+ $(LIB_CFLAGS)
+TESTCFLAGS := $(BASE_TESTCFLAGS) \
+ $(COV_CFLAGS) \
+ $(COV_CPPFLAGS)
+
+TESTLDFLAGS := -L$(TESTROOT) \
+ $(shell pkg-config --libs libcurl libparserutils libwapcaplet libdom libnsutils libutf8proc) -lz \
+ $(SAN_FLAGS) \
+ $(LIB_LDFLAGS)\
+ $(COV_LDFLAGS)
+
+# malloc faliure injection generator
+$(TESTROOT)/libmalloc_fig.so:test/malloc_fig.c
+ $(CC) -shared -fPIC -I. -std=c99 $(COMMON_WARNFLAGS) $^ -o $@
# Source files for all tests being compiled
TESTSOURCES :=
@@ -128,15 +164,15 @@ TESTSOURCES :=
GCOV ?= gcov
define gen_test_target
-$$(TESTROOT)/$(1): $$(sort $$(addprefix $$(TESTROOT)/,$$(subst /,_,$$(patsubst %.c,%.o,$$(patsubst %.cpp,%.o,$$(patsubst %.m,%.o,$$(patsubst %.s,%.o,$$($(1)_SRCS))))))))
+$$(TESTROOT)/$(1): $$(sort $$(addprefix $$(TESTROOT)/,$$(subst /,_,$$(patsubst %.c,%.o,$$(patsubst %.cpp,%.o,$$(patsubst %.m,%.o,$$(patsubst %.s,%.o,$$($(1)_SRCS) $$(NOCOV_TESTSOURCES))))))))
$$(VQ)echo "LINKTEST: $$@"
- $$(Q)$$(CC) $$(TESTCFLAGS) $$^ -o $$@ $$(TESTLDFLAGS)
+ $$(Q)$$(CC) $$(TESTCFLAGS) $$^ -o $$@ $$($(1)_LD) $$(TESTLDFLAGS)
.PHONY:$(1)_test
$(1)_test:$$(TESTROOT)/$(1)
$$(VQ)echo "RUN TEST: $(1)"
- $$(Q)$$(TESTROOT)/$(1)
+ $$(Q)LD_LIBRARY_PATH=$$(TESTROOT)/ $$(TESTROOT)/$(1)
TESTSOURCES += $$($(1)_SRCS)
@@ -150,19 +186,30 @@ $$(TESTROOT)/$(2): $(1) $$(TESTROOT)/created
endef
+define compile_test_nocov_target_c
+$$(TESTROOT)/$(2): $(1) $$(TESTROOT)/created
+ $$(VQ)echo " COMPILE: $(1) (No coverage)"
+ $$(Q)$$(RM) $$(TESTROOT)/$(2)
+ $$(Q)$$(CC) $$(BASE_TESTCFLAGS) -o $$(TESTROOT)/$(2) -c $(1)
+
+endef
+
# Generate target for each test program and the list of objects it needs
$(eval $(foreach TST,$(TESTS), $(call gen_test_target,$(TST))))
# generate target rules for test objects
$(eval $(foreach SOURCE,$(sort $(filter %.c,$(TESTSOURCES))), \
$(call compile_test_target_c,$(SOURCE),$(subst /,_,$(SOURCE:.c=.o)),$(subst /,_,$(SOURCE:.c=.d)))))
+$(eval $(foreach SOURCE,$(sort $(filter %.c,$(NOCOV_TESTSOURCES))), \
+ $(call compile_test_nocov_target_c,$(SOURCE),$(subst /,_,$(SOURCE:.c=.o)),$(subst /,_,$(SOURCE:.c=.d)))))
-.PHONY:test coverage
+.PHONY:test coverage sanitize
-test: $(TESTROOT)/created $(addsuffix _test,$(TESTS))
+test: $(TESTROOT)/created $(TESTROOT)/libmalloc_fig.so $(addsuffix _test,$(TESTS))
coverage: test
+sanitize: test
$(TESTROOT)/created:
$(VQ)echo " MKDIR: $(TESTROOT)"