uchardet/test/CMakeLists.txt
Jehan 127d7faf47 test: add ability to have several tests per charsets.
While the expected charset name is still the first part of the test file
(until the first point character), the test name is all but the last
part (until the last point character). This will allow to have several
test files for a single charset.

In particular, I want 2 test files at least for Hebrew when it has a
visual and logical variant. So I could call these "ibm862.visual.txt"
and "ibm862.logical.txt" which both expect IBM862 as a result charset,
but test names will "he:ibm862.visual" and he:ibm862.logical"
respectively. Without this change, the test names would collide and
CMake would refuse these.
2022-12-16 23:10:34 +01:00

49 lines
1.3 KiB
CMake

set(
UCHARDET_TEST_SOURCES
uchardet-tests.c
)
add_executable(
uchardet-tests
${UCHARDET_TEST_SOURCES}
)
target_link_libraries(
uchardet-tests
${UCHARDET_LIBRARY}
)
set_target_properties(
uchardet-tests
PROPERTIES
LINKER_LANGUAGE
C
OUTPUT_NAME
uchardet-tests
)
# Iterate through all langs.
file(GLOB dirs "[a-z][a-z]")
foreach(dir ${dirs})
get_filename_component(lang ${dir} NAME)
file(GLOB files "${dir}/*")
# Iterate through all files.
foreach(file ${files})
get_filename_component(charset ${file} NAME_WE)
get_filename_component(testname ${file} NAME_WLE)
# These are tests known to fail (not supported or not efficient
# enough). We will have to take a closer look and fix these, but
# there is no need to break the whole `make test` right now,
# which may make actual regressions harder to notice.
if ("${lang}:${charset}" STREQUAL "ja:utf-16le" OR
"${lang}:${charset}" STREQUAL "ja:utf-16be" OR
"${lang}:${charset}" STREQUAL "es:iso-8859-15" OR
"${lang}:${charset}" STREQUAL "da:iso-8859-1" OR
"${lang}:${charset}" STREQUAL "he:iso-8859-8")
message(STATUS "Skipping test ${lang}:${charset} (known broken)")
else()
add_test(NAME "${lang}:${testname}" COMMAND uchardet-tests ${file})
endif()
endforeach()
endforeach()