From 43f3a3ffe40712cbe9052c1e773c1da9a494abaf Mon Sep 17 00:00:00 2001 From: Tony Olagbaiye Date: Wed, 12 Jan 2022 15:44:52 +0000 Subject: [PATCH] coverage gen --- .gitignore | 3 +++ connection.cpp | 2 ++ makefile | 43 +++++++++++++++++++++++++++---------- plugin.cpp | 2 +- tests/{main.cpp => main.cc} | 0 xmpp/presence.cpp | 2 ++ xmpp/stanza.hh | 4 ++-- 7 files changed, 42 insertions(+), 14 deletions(-) rename tests/{main.cpp => main.cc} (100%) diff --git a/.gitignore b/.gitignore index 00be7c8..391ddff 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,9 @@ compile_commands.json cscope* .depend *.d +*.gcno +*.gcda +*.json.gz # Object files *.o diff --git a/connection.cpp b/connection.cpp index bb8657c..741a1b3 100644 --- a/connection.cpp +++ b/connection.cpp @@ -21,7 +21,9 @@ #include "omemo.hh" #include "pgp.hh" #include "util.hh" +extern "C" { #include "diff/diff.h" +} void connection__init() { diff --git a/makefile b/makefile index 4b540cd..7ea33be 100644 --- a/makefile +++ b/makefile @@ -73,8 +73,10 @@ SRCS=plugin.cpp \ xmpp/iq.cpp \ DEPS=deps/diff/libdiff.a \ + deps/fmt/libfmt.a \ -OBJS=$(patsubst %.cpp,.%.o,$(patsubst %.c,.%.o,$(patsubst xmpp/%.cpp,xmpp/.%.o,$(patsubst xmpp/%.c,xmpp/.%.o,$(SRCS))))) +OBJS=$(patsubst %.cpp,.%.o,$(patsubst %.c,.%.o,$(patsubst xmpp/%.cpp,xmpp/.%.o,$(SRCS)))) +COVS=$(patsubst %.cpp,.%.cov.o,$(patsubst xmpp/%.cpp,xmpp/.%.cov.o,$(SRCS))) all: make depend @@ -83,34 +85,50 @@ all: weechat-xmpp: $(DEPS) xmpp.so xmpp.so: $(OBJS) $(DEPS) $(HDRS) - $(CXX) $(LDFLAGS) -o .$@ $(OBJS) $(DEPS) $(LDLIBS) + $(CXX) $(LDFLAGS) -o $@ $(OBJS) $(DEPS) $(LDLIBS) which patchelf >/dev/null && \ patchelf --set-rpath $(LIBRARY_PATH):$(shell realpath $(shell dirname $(shell gcc --print-libgcc-file-name))/../../../) xmpp.so && \ patchelf --shrink-rpath xmpp.so || true .%.o: %.c - @$(CC) $(CFLAGS) -c $< -o $@ + $(CC) $(CFLAGS) -c $< -o $@ .%.o: %.cpp - @$(CXX) $(CPPFLAGS) -c $< -o $@ + $(CXX) $(CPPFLAGS) -c $< -o $@ + +.%.cov.o: %.cpp + @$(CXX) --coverage -O0 $(CPPFLAGS) -c $< -o $@ xmpp/.%.o: xmpp/%.cpp - @$(CXX) $(CPPFLAGS) -c $< -o $@ + $(CXX) $(CPPFLAGS) -c $< -o $@ + +xmpp/.%.cov.o: xmpp/%.cpp + @$(CXX) --coverage -O0 $(CPPFLAGS) -c $< -o $@ deps/diff/libdiff.a: git submodule update --init --recursive cd deps/diff && env -u MAKEFLAGS ./configure $(MAKE) -C deps/diff CFLAGS=-fPIC diff: deps/diff/libdiff.a - -tests/run: xmpp.so tests/main.cpp - $(CXX) $(CPPFLAGS) -o tests/run xmpp.so tests/main.cpp $(LDLIBS) +deps/fmt/libfmt.a: + git submodule update --init --recursive + env -u MAKEFLAGS cmake -S deps/fmt -B deps/fmt \ + -DCMAKE_POSITION_INDEPENDENT_CODE=ON + $(MAKE) -C deps/fmt fmt +fmt: deps/fmt/libfmt.a + +tests/run: $(COVS) $(DEPS) $(HDRS) tests/main.cc + $(CXX) --coverage -O0 $(LDFLAGS) -o tests/xmpp.cov.so $(COVS) $(DEPS) $(LDLIBS) + env --chdir tests $(CXX) $(CPPFLAGS) -o run xmpp.cov.so main.cc $(LDLIBS) which patchelf >/dev/null && \ - patchelf --set-rpath $(PWD):$(LIBRARY_PATH):$(shell realpath $(shell dirname $(shell gcc --print-libgcc-file-name))/../../../) tests/run && \ - patchelf --shrink-rpath tests/run || true + patchelf --set-rpath $(PWD)/tests:$(LIBRARY_PATH):$(shell realpath $(shell dirname $(shell gcc --print-libgcc-file-name))/../../../) tests/xmpp.cov.so tests/run && \ + patchelf --shrink-rpath tests/run tests/xmpp.cov.so || true test: tests/run - tests/run + env --chdir tests ./run + +coverage: tests/run + gcov -m -abcfu -rqk -i .*.gcda xmpp/.*.gcda debug: xmpp.so env LD_PRELOAD=$(DEBUG) gdb -ex "handle SIGPIPE nostop noprint pass" --args \ @@ -132,10 +150,13 @@ depend: $(SRCS) $(HDRS) tidy: $(FIND) . -name "*.o" -delete + $(FIND) . -name "*.gcno" -delete + $(FIND) . -name "*.gcda" -delete clean: $(RM) -f $(OBJS) $(MAKE) -C deps/diff clean || true + $(MAKE) -C deps/fmt clean || true git submodule foreach --recursive git clean -xfd || true git submodule foreach --recursive git reset --hard || true diff --git a/plugin.cpp b/plugin.cpp index a073f5b..a186495 100644 --- a/plugin.cpp +++ b/plugin.cpp @@ -11,7 +11,6 @@ #include "plugin.hh" #include "config.hh" -extern "C" { #include "account.hh" #include "connection.hh" #include "command.hh" @@ -19,6 +18,7 @@ extern "C" { #include "buffer.hh" #include "completion.hh" +extern "C" { WEECHAT_PLUGIN_NAME(WEECHAT_XMPP_PLUGIN_NAME); WEECHAT_PLUGIN_DESCRIPTION(N_("XMPP client protocol")); WEECHAT_PLUGIN_AUTHOR("bqv "); diff --git a/tests/main.cpp b/tests/main.cc similarity index 100% rename from tests/main.cpp rename to tests/main.cc diff --git a/xmpp/presence.cpp b/xmpp/presence.cpp index c5a59cc..acecc81 100644 --- a/xmpp/presence.cpp +++ b/xmpp/presence.cpp @@ -5,6 +5,8 @@ #include #include +#include "stanza.hh" + xmpp_stanza_t *stanza__presence(xmpp_ctx_t *context, xmpp_stanza_t *base, xmpp_stanza_t **children, char *ns, char *from, char *to, char *type) diff --git a/xmpp/stanza.hh b/xmpp/stanza.hh index 2abf065..2f1ecbc 100644 --- a/xmpp/stanza.hh +++ b/xmpp/stanza.hh @@ -70,8 +70,8 @@ static inline void stanza__set_text(xmpp_ctx_t *context, xmpp_stanza_t *parent, } xmpp_stanza_t *stanza__presence(xmpp_ctx_t *context, xmpp_stanza_t *base, - xmpp_stanza_t **children, const char *ns, - char *from, char *to, const char *type); + xmpp_stanza_t **children, char *ns, + char *from, char *to, char *type); xmpp_stanza_t *stanza__iq(xmpp_ctx_t *context, xmpp_stanza_t *base, xmpp_stanza_t **children, char *ns, char *id,