summaryrefslogtreecommitdiffhomepage
path: root/tests/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'tests/Makefile')
-rw-r--r--tests/Makefile79
1 files changed, 79 insertions, 0 deletions
diff --git a/tests/Makefile b/tests/Makefile
new file mode 100644
index 0000000..f3ec6c8
--- /dev/null
+++ b/tests/Makefile
@@ -0,0 +1,79 @@
+CXXFLAGS=-g -O0
+
+include ../common.mk
+
+ifeq ($(CXXTYPE),clang++)
+CXXFLAGS+=-fprofile-instr-generate -fcoverage-mapping
+LDFLAGS+=-fprofile-instr-generate -fcoverage-mapping
+else
+# GCC
+CXXFLAGS+=--coverage
+LDFLAGS+=--coverage
+endif
+
+UNITS=storage.cpp config.cpp compiledsql.cpp qrcode.cpp whiteboard.cpp connectionregistry.cpp diff.cpp
+
+UNITTESTS=test-config.cpp \
+ test-storage.cpp \
+ test-connectionregistry.cpp \
+ test-compiledsql.cpp \
+ test-qrcode.cpp \
+ test-whiteboard.cpp \
+ test-diff.cpp
+
+CXXFLAGS+=\
+ -I/usr/src/googletest/googletest/include \
+ -I/usr/src/googletest/googlemock/include \
+ -I/usr/src/googletest/googletest \
+ -I/usr/src/googletest/googlemock \
+ -I..
+
+test: unittests
+ # https://clang.llvm.org/docs/SourceBasedCodeCoverage.html
+ifeq ($(CXXTYPE),clang++)
+ LLVM_PROFILE_FILE="unittests.profraw" ./unittests
+ $(LLVMPROFDATA) merge -sparse unittests.profraw -o unittests.profdata
+ $(LLVMCOV) report --ignore-filename-regex='google' --ignore-filename-regex='test-' --ignore-filename-regex='Magick' --show-region-summary=0 -instr-profile unittests.profdata unittests
+else
+ ./unittests
+ gcovr -r ..
+endif
+
+coverage:
+ $(LLVMCOV) show -instr-profile unittests.profdata $(UNITS:.cpp=.o)
+
+unittests: libgmock.a $(UNITTESTS:.cpp=.o) $(UNITS:.cpp=.o)
+ $(CXX) $(LDFLAGS) $^ $(LDLIBS) $(LIBS) -o $@
+
+%.o: %.cpp
+ $(CXX) $(CXXFLAGS) -o $@ -c $<
+
+config.o: ../config.cpp
+ $(CXX) $(CXXFLAGS) -o $@ -c $<
+
+connectionregistry.o: ../connectionregistry.cpp
+ $(CXX) $(CXXFLAGS) -o $@ -c $<
+
+diff.o: ../diff.cpp
+ $(CXX) $(CXXFLAGS) -o $@ -c $<
+
+storage.o: ../storage.cpp
+ $(CXX) $(CXXFLAGS) -o $@ -c $<
+
+compiledsql.o: ../compiledsql.cpp
+ $(CXX) $(CXXFLAGS) -o $@ -c $<
+
+whiteboard.o: ../whiteboard.cpp
+ $(CXX) $(CXXFLAGS) -o $@ -c $<
+
+qrcode.o: ../qrcode.cpp
+ $(CXX) $(CXXFLAGS) -o $@ -c $<
+
+libgmock.a:
+ $(CXX) $(CXXFLAGS) -c /usr/src/googletest/googletest/src/gtest-all.cc
+ $(CXX) $(CXXFLAGS) -c /usr/src/googletest/googlemock/src/gmock-all.cc
+ $(CXX) $(CXXFLAGS) -c /usr/src/googletest/googlemock/src/gmock_main.cc
+ ar -rv libgmock.a gmock-all.o gtest-all.o gmock_main.o
+
+clean:
+ -rm -f *.o *.a unittests *.gcda *.gcno *.profraw *.profdata *.gcov