diff options
-rw-r--r-- | Tests/RunCMake/RunCMake.cmake | 16 | ||||
-rw-r--r-- | Tests/RunCMake/if/RunCMakeTest.cmake | 15 |
2 files changed, 19 insertions, 12 deletions
diff --git a/Tests/RunCMake/RunCMake.cmake b/Tests/RunCMake/RunCMake.cmake index fcf904e..179c80e 100644 --- a/Tests/RunCMake/RunCMake.cmake +++ b/Tests/RunCMake/RunCMake.cmake @@ -323,5 +323,21 @@ function(ensure_files_match expected_file actual_file) endif() endfunction() +# Get the user id on unix if possible. +function(get_unix_uid var) + set("${var}" "" PARENT_SCOPE) + if(UNIX) + set(ID "id") + if(CMAKE_SYSTEM_NAME STREQUAL "SunOS" AND EXISTS "/usr/xpg4/bin/id") + set (ID "/usr/xpg4/bin/id") + endif() + execute_process(COMMAND ${ID} -u $ENV{USER} OUTPUT_VARIABLE uid ERROR_QUIET + RESULT_VARIABLE status OUTPUT_STRIP_TRAILING_WHITESPACE) + if(status EQUAL 0) + set("${var}" "${uid}" PARENT_SCOPE) + endif() + endif() +endfunction() + # Protect RunCMake tests from calling environment. unset(ENV{MAKEFLAGS}) diff --git a/Tests/RunCMake/if/RunCMakeTest.cmake b/Tests/RunCMake/if/RunCMakeTest.cmake index 0bfff90..43dfd3c 100644 --- a/Tests/RunCMake/if/RunCMakeTest.cmake +++ b/Tests/RunCMake/if/RunCMakeTest.cmake @@ -4,18 +4,9 @@ run_cmake(InvalidArgument1) run_cmake(exists) if(NOT MSYS) # permissions and symbolic links are broken on MSYS - unset(uid) - unset(status) - if(UNIX) - set(ID "id") - if (CMAKE_SYSTEM_NAME STREQUAL "SunOS" AND EXISTS "/usr/xpg4/bin/id") - set (ID "/usr/xpg4/bin/id") - endif() - # if real user is root, tests are irrelevant - execute_process(COMMAND ${ID} -u $ENV{USER} OUTPUT_VARIABLE uid ERROR_QUIET - RESULT_VARIABLE status OUTPUT_STRIP_TRAILING_WHITESPACE) - endif() - if(NOT status AND NOT uid STREQUAL "0") + # if real user is root, tests are irrelevant + get_unix_uid(uid) + if(NOT uid STREQUAL "0") run_cmake(FilePermissions) endif() endif() |