diff --git a/.gitmodules b/.gitmodules index db0905b3d..1f0b80768 100644 --- a/.gitmodules +++ b/.gitmodules @@ -10,3 +10,6 @@ [submodule "soundtouch"] path = externals/soundtouch url = https://github.com/citra-emu/ext-soundtouch.git +[submodule "catch"] + path = externals/catch + url = https://github.com/philsquared/Catch.git diff --git a/.travis-build.sh b/.travis-build.sh index e06a4299b..511df04ac 100755 --- a/.travis-build.sh +++ b/.travis-build.sh @@ -18,9 +18,16 @@ if [ "$TRAVIS_OS_NAME" = "linux" -o -z "$TRAVIS_OS_NAME" ]; then mkdir build && cd build cmake -DCITRA_FORCE_QT4=ON .. make -j4 + + ctest -VV -C Release elif [ "$TRAVIS_OS_NAME" = "osx" ]; then + set -o pipefail + export Qt5_DIR=$(brew --prefix)/opt/qt5 + mkdir build && cd build cmake .. -GXcode - xcodebuild -configuration Release | xcpretty -c && exit ${PIPESTATUS[0]} + xcodebuild -configuration Release | xcpretty -c + + ctest -VV -C Release fi diff --git a/CMakeLists.txt b/CMakeLists.txt index 8f2898973..f7b0af115 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -255,6 +255,8 @@ endif() add_subdirectory(externals/soundtouch) +enable_testing() + add_subdirectory(src) # Install freedesktop.org metadata files, following those specifications: diff --git a/appveyor.yml b/appveyor.yml index 1edd7041f..b2b0ae28b 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -22,7 +22,14 @@ before_build: - cmake -G "Visual Studio 14 2015 Win64" -DCITRA_USE_BUNDLED_QT=1 -DCITRA_USE_BUNDLED_SDL2=1 .. - cd .. -after_build: +build: + project: build/citra.sln + parallel: true + +test_script: + - cd build && ctest -VV -C Release + +on_success: # copying the needed QT Dlls is now done post build. See the CMakeLists.txt file in the citra-qt folder - ps: > if (!"$env:APPVEYOR_PULL_REQUEST_TITLE" -and ("$env:APPVEYOR_REPO_BRANCH" -eq "master")) diff --git a/externals/catch b/externals/catch new file mode 160000 index 000000000..c984fc3ec --- /dev/null +++ b/externals/catch @@ -0,0 +1 @@ +Subproject commit c984fc3ecde60b59efa2203e82261acac8ac8502 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index de4fe716a..1e1245160 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -5,6 +5,7 @@ add_subdirectory(common) add_subdirectory(core) add_subdirectory(video_core) add_subdirectory(audio_core) +add_subdirectory(tests) if (ENABLE_SDL2) add_subdirectory(citra) endif() diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt new file mode 100644 index 000000000..457c55571 --- /dev/null +++ b/src/tests/CMakeLists.txt @@ -0,0 +1,16 @@ +set(SRCS + tests.cpp + ) + +set(HEADERS + ) + +create_directory_groups(${SRCS} ${HEADERS}) + +include_directories(../../externals/catch/single_include/) + +add_executable(tests ${SRCS} ${HEADERS}) +target_link_libraries(tests core video_core audio_core common) +target_link_libraries(tests ${PLATFORM_LIBRARIES}) + +add_test(NAME tests COMMAND $) diff --git a/src/tests/tests.cpp b/src/tests/tests.cpp new file mode 100644 index 000000000..73978676f --- /dev/null +++ b/src/tests/tests.cpp @@ -0,0 +1,9 @@ +// Copyright 2016 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#define CATCH_CONFIG_MAIN +#include + +// Catch provides the main function since we've given it the +// CATCH_CONFIG_MAIN preprocessor directive.