diff --git a/CMakeLists.txt b/CMakeLists.txt index ca8571449..5c695deac 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2980,6 +2980,7 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DSDL_BUILD_MICRO_VERSION=${SDL_MICRO_VERSIO ##### Tests ##### if(SDL_TEST) + include(CTest) include_directories(BEFORE "${SDL2_BINARY_DIR}/include") include_directories(AFTER "${SDL2_SOURCE_DIR}/include") file(GLOB TEST_SOURCES ${SDL2_SOURCE_DIR}/src/test/*.c) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index cd00af610..03e009635 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,5 +1,6 @@ cmake_minimum_required(VERSION 3.0.0) project(SDL2 C) +include(CTest) # Global settings for all of the test targets # FIXME: is this wrong? @@ -133,6 +134,34 @@ add_executable(controllermap controllermap.c) add_executable(testvulkan testvulkan.c) add_executable(testoffscreen testoffscreen.c) +set(NONINTERACTIVE + testatomic + testerror + testfilesystem + testkeys + testlocale + testplatform + testpower + testqsort + testthread + testtimer + testver +) + +if(LINUX) + list(APPEND NONINTERACTIVE testevdev) +endif() + +set(NEEDS_AUDIO + testaudioinfo + testsurround +) + +set(NEEDS_DISPLAY + testbounds + testdisplayinfo +) + if(OPENGL_FOUND) add_dependencies(testshader OpenGL::GL) add_dependencies(testgl2 OpenGL::GL) @@ -306,3 +335,20 @@ if(APPLE) endforeach() endif() endif() + +set(TESTS_ENVIRONMENT + SDL_AUDIODRIVER=dummy + SDL_VIDEODRIVER=dummy +) + +foreach(TESTCASE ${NONINTERACTIVE} ${NEEDS_AUDIO} ${NEEDS_DISPLAY}) + add_test( + NAME ${TESTCASE} + COMMAND ${TESTCASE} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + ) + set_tests_properties( + ${TESTCASE} + PROPERTIES ENVIRONMENT "${TESTS_ENVIRONMENT}" + ) +endforeach() diff --git a/test/Makefile.in b/test/Makefile.in index f724618c6..120e585c2 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -351,6 +351,49 @@ distclean: clean rm -f config.status config.cache config.log rm -rf $(srcdir)/autom4te* +noninteractive = \ + testatomic$(EXE) \ + testerror$(EXE) \ + testevdev$(EXE) \ + testfilesystem$(EXE) \ + testkeys$(EXE) \ + testlocale$(EXE) \ + testplatform$(EXE) \ + testpower$(EXE) \ + testqsort$(EXE) \ + testthread$(EXE) \ + testtimer$(EXE) \ + testver$(EXE) \ + $(NULL) + +needs_audio = \ + testaudioinfo$(EXE) \ + testsurround$(EXE) \ + $(NULL) + +needs_display = \ + testbounds$(EXE) \ + testdisplayinfo$(EXE) \ + $(NULL) + +TESTS = $(noninteractive) $(needs_audio) $(needs_display) + +check: + @set -e; \ + status=0; \ + export SDL_AUDIODRIVER=dummy; \ + export SDL_VIDEODRIVER=dummy; \ + for exe in $(TESTS); do \ + echo "$$exe..."; \ + if ./"$$exe"; then \ + echo "$$exe: OK"; \ + else \ + echo "$$exe: FAILED: $$?"; \ + status=1; \ + fi; \ + done; \ + exit "$$status" + DATA = \ axis.bmp \ button.bmp \