diff --git a/.appveyor.yml b/.appveyor.yml index 663b8a9b..7313dc32 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -6,7 +6,6 @@ version: 0.0.0.0.1-branch-{branch}-build-{build} clone_depth: 10 cache: - c:\cygwin-setup-cache - - c:\gtest-1.7.0 environment: matrix: - cygwin_url: https://cygwin.com/setup-x86_64.exe @@ -21,20 +20,13 @@ install: - c:\cygwin-root\bin\sh -lc "cat /proc/meminfo" - c:\cygwin-root\bin\sh -lc "cygcheck -s -v > $APPVEYOR_BUILD_FOLDER/cygcheck.log 2>&1" - ps: Push-AppveyorArtifact cygcheck.log - - ps: | - if (Test-Path "c:\gtest-1.7.0\src\gtest-all.cc") { - echo "using gtest from cache" - } else { - (New-Object Net.WebClient).DownloadFile('http://googletest.googlecode.com/files/gtest-1.7.0.zip', 'c:\gtest-1.7.0.zip') - 7z x -oc:\ c:\gtest-1.7.0.zip - } - c:\cygwin-root\bin\sh -lc "/bin/easy_install* pexpect" # stdin is broken at AppVeyor, so we open it explicitly as /dev/null build_script: - git submodule update --init - c:\cygwin-root\bin\sh -lc "cd $APPVEYOR_BUILD_FOLDER; ./autogen.sh < /dev/null" - mkdir build - - c:\cygwin-root\bin\sh -lc "cd $APPVEYOR_BUILD_FOLDER/build; ../configure --enable-charset --enable-zlib --enable-openssl --enable-perl --enable-python --enable-cyrus --with-gtest=/cygdrive/c/gtest-1.7.0 < /dev/null" + - c:\cygwin-root\bin\sh -lc "cd $APPVEYOR_BUILD_FOLDER/build; ../configure --enable-charset --enable-zlib --enable-openssl --enable-perl --enable-python --enable-cyrus < /dev/null" - ps: Push-AppveyorArtifact build\config.log - c:\cygwin-root\bin\sh -lc "cd $APPVEYOR_BUILD_FOLDER/build; make VERBOSE=1 -j2 < /dev/null" - c:\cygwin-root\bin\sh -lc "cd $APPVEYOR_BUILD_FOLDER/build; make install < /dev/null" diff --git a/.gitmodules b/.gitmodules index 3ce97a55..548e642f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "Csocket"] path = third_party/Csocket url = https://github.com/jimloco/Csocket.git +[submodule "third_party/googletest"] + path = third_party/googletest + url = https://github.com/google/googletest diff --git a/.travis.yml b/.travis.yml index 2823ed72..a64bb3d2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -38,14 +38,13 @@ before_install: install: - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then cat /proc/cpuinfo /proc/meminfo; fi - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then lsb_release -a; fi - - if [[ "$TRAVIS_OS_NAME" == "linux" && "$CXX" == "g++" ]]; then sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test; fi + - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test; fi # for gcc-4.8 - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo add-apt-repository -y ppa:teward/swig3.0; fi - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo add-apt-repository -y ppa:teward/icu-backports; fi - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get update; fi - - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install libperl-dev python3-dev tcl-dev libsasl2-dev libgtest-dev libicu-dev swig3.0 doxygen graphviz python3-setuptools socat; fi - - if [[ "$TRAVIS_OS_NAME" == "linux" && "$CXX" == "g++" ]]; then sudo apt-get install g++-4.8; fi + - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install libperl-dev python3-dev tcl-dev libsasl2-dev libicu-dev swig3.0 doxygen graphviz python3-setuptools socat; fi + - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install g++-4.8; fi - if [[ "$TRAVIS_OS_NAME" == "linux" && "$CXX" == "g++" ]]; then export CXX="g++-4.8" CC="gcc-4.8"; fi - - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then export CFGFLAGS="$CFGFLAGS --with-gtest=/usr/src/gtest"; fi - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo easy_install3 pexpect; fi - | if [[ "$TRAVIS_OS_NAME" == "linux" && "$BUILD_TYPE" == "coverage" ]]; then diff --git a/Makefile.in b/Makefile.in index 909493c9..37372690 100644 --- a/Makefile.in +++ b/Makefile.in @@ -31,12 +31,13 @@ INSTALL_DATA := @INSTALL_DATA@ GIT := @GIT@ SED := @SED@ -GTEST_DOWNLOAD := GTEST_DIR := @GTEST_DIR@ +GMOCK_DIR := @GMOCK_DIR@ ifeq "$(GTEST_DIR)" "" -GTEST_VER := 1.7.0 -GTEST_DIR := test/gtest-$(GTEST_VER) -GTEST_DOWNLOAD := 1 +GTEST_DIR := $(srcdir)/third_party/googletest/googletest +endif +ifeq "$(GMOCK_DIR)" "" +GMOCK_DIR := $(srcdir)/third_party/googletest/googlemock endif LIB_SRCS := ZNCString.cpp Csocket.cpp znc.cpp IRCNetwork.cpp User.cpp IRCSock.cpp \ @@ -95,9 +96,9 @@ $(LIBZNC): $(LIB_OBJS) $(Q)$(CXX) $(LDFLAGS) -shared -o $@ $(LIB_OBJS) $(LIBS) -Wl,--out-implib=libznc.dll.a endif -unittest: $(LIB_OBJS) test/gtest-all.o test/gtest-main.o $(TESTS) +unittest: $(LIB_OBJS) test/gtest-all.o test/gmock-all.o test/gmock-main.o $(TESTS) $(E) Linking unit test... - $(Q)$(CXX) $(LDFLAGS) -o $@ $(LIB_OBJS) test/gtest-all.o test/gtest-main.o $(TESTS) $(LIBS) + $(Q)$(CXX) $(LDFLAGS) -o $@ $(LIB_OBJS) test/gtest-all.o test/gmock-all.o test/gmock-main.o $(TESTS) $(LIBS) man: @$(MAKE) -C man $(C) @@ -121,30 +122,22 @@ src/%.o: src/%.cpp Makefile include/znc/Csocket.h test/%.o: test/%.cpp Makefile include/znc/Csocket.h @mkdir -p .depend test $(E) Building test object $*... - $(Q)$(CXX) $(CXXFLAGS) -I$(GTEST_DIR)/include -c -o $@ $< -MD -MF .depend/$*.test.dep -MT $@ + $(Q)$(CXX) $(CXXFLAGS) -I$(GMOCK_DIR)/include -I$(GTEST_DIR)/include -c -o $@ $< -MD -MF .depend/$*.test.dep -MT $@ test/gtest-all.o: $(GTEST_DIR)/src/gtest-all.cc Makefile @mkdir -p .depend test $(E) Building test object gtest-all... $(Q)$(CXX) $(CXXFLAGS) -I$(GTEST_DIR)/include -I$(GTEST_DIR) -c -o $@ $< -MD -MF .depend/gtest-all.dep -MT $@ -test/gtest-main.o: $(GTEST_DIR)/src/gtest_main.cc Makefile +test/gmock-all.o: $(GMOCK_DIR)/src/gmock-all.cc Makefile @mkdir -p .depend test - $(E) Building test object gtest-main... - $(Q)$(CXX) $(CXXFLAGS) -I$(GTEST_DIR)/include -c -o $@ $< -MD -MF .depend/gtest-main.dep -MT $@ + $(E) Building test object gmock-all... + $(Q)$(CXX) $(CXXFLAGS) -I$(GMOCK_DIR)/include -I$(GTEST_DIR)/include -I$(GMOCK_DIR) -c -o $@ $< -MD -MF .depend/gmock-all.dep -MT $@ -ifneq "$(GTEST_DOWNLOAD)" "" -test/gtest.zip: +test/gmock-main.o: $(GMOCK_DIR)/src/gmock_main.cc Makefile @mkdir -p .depend test - $(E) Downloading GoogleTest $(GTEST_VER) - $(Q)wget http://googletest.googlecode.com/files/gtest-$(GTEST_VER).zip -O $@ - -$(GTEST_DIR)/src/gtest-all.cc $(GTEST_DIR)/src/gtest_main.cc $(GTEST_DIR)/include/gtest/gtest.h: test/gtest.zip - $(E) Unpacking GoogleTest $(GTEST_VER) - $(Q)test -r $@ || unzip $^ -d test/ - $(Q)test -r $@ - $(Q)touch -c $@ -endif + $(E) Building test object gmock-main... + $(Q)$(CXX) $(CXXFLAGS) -I$(GMOCK_DIR)/include -I$(GTEST_DIR)/include -c -o $@ $< -MD -MF .depend/gmock-main.dep -MT $@ ifneq "THIS_IS_NOT_TARBALL" "" # If git commit was changed since previous build, add a phony target to dependencies, forcing version.o to be recompiled diff --git a/configure.ac b/configure.ac index 0a903956..2f2c5b06 100644 --- a/configure.ac +++ b/configure.ac @@ -134,9 +134,22 @@ AC_ARG_ENABLE( [poll], AS_HELP_STRING([--disable-poll], [use select() instead of poll()]), [POLL="$enableval"], [POLL="yes"]) + AC_ARG_WITH( [gtest], - AS_HELP_STRING([--with-gtest=DIR], [Path to directory with src/gtest-all.cc and src/gtest_main.cc files. - If not specified, "make test" will download gtest tarball and use it.])) + AS_HELP_STRING([--with-gtest=DIR], [Path to directory with src/gtest-all.cc file. + If not specified, git submodule will be used. + If it is not available either, "make test" will fail.])) +if test "x$with_gtest" != xno; then + AC_SUBST([GTEST_DIR], [$with_gtest]) +fi +AC_ARG_WITH([gmock], + AS_HELP_STRING([--with-gmock=DIR], [Path to directory with src/gmock-all.cc and src/gmock_main.cc files. + If not specified, git submodule will be used. + If it is not available either, "make test" will fail.])) +if test "x$with_gmock" != xno; then + AC_SUBST([GMOCK_DIR], [$with_gmock]) +fi + AC_ARG_WITH([systemdsystemunitdir], AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files]), @@ -145,9 +158,6 @@ AC_ARG_WITH([systemdsystemunitdir], with_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd) fi ]) -if test "x$with_gtest" != xno; then - AC_SUBST([GTEST_DIR], [$with_gtest]) -fi if test "x$with_systemdsystemunitdir" != xno; then AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir]) fi diff --git a/third_party/googletest b/third_party/googletest new file mode 160000 index 00000000..f570b27e --- /dev/null +++ b/third_party/googletest @@ -0,0 +1 @@ +Subproject commit f570b27e15a4e921d59495622a82277a3e1e8f87