CMakeParseArguments: add a RunCMake test suite
This commit is contained in:
parent
2913876c58
commit
cbbdfc2b61
|
@ -177,6 +177,7 @@ add_RunCMake_test(build_command)
|
|||
add_RunCMake_test(execute_process)
|
||||
add_RunCMake_test(export)
|
||||
add_RunCMake_test(cmake_minimum_required)
|
||||
add_RunCMake_test(cmake_parse_arguments)
|
||||
add_RunCMake_test(continue)
|
||||
add_RunCMake_test(ctest_build)
|
||||
add_RunCMake_test(ctest_configure)
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
cmake_minimum_required(VERSION 3.4)
|
||||
project(${RunCMake_TEST} NONE)
|
||||
include(${RunCMake_TEST}.cmake)
|
|
@ -0,0 +1,16 @@
|
|||
include(${CMAKE_CURRENT_LIST_DIR}/test_utils.cmake)
|
||||
include(CMakeParseArguments)
|
||||
|
||||
# example from the documentation
|
||||
# OPTIONAL is a keyword and therefore terminates the definition of
|
||||
# the multi-value DEFINITION before even a single value has been added
|
||||
|
||||
set(options OPTIONAL FAST)
|
||||
set(oneValueArgs DESTINATION RENAME)
|
||||
set(multiValueArgs TARGETS CONFIGURATIONS)
|
||||
cmake_parse_arguments(MY_INSTALL "${options}" "${oneValueArgs}"
|
||||
"${multiValueArgs}"
|
||||
TARGETS foo DESTINATION OPTIONAL)
|
||||
|
||||
TEST(MY_INSTALL_DESTINATION UNDEFINED)
|
||||
TEST(MY_INSTALL_OPTIONAL TRUE)
|
|
@ -0,0 +1 @@
|
|||
1
|
|
@ -0,0 +1,17 @@
|
|||
CMake Error at Errors.cmake:3 \(cmake_parse_arguments\):
|
||||
CMAKE_PARSE_ARGUMENTS Function invoked with incorrect arguments for
|
||||
function named: CMAKE_PARSE_ARGUMENTS
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists.txt:3 \(include\)
|
||||
+
|
||||
CMake Error at Errors.cmake:4 \(cmake_parse_arguments\):
|
||||
CMAKE_PARSE_ARGUMENTS Function invoked with incorrect arguments for
|
||||
function named: CMAKE_PARSE_ARGUMENTS
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists.txt:3 \(include\)
|
||||
+
|
||||
CMake Error at Errors.cmake:5 \(cmake_parse_arguments\):
|
||||
CMAKE_PARSE_ARGUMENTS Function invoked with incorrect arguments for
|
||||
function named: CMAKE_PARSE_ARGUMENTS
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists.txt:3 \(include\)
|
|
@ -0,0 +1,6 @@
|
|||
include(CMakeParseArguments)
|
||||
|
||||
cmake_parse_arguments()
|
||||
cmake_parse_arguments(prefix OPT)
|
||||
cmake_parse_arguments(prefix OPT SINGLE)
|
||||
cmake_parse_arguments(prefix OPT SINGLE MULTI) # not an error
|
|
@ -0,0 +1,69 @@
|
|||
include(${CMAKE_CURRENT_LIST_DIR}/test_utils.cmake)
|
||||
include(CMakeParseArguments)
|
||||
|
||||
# unparsed arguments
|
||||
cmake_parse_arguments(pref "" "" "")
|
||||
TEST(pref_UNPARSED_ARGUMENTS UNDEFINED)
|
||||
|
||||
cmake_parse_arguments(pref "" "" "" FOO)
|
||||
TEST(pref_UNPARSED_ARGUMENTS "FOO")
|
||||
cmake_parse_arguments(pref "" "" "" FOO BAR)
|
||||
TEST(pref_UNPARSED_ARGUMENTS "FOO;BAR")
|
||||
cmake_parse_arguments(pref "" "" "")
|
||||
TEST(pref_UNPARSED_ARGUMENTS UNDEFINED)
|
||||
|
||||
|
||||
# options
|
||||
cmake_parse_arguments(pref "OPT1" "" "")
|
||||
TEST(pref_OPT1 FALSE)
|
||||
|
||||
cmake_parse_arguments(pref "OPT1;OPT2" "" "")
|
||||
TEST(pref_OPT1 FALSE)
|
||||
TEST(pref_OPT2 FALSE)
|
||||
|
||||
cmake_parse_arguments(pref "OPT1" "" "" OPT1)
|
||||
TEST(pref_OPT1 TRUE)
|
||||
cmake_parse_arguments(pref "OPT1;OPT2" "" "" OPT1 OPT2)
|
||||
TEST(pref_OPT1 TRUE)
|
||||
TEST(pref_OPT2 TRUE)
|
||||
cmake_parse_arguments(pref "OPT1;OPT2" "" "")
|
||||
TEST(pref_OPT1 FALSE)
|
||||
TEST(pref_OPT2 FALSE)
|
||||
|
||||
|
||||
# single arguments
|
||||
cmake_parse_arguments(pref "" "SINGLE1" "")
|
||||
TEST(pref_SINGLE1 UNDEFINED)
|
||||
|
||||
cmake_parse_arguments(pref "" "SINGLE1;SINGLE2" "")
|
||||
TEST(pref_SINGLE1 UNDEFINED)
|
||||
TEST(pref_SINGLE2 UNDEFINED)
|
||||
|
||||
|
||||
cmake_parse_arguments(pref "" "SINGLE1" "" SINGLE1 foo)
|
||||
TEST(pref_SINGLE1 foo)
|
||||
cmake_parse_arguments(pref "" "SINGLE1;SINGLE2" "" SINGLE1 foo SINGLE2 bar)
|
||||
TEST(pref_SINGLE1 foo)
|
||||
TEST(pref_SINGLE2 bar)
|
||||
cmake_parse_arguments(pref "" "SINGLE1;SINGLE2" "")
|
||||
TEST(pref_SINGLE1 UNDEFINED)
|
||||
TEST(pref_SINGLE2 UNDEFINED)
|
||||
|
||||
|
||||
# multi arguments
|
||||
|
||||
cmake_parse_arguments(pref "" "" "MULTI1")
|
||||
TEST(pref_MULTI1 UNDEFINED)
|
||||
|
||||
cmake_parse_arguments(pref "" "" "MULTI1;MULTI2")
|
||||
TEST(pref_MULTI1 UNDEFINED)
|
||||
TEST(pref_MULTI2 UNDEFINED)
|
||||
|
||||
cmake_parse_arguments(pref "" "" "MULTI1" MULTI1 foo)
|
||||
TEST(pref_MULTI1 foo)
|
||||
cmake_parse_arguments(pref "" "" "MULTI1;MULTI2" MULTI1 foo bar MULTI2 bar foo)
|
||||
TEST(pref_MULTI1 foo bar)
|
||||
TEST(pref_MULTI2 bar foo)
|
||||
cmake_parse_arguments(pref "" "" "MULTI1;MULTI2")
|
||||
TEST(pref_MULTI1 UNDEFINED)
|
||||
TEST(pref_MULTI2 UNDEFINED)
|
|
@ -0,0 +1,25 @@
|
|||
include(${CMAKE_CURRENT_LIST_DIR}/test_utils.cmake)
|
||||
include(CMakeParseArguments)
|
||||
|
||||
# specify two keywords for each category and set the first keyword of each
|
||||
# within ARGN
|
||||
cmake_parse_arguments(pref "OPT1;OPT2" "SINGLE1;SINGLE2" "MULTI1;MULTI2"
|
||||
OPT1 SINGLE1 foo MULTI1 bar foo bar)
|
||||
TEST(pref_OPT1 TRUE)
|
||||
TEST(pref_OPT2 FALSE)
|
||||
TEST(pref_SINGLE1 foo)
|
||||
TEST(pref_SINGLE2 UNDEFINED)
|
||||
TEST(pref_MULTI1 bar foo bar)
|
||||
TEST(pref_MULTI2 UNDEFINED)
|
||||
TEST(pref_UNPARSED_ARGUMENTS UNDEFINED)
|
||||
|
||||
# same as above but reversed ARGN
|
||||
cmake_parse_arguments(pref "OPT1;OPT2" "SINGLE1;SINGLE2" "MULTI1;MULTI2"
|
||||
MULTI1 bar foo bar SINGLE1 foo OPT1)
|
||||
TEST(pref_OPT1 TRUE)
|
||||
TEST(pref_OPT2 FALSE)
|
||||
TEST(pref_SINGLE1 foo)
|
||||
TEST(pref_SINGLE2 UNDEFINED)
|
||||
TEST(pref_MULTI1 bar foo bar)
|
||||
TEST(pref_MULTI2 UNDEFINED)
|
||||
TEST(pref_UNPARSED_ARGUMENTS UNDEFINED)
|
|
@ -0,0 +1,7 @@
|
|||
include(RunCMake)
|
||||
|
||||
run_cmake(Utils)
|
||||
run_cmake(Initialization)
|
||||
run_cmake(Mix)
|
||||
run_cmake(CornerCases)
|
||||
run_cmake(Errors)
|
|
@ -0,0 +1,20 @@
|
|||
include(${CMAKE_CURRENT_LIST_DIR}/test_utils.cmake)
|
||||
|
||||
# test the TEST macro itself
|
||||
|
||||
TEST(asdf UNDEFINED)
|
||||
|
||||
SET (asdf FALSE)
|
||||
TEST(asdf FALSE)
|
||||
|
||||
SET (asdf TRUE)
|
||||
TEST(asdf TRUE)
|
||||
|
||||
SET (asdf TRUE)
|
||||
TEST(asdf TRUE)
|
||||
|
||||
SET (asdf "some value")
|
||||
TEST(asdf "some value")
|
||||
|
||||
SET (asdf some list)
|
||||
TEST(asdf "some;list")
|
|
@ -0,0 +1,20 @@
|
|||
macro(TEST variable)
|
||||
SET(expected "${ARGN}")
|
||||
if ( "${expected}" STREQUAL "UNDEFINED" )
|
||||
if (DEFINED ${variable})
|
||||
message(FATAL_ERROR "'${variable}' shall be undefined but has value '${${variable}}'")
|
||||
endif()
|
||||
elseif( "${expected}" STREQUAL "FALSE" )
|
||||
if (NOT ${variable} STREQUAL "FALSE")
|
||||
message(FATAL_ERROR "'${variable}' shall be FALSE")
|
||||
endif()
|
||||
elseif( "${expected}" STREQUAL "TRUE" )
|
||||
if (NOT ${variable} STREQUAL "TRUE")
|
||||
message(FATAL_ERROR "'${variable}' shall be TRUE")
|
||||
endif()
|
||||
else()
|
||||
if (NOT ${variable} STREQUAL "${expected}")
|
||||
message(FATAL_ERROR "'${variable}' shall be '${expected}'")
|
||||
endif()
|
||||
endif()
|
||||
endmacro()
|
Loading…
Reference in New Issue