diff --git a/CMakeLists.txt b/CMakeLists.txt index 7bc9e4b9..74b2f98e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -232,3 +232,28 @@ if(WITH_ORACLE) add_subdirectory(oracle) SET(CPACK_INSTALL_CMAKE_PROJECTS "release/oracle.app;oracle;ALL;/" ${CPACK_INSTALL_CMAKE_PROJECTS}) endif() + +if(test) + find_package(Gtest REQUIRED) + if(GTEST_FOUND) + include_directories(${GTEST_INCLUDE_DIRS}) + else() + message(STATUS "Downloading googletest") + configure_file(gtest-CMakeLists.txt gtest-download/CMakeLists.txt) + execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/gtest-download ) + execute_process(COMMAND ${CMAKE_COMMAND} --build . + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/gtest-download ) + + # Add gtest directly to our build + add_subdirectory(${CMAKE_BINARY_DIR}/gtest-src + ${CMAKE_BINARY_DIR}/gtest-build + EXCLUDE_FROM_ALL ) + + # Add the gtest include directory, since gtest + # doesn't add that dependency to its gtest target + target_include_directories(gtest INTERFACE + "${CMAKE_BINARY_DIR}/gtest-src/include" ) + endif() + enable_testing() +endif() diff --git a/cockatrice/CMakeLists.txt b/cockatrice/CMakeLists.txt index 2a600e1b..a2870bae 100644 --- a/cockatrice/CMakeLists.txt +++ b/cockatrice/CMakeLists.txt @@ -341,3 +341,11 @@ option(PORTABLE "portable build" OFF) IF(PORTABLE) add_definitions(-DPORTABLE_BUILD) endif() + +if(test) + enable_testing() + message(STATUS "Adding tests") + add_executable(cockatrice_test test/dummy_test.cpp) + target_link_libraries(cockatrice_test gtest_main) + add_test(NAME cockatrice_test COMMAND cockatrice_test) +endif() \ No newline at end of file diff --git a/cockatrice/test/dummy_test.cpp b/cockatrice/test/dummy_test.cpp new file mode 100644 index 00000000..a5416d09 --- /dev/null +++ b/cockatrice/test/dummy_test.cpp @@ -0,0 +1,16 @@ +#include "gtest/gtest.h" + +namespace { + class FooTest : public ::testing::Test { + + }; + + TEST(DummyTest, Works) { + ASSERT_EQ(1, 1) << "One is not equal to one"; + } +} + +int main(int argc, char **argv) { + ::testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} \ No newline at end of file diff --git a/gtest-CMakeLists.txt b/gtest-CMakeLists.txt new file mode 100644 index 00000000..f5e07d30 --- /dev/null +++ b/gtest-CMakeLists.txt @@ -0,0 +1,15 @@ +cmake_minimum_required(VERSION 3.2) + +project(gtest-download LANGUAGES NONE) + +include(ExternalProject) +ExternalProject_Add(googletest + URL https://googletest.googlecode.com/files/gtest-1.7.0.zip + URL_HASH SHA1=f85f6d2481e2c6c4a18539e391aa4ea8ab0394af + SOURCE_DIR "${CMAKE_BINARY_DIR}/gtest-src" + BINARY_DIR "${CMAKE_BINARY_DIR}/gtest-build" + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" + TEST_COMMAND "" +) \ No newline at end of file diff --git a/travis-compile.sh b/travis-compile.sh index 23345d84..86836437 100755 --- a/travis-compile.sh +++ b/travis-compile.sh @@ -11,11 +11,12 @@ fi if [[ $TRAVIS_OS_NAME == "linux" && $QT4 == 0 ]]; then prefix="-DCMAKE_PREFIX_PATH=/opt/qt52/lib/cmake/" fi -cmake .. -DWITH_SERVER=1 -DCMAKE_BUILD_TYPE=$BUILDTYPE -DWITH_QT4=$QT4 $prefix if [[ $BUILDTYPE == "Debug" ]]; then + cmake .. -DWITH_SERVER=1 -DCMAKE_BUILD_TYPE=$BUILDTYPE -Dtest=ON -DWITH_QT4=$QT4 $prefix make -j2 + make test else + cmake .. -DWITH_SERVER=1 -DCMAKE_BUILD_TYPE=$BUILDTYPE -DWITH_QT4=$QT4 $prefix make package -j2 -fi - +fi \ No newline at end of file diff --git a/travis-dependencies.sh b/travis-dependencies.sh index 37e529ec..15048ef8 100755 --- a/travis-dependencies.sh +++ b/travis-dependencies.sh @@ -7,15 +7,19 @@ if [[ $TRAVIS_OS_NAME == "osx" ]] ; then else brew install qt5 protobuf libgcrypt > /dev/null fi + brew unlink cmake + brew upgrade cmake else if (( QT4 )); then sudo apt-get update -qq - sudo apt-get install -y qtmobility-dev libprotobuf-dev protobuf-compiler libqt4-dev + sudo apt-get install -y qtmobility-dev libqt4-dev else + sudo add-apt-repository -y ppa:george-edison55/precise-backports sudo add-apt-repository -y ppa:beineri/opt-qt521 - sudo add-apt-repository -y ppa:kalakris/cmake sudo apt-get update -qq - sudo apt-get install -y libprotobuf-dev protobuf-compiler cmake libsqlite3-dev\ + sudo apt-get install -y libsqlite3-dev\ qt52base qt52webkit qt52tools qt52svg qt52multimedia fi + sudo apt-get install -y cmake libgtest-dev libprotobuf-dev protobuf-compiler + cd /usr/src/gtest && sudo cmake . && sudo cmake --build . && sudo mv libg* /usr/local/lib/ ; cd - fi