mirror of https://github.com/encounter/SDL.git
test: Run selected noninteractive tests at build-time
In Autotools, these are run by `make -C ${builddir}/test check`. In CMake, they're run by `make -C ${builddir} test` or `ninja -C ${builddir} test` or `ctest --test-dir ${builddir}`. Signed-off-by: Simon McVittie <smcv@collabora.com>
This commit is contained in:
parent
b299f74d05
commit
7d2808e30b
|
@ -2980,6 +2980,7 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DSDL_BUILD_MICRO_VERSION=${SDL_MICRO_VERSIO
|
||||||
##### Tests #####
|
##### Tests #####
|
||||||
|
|
||||||
if(SDL_TEST)
|
if(SDL_TEST)
|
||||||
|
include(CTest)
|
||||||
include_directories(BEFORE "${SDL2_BINARY_DIR}/include")
|
include_directories(BEFORE "${SDL2_BINARY_DIR}/include")
|
||||||
include_directories(AFTER "${SDL2_SOURCE_DIR}/include")
|
include_directories(AFTER "${SDL2_SOURCE_DIR}/include")
|
||||||
file(GLOB TEST_SOURCES ${SDL2_SOURCE_DIR}/src/test/*.c)
|
file(GLOB TEST_SOURCES ${SDL2_SOURCE_DIR}/src/test/*.c)
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
cmake_minimum_required(VERSION 3.0.0)
|
cmake_minimum_required(VERSION 3.0.0)
|
||||||
project(SDL2 C)
|
project(SDL2 C)
|
||||||
|
include(CTest)
|
||||||
|
|
||||||
# Global settings for all of the test targets
|
# Global settings for all of the test targets
|
||||||
# FIXME: is this wrong?
|
# FIXME: is this wrong?
|
||||||
|
@ -133,6 +134,34 @@ add_executable(controllermap controllermap.c)
|
||||||
add_executable(testvulkan testvulkan.c)
|
add_executable(testvulkan testvulkan.c)
|
||||||
add_executable(testoffscreen testoffscreen.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)
|
if(OPENGL_FOUND)
|
||||||
add_dependencies(testshader OpenGL::GL)
|
add_dependencies(testshader OpenGL::GL)
|
||||||
add_dependencies(testgl2 OpenGL::GL)
|
add_dependencies(testgl2 OpenGL::GL)
|
||||||
|
@ -306,3 +335,20 @@ if(APPLE)
|
||||||
endforeach()
|
endforeach()
|
||||||
endif()
|
endif()
|
||||||
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()
|
||||||
|
|
|
@ -351,6 +351,49 @@ distclean: clean
|
||||||
rm -f config.status config.cache config.log
|
rm -f config.status config.cache config.log
|
||||||
rm -rf $(srcdir)/autom4te*
|
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 = \
|
DATA = \
|
||||||
axis.bmp \
|
axis.bmp \
|
||||||
button.bmp \
|
button.bmp \
|
||||||
|
|
Loading…
Reference in New Issue