summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMartijn van Beurden <mvanb1@gmail.com>2022-05-12 22:21:39 +0200
committerGitHub <noreply@github.com>2022-05-12 22:21:39 +0200
commit61649d09aa21ae173fb0f3d95269b1ad5c457b19 (patch)
tree98511c317e6f5a1ad9dae1824129334bfb05813c /test
parent1bec35e33757fc38261b0acfa3c032e720d2baf0 (diff)
downloadflac-61649d09aa21ae173fb0f3d95269b1ad5c457b19.tar.gz
Add checks for decoding from and encoding to UTF-8 filenames
Diffstat (limited to 'test')
-rw-r--r--test/CMakeLists.txt68
-rw-r--r--test/flac-to-flac-metadata-test-files/Prøve.flacbin0 -> 1257 bytes
-rw-r--r--test/flac-to-flac-metadata-test-files/שלום.flacbin0 -> 3926 bytes
-rw-r--r--test/flac-to-flac-metadata-test-files/🤔.flacbin0 -> 1708 bytes
-rwxr-xr-xtest/test_flac.sh30
5 files changed, 75 insertions, 23 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 6c80f763..b465e2fb 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -18,6 +18,10 @@ if(NOT UNIX)
add_test(NAME flac_help
COMMAND $<TARGET_FILE:flacapp> --help
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
+ add_test(NAME flac_utf8_test COMMAND $<TARGET_FILE:flacapp> -t
+ "${CMAKE_CURRENT_SOURCE_DIR}/flac-to-flac-metadata-test-files/שלום.flac"
+ "${CMAKE_CURRENT_SOURCE_DIR}/flac-to-flac-metadata-test-files/Prøve.flac"
+ "${CMAKE_CURRENT_SOURCE_DIR}/flac-to-flac-metadata-test-files/🤔.flac")
add_test(NAME metaflac_help
COMMAND $<TARGET_FILE:metaflac> --help
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
@@ -36,7 +40,7 @@ endif()
configure_file(common.sh.in common.sh @ONLY)
-set(ALL_TESTS libFLAC grabbag flac metaflac replaygain seeking streams compression)
+set(ALL_TESTS libFLAC grabbag)
add_test(NAME libFLAC
COMMAND ${BUSYBOX_EXE} ${BUSYBOX_CMD} "${CMAKE_CURRENT_SOURCE_DIR}/test_libFLAC.sh"
@@ -51,26 +55,44 @@ file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/cuesheets")
add_test(NAME grabbag
COMMAND ${BUSYBOX_EXE} ${BUSYBOX_CMD} "${CMAKE_CURRENT_SOURCE_DIR}/test_grabbag.sh"
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
-add_test(NAME flac
- COMMAND ${BUSYBOX_EXE} ${BUSYBOX_CMD} "${CMAKE_CURRENT_SOURCE_DIR}/test_flac.sh"
- WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
-file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/metaflac-test-files")
-add_test(NAME metaflac
- COMMAND ${BUSYBOX_EXE} ${BUSYBOX_CMD} "${CMAKE_CURRENT_SOURCE_DIR}/test_metaflac.sh"
- WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
-add_test(NAME replaygain
- COMMAND ${BUSYBOX_EXE} ${BUSYBOX_CMD} "${CMAKE_CURRENT_SOURCE_DIR}/test_replaygain.sh"
- WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
-add_test(NAME seeking
- COMMAND ${BUSYBOX_EXE} ${BUSYBOX_CMD} "${CMAKE_CURRENT_SOURCE_DIR}/test_seeking.sh"
- WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
-add_test(NAME streams
- COMMAND ${BUSYBOX_EXE} ${BUSYBOX_CMD} "${CMAKE_CURRENT_SOURCE_DIR}/test_streams.sh"
- WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
-# increase this if standard 1500 seconds are not enough
-# set_tests_properties(streams PROPERTIES TIMEOUT 1500)
-add_test(NAME compression
- COMMAND ${BUSYBOX_EXE} ${BUSYBOX_CMD} "${CMAKE_CURRENT_SOURCE_DIR}/test_compression.sh"
- WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
+if(BUILD_PROGRAMS)
+ add_test(NAME flac
+ COMMAND ${BUSYBOX_EXE} ${BUSYBOX_CMD} "${CMAKE_CURRENT_SOURCE_DIR}/test_flac.sh"
+ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
+ # UTF-8 must be tested separately on Windows because busybox-w32 doesn't support UTF-8
+ if(BUSYBOX_EXE)
+ add_test(NAME flac_utf8_test COMMAND $<TARGET_FILE:flacapp> -t
+ "${CMAKE_CURRENT_SOURCE_DIR}/flac-to-flac-metadata-test-files/שלום.flac"
+ "${CMAKE_CURRENT_SOURCE_DIR}/flac-to-flac-metadata-test-files/Prøve.flac"
+ "${CMAKE_CURRENT_SOURCE_DIR}/flac-to-flac-metadata-test-files/🤔.flac")
+ list(APPEND ALL_TESTS flac_utf8_test)
+ endif()
+ file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/metaflac-test-files")
+ add_test(NAME metaflac
+ COMMAND ${BUSYBOX_EXE} ${BUSYBOX_CMD} "${CMAKE_CURRENT_SOURCE_DIR}/test_metaflac.sh"
+ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
+ add_test(NAME replaygain
+ COMMAND ${BUSYBOX_EXE} ${BUSYBOX_CMD} "${CMAKE_CURRENT_SOURCE_DIR}/test_replaygain.sh"
+ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
+ add_test(NAME seeking
+ COMMAND ${BUSYBOX_EXE} ${BUSYBOX_CMD} "${CMAKE_CURRENT_SOURCE_DIR}/test_seeking.sh"
+ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
+ add_test(NAME streams
+ COMMAND ${BUSYBOX_EXE} ${BUSYBOX_CMD} "${CMAKE_CURRENT_SOURCE_DIR}/test_streams.sh"
+ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
+ # increase this if standard 1500 seconds are not enough
+ # set_tests_properties(streams PROPERTIES TIMEOUT 1500)
+ add_test(NAME compression
+ COMMAND ${BUSYBOX_EXE} ${BUSYBOX_CMD} "${CMAKE_CURRENT_SOURCE_DIR}/test_compression.sh"
+ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
+ list(APPEND ALL_TESTS flac metaflac replaygain seeking streams compression)
+endif()
-set_property(TEST ${ALL_TESTS} APPEND PROPERTY ENVIRONMENT ECHO_C=\\c)
+
+set_property(TEST ${ALL_TESTS} APPEND PROPERTY ENVIRONMENT FLAC__TEST_LEVEL=1)
+if(BUSYBOX_EXE)
+ set_property(TEST ${ALL_TESTS} APPEND PROPERTY ENVIRONMENT ECHO_N=-n)
+ set_property(TEST ${ALL_TESTS} APPEND PROPERTY ENVIRONMENT WIN32BUSYBOX=yes)
+else()
+ set_property(TEST ${ALL_TESTS} APPEND PROPERTY ENVIRONMENT ECHO_C=\\c)
+endif()
diff --git a/test/flac-to-flac-metadata-test-files/Prøve.flac b/test/flac-to-flac-metadata-test-files/Prøve.flac
new file mode 100644
index 00000000..18830754
--- /dev/null
+++ b/test/flac-to-flac-metadata-test-files/Prøve.flac
Binary files differ
diff --git a/test/flac-to-flac-metadata-test-files/שלום.flac b/test/flac-to-flac-metadata-test-files/שלום.flac
new file mode 100644
index 00000000..0e668681
--- /dev/null
+++ b/test/flac-to-flac-metadata-test-files/שלום.flac
Binary files differ
diff --git a/test/flac-to-flac-metadata-test-files/🤔.flac b/test/flac-to-flac-metadata-test-files/🤔.flac
new file mode 100644
index 00000000..7373da6b
--- /dev/null
+++ b/test/flac-to-flac-metadata-test-files/🤔.flac
Binary files differ
diff --git a/test/test_flac.sh b/test/test_flac.sh
index 75e995d6..6ecd0f66 100755
--- a/test/test_flac.sh
+++ b/test/test_flac.sh
@@ -1290,6 +1290,36 @@ if [ "$FLAC__TEST_LEVEL" -gt 1 ] ; then
test_total_samples_overflow 68719476737 0
fi
+############################################################################
+# test handling of UTF-8 filenames
+############################################################################
+
+
+test_utf8_handling ()
+{
+ echo $ECHO_N "Test decoding from $1... " $ECHO_C
+ run_flac -d $testdatadir/$1 -o out.wav
+ if [ -f out.wav ] ; then
+ echo "OK"
+ else
+ die "Decoding failed"
+ fi
+ echo $ECHO_N "Test encoding to $1... " $ECHO_C
+ run_flac out.wav -o $1
+ if [ -f $1 ] ; then
+ echo "OK"
+ else
+ die "Encoding failed"
+ fi
+ rm $1 out.wav
+}
+
+if [ "$WIN32BUSYBOX" != "yes" ]; then
+ test_utf8_handling שלום.flac
+ test_utf8_handling 🤔.flac
+ test_utf8_handling Prøve.flac
+fi
+
rm -f out.flac out.meta out1.meta
#@@@ when metaflac handles ogg flac, duplicate flac2flac tests here