Make test suite optional by using CTest

This commit is contained in:
David Seifert 2017-04-28 22:46:52 +02:00
parent 5a5699bdbd
commit 8f824265ea
3 changed files with 83 additions and 76 deletions

View File

@ -15,6 +15,9 @@ option(ENABLE_HLSL "Enables HLSL input support" ON)
project(glslang) project(glslang)
# make testing optional
include(CTest)
if(ENABLE_AMD_EXTENSIONS) if(ENABLE_AMD_EXTENSIONS)
add_definitions(-DAMD_EXTENSIONS) add_definitions(-DAMD_EXTENSIONS)
endif(ENABLE_AMD_EXTENSIONS) endif(ENABLE_AMD_EXTENSIONS)

View File

@ -1,33 +1,35 @@
# Suppress all warnings from external projects. # Suppress all warnings from external projects.
set_property(DIRECTORY APPEND PROPERTY COMPILE_OPTIONS -w) set_property(DIRECTORY APPEND PROPERTY COMPILE_OPTIONS -w)
if (TARGET gmock) if(BUILD_TESTING)
message(STATUS "Google Mock already configured - use it") if(TARGET gmock)
elseif(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/googletest) message(STATUS "Google Mock already configured - use it")
# We need to make sure Google Test does not mess up with the elseif(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/googletest)
# global CRT settings on Windows. # We need to make sure Google Test does not mess up with the
if(WIN32) # global CRT settings on Windows.
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) if(WIN32)
endif(WIN32) set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
add_subdirectory(googletest) endif(WIN32)
set(GTEST_TARGETS add_subdirectory(googletest)
gtest set(GTEST_TARGETS
gtest_main gtest
gmock gtest_main
gmock_main) gmock
foreach(target ${GTEST_TARGETS}) gmock_main)
set_property(TARGET ${target} PROPERTY FOLDER gtest) foreach(target ${GTEST_TARGETS})
endforeach() set_property(TARGET ${target} PROPERTY FOLDER gtest)
mark_as_advanced(gmock_build_tests endforeach()
BUILD_GMOCK mark_as_advanced(gmock_build_tests
BUILD_GTEST BUILD_GMOCK
BUILD_SHARED_LIBS BUILD_GTEST
gtest_build_samples BUILD_SHARED_LIBS
gtest_build_tests gtest_build_samples
gtest_disable_pthreads gtest_build_tests
gtest_force_shared_crt gtest_disable_pthreads
gtest_hide_internal_symbols) gtest_force_shared_crt
else() gtest_hide_internal_symbols)
message(STATUS else()
"Google Mock was not found - tests based on that will not build") message(STATUS
"Google Mock was not found - tests based on that will not build")
endif()
endif() endif()

View File

@ -1,55 +1,57 @@
if (TARGET gmock) if(BUILD_TESTING)
message(STATUS "Google Mock found - building tests") if(TARGET gmock)
message(STATUS "Google Mock found - building tests")
set(TEST_SOURCES set(TEST_SOURCES
# Framework related source files # Framework related source files
${CMAKE_CURRENT_SOURCE_DIR}/Initializer.h ${CMAKE_CURRENT_SOURCE_DIR}/Initializer.h
${CMAKE_CURRENT_SOURCE_DIR}/main.cpp ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp
${CMAKE_CURRENT_SOURCE_DIR}/Settings.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Settings.cpp
${CMAKE_CURRENT_SOURCE_DIR}/Settings.h ${CMAKE_CURRENT_SOURCE_DIR}/Settings.h
${CMAKE_CURRENT_SOURCE_DIR}/TestFixture.cpp ${CMAKE_CURRENT_SOURCE_DIR}/TestFixture.cpp
${CMAKE_CURRENT_SOURCE_DIR}/TestFixture.h ${CMAKE_CURRENT_SOURCE_DIR}/TestFixture.h
# Test related source files # Test related source files
${CMAKE_CURRENT_SOURCE_DIR}/AST.FromFile.cpp ${CMAKE_CURRENT_SOURCE_DIR}/AST.FromFile.cpp
${CMAKE_CURRENT_SOURCE_DIR}/BuiltInResource.FromFile.cpp ${CMAKE_CURRENT_SOURCE_DIR}/BuiltInResource.FromFile.cpp
${CMAKE_CURRENT_SOURCE_DIR}/Config.FromFile.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Config.FromFile.cpp
${CMAKE_CURRENT_SOURCE_DIR}/HexFloat.cpp ${CMAKE_CURRENT_SOURCE_DIR}/HexFloat.cpp
${CMAKE_CURRENT_SOURCE_DIR}/Hlsl.FromFile.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Hlsl.FromFile.cpp
${CMAKE_CURRENT_SOURCE_DIR}/Link.FromFile.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Link.FromFile.cpp
${CMAKE_CURRENT_SOURCE_DIR}/Link.FromFile.Vk.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Link.FromFile.Vk.cpp
${CMAKE_CURRENT_SOURCE_DIR}/Pp.FromFile.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Pp.FromFile.cpp
${CMAKE_CURRENT_SOURCE_DIR}/Spv.FromFile.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Spv.FromFile.cpp
# -- Remapper tests # -- Remapper tests
${CMAKE_CURRENT_SOURCE_DIR}/Remap.FromFile.cpp) ${CMAKE_CURRENT_SOURCE_DIR}/Remap.FromFile.cpp)
add_executable(glslangtests ${TEST_SOURCES}) add_executable(glslangtests ${TEST_SOURCES})
set_property(TARGET glslangtests PROPERTY FOLDER tests) set_property(TARGET glslangtests PROPERTY FOLDER tests)
glslang_set_link_args(glslangtests) glslang_set_link_args(glslangtests)
install(TARGETS glslangtests install(TARGETS glslangtests
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
set(GLSLANG_TEST_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../Test") set(GLSLANG_TEST_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../Test")
# Supply a default test root directory, so that manual testing # Supply a default test root directory, so that manual testing
# doesn't have to specify the --test-root option in the normal # doesn't have to specify the --test-root option in the normal
# case that you want to use the tests from the same source tree. # case that you want to use the tests from the same source tree.
target_compile_definitions(glslangtests target_compile_definitions(glslangtests
PRIVATE GLSLANG_TEST_DIRECTORY="${GLSLANG_TEST_DIRECTORY}") PRIVATE GLSLANG_TEST_DIRECTORY="${GLSLANG_TEST_DIRECTORY}")
target_include_directories(glslangtests PRIVATE target_include_directories(glslangtests PRIVATE
${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}
${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}
${gmock_SOURCE_DIR}/include ${gmock_SOURCE_DIR}/include
${gtest_SOURCE_DIR}/include) ${gtest_SOURCE_DIR}/include)
set(LIBRARIES set(LIBRARIES
SPVRemapper glslang OSDependent OGLCompiler glslang SPVRemapper glslang OSDependent OGLCompiler glslang
SPIRV glslang-default-resource-limits) SPIRV glslang-default-resource-limits)
if(ENABLE_HLSL) if(ENABLE_HLSL)
set(LIBRARIES ${LIBRARIES} HLSL) set(LIBRARIES ${LIBRARIES} HLSL)
endif(ENABLE_HLSL) endif(ENABLE_HLSL)
target_link_libraries(glslangtests PRIVATE ${LIBRARIES} gmock) target_link_libraries(glslangtests PRIVATE ${LIBRARIES} gmock)
add_test(NAME glslang-gtests add_test(NAME glslang-gtests
COMMAND glslangtests --test-root "${GLSLANG_TEST_DIRECTORY}") COMMAND glslangtests --test-root "${GLSLANG_TEST_DIRECTORY}")
endif()
endif() endif()