From cfbe72235072420d8c8a515d6b58f036aa7257b7 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 18 Apr 2021 13:19:55 +0200 Subject: [PATCH] [libcalamares] Test the translated string with real translations - introduce a bogus translation context, load translations, and check that the context-enabled translator does its job. --- src/libcalamares/CMakeLists.txt | 19 +++++++++++++++ src/libcalamares/locale/Tests.cpp | 28 ++++++++++++++++++++++ src/libcalamares/testdata/localetest_nl.ts | 15 ++++++++++++ 3 files changed, 62 insertions(+) create mode 100644 src/libcalamares/testdata/localetest_nl.ts diff --git a/src/libcalamares/CMakeLists.txt b/src/libcalamares/CMakeLists.txt index 69533cfff..285359faa 100644 --- a/src/libcalamares/CMakeLists.txt +++ b/src/libcalamares/CMakeLists.txt @@ -215,10 +215,29 @@ calamares_add_test( ${geoip_src} ) +# Build up translations for this one test +set( trans_file "localetest" ) +set( trans_infile ${CMAKE_CURRENT_BINARY_DIR}/${trans_file}.qrc ) +set( trans_outfile ${CMAKE_CURRENT_BINARY_DIR}/qrc_${trans_file}.cxx ) +set( calamares_i18n_qrc_content "localetest_nl.qm" ) +configure_file( ${CMAKE_SOURCE_DIR}/lang/calamares_i18n.qrc.in ${trans_infile} @ONLY ) + +qt5_add_translation(QM_FILES "${CMAKE_CURRENT_SOURCE_DIR}/testdata/localetest_nl.ts") + +# Run the resource compiler (rcc_options should already be set) +add_custom_command( + OUTPUT ${trans_outfile} + COMMAND "${Qt5Core_RCC_EXECUTABLE}" + ARGS ${rcc_options} --format-version 1 -name ${trans_file} -o ${trans_outfile} ${trans_infile} + MAIN_DEPENDENCY ${trans_infile} + DEPENDS ${QM_FILES} +) + calamares_add_test( libcalamareslocaletest SOURCES locale/Tests.cpp + ${trans_outfile} ) calamares_add_test( diff --git a/src/libcalamares/locale/Tests.cpp b/src/libcalamares/locale/Tests.cpp index b701ce849..05e8f610c 100644 --- a/src/libcalamares/locale/Tests.cpp +++ b/src/libcalamares/locale/Tests.cpp @@ -16,6 +16,7 @@ #include "CalamaresVersion.h" #include "GlobalStorage.h" #include "utils/Logger.h" +#include "utils/Retranslator.h" #include @@ -33,6 +34,7 @@ private Q_SLOTS: void testTranslatableLanguages(); void testTranslatableConfig1(); void testTranslatableConfig2(); + void testTranslatableConfigContext(); void testLanguageScripts(); void testEsperanto(); @@ -246,6 +248,32 @@ LocaleTests::testTranslatableConfig2() QCOMPARE( ts3.count(), 1 ); // The empty string } +void +LocaleTests::testTranslatableConfigContext() +{ + using TS = CalamaresUtils::Locale::TranslatedString; + + const QString original( "Quit" ); + TS quitUntranslated( original ); + TS quitTranslated( original, metaObject()->className() ); + + QCOMPARE( quitUntranslated.get(), original ); + QCOMPARE( quitTranslated.get(), original ); + + // Load translation data from QRC + QVERIFY( QFile::exists( ":/lang/localetest_nl.qm" ) ); + QTranslator t; + QVERIFY( t.load( QString( ":/lang/localetest_nl" ) ) ); + QCoreApplication::installTranslator( &t ); + + // Translation doesn't affect the one without context + QCOMPARE( quitUntranslated.get(), original ); + // But the translation **does** affect this class' context + QCOMPARE( quitTranslated.get(), QStringLiteral( "Ophouden" ) ); + QCOMPARE( tr( "Quit" ), QStringLiteral( "Ophouden" ) ); +} + + void LocaleTests::testRegions() { diff --git a/src/libcalamares/testdata/localetest_nl.ts b/src/libcalamares/testdata/localetest_nl.ts new file mode 100644 index 000000000..65a3a284b --- /dev/null +++ b/src/libcalamares/testdata/localetest_nl.ts @@ -0,0 +1,15 @@ + + + + + + LocaleTests + + + Quit + Ophouden + + +