aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAurélien Gâteau <agateau@kde.org>2014-05-04 20:43:42 +0100
committerAlex Merry <alex.merry@kde.org>2014-05-04 20:59:53 +0100
commit73992f139276b75aeddf78f476644a2d82f9e802 (patch)
tree109b63c6061a2e8f39454a7d069643fd5d2050cb /tests
parent09d355975a6b9d3f89da280627a71e46c606d563 (diff)
downloadextra-cmake-modules-73992f139276b75aeddf78f476644a2d82f9e802.tar.gz
extra-cmake-modules-73992f139276b75aeddf78f476644a2d82f9e802.tar.bz2
Add ECMPoQmTools module
ecm_create_qm_from_po_files() was actually not very useful in practice. So that is deprecated, to be removed before ECM 1.0. Instead, the ECMPoQmTools provides several useful functions: ecm_create_qm_loader() (which already existed in ECMCreateQmFromPoFiles), ecm_process_po_files_as_qm() (which has the same signature as gettext_process_po_files() from the FindGettext module) and ecm_install_po_files_as_qm(), which is a convenience function mostly for the benefit of KDE Frameworks (although potentially useful for whatever other projects have the unusual requirement of a Gettext translation workflow but no Gettext usage in the code). NB: some clean-up to the documentation was done by Alex Merry <alex.merry@kde.org> as part of this commit. REVIEW: 117823
Diffstat (limited to 'tests')
-rw-r--r--tests/CMakeLists.txt13
-rw-r--r--tests/ECMPoQmToolsTest/CMakeLists.txt22
-rw-r--r--tests/ECMPoQmToolsTest/check_tree.cmake.in55
-rw-r--r--tests/ECMPoQmToolsTest/po/es/install-test.po18
-rw-r--r--tests/ECMPoQmToolsTest/po/fr/install-test.po18
-rw-r--r--tests/ECMPoQmToolsTest/test.po18
6 files changed, 144 insertions, 0 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 171f44af..cc11aec2 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -19,6 +19,8 @@ macro(ADD_TEST_MACRO NAME COMMAND)
--test-command ${COMMAND} ${ARGN})
endmacro(ADD_TEST_MACRO)
+find_package(Qt5LinguistTools CONFIG)
+
add_test_macro(ExecuteCoreModules dummy)
add_test_macro(ExecuteKDEModules dummy)
add_test_macro(FindModules dummy)
@@ -32,3 +34,14 @@ set(ECMInstallIconsTest_EXTRA_OPTIONS
add_test_macro(ECMInstallIconsTest
${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/ECMInstallIconsTest/check_tree.cmake"
)
+
+if (Qt5LinguistTools_FOUND)
+ set(ECMPoQmToolsTest_EXTRA_OPTIONS
+ --build-target install
+ --build-options
+ "-DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_CURRENT_BINARY_DIR}/ECMPoQmToolsTest/InstallDirectory"
+ )
+ add_test_macro(ECMPoQmToolsTest
+ ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/ECMPoQmToolsTest/check_tree.cmake"
+ )
+endif()
diff --git a/tests/ECMPoQmToolsTest/CMakeLists.txt b/tests/ECMPoQmToolsTest/CMakeLists.txt
new file mode 100644
index 00000000..eabf2b88
--- /dev/null
+++ b/tests/ECMPoQmToolsTest/CMakeLists.txt
@@ -0,0 +1,22 @@
+project(ECMPoQmToolsTest)
+cmake_minimum_required(VERSION 2.8.12)
+set(ECM_MODULE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../modules")
+
+set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../modules)
+
+# make sure the test install dir is clean
+file(REMOVE_RECURSE "${CMAKE_INSTALL_PREFIX}")
+
+include(ECMPoQmTools)
+
+ecm_create_qm_loader(QMLOADER_PATH catalog)
+
+ecm_process_po_files_as_qm(fr ALL
+ INSTALL_DESTINATION share/locale
+ PO_FILES test.po
+)
+
+ecm_install_po_files_as_qm(po)
+
+# this will be run by CTest
+configure_file(check_tree.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/check_tree.cmake" @ONLY)
diff --git a/tests/ECMPoQmToolsTest/check_tree.cmake.in b/tests/ECMPoQmToolsTest/check_tree.cmake.in
new file mode 100644
index 00000000..71cbaa8d
--- /dev/null
+++ b/tests/ECMPoQmToolsTest/check_tree.cmake.in
@@ -0,0 +1,55 @@
+set(BINARY_DIR "@CMAKE_CURRENT_BINARY_DIR@")
+set(ACTUAL_TREE "@CMAKE_INSTALL_PREFIX@")
+set(QMLOADER_PATH "@QMLOADER_PATH@")
+
+set(fail OFF)
+
+macro(mark_failed msg)
+ message(WARNING "FAIL: ${msg}")
+ set(fail ON)
+endmacro()
+
+macro(check_strequal var expected)
+ if (NOT "${${var}}" STREQUAL "${expected}")
+ mark_failed("${var} is:\n \"${${var}}\"\nExpected:\n \"${expected}\"")
+ endif()
+endmacro()
+
+macro(check_exists file)
+ if (NOT EXISTS ${file})
+ mark_failed("File \"${file}\" does not exist")
+ endif()
+endmacro()
+
+check_exists(${BINARY_DIR}/ECMQmLoader.cpp)
+check_strequal(QMLOADER_PATH "${BINARY_DIR}/ECMQmLoader.cpp")
+
+set(exp_files
+ "share/locale/fr/LC_MESSAGES/test.qm"
+ "share/locale/fr/LC_MESSAGES/install-test.qm"
+ "share/locale/es/LC_MESSAGES/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()
+endif()
+
+if (fail)
+ message("Test failed!")
+endif()
diff --git a/tests/ECMPoQmToolsTest/po/es/install-test.po b/tests/ECMPoQmToolsTest/po/es/install-test.po
new file mode 100644
index 00000000..107d1b08
--- /dev/null
+++ b/tests/ECMPoQmToolsTest/po/es/install-test.po
@@ -0,0 +1,18 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Language: fr\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Qt-Contexts: true\n"
+"X-Generator: Poedit 1.5.4\n"
+
+#: ../../home/aurelien/src/kf5/frameworks/kbookmarks/src/kbookmark.cpp:307
+msgctxt "KBookmark|Bookmark separator"
+msgid "--- separator ---"
+msgstr ""
diff --git a/tests/ECMPoQmToolsTest/po/fr/install-test.po b/tests/ECMPoQmToolsTest/po/fr/install-test.po
new file mode 100644
index 00000000..107d1b08
--- /dev/null
+++ b/tests/ECMPoQmToolsTest/po/fr/install-test.po
@@ -0,0 +1,18 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Language: fr\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Qt-Contexts: true\n"
+"X-Generator: Poedit 1.5.4\n"
+
+#: ../../home/aurelien/src/kf5/frameworks/kbookmarks/src/kbookmark.cpp:307
+msgctxt "KBookmark|Bookmark separator"
+msgid "--- separator ---"
+msgstr ""
diff --git a/tests/ECMPoQmToolsTest/test.po b/tests/ECMPoQmToolsTest/test.po
new file mode 100644
index 00000000..107d1b08
--- /dev/null
+++ b/tests/ECMPoQmToolsTest/test.po
@@ -0,0 +1,18 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Language: fr\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Qt-Contexts: true\n"
+"X-Generator: Poedit 1.5.4\n"
+
+#: ../../home/aurelien/src/kf5/frameworks/kbookmarks/src/kbookmark.cpp:307
+msgctxt "KBookmark|Bookmark separator"
+msgid "--- separator ---"
+msgstr ""