From d91c02e40ff515fa2f5765bc2bea55b3c2da713c Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 30 Nov 2023 17:04:37 -0500 Subject: Tests: Factor out RunCMake helper to get UNIX user id --- Tests/RunCMake/RunCMake.cmake | 16 ++++++++++++++++ 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() -- cgit v0.12