D14779: Fix 'kformattest fails with installed kcoreaddons language package'
Albert Astals Cid
noreply at phabricator.kde.org
Thu Aug 16 14:34:03 BST 2018
aacid added a comment.
In D14779#309943 <https://phabricator.kde.org/D14779#309943>, @habacker wrote:
> With the drawback that the qm file need to be generated on each build and the po file needs to be updated on any translations change in the test app
>
> BTW: I tried your approach by
>
> 1. downloaded po file from https://websvn.kde.org/trunk/l10n-kf5/en/messages/frameworks/kcoreaddons5_qt.po?revision=1522662&view=markup
> 2. did run lrelease on that file and placed it into kcoreaddons source dir as kcoreaddons5_qt.qm
> 3. added to top level CMakelists.txt
>
> `add_definitions(-DCMAKE_SOURCE_DIR="${CMAKE_SOURCE_DIR}")`
> 4. add to autotests/kformattest.cpp
>
> ```void KFormatTest::initTestCase() { QLocale::setDefault(QLocale::C); QTranslator *l = new QTranslator(); l->load(QStringLiteral(CMAKE_SOURCE_DIR "/kcoreaddons5_qt.qm")); QCoreApplication::installTranslator(l); } ``` without kcoreaddons-lang package installed the test case returns on a system with installed de_DE
>
> ```strace -e trace=file bin/kformattest 2>&1 | grep \.qm ... access("/home/xxx/src/kf5/kcoreaddons/kcoreaddons5_qt.qm", R_OK) = 0 stat("/home/xxx/src/kf5/kcoreaddons/kcoreaddons5_qt.qm", {st_mode=S_IFREG|0644, st_size=729, ...}) = 0 open("/home/xxx/src/kf5/kcoreaddons/kcoreaddons5_qt.qm", O_RDONLY|O_CLOEXEC) = 5 ```
>
> ```~/src/kf5/kcoreaddons-build> bin/kformattest
> - Start testing of KFormatTest ********* Config: Using QtTest library 5.11.1, Qt 5.11.1 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 4.8.5) PASS : KFormatTest::initTestCase() PASS : KFormatTest::formatByteSize() PASS : KFormatTest::formatDuration() FAIL! : KFormatTest::formatDecimalDuration() Compared values are not the same Actual (format.formatDecimalDuration(10)) : "10 milliseconds" Expected (QStringLiteral("10 millisecond(s)")): "10 millisecond(s)" Loc: [/home/xxx/src/kf5/kcoreaddons/autotests/kformattest.cpp(302)] FAIL! : KFormatTest::formatSpelloutDuration() Compared values are not the same Actual (format.formatSpelloutDuration(1000)): "1 second" Expected (QStringLiteral("1 second(s)")) : "1 second(s)" Loc: [/home/xxx/src/kf5/kcoreaddons/autotests/kformattest.cpp(318)] PASS : KFormatTest::formatRelativeDate() PASS : KFormatTest::formatValue() PASS : KFormatTest::cleanupTestCase() Totals: 6 passed, 2 failed, 0 skipped, 0 blacklisted, 1ms
> - Finished testing of KFormatTest ********* ``` with installed kcoreaddons-lang
>
> ```~/src/kf5/kcoreaddons-build> strace -e trace=file bin/kformattest 2>&1 | grep \.qm access("/usr/share/locale/en/LC_MESSAGES/kcoreaddons5_qt.qm", R_OK) = 0 open("/usr/share/locale/en/LC_MESSAGES/kcoreaddons5_qt.qm", O_RDONLY|O_CLOEXEC) = 5 access("/usr/share/locale/de/LC_MESSAGES/kcoreaddons5_qt.qm", R_OK) = 0 open("/usr/share/locale/de/LC_MESSAGES/kcoreaddons5_qt.qm", O_RDONLY|O_CLOEXEC) = 5 access("/home/xxx/src/kf5/kcoreaddons/kcoreaddons5_qt.qm", R_OK) = 0 stat("/home/xxx/src/kf5/kcoreaddons/kcoreaddons5_qt.qm", {st_mode=S_IFREG|0644, st_size=729, ...}) = 0 open("/home/xxx/src/kf5/kcoreaddons/kcoreaddons5_qt.qm", O_RDONLY|O_CLOEXEC) = 5
>
> ```~/src/kf5/kcoreaddons-build> bin/kformattest
> - Start testing of KFormatTest ********* Config: Using QtTest library 5.11.1, Qt 5.11.1 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 4.8.5) PASS : KFormatTest::initTestCase() PASS : KFormatTest::formatByteSize() FAIL! : KFormatTest::formatDuration() Compared values are not the same Actual (format.formatDuration(singleSecond, options)): "0 h 00 m 04 s" Expected (QStringLiteral("0h00m04s")) : "0h00m04s" Loc: [/home/xxx/src/kf5/kcoreaddons/autotests/kformattest.cpp(226)] FAIL! : KFormatTest::formatDecimalDuration() Compared values are not the same Actual (format.formatDecimalDuration(10)) : "10 milliseconds" Expected (QStringLiteral("10 millisecond(s)")): "10 millisecond(s)" Loc: [/home/xxx/src/kf5/kcoreaddons/autotests/kformattest.cpp(302)] FAIL! : KFormatTest::formatSpelloutDuration() Compared values are not the same Actual (format.formatSpelloutDuration(1000)): "1 second" Expected (QStringLiteral("1 second(s)")) : "1 second(s)" Loc: [/home/xxx/src/kf5/kcoreaddons/autotests/kformattest.cpp(318)] FAIL! : KFormatTest::formatRelativeDate() Compared values are not the same Actual (format.formatRelativeDate(testDate, QLocale::LongFormat)): "Heute" Expected (QStringLiteral("Today")) : "Today" Loc: [/home/xxx/src/kf5/kcoreaddons/autotests/kformattest.cpp(341)] PASS : KFormatTest::formatValue() PASS : KFormatTest::cleanupTestCase() Totals: 4 passed, 4 failed, 0 skipped, 0 blacklisted, 1ms
> - Finished testing of KFormatTest *********
>
> Seems not to work without further changes
The failures were expected, which is very weird is that you're getting different failures, i.e you're still getting Heute instead of Today even if you set the locale to C.
Did you have that problem when you made ecm not create a translator?
> What is the drawback to not load any translation in the ECM qm file loader with using QLocale::C as default locale ?
I've seen some systems that default to C locale, and I would prefer them to still have the english translation working.
Cheers,
Albert
REPOSITORY
R244 KCoreAddons
REVISION DETAIL
https://phabricator.kde.org/D14779
To: habacker, #frameworks
Cc: aacid, kde-frameworks-devel, michaelh, ngraham, bruns
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-frameworks-devel/attachments/20180816/168b225b/attachment-0001.html>
More information about the Kde-frameworks-devel
mailing list