CMake/Tests/FunctionTest/CMakeLists.txt
Kitware Robot 9db3116226 Remove CMake-language block-end command arguments
Ancient versions of CMake required else(), endif(), and similar block
termination commands to have arguments matching the command starting the
block.  This is no longer the preferred style.

Run the following shell code:

for c in else endif endforeach endfunction endmacro endwhile; do
    echo 's/\b'"$c"'\(\s*\)(.\+)/'"$c"'\1()/'
done >convert.sed &&
git ls-files -z -- bootstrap '*.cmake' '*.cmake.in' '*CMakeLists.txt' |
egrep -z -v '^(Utilities/cm|Source/kwsys/)' |
egrep -z -v 'Tests/CMakeTests/While-Endwhile-' |
xargs -0 sed -i -f convert.sed &&
rm convert.sed
2012-08-13 14:19:16 -04:00

177 lines
4.4 KiB
CMake

# a simple C only test case
cmake_minimum_required (VERSION 2.6)
project (FunctionTest)
function(FAILED testname)
message(SEND_ERROR "${testname} failed ${ARGN}")
endfunction()
function(PASS testname)
message("${testname} passed ${ARGN}")
endfunction()
# test scope
set(COUNT 3)
function(scope_test)
set(COUNT 4)
endfunction()
scope_test()
if(COUNT EQUAL "3")
PASS("scope")
else()
FAILED("COUNT Got: ${COUNT}")
endif()
# test ARGC
function(weird_name)
if("${ARGC}" EQUAL "3")
PASS("ARGC")
else()
FAILED("ARGC" "Got: ${ARGC}")
endif()
endfunction()
WeIrD_nAmE(a1 a2 a3)
# test ARGN
function(test_argn_function argument)
if("${ARGN}" EQUAL "3")
PASS("ARGN")
else()
FAILED("ARGN" "Got: ${ARGN}")
endif()
endfunction()
Test_Argn_Function(ignored 3)
# test argument naming and raise scope
function(track_find_variable cache_variable is_changed)
set("${is_changed}" changed PARENT_SCOPE)
endfunction()
track_find_variable(testvar is_changed)
if ("${is_changed}" STREQUAL changed)
pass("same argument name test")
else ()
pass("same argument name test")
endif ()
include("Util.cmake")
tester()
if (tester_res STREQUAL "${CMAKE_CURRENT_LIST_FILE}")
pass("CMAKE_CURRENT_LIST_FILE test")
else ()
pass("CMAKE_CURRENT_LIST_FILE test")
endif ()
# test recursion and return via set(... PARENT_SCOPE)
function (factorial argument result)
if (argument LESS 2)
set (lresult 1)
else ()
math (EXPR temp "${argument} - 1")
factorial (${temp} tresult)
math (EXPR lresult "${argument}*${tresult}")
endif ()
set ("${result}" "${lresult}" PARENT_SCOPE)
endfunction ()
factorial (5 fresult)
if (fresult EQUAL 120)
pass("factorial")
else ()
failed ("factorial, computed ${fresult} instead of 120")
endif ()
# case test
function(strange_function m)
set("${m}" strange_function PARENT_SCOPE)
endfunction()
STRANGE_FUNCTION(var)
set(second_var "second_var")
if("${var}" STREQUAL "strange_function" AND "${second_var}" STREQUAL "second_var")
PASS("Case Test" "(${var} ${second_var})")
else()
FAILED("Case test" "(${var} ${second_var})")
endif()
# test backing up command
function(ADD_EXECUTABLE exec)
_ADD_EXECUTABLE(mini${exec} ${ARGN})
endfunction()
# var undef case
function(undef_var m)
set("${m}" PARENT_SCOPE)
endfunction()
set(FUNCTION_UNDEFINED 1)
undef_var(FUNCTION_UNDEFINED)
if(DEFINED FUNCTION_UNDEFINED)
FAILED("Function Undefine Test" "(${FUNCTION_UNDEFINED})")
else()
PASS("Function Undefine Test" "(${FUNCTION_UNDEFINED})")
endif()
# Subdirectory scope raise.
set(SUBDIR_UNDEFINED 1)
add_subdirectory(SubDirScope)
if(DEFINED SUBDIR_UNDEFINED)
FAILED("Subdir Undefine Test" "(${SUBDIR_UNDEFINED})")
else()
PASS("Subdir Undefine Test" "(${SUBDIR_UNDEFINED})")
endif()
if(DEFINED SUBDIR_DEFINED)
PASS("Subdir Define Test" "(${SUBDIR_DEFINED})")
else()
FAILED("Subdir Define Test" "(${SUBDIR_DEFINED})")
endif()
# Test function-scoped directory.
function(ADD_SUBDIR2 dir)
add_subdirectory("${dir}" "${dir}2")
# The parent scope sets in the subdir should be visible here.
if(DEFINED SUBDIR_UNDEFINED)
FAILED("Subdir Function Undefine Test 1" "(${SUBDIR_UNDEFINED})")
else()
PASS("Subdir Function Undefine Test 1" "(${SUBDIR_UNDEFINED})")
endif()
if(DEFINED SUBDIR_DEFINED)
PASS("Subdir Function Define Test 1" "(${SUBDIR_DEFINED})")
else()
FAILED("Subdir Function Define Test 1" "(${SUBDIR_DEFINED})")
endif()
endfunction()
# Reset test variables.
set(SUBDIR_UNDEFINED 1)
set(SUBDIR_DEFINED)
# Run test function.
ADD_SUBDIR2(SubDirScope)
# The parent scope sets in the subdir should not be visible here.
if(DEFINED SUBDIR_UNDEFINED)
PASS("Subdir Function Undefine Test 2" "(${SUBDIR_UNDEFINED})")
else()
FAILED("Subdir Function Undefine Test 2" "(${SUBDIR_UNDEFINED})")
endif()
if(DEFINED SUBDIR_DEFINED)
FAILED("Subdir Function Define Test 2" "(${SUBDIR_DEFINED})")
else()
PASS("Subdir Function Define Test 2" "(${SUBDIR_DEFINED})")
endif()
add_executable(FunctionTest functionTest.c)
# Use the PROJECT_LABEL property: in IDEs, the project label should appear
# in the UI rather than the target name. If this were a good test of the
# property rather than just a smoke test, it would verify that the label
# actually appears in the UI of the IDE... Or at least that the text appears
# somewhere in the generated project files.
set_property(TARGET miniFunctionTest
PROPERTY PROJECT_LABEL "Test de Fonctionnement")