Merge topic 'test-archive-symlink-win' into release-4.3

4229667859 Tests: Extend symlink-related archive tests to cross-platform
19f8fcfd24 Tests/File_Archive: Relax more stderr line matching

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !11941
This commit is contained in:
Brad King
2026-04-23 13:06:13 +00:00
committed by Kitware Robot
8 changed files with 54 additions and 18 deletions

View File

@@ -37,17 +37,29 @@ foreach(file ${CHECK_FILES})
configure_file(${CMAKE_CURRENT_LIST_FILE} ${FULL_COMPRESS_DIR}/${file} COPYONLY)
endforeach()
if(UNIX)
execute_process(COMMAND ln -sf f1.txt ${FULL_COMPRESS_DIR}/d1/f2.txt)
# Test a (file) symlink inside the archive on platforms which support it.
execute_process(
COMMAND ${CMAKE_COMMAND} -E create_symlink f1.txt ${FULL_COMPRESS_DIR}/d1/f2.txt
OUTPUT_VARIABLE create_symlink_stdout
ERROR_VARIABLE create_symlink_stderr
RESULT_VARIABLE create_symlink_result
)
if(create_symlink_result EQUAL 0 AND EXISTS "${FULL_COMPRESS_DIR}/d1/f2.txt")
list(APPEND CHECK_FILES "d1/f2.txt")
endif()
file(REMOVE ${FULL_OUTPUT_NAME})
file(REMOVE_RECURSE ${FULL_DECOMPRESS_DIR})
if(DESTINATION_SYMLINK AND UNIX)
if(DESTINATION_SYMLINK)
# If specified, test extraction to a directory symlink on platforms which
# support it, but fall back to a plain directory otherwise.
cmake_policy(SET CMP0205 NEW)
file(MAKE_DIRECTORY ${FULL_DECOMPRESS_DIR}-dir)
execute_process(COMMAND ln -sf
${FULL_DECOMPRESS_DIR}-dir ${FULL_DECOMPRESS_DIR})
file(CREATE_LINK
${FULL_DECOMPRESS_DIR}-dir ${FULL_DECOMPRESS_DIR}
COPY_ON_ERROR
SYMBOLIC
)
else()
file(MAKE_DIRECTORY ${FULL_DECOMPRESS_DIR})
endif()

View File

@@ -1,4 +1,4 @@
^CMake Error at compression-level\.cmake:39 \(file\):
^CMake Error at compression-level\.cmake:[0-9]+ \(file\):
file compression level 100 for GZip should be in range 0 to 9
Call Stack \(most recent call first\):
argument-validation-compression-level-1\.cmake:8 \(check_compression_level\)

View File

@@ -1,4 +1,4 @@
^CMake Error at compression-level\.cmake:39 \(file\):
^CMake Error at compression-level\.cmake:[0-9]+ \(file\):
file compression level high for GZip should be in range 0 to 9
Call Stack \(most recent call first\):
argument-validation-compression-level-2\.cmake:8 \(check_compression_level\)

View File

@@ -1,4 +1,4 @@
^CMake Error at threads\.cmake:39 \(file\):
^CMake Error at threads\.cmake:[0-9]+ \(file\):
file number of threads -1 should be at least 0
Call Stack \(most recent call first\):
argument-validation-threads\.cmake:8 \(check_threads\)

View File

@@ -27,8 +27,14 @@ function(check_compression_level COMPRESSION_LEVEL)
configure_file(${CMAKE_CURRENT_LIST_FILE} ${FULL_COMPRESS_DIR}/${file} COPYONLY)
endforeach()
if(UNIX)
execute_process(COMMAND ln -sf f1.txt ${FULL_COMPRESS_DIR}/d1/f2.txt)
# Test a (file) symlink inside the archive on platforms which support it.
execute_process(
COMMAND ${CMAKE_COMMAND} -E create_symlink f1.txt ${FULL_COMPRESS_DIR}/d1/f2.txt
OUTPUT_VARIABLE create_symlink_stdout
ERROR_VARIABLE create_symlink_stderr
RESULT_VARIABLE create_symlink_result
)
if(create_symlink_result EQUAL 0 AND EXISTS "${FULL_COMPRESS_DIR}/d1/f2.txt")
list(APPEND CHECK_FILES "d1/f2.txt")
endif()

View File

@@ -26,17 +26,29 @@ foreach(file ${CHECK_FILES})
configure_file(${CMAKE_CURRENT_LIST_FILE} ${FULL_COMPRESS_DIR}/${file} COPYONLY)
endforeach()
if(UNIX)
execute_process(COMMAND ln -sf f1.txt ${FULL_COMPRESS_DIR}/d1/f2.txt)
# Test a (file) symlink inside the archive on platforms which support it.
execute_process(
COMMAND ${CMAKE_COMMAND} -E create_symlink f1.txt ${FULL_COMPRESS_DIR}/d1/f2.txt
OUTPUT_VARIABLE create_symlink_stdout
ERROR_VARIABLE create_symlink_stderr
RESULT_VARIABLE create_symlink_result
)
if(create_symlink_result EQUAL 0 AND EXISTS "${FULL_COMPRESS_DIR}/d1/f2.txt")
list(APPEND CHECK_FILES "d1/f2.txt")
endif()
file(REMOVE ${FULL_OUTPUT_NAME})
file(REMOVE_RECURSE ${FULL_DECOMPRESS_DIR})
if(DESTINATION_SYMLINK AND UNIX)
if(DESTINATION_SYMLINK)
# If specified, test extraction to a directory symlink on platforms which
# support it, but fall back to a plain directory otherwise.
cmake_policy(SET CMP0205 NEW)
file(MAKE_DIRECTORY ${FULL_DECOMPRESS_DIR}-dir)
execute_process(COMMAND ln -sf
${FULL_DECOMPRESS_DIR}-dir ${FULL_DECOMPRESS_DIR})
file(CREATE_LINK
${FULL_DECOMPRESS_DIR}-dir ${FULL_DECOMPRESS_DIR}
COPY_ON_ERROR
SYMBOLIC
)
else()
file(MAKE_DIRECTORY ${FULL_DECOMPRESS_DIR})
endif()

View File

@@ -27,8 +27,14 @@ function(check_threads THREADS)
configure_file(${CMAKE_CURRENT_LIST_FILE} ${FULL_COMPRESS_DIR}/${file} COPYONLY)
endforeach()
if(UNIX)
execute_process(COMMAND ln -sf f1.txt ${FULL_COMPRESS_DIR}/d1/f2.txt)
# Test a (file) symlink inside the archive on platforms which support it.
execute_process(
COMMAND ${CMAKE_COMMAND} -E create_symlink f1.txt ${FULL_COMPRESS_DIR}/d1/f2.txt
OUTPUT_VARIABLE create_symlink_stdout
ERROR_VARIABLE create_symlink_stderr
RESULT_VARIABLE create_symlink_result
)
if(create_symlink_result EQUAL 0 AND EXISTS "${FULL_COMPRESS_DIR}/d1/f2.txt")
list(APPEND CHECK_FILES "d1/f2.txt")
endif()

View File

@@ -1,4 +1,4 @@
CMake Error at compression-level\.cmake:39 \(file\):
CMake Error at compression-level\.cmake:[0-9]+ \(file\):
file compression level is not supported for compression "None"\. Provided
compression level: 1
Call Stack \(most recent call first\):