2024-04-20 14:09:11 +00:00
|
|
|
# SPDX-License-Identifier: 0BSD
|
|
|
|
|
|
|
|
#############################################################################
|
|
|
|
#
|
|
|
|
# Optional file to be included by the top-level CMakeLists.txt to run tests
|
|
|
|
#
|
|
|
|
# The CMake rules for the tests are in this separate optional file so
|
|
|
|
# that it's trivial to just delete the whole "tests" directory and still
|
|
|
|
# get an otherwise normal CMake-based build. This way it's easy to ensure
|
|
|
|
# that nothing in the "tests" directory can affect the build process.
|
|
|
|
#
|
|
|
|
# Author: Lasse Collin
|
|
|
|
#
|
|
|
|
#############################################################################
|
|
|
|
|
|
|
|
include(CTest)
|
|
|
|
|
|
|
|
if(BUILD_TESTING)
|
|
|
|
set(LIBLZMA_TESTS
|
|
|
|
test_bcj_exact_size
|
|
|
|
test_block_header
|
|
|
|
test_check
|
|
|
|
test_filter_flags
|
|
|
|
test_filter_str
|
|
|
|
test_hardware
|
|
|
|
test_index
|
|
|
|
test_index_hash
|
|
|
|
test_lzip_decoder
|
|
|
|
test_memlimit
|
|
|
|
test_stream_flags
|
|
|
|
test_vli
|
|
|
|
)
|
|
|
|
|
|
|
|
# MicroLZMA encoder is needed for both encoder and decoder tests.
|
|
|
|
# If MicroLZMA decoder is not configured but LZMA1 decoder is, then
|
|
|
|
# test_microlzma will fail to compile because this configuration is
|
|
|
|
# not possible in the Autotools build, so the test was not made to
|
|
|
|
# support it since it would have required additional changes.
|
|
|
|
if (MICROLZMA_ENCODER AND (MICROLZMA_DECODER
|
|
|
|
OR NOT "lzma1" IN_LIST DECODERS))
|
|
|
|
list(APPEND LIBLZMA_TESTS test_microlzma)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
foreach(TEST IN LISTS LIBLZMA_TESTS)
|
|
|
|
add_executable("${TEST}" "tests/${TEST}.c")
|
|
|
|
|
|
|
|
target_include_directories("${TEST}" PRIVATE
|
|
|
|
src/common
|
|
|
|
src/liblzma/api
|
|
|
|
src/liblzma
|
|
|
|
)
|
|
|
|
|
|
|
|
target_link_libraries("${TEST}" PRIVATE liblzma)
|
|
|
|
|
|
|
|
# Put the test programs into their own subdirectory so they don't
|
|
|
|
# pollute the top-level dir which might contain xz and xzdec.
|
|
|
|
set_target_properties("${TEST}" PROPERTIES
|
|
|
|
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/tests_bin"
|
|
|
|
)
|
|
|
|
|
|
|
|
add_test(NAME "${TEST}"
|
|
|
|
COMMAND "${CMAKE_CURRENT_BINARY_DIR}/tests_bin/${TEST}"
|
|
|
|
)
|
|
|
|
|
|
|
|
# Set srcdir environment variable so that the tests find their
|
|
|
|
# input files from the source tree.
|
|
|
|
#
|
|
|
|
# Set the return code for skipped tests to match Automake convention.
|
|
|
|
set_tests_properties("${TEST}" PROPERTIES
|
|
|
|
ENVIRONMENT "srcdir=${CMAKE_CURRENT_SOURCE_DIR}/tests"
|
|
|
|
SKIP_RETURN_CODE 77
|
|
|
|
)
|
|
|
|
endforeach()
|
|
|
|
|
|
|
|
if(UNIX AND HAVE_DECODERS)
|
|
|
|
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test_scripts")
|
|
|
|
|
|
|
|
add_test(NAME test_scripts.sh
|
|
|
|
COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/tests/test_scripts.sh" ".."
|
|
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test_scripts"
|
|
|
|
)
|
|
|
|
|
|
|
|
set_tests_properties(test_scripts.sh PROPERTIES
|
|
|
|
ENVIRONMENT "srcdir=${CMAKE_CURRENT_SOURCE_DIR}/tests"
|
|
|
|
SKIP_RETURN_CODE 77
|
|
|
|
)
|
|
|
|
endif()
|
2024-05-06 19:56:31 +00:00
|
|
|
|
|
|
|
if(UNIX AND HAVE_ENCODERS AND HAVE_DECODERS)
|
|
|
|
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test_suffix")
|
|
|
|
|
|
|
|
add_test(NAME test_suffix.sh
|
|
|
|
COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/tests/test_suffix.sh" ".."
|
|
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test_suffix"
|
|
|
|
)
|
|
|
|
|
|
|
|
set_tests_properties(test_suffix.sh PROPERTIES
|
|
|
|
SKIP_RETURN_CODE 77
|
|
|
|
)
|
|
|
|
endif()
|
2024-04-20 14:09:11 +00:00
|
|
|
endif()
|