aboutsummaryrefslogtreecommitdiff
path: root/tests/ECMPoQmToolsTest/check.cmake.in
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ECMPoQmToolsTest/check.cmake.in')
-rw-r--r--tests/ECMPoQmToolsTest/check.cmake.in81
1 files changed, 81 insertions, 0 deletions
diff --git a/tests/ECMPoQmToolsTest/check.cmake.in b/tests/ECMPoQmToolsTest/check.cmake.in
new file mode 100644
index 00000000..2f0cc205
--- /dev/null
+++ b/tests/ECMPoQmToolsTest/check.cmake.in
@@ -0,0 +1,81 @@
+set(BINARY_DIR "@CMAKE_CURRENT_BINARY_DIR@")
+set(ACTUAL_TREE "@CMAKE_INSTALL_PREFIX@")
+include("${BINARY_DIR}/check_conf.cmake")
+
+set(fail OFF)
+
+macro(mark_failed msg)
+ message(WARNING "FAIL: ${msg}")
+ set(fail ON)
+endmacro()
+
+macro(check_exists file)
+ message(STATUS "Checking for ${file}")
+ if (NOT EXISTS ${file})
+ mark_failed("File \"${file}\" does not exist")
+ endif()
+endmacro()
+
+check_exists(${BINARY_DIR}/fr/only-process.qm)
+
+set(exp_files
+ "share/locale/fr/LC_MESSAGES/process-and-install.qm"
+ "share/locale/es/LC_MESSAGES/install-test.qm"
+ "share/locale/fr/LC_MESSAGES/install-test.qm"
+ "share/locale/en/LC_MESSAGES/catalog.qm"
+ "share/locale/en_GB/LC_MESSAGES/catalog.qm"
+ "custom-dir1/es/LC_MESSAGES/custom-dir1-install-test.qm"
+ "custom-dir1/fr/LC_MESSAGES/custom-dir1-install-test.qm"
+ "custom-dir2/es/LC_MESSAGES/custom-dir2-install-test.qm"
+ "custom-dir2/fr/LC_MESSAGES/custom-dir2-install-test.qm"
+)
+file(GLOB_RECURSE actual_files RELATIVE "${ACTUAL_TREE}" "${ACTUAL_TREE}/*")
+list(SORT exp_files)
+list(SORT actual_files)
+
+if(NOT exp_files STREQUAL actual_files)
+ foreach(f ${exp_files})
+ list(FIND actual_files "${f}" result)
+ if(result EQUAL -1)
+ message(WARNING "${f} was expected, but not found")
+ set(fail ON)
+ endif()
+ endforeach()
+ foreach(f ${actual_files})
+ list(FIND exp_files "${f}" result)
+ if(result EQUAL -1)
+ message(WARNING "${f} was found, but not expected")
+ set(fail ON)
+ endif()
+ endforeach()
+else()
+ message(STATUS "Installed translations in expected locations")
+endif()
+
+# we know we can modify the executable environment on Linux
+if("@CMAKE_SYSTEM_NAME@" STREQUAL "Linux")
+ set(exp_output_en "english text:english plural form 5")
+ set(exp_output_en_GB "british english text:british english plural form 5")
+ # no french translation provided -> english fallback
+ set(exp_output_fr "${exp_output_en}")
+ foreach(exec TR_TEST TR_THREAD_TEST)
+ foreach(lang en en_GB fr)
+ execute_process(
+ COMMAND "${CMAKE_COMMAND}" -E env "XDG_DATA_DIRS=${ACTUAL_TREE}/share"
+ LC_ALL=${lang} "${${exec}_EXEC}"
+ OUTPUT_VARIABLE output
+ )
+ string(STRIP "${output}" stripped_output)
+ if(NOT stripped_output STREQUAL exp_output_${lang})
+ message(WARNING "${exec}[${lang}] output was \"${stripped_output}\", but expected \"${exp_output_${lang}}\"")
+ set(fail ON)
+ else()
+ message(STATUS "${exec}[${lang}] output was \"${stripped_output}\", as expected")
+ endif()
+ endforeach()
+ endforeach()
+endif()
+
+if (fail)
+ message(FATAL_ERROR "Test failed!")
+endif()