Tests: Select RunCMake.Ninja test cases based on ninja version

Some test cases need features not available in Ninja < 1.6, so check the
version before running them.
This commit is contained in:
Brad King 2016-05-18 09:24:54 -04:00
parent 8a862a4d4b
commit eb07669245
1 changed files with 20 additions and 0 deletions

View File

@ -1,5 +1,20 @@
include(RunCMake) include(RunCMake)
# Detect ninja version so we know what tests can be supported.
execute_process(
COMMAND "${RunCMake_MAKE_PROGRAM}" --version
OUTPUT_VARIABLE ninja_out
ERROR_VARIABLE ninja_out
RESULT_VARIABLE ninja_res
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(ninja_res EQUAL 0 AND "x${ninja_out}" MATCHES "^x[0-9]+\\.[0-9]+")
set(ninja_version "${ninja_out}")
message(STATUS "ninja version: ${ninja_version}")
else()
message(FATAL_ERROR "'ninja --version' reported:\n${ninja_out}")
endif()
function(run_CMP0058 case) function(run_CMP0058 case)
# Use a single build tree for a few tests without cleaning. # Use a single build tree for a few tests without cleaning.
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/CMP0058-${case}-build) set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/CMP0058-${case}-build)
@ -169,6 +184,11 @@ build build.ninja: RERUN ${escaped_build_ninja_dep} || ${escaped_ninja_output_pa
endfunction(run_sub_cmake) endfunction(run_sub_cmake)
if("${ninja_version}" VERSION_LESS 1.6)
message(WARNING "Ninja is too old; skipping rest of test.")
return()
endif()
foreach(ninja_output_path_prefix "sub space" "sub") foreach(ninja_output_path_prefix "sub space" "sub")
run_sub_cmake(Executable "${ninja_output_path_prefix}") run_sub_cmake(Executable "${ninja_output_path_prefix}")
run_sub_cmake(StaticLib "${ninja_output_path_prefix}") run_sub_cmake(StaticLib "${ninja_output_path_prefix}")