diff options
-rwxr-xr-x | build/bmaketests | 79 | ||||
-rwxr-xr-x | build/buildtest (renamed from build/maketest.sh) | 0 | ||||
-rwxr-xr-x | configure.ac | 13 | ||||
-rw-r--r-- | src/Makefile.am | 4 | ||||
-rw-r--r-- | src/main.cpp | 17 |
5 files changed, 113 insertions, 0 deletions
diff --git a/build/bmaketests b/build/bmaketests new file mode 100755 index 000000000..e1d980a98 --- /dev/null +++ b/build/bmaketests @@ -0,0 +1,79 @@ +#!/bin/sh + +cd .. + +dir=`pwd` + +export CC=gcc-4.5 +export CXX=g++-4.5 + +export LANG=C +export CXXFLAGS="-Wunreachable-code -Wmissing-field-initializers \ +-Wabi -Wdisabled-optimization -Wuninitialized \ +-Wvolatile-register-var -Winvalid-pch -Wredundant-decls \ +-Wnormalized=nfkc -Wmissing-format-attribute -Wmissing-noreturn \ +-Wswitch-default -Wsign-promo -Waddress -Wmissing-declarations \ +-Wctor-dtor-privacy -Wstrict-null-sentinel \ +-Wunused-parameter -Wlogical-op \ +-Wempty-body -Wsign-compare -Wclobbered -Wcast-align -Wcast-qual \ +-Wtype-limits -Wpointer-arith -Wundef -Wmissing-include-dirs \ +-Wignored-qualifiers -Winit-self -pedantic -Wall -ggdb3 -O2 -pipe \ +-Wpacked -Wshadow -Wunused -Wsynth \ +-Wbuiltin-macro-redefined -Wctor-dtor-privacy -Wdeprecated -Wextra \ +-Wendif-labels -Wformat=1 -Wimport -Wnon-virtual-dtor -Wpsabi \ +-Wsign-promo -Wwrite-strings -D_FORTIFY_SOURCE=2" + +autoreconf -i 2>../build/make.log + +result=$? +if [ "$result" != 0 ]; then + echo autoreconf error + exit 1 +fi + +./configure --prefix=$dir/run \ +--datadir=$dir/run/share/games \ +--bindir=$dir/run/bin \ +--mandir=$dir/run/share/man \ +--enable-memdebug=yes \ +--with-internalguichan=yes \ +--enable-tcmalloc=no \ +--enable-googleprofiler=no \ +--enable-unittests=yes + +result=$? +if [ "$result" != 0 ]; then + echo configure error + exit 1 +fi + +cd po +#make -j5 update-po 2>../make1.log +make -j5 update-gmo 2>../build/make1.log + +result=$? +if [ "$result" != 0 ]; then + echo update-gmo error + exit 1 +fi + +cd .. +make -j5 2>build/make2.log + +result=$? +if [ "$result" != 0 ]; then + echo make error + exit 1 +fi + +make install + +result=$? +if [ "$result" != 0 ]; then + echo make install error + exit 1 +fi + +cd run +export GLIBCXX_FORCE_NEW=1 +./bin/manaplus diff --git a/build/maketest.sh b/build/buildtest index 61b20f0fe..61b20f0fe 100755 --- a/build/maketest.sh +++ b/build/buildtest diff --git a/configure.ac b/configure.ac index ef92317d6..996ad3f3c 100755 --- a/configure.ac +++ b/configure.ac @@ -209,6 +209,19 @@ esac],[memdebug_enabled=false]) AM_CONDITIONAL(ENABLE_MEM_DEBUG, test x$memdebug_enabled = xtrue) +# Enable unit tests +AC_ARG_ENABLE(unittests, +[ --enable-unittests Turn on unit tests], +[case "${enableval}" in + yes) unittests_enabled=true +LIBS="$LIBS -lgtest" + ;; + no) unittests_enabled=false ;; + *) AC_MSG_ERROR(bad value ${enableval} for --enable-tests) ;; +esac],[unittests_enabled=false]) + +AM_CONDITIONAL(ENABLE_UNITTESTS, test x$unittests_enabled = xtrue) + # Enable tcmalloc AC_ARG_ENABLE(tcmalloc, [ --enable-tcmalloc Turn on tcmalloc], diff --git a/src/Makefile.am b/src/Makefile.am index 204c21bfc..62b762af6 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -21,6 +21,10 @@ else manaplus_SOURCES = endif +if ENABLE_UNITTESTS +manaplus_CXXFLAGS += -DUNITTESTS +endif + if USE_INTERNALGUICHAN manaplus_CXXFLAGS += -DUSE_INTERNALGUICHAN manaplus_SOURCES += guichan/include/guichan/actionevent.hpp \ diff --git a/src/main.cpp b/src/main.cpp index dc87ca9e0..f30e7bc62 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -35,6 +35,10 @@ #include "utils/stringutils.h" #include "utils/xml.h" +#ifdef UNITTESTS +#include <gtest/gtest.h> +#endif + #ifdef __MINGW32__ #include <windows.h> #endif @@ -210,6 +214,8 @@ static void parseOptions(int argc, char *argv[], Client::Options &options) extern "C" char const *_nl_locale_name_default(void); #endif +#ifndef UNITTESTS +// main for normal game usage int main(int argc, char *argv[]) { #if defined(__MINGW32__) @@ -262,3 +268,14 @@ int main(int argc, char *argv[]) return client.testsExec(); } } + +#else + +// main for unit testing +int main(int argc, char **argv) +{ + ::testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} + +#endif |