From 6b2a9dabbfad4d64268967a32dff0f1dc55763de Mon Sep 17 00:00:00 2001 From: Roland Reichwein Date: Sat, 16 May 2020 13:28:52 +0200 Subject: Makefile cleanup, included missing files --- tests/Makefile | 112 +++++++++++++++++++++++++++++++++++++++++++++++ tests/test-webserver.cpp | 44 +++++++++++++++++++ 2 files changed, 156 insertions(+) create mode 100644 tests/Makefile create mode 100644 tests/test-webserver.cpp (limited to 'tests') diff --git a/tests/Makefile b/tests/Makefile new file mode 100644 index 0000000..2bccae4 --- /dev/null +++ b/tests/Makefile @@ -0,0 +1,112 @@ +DISTROS=debian10 ubuntu1910 ubuntu2004 +PROJECTNAME=test-webserver + +CXX=clang++-10 + +ifeq ($(shell which $(CXX)),) +CXX=clang++ +endif + +ifeq ($(shell which $(CXX)),) +CXX=g++-9 +endif + +ifeq ($(shell which $(CXX)),) +CXX=g++ +endif + +ifeq ($(CXXFLAGS),) +#CXXFLAGS=-O2 -DNDEBUG +CXXFLAGS=-O0 -g -D_DEBUG +endif +# -fprofile-instr-generate -fcoverage-mapping +# gcc:--coverage + +CXXFLAGS+= -Wall -I. -fPIE + +CXXFLAGS+= -pthread +ifeq ($(CXX),clang++-10) +CXXFLAGS+=-std=c++20 #-stdlib=libc++ +else +CXXFLAGS+=-std=c++17 +endif + +CXXTESTFLAGS=-I../googletest/include -I../googlemock/include/ -I../googletest -I../googlemock + +LIBS=\ +-lcommon \ +-lboost_context \ +-lboost_filesystem \ +-lboost_timer \ +-lboost_system \ +-lcrypt \ +-lpthread \ +-lssl -lcrypto \ +-ldl + +#-lboost_coroutine \ +#-lboost_program_options \ +#-lboost_thread \ +#-lboost_regex \ + +ifeq ($(CXX),clang++-10) +LIBS+= \ +-fuse-ld=lld-10 \ +-lstdc++ +#-lc++ \ +#-lc++abi +#-lc++fs +#-lstdc++fs +else +LIBS+= \ +-lstdc++ \ +-lstdc++fs +endif + +LDFLAGS+=-pie -L../libcommon + +TESTSRC=\ + test-webserver.cpp \ + ../googlemock/src/gmock-all.cpp \ + ../googletest/src/gtest-all.cpp \ + $(PROGSRC) + +build: $(PROJECTNAME) + +set -e ; for i in $(PLUGINS) ; do make -C plugins/$$i ; done + ./$(PROJECTNAME) + +all: build + ./webserver -c webserver.conf + +$(PROJECTNAME): ../libcommon/libcommon.a $(TESTSRC:.cpp=.o) + $(CXX) $(LDFLAGS) $^ $(LDLIBS) $(LIBS) -o $@ + +dep: $(TESTSRC:.cpp=.d) + +%.d: %.cpp + $(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -MM -MP -MF $@ -c $< + +%.o: %.cpp %.d + $(CXX) $(CXXFLAGS) $(CXXTESTFLAGS) -c $< -o $@ + +install: + mkdir -p $(DESTDIR)/usr/bin + cp webserver $(DESTDIR)/usr/bin + + mkdir -p $(DESTDIR)/usr/lib/webserver/plugins + set -e ; for i in $(PLUGINS) ; do make -C plugins/$$i install ; done + + mkdir -p $(DESTDIR)/usr/local/lib/webserver/plugins + + #mkdir -p $(DESTDIR)/etc + #cp webserver.conf $(DESTDIR)/etc/webserver.conf + +# misc --------------------------------------------------- + +clean: + -rm -f $(PROJECTNAME) + -find . -name '*.o' -o -name '*.d' -o -name '*.gcno' -o -name '*.gcda' | xargs rm -f + +.PHONY: clean all install all $(DISTROS) + +-include $(wildcard $(TESTSRC:.cpp=.d)) diff --git a/tests/test-webserver.cpp b/tests/test-webserver.cpp new file mode 100644 index 0000000..f7020af --- /dev/null +++ b/tests/test-webserver.cpp @@ -0,0 +1,44 @@ +#include "gmock/gmock.h" +#include "gtest/gtest.h" + +#include +#include + +#include +#include + +using namespace std::string_literals; +namespace pt = boost::property_tree; + +TEST(property_tree, put) +{ + pt::ptree p; + pt::ptree list; + + pt::ptree entry; + + entry.put_value("name1.txt"); + entry.put(".type", "file1"); + + list.push_back(pt::ptree::value_type("listentry", entry)); + + entry.put_value("name2.txt"); + entry.put(".type", "file2"); + + list.push_back(pt::ptree::value_type("listentry", entry)); + + p.push_back(pt::ptree::value_type("list", list)); + + std::stringstream ss; + + pt::xml_parser::write_xml(ss, p /*, pt::xml_parser::xml_writer_make_settings(' ', 1)*/); + + EXPECT_EQ(ss.str(), "\nname1.txtname2.txt"); +} + + +int main(int argc, char* argv[]) { + ::testing::InitGoogleMock(&argc, argv); + return RUN_ALL_TESTS(); +} + -- cgit v1.2.3