From a03f9b6fb6cdaf480737faf37b9c244f46cd1a85 Mon Sep 17 00:00:00 2001 From: MerryMage Date: Sun, 20 Mar 2016 14:58:24 +0000 Subject: [PATCH 1/2] tests: Infrastructure for unit tests --- .gitmodules | 3 +++ appveyor.yml | 4 ++++ externals/catch | 1 + src/CMakeLists.txt | 1 + src/tests/CMakeLists.txt | 14 ++++++++++++++ src/tests/tests.cpp | 9 +++++++++ 6 files changed, 32 insertions(+) create mode 160000 externals/catch create mode 100644 src/tests/CMakeLists.txt create mode 100644 src/tests/tests.cpp 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/appveyor.yml b/appveyor.yml index 1edd7041f..e825ff85d 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -22,6 +22,10 @@ before_build: - cmake -G "Visual Studio 14 2015 Win64" -DCITRA_USE_BUNDLED_QT=1 -DCITRA_USE_BUNDLED_SDL2=1 .. - cd .. +build: + project: build/citra.sln + parallel: true + after_build: # copying the needed QT Dlls is now done post build. See the CMakeLists.txt file in the citra-qt folder - ps: > 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..dc476616c --- /dev/null +++ b/src/tests/CMakeLists.txt @@ -0,0 +1,14 @@ +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}) 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. From 87de1ca96810eace7c3609d5b6ab7bfc93976c44 Mon Sep 17 00:00:00 2001 From: MerryMage Date: Thu, 19 May 2016 18:54:50 +0100 Subject: [PATCH 2/2] Tests: Run tests on CI --- .travis-build.sh | 9 ++++++++- CMakeLists.txt | 2 ++ appveyor.yml | 5 ++++- src/tests/CMakeLists.txt | 2 ++ 4 files changed, 16 insertions(+), 2 deletions(-) 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 e825ff85d..b2b0ae28b 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -26,7 +26,10 @@ build: project: build/citra.sln parallel: true -after_build: +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/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt index dc476616c..457c55571 100644 --- a/src/tests/CMakeLists.txt +++ b/src/tests/CMakeLists.txt @@ -12,3 +12,5 @@ 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 $)