aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/scripts/test_ports/unit-test-cmake/test-vcpkg_execute_required_process.cmake
diff options
context:
space:
mode:
authorEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
committerEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
commit54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch)
treed915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/scripts/test_ports/unit-test-cmake/test-vcpkg_execute_required_process.cmake
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/scripts/test_ports/unit-test-cmake/test-vcpkg_execute_required_process.cmake')
-rw-r--r--vcpkg/scripts/test_ports/unit-test-cmake/test-vcpkg_execute_required_process.cmake189
1 files changed, 189 insertions, 0 deletions
diff --git a/vcpkg/scripts/test_ports/unit-test-cmake/test-vcpkg_execute_required_process.cmake b/vcpkg/scripts/test_ports/unit-test-cmake/test-vcpkg_execute_required_process.cmake
new file mode 100644
index 0000000..ff767c3
--- /dev/null
+++ b/vcpkg/scripts/test_ports/unit-test-cmake/test-vcpkg_execute_required_process.cmake
@@ -0,0 +1,189 @@
+# vcpkg_execute_required_process
+#[[
+ "ALLOW_IN_DOWNLOAD_MODE;OUTPUT_STRIP_TRAILING_WHITESPACE;ERROR_STRIP_TRAILING_WHITESPACE"
+ "WORKING_DIRECTORY;LOGNAME;TIMEOUT;OUTPUT_VARIABLE;ERROR_VARIABLE"
+ "COMMAND;SAVE_LOG_FILES"
+]]
+
+block(SCOPE_FOR VARIABLES)
+
+set(logname "test-vcpkg_execute_required_process")
+
+function(count_log_files out_var)
+ set(count 0)
+ if(EXISTS "${CURRENT_BUILDTREES_DIR}/${logname}-out.log")
+ math(EXPR count "${count} + 1")
+ endif()
+ if(EXISTS "${CURRENT_BUILDTREES_DIR}/${logname}-err.log")
+ math(EXPR count "${count} + 1")
+ endif()
+ if(EXISTS "${CURRENT_BUILDTREES_DIR}/${logname}-extra.log")
+ math(EXPR count "${count} + 1")
+ endif()
+ set("${out_var}" "${count}" PARENT_SCOPE)
+endfunction()
+
+function(reset_log_files)
+ file(REMOVE "${CURRENT_BUILDTREES_DIR}/${logname}-out.log")
+ file(REMOVE "${CURRENT_BUILDTREES_DIR}/${logname}-err.log")
+ file(REMOVE "${CURRENT_BUILDTREES_DIR}/${logname}-extra.log")
+endfunction()
+
+
+# ALLOW_IN_DOWNLOAD_MODE
+
+set(VCPKG_DOWNLOAD_MODE 1)
+unit_test_ensure_success([[
+ vcpkg_execute_required_process(
+ COMMAND "${CMAKE_COMMAND}" -E echo Success
+ WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}"
+ LOGNAME "${logname}"
+ ALLOW_IN_DOWNLOAD_MODE
+ )]]
+)
+unit_test_ensure_fatal_error([[
+ vcpkg_execute_required_process(
+ COMMAND "${CMAKE_COMMAND}" -E echo Success
+ WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}"
+ LOGNAME "${logname}"
+ )]]
+)
+
+set(VCPKG_DOWNLOAD_MODE "")
+unit_test_ensure_success([[
+ vcpkg_execute_required_process(
+ COMMAND "${CMAKE_COMMAND}" -E echo Success
+ WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}"
+ LOGNAME "${logname}"
+ ALLOW_IN_DOWNLOAD_MODE
+ )]]
+)
+unit_test_ensure_success([[
+ vcpkg_execute_required_process(
+ COMMAND "${CMAKE_COMMAND}" -E echo Success
+ WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}"
+ LOGNAME "${logname}"
+ )]]
+)
+
+
+# COMMAND, LOGNAME
+
+reset_log_files()
+unit_test_check_variable_equal([[count_log_files(count)]] count 0)
+
+unit_test_ensure_success([[
+ vcpkg_execute_required_process(
+ COMMAND "${CMAKE_COMMAND}" -E echo Hello world
+ WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}"
+ LOGNAME "${logname}"
+ )]]
+)
+unit_test_check_variable_equal([[ count_log_files(count) ]] count 2)
+unit_test_check_variable_equal([[ file(STRINGS "${CURRENT_BUILDTREES_DIR}/${logname}-out.log" stdout) ]] stdout "Hello world")
+
+
+# WORKING_DIRECTORY, SAVE_LOG_FILES
+
+file(REMOVE_RECURSE "${CURRENT_BUILDTREES_DIR}/vcpkg_execute_required_process-dir/subdir")
+file(MAKE_DIRECTORY "${CURRENT_BUILDTREES_DIR}/vcpkg_execute_required_process-dir/subdir")
+file(WRITE "${CURRENT_BUILDTREES_DIR}/vcpkg_execute_required_process-dir/source" "extra log")
+file(REMOVE_RECURSE "${CURRENT_BUILDTREES_DIR}/subdir")
+
+reset_log_files()
+unit_test_check_variable_equal([[count_log_files(count)]] count 0)
+
+unit_test_ensure_success([[
+ vcpkg_execute_required_process(
+ COMMAND "${CMAKE_COMMAND}" -E rename source subdir/extra.log
+ WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/vcpkg_execute_required_process-dir"
+ LOGNAME "${logname}"
+ SAVE_LOG_FILES "subdir/extra.log"
+ )]]
+)
+unit_test_check_variable_equal([[ count_log_files(count) ]] count 3)
+unit_test_check_variable_equal([[ file(STRINGS "${CURRENT_BUILDTREES_DIR}/${logname}-extra.log" extra) ]] extra "extra log")
+
+
+# OUTPUT_VARIABLE, OUTPUT_STRIP_TRAILING_WHITESPACE
+
+reset_log_files()
+unit_test_check_variable_equal([[count_log_files(count)]] count 0)
+
+unit_test_check_variable_equal([[
+ vcpkg_execute_required_process(
+ COMMAND "${CMAKE_COMMAND}" -E echo Hello world
+ WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}"
+ LOGNAME "${logname}"
+ OUTPUT_VARIABLE outvar
+ )]]
+ outvar "Hello world\n"
+)
+unit_test_check_variable_equal([[
+ vcpkg_execute_required_process(
+ COMMAND "${CMAKE_COMMAND}" -E echo Hello world
+ WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}"
+ LOGNAME "${logname}"
+ OUTPUT_VARIABLE outvar
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )]]
+ outvar "Hello world"
+)
+unit_test_check_variable_equal([[ count_log_files(count) ]] count 2)
+
+
+# ERROR_VARIABLE
+
+reset_log_files()
+unit_test_check_variable_equal([[count_log_files(count)]] count 0)
+
+file(WRITE "${CURRENT_BUILDTREES_DIR}/vcpkg_execute_required_process-dir/stderr.cmake" "message(WARNING on-stderr)\n")
+unit_test_check_variable_not_equal([[
+ vcpkg_execute_required_process(
+ COMMAND "${CMAKE_COMMAND}" -P "${CURRENT_BUILDTREES_DIR}/vcpkg_execute_required_process-dir/stderr.cmake"
+ WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}"
+ LOGNAME "${logname}"
+ ERROR_VARIABLE outvar
+ )
+ string(FIND "${outvar}" "on-stderr" pos)
+ ]] pos -1
+)
+unit_test_check_variable_equal([[ count_log_files(count) ]] count 2)
+
+
+# OUTPUT_VARIABLE == ERROR_VARIABLE
+
+reset_log_files()
+unit_test_check_variable_equal([[count_log_files(count)]] count 0)
+
+file(WRITE "${CURRENT_BUILDTREES_DIR}/vcpkg_execute_required_process-dir/combined.cmake" [[
+ message(WARNING on-stderr)
+ message(STATUS on-stdout)
+]])
+unit_test_check_variable_not_equal([[
+ vcpkg_execute_required_process(
+ COMMAND "${CMAKE_COMMAND}" -P "${CURRENT_BUILDTREES_DIR}/vcpkg_execute_required_process-dir/combined.cmake"
+ WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}"
+ LOGNAME "${logname}"
+ OUTPUT_VARIABLE outvar
+ ERROR_VARIABLE outvar
+ )
+ string(REGEX MATCH "on-stderr.*on-stdout" match "${outvar}")
+ ]] CMAKE_MATCH_0 ""
+)
+unit_test_check_variable_equal([[ count_log_files(count) ]] count 2)
+
+
+# TIMEOUT (if not flaky)
+
+unit_test_ensure_fatal_error([[
+ vcpkg_execute_required_process(
+ COMMAND "${CMAKE_COMMAND}" -E sleep 10
+ WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}"
+ LOGNAME "${logname}"
+ TIMEOUT 1
+ )]]
+)
+
+
+endblock()