diff options
| author | Roland Reichwein <mail@reichwein.it> | 2023-01-03 14:31:49 +0100 | 
|---|---|---|
| committer | Roland Reichwein <mail@reichwein.it> | 2023-01-03 14:31:49 +0100 | 
| commit | f30eba63cb3f5e3aa5d81d6b31d1ba2fdee1e5c4 (patch) | |
| tree | eed743b51b4875310918c708b8e24b1ecdef8c1b | |
| parent | a93412feba23335174a9a55b320e74c769462072 (diff) | |
Add test coverage info
| -rw-r--r-- | Makefile | 8 | ||||
| -rw-r--r-- | common.mk | 13 | ||||
| -rw-r--r-- | debian/control | 2 | ||||
| -rw-r--r-- | tests/Makefile | 63 | 
4 files changed, 80 insertions, 6 deletions
| @@ -14,7 +14,7 @@ PLUGINS= \           webbox \           weblog -CXXFLAGS+=-fPIE -DVERSION=\"$(VERSION)\" +CXXFLAGS+=-fPIE  LDLIBS+=\  -lreichwein \ @@ -58,8 +58,7 @@ all: build  $(PROJECTNAME): $(SRC:.cpp=.o)  	$(CXX) $(LDFLAGS) $^ $(LDLIBS) $(LIBS) -o $@ -$(PLUGINS): -	cd plugins/$@ && $(MAKE) +dep: $(SRC:.cpp=.d)  %.d: %.cpp  	$(CXX) $(CXXFLAGS) -MM -MP -MF $@ -c $< @@ -67,6 +66,9 @@ $(PLUGINS):  %.o: %.cpp %.d  	$(CXX) $(CXXFLAGS) -c $< -o $@ +$(PLUGINS): +	cd plugins/$@ && $(MAKE) +  # dependencies  ADD_DEP=Makefile @@ -73,17 +73,30 @@ LIBS+= \  #-lc++abi  #-lc++fs  #-lstdc++fs +LLVMPROFDATA=llvm-profdata-11 +LLVMCOV=llvm-cov-11 +CXXTYPE=clang++  else ifeq ($(CXX),clang++-14)  LIBS+= \  -fuse-ld=lld-14 \  -lstdc++ +LLVMPROFDATA=llvm-profdata-14 +LLVMCOV=llvm-cov-14 +CXXTYPE=clang++  else ifeq ($(CXX),clang++-13)  LIBS+= \  -fuse-ld=lld-13 \  -lstdc++ +LLVMPROFDATA=llvm-profdata-13 +LLVMCOV=llvm-cov-13 +CXXTYPE=clang++  else  LIBS+= \  -lstdc++ \  -lstdc++fs +CXXTYPE=g++  endif +SRC_ROOT=$(shell echo $(MAKEFILE_LIST) | tr " " "\n" | grep common.mk | sed -e 's/\([^ ]*\)common.mk/\1/g') +VERSION=$(shell dpkg-parsechangelog --show-field Version --file $(SRC_ROOT)/debian/changelog) +CXXFLAGS+=-DVERSION=\"$(VERSION)\" diff --git a/debian/control b/debian/control index 8a0a9fd..a48c5df 100644 --- a/debian/control +++ b/debian/control @@ -2,7 +2,7 @@ Source: webserver  Section: httpd  Priority: optional  Maintainer: Roland Reichwein <mail@reichwein.it> -Build-Depends: debhelper (>= 12), libssl-dev, libboost-all-dev | libboost1.71-all-dev, clang-13 | clang-11 | clang | g++-11 | g++, uglifyjs, python3-pkg-resources, htmlmin, cleancss, libreichwein-dev +Build-Depends: debhelper (>= 12), libssl-dev, libboost-all-dev | libboost1.71-all-dev, clang | g++, llvm | g++, lld | g++, uglifyjs, python3-pkg-resources, htmlmin, cleancss, libreichwein-dev, gcovr  Standards-Version: 4.5.0  Homepage: http://www.reichwein.it/webserver/ diff --git a/tests/Makefile b/tests/Makefile index d4c53cb..338800a 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -1,7 +1,18 @@ +CXXFLAGS=-g -O0 +  include ../common.mk  PROJECTNAME=test-webserver +ifeq ($(CXXTYPE),clang++) +CXXFLAGS+=-fprofile-instr-generate -fcoverage-mapping +LDFLAGS+=-fprofile-instr-generate -fcoverage-mapping +else +# GCC +CXXFLAGS+=--coverage +LDFLAGS+=--coverage +endif +  CXXFLAGS+= -I. -fPIE  CXXTESTFLAGS= @@ -19,15 +30,36 @@ LIBS=\  LDFLAGS+=-pie +UNITS=\ +    auth.cpp \ +    base64.cpp \ +    config.cpp \ +    http.cpp \ +    https.cpp \ +    os.cpp \ +    plugin.cpp \ +    privileges.cpp \ +    response.cpp \ +    statistics.cpp \ +    server.cpp \ +    webserver.cpp +  TESTSRC=\      test-environment.cpp \      test-webserver.cpp \      $(PROGSRC)  build: $(PROJECTNAME) +ifeq ($(CXXTYPE),clang++) +	LLVM_PROFILE_FILE="$(PROJECTNAME).profraw" ./$(PROJECTNAME) +	$(LLVMPROFDATA) merge -sparse $(PROJECTNAME).profraw -o $(PROJECTNAME).profdata +	$(LLVMCOV) report --ignore-filename-regex='google' --ignore-filename-regex='test-' --show-region-summary=0 -instr-profile $(PROJECTNAME).profdata $(PROJECTNAME) +else  	./$(PROJECTNAME) +	gcovr -r .. +endif -$(PROJECTNAME): $(TESTSRC:.cpp=.o) +$(PROJECTNAME): $(TESTSRC:.cpp=.o) $(UNITS:.cpp=.o)  	$(CXX) $(LDFLAGS) $^ $(LDLIBS) $(LIBS) -o $@  dep: $(TESTSRC:.cpp=.d) @@ -38,10 +70,37 @@ dep: $(TESTSRC:.cpp=.d)  %.o: %.cpp %.d  	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -c $< -o $@ +auth.o: ../auth.cpp +	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -c $< -o $@ +base64.o: ../base64.cpp +	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -c $< -o $@ +config.o: ../config.cpp +	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -c $< -o $@ +http.o: ../http.cpp +	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -c $< -o $@ +https.o: ../https.cpp +	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -c $< -o $@ +os.o: ../os.cpp +	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -c $< -o $@ +plugin.o: ../plugin.cpp +	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -c $< -o $@ +privileges.o: ../privileges.cpp +	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -c $< -o $@ +response.o: ../response.cpp +	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -c $< -o $@ +statistics.o: ../statistics.cpp +	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -c $< -o $@ +server.o: ../server.cpp +	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -c $< -o $@ +webserver.o: ../webserver.cpp +	$(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -c $< -o $@ + +ADD_DEP=Makefile +  # misc ---------------------------------------------------  clean: -	-rm -f *.o *.a *.d $(PROJECTNAME) +	-rm -f *.o *.a *.d $(PROJECTNAME) *.gcda *.gcno *.profraw *.profdata *.gcov  .PHONY: clean all install | 
