[locale] Add test for language-mapping
Adds specific data from KDE neon and expected mappings. The test fails right now because the mapping is incorrect.
This commit is contained in:
parent
6dbf9de06e
commit
f7a7ad9943
@ -11,7 +11,9 @@
|
|||||||
#include "LocaleConfiguration.h"
|
#include "LocaleConfiguration.h"
|
||||||
#include "timezonewidget/TimeZoneImage.h"
|
#include "timezonewidget/TimeZoneImage.h"
|
||||||
|
|
||||||
|
#include "Settings.h"
|
||||||
#include "locale/TimeZone.h"
|
#include "locale/TimeZone.h"
|
||||||
|
#include "locale/TranslationsModel.h"
|
||||||
#include "utils/Logger.h"
|
#include "utils/Logger.h"
|
||||||
|
|
||||||
#include <QtTest/QtTest>
|
#include <QtTest/QtTest>
|
||||||
@ -43,6 +45,15 @@ private Q_SLOTS:
|
|||||||
void testLanguageDetection_data();
|
void testLanguageDetection_data();
|
||||||
void testLanguageDetection();
|
void testLanguageDetection();
|
||||||
void testLanguageDetectionValencia();
|
void testLanguageDetectionValencia();
|
||||||
|
|
||||||
|
// Check realistic language mapping for issue 2008
|
||||||
|
void testKDENeonLanguageData();
|
||||||
|
void testLanguageMapping_data();
|
||||||
|
void testLanguageMapping();
|
||||||
|
|
||||||
|
private:
|
||||||
|
QStringList m_KDEneonLocales;
|
||||||
|
QStringList m_FreeBSDLocales;
|
||||||
};
|
};
|
||||||
|
|
||||||
QTEST_MAIN( LocaleTests )
|
QTEST_MAIN( LocaleTests )
|
||||||
@ -55,6 +66,12 @@ LocaleTests::~LocaleTests() {}
|
|||||||
void
|
void
|
||||||
LocaleTests::initTestCase()
|
LocaleTests::initTestCase()
|
||||||
{
|
{
|
||||||
|
Logger::setupLogLevel( Logger::LOGDEBUG );
|
||||||
|
const auto* settings = Calamares::Settings::instance();
|
||||||
|
if ( !settings )
|
||||||
|
{
|
||||||
|
(void)new Calamares::Settings( true );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -353,6 +370,78 @@ LocaleTests::testLanguageDetectionValencia()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static QStringList
|
||||||
|
splitTestFileIntoLines( const QString& filename )
|
||||||
|
{
|
||||||
|
// BUILD_AS_TEST is the source-directory path
|
||||||
|
const QFileInfo fi( QString( "%1/tests/%2" ).arg( BUILD_AS_TEST, filename ) );
|
||||||
|
const QString path = fi.absoluteFilePath();
|
||||||
|
QFile testData( path );
|
||||||
|
if ( testData.open( QIODevice::ReadOnly ) )
|
||||||
|
{
|
||||||
|
return QString::fromUtf8( testData.readAll() ).split( '\n', Qt::SkipEmptyParts );
|
||||||
|
}
|
||||||
|
return QStringList {};
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
LocaleTests::testKDENeonLanguageData()
|
||||||
|
{
|
||||||
|
const QStringList neonLocales = splitTestFileIntoLines( QStringLiteral( "locale-data-neon" ) );
|
||||||
|
cDebug() << "Loaded KDE neon locales test data" << neonLocales.front() << "to" << neonLocales.back();
|
||||||
|
QCOMPARE( neonLocales.length(), 318 ); // wc -l tells me 318 lines
|
||||||
|
|
||||||
|
m_KDEneonLocales = neonLocales;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
LocaleTests::testLanguageMapping_data()
|
||||||
|
{
|
||||||
|
QTest::addColumn< QString >( "selectedLanguage" );
|
||||||
|
QTest::addColumn< QString >( "KDEneonLanguage" );
|
||||||
|
|
||||||
|
// Tired of writing QString or QStringLiteral all the time.
|
||||||
|
auto l = []( const char* p ) { return QString::fromUtf8( p ); };
|
||||||
|
|
||||||
|
// The KDEneon columns include the .UTF-8 from the source data
|
||||||
|
//
|
||||||
|
// Each column shows how a language -- which can be selected from the
|
||||||
|
// welcome page, and is inserted into GS as the language key that
|
||||||
|
// Calamares knows -- should be mapped to a supported system locale.
|
||||||
|
//
|
||||||
|
// All the mappings are for ".. in NL", which can trigger minor variation
|
||||||
|
// if there are languages with a _NL variant (e.g. nl_NL and nl_BE).
|
||||||
|
|
||||||
|
// clang-format off
|
||||||
|
QTest::newRow( "en " ) << l( "en" ) << l( "en_US.UTF-8" );
|
||||||
|
QTest::newRow( "en_GB" ) << l( "en_GB" ) << l( "en_GB.UTF-8" );
|
||||||
|
QTest::newRow( "ca " ) << l( "ca" ) << l( "ca_ES.UTF-8" );
|
||||||
|
QTest::newRow( "ca@vl" ) << l( "ca@valencia" ) << l( "ca_ES@valencia" );
|
||||||
|
QTest::newRow( "sr " ) << l( "sr" ) << l( "sr_RS" );
|
||||||
|
QTest::newRow( "sr@lt" ) << l( "sr@latin" ) << l( "sr_RS@latin" );
|
||||||
|
QTest::newRow( "pt_PT" ) << l( "pt_PT" ) << l( "pt_PT.UTF-8" );
|
||||||
|
QTest::newRow( "pt_BR" ) << l( "pt_BR" ) << l( "pt_BR.UTF-8" );
|
||||||
|
QTest::newRow( "nl " ) << l( "nl" ) << l( "nl_NL.UTF-8" );
|
||||||
|
QTest::newRow( "zh_TW" ) << l( "zh_TW" ) << l( "zh_TW.UTF-8" );
|
||||||
|
// clang-format on
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
LocaleTests::testLanguageMapping()
|
||||||
|
{
|
||||||
|
QVERIFY( !m_KDEneonLocales.isEmpty() );
|
||||||
|
|
||||||
|
QFETCH( QString, selectedLanguage );
|
||||||
|
QFETCH( QString, KDEneonLanguage );
|
||||||
|
|
||||||
|
QVERIFY( Calamares::Locale::availableLanguages().contains( selectedLanguage ) );
|
||||||
|
|
||||||
|
const auto r = LocaleConfiguration::fromLanguageAndLocation(
|
||||||
|
( selectedLanguage ), m_KDEneonLocales, QStringLiteral( "NL" ) );
|
||||||
|
QCOMPARE( r.language(), KDEneonLanguage );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#include "utils/moc-warnings.h"
|
#include "utils/moc-warnings.h"
|
||||||
|
|
||||||
|
318
src/modules/locale/tests/locale-data-neon
Normal file
318
src/modules/locale/tests/locale-data-neon
Normal file
@ -0,0 +1,318 @@
|
|||||||
|
aa_DJ.UTF-8
|
||||||
|
aa_ER
|
||||||
|
aa_ER@saaho
|
||||||
|
aa_ET
|
||||||
|
af_ZA.UTF-8
|
||||||
|
agr_PE
|
||||||
|
ak_GH
|
||||||
|
am_ET
|
||||||
|
an_ES.UTF-8
|
||||||
|
anp_IN
|
||||||
|
ar_AE.UTF-8
|
||||||
|
ar_BH.UTF-8
|
||||||
|
ar_DZ.UTF-8
|
||||||
|
ar_EG.UTF-8
|
||||||
|
ar_IN
|
||||||
|
ar_IQ.UTF-8
|
||||||
|
ar_JO.UTF-8
|
||||||
|
ar_KW.UTF-8
|
||||||
|
ar_LB.UTF-8
|
||||||
|
ar_LY.UTF-8
|
||||||
|
ar_MA.UTF-8
|
||||||
|
ar_OM.UTF-8
|
||||||
|
ar_QA.UTF-8
|
||||||
|
ar_SA.UTF-8
|
||||||
|
ar_SD.UTF-8
|
||||||
|
ar_SS
|
||||||
|
ar_SY.UTF-8
|
||||||
|
ar_TN.UTF-8
|
||||||
|
ar_YE.UTF-8
|
||||||
|
ayc_PE
|
||||||
|
az_AZ
|
||||||
|
az_IR
|
||||||
|
as_IN
|
||||||
|
ast_ES.UTF-8
|
||||||
|
be_BY.UTF-8
|
||||||
|
be_BY@latin
|
||||||
|
bem_ZM
|
||||||
|
ber_DZ
|
||||||
|
ber_MA
|
||||||
|
bg_BG.UTF-8
|
||||||
|
bhb_IN.UTF-8
|
||||||
|
bho_IN
|
||||||
|
bho_NP
|
||||||
|
bi_VU
|
||||||
|
bn_BD
|
||||||
|
bn_IN
|
||||||
|
bo_CN
|
||||||
|
bo_IN
|
||||||
|
br_FR.UTF-8
|
||||||
|
brx_IN
|
||||||
|
bs_BA.UTF-8
|
||||||
|
byn_ER
|
||||||
|
ca_AD.UTF-8
|
||||||
|
ca_ES.UTF-8
|
||||||
|
ca_ES@valencia
|
||||||
|
ca_FR.UTF-8
|
||||||
|
ca_IT.UTF-8
|
||||||
|
ce_RU
|
||||||
|
ckb_IQ
|
||||||
|
chr_US
|
||||||
|
cmn_TW
|
||||||
|
crh_UA
|
||||||
|
cs_CZ.UTF-8
|
||||||
|
csb_PL
|
||||||
|
cv_RU
|
||||||
|
cy_GB.UTF-8
|
||||||
|
da_DK.UTF-8
|
||||||
|
de_AT.UTF-8
|
||||||
|
de_BE.UTF-8
|
||||||
|
de_CH.UTF-8
|
||||||
|
de_DE.UTF-8
|
||||||
|
de_IT.UTF-8
|
||||||
|
de_LI.UTF-8
|
||||||
|
de_LU.UTF-8
|
||||||
|
doi_IN
|
||||||
|
dsb_DE
|
||||||
|
dv_MV
|
||||||
|
dz_BT
|
||||||
|
el_GR.UTF-8
|
||||||
|
el_CY.UTF-8
|
||||||
|
en_AG
|
||||||
|
en_AU.UTF-8
|
||||||
|
en_BW.UTF-8
|
||||||
|
en_CA.UTF-8
|
||||||
|
en_DK.UTF-8
|
||||||
|
en_GB.UTF-8
|
||||||
|
en_HK.UTF-8
|
||||||
|
en_IE.UTF-8
|
||||||
|
en_IL
|
||||||
|
en_IN
|
||||||
|
en_NG
|
||||||
|
en_NZ.UTF-8
|
||||||
|
en_PH.UTF-8
|
||||||
|
en_SC.UTF-8
|
||||||
|
en_SG.UTF-8
|
||||||
|
en_US.UTF-8
|
||||||
|
en_ZA.UTF-8
|
||||||
|
en_ZM
|
||||||
|
en_ZW.UTF-8
|
||||||
|
eo
|
||||||
|
eo_US.UTF-8
|
||||||
|
es_AR.UTF-8
|
||||||
|
es_BO.UTF-8
|
||||||
|
es_CL.UTF-8
|
||||||
|
es_CO.UTF-8
|
||||||
|
es_CR.UTF-8
|
||||||
|
es_CU
|
||||||
|
es_DO.UTF-8
|
||||||
|
es_EC.UTF-8
|
||||||
|
es_ES.UTF-8
|
||||||
|
es_GT.UTF-8
|
||||||
|
es_HN.UTF-8
|
||||||
|
es_MX.UTF-8
|
||||||
|
es_NI.UTF-8
|
||||||
|
es_PA.UTF-8
|
||||||
|
es_PE.UTF-8
|
||||||
|
es_PR.UTF-8
|
||||||
|
es_PY.UTF-8
|
||||||
|
es_SV.UTF-8
|
||||||
|
es_US.UTF-8
|
||||||
|
es_UY.UTF-8
|
||||||
|
es_VE.UTF-8
|
||||||
|
et_EE.UTF-8
|
||||||
|
eu_ES.UTF-8
|
||||||
|
eu_FR.UTF-8
|
||||||
|
fa_IR
|
||||||
|
ff_SN
|
||||||
|
fi_FI.UTF-8
|
||||||
|
fil_PH
|
||||||
|
fo_FO.UTF-8
|
||||||
|
fr_BE.UTF-8
|
||||||
|
fr_CA.UTF-8
|
||||||
|
fr_CH.UTF-8
|
||||||
|
fr_FR.UTF-8
|
||||||
|
fr_LU.UTF-8
|
||||||
|
fur_IT
|
||||||
|
fy_NL
|
||||||
|
fy_DE
|
||||||
|
ga_IE.UTF-8
|
||||||
|
gd_GB.UTF-8
|
||||||
|
gez_ER
|
||||||
|
gez_ER@abegede
|
||||||
|
gez_ET
|
||||||
|
gez_ET@abegede
|
||||||
|
gl_ES.UTF-8
|
||||||
|
gu_IN
|
||||||
|
gv_GB.UTF-8
|
||||||
|
ha_NG
|
||||||
|
hak_TW
|
||||||
|
he_IL.UTF-8
|
||||||
|
hi_IN
|
||||||
|
hif_FJ
|
||||||
|
hne_IN
|
||||||
|
hr_HR.UTF-8
|
||||||
|
hsb_DE.UTF-8
|
||||||
|
ht_HT
|
||||||
|
hu_HU.UTF-8
|
||||||
|
hy_AM
|
||||||
|
ia_FR
|
||||||
|
id_ID.UTF-8
|
||||||
|
ig_NG
|
||||||
|
ik_CA
|
||||||
|
is_IS.UTF-8
|
||||||
|
it_CH.UTF-8
|
||||||
|
it_IT.UTF-8
|
||||||
|
iu_CA
|
||||||
|
ja_JP.UTF-8
|
||||||
|
ka_GE.UTF-8
|
||||||
|
kab_DZ
|
||||||
|
kk_KZ.UTF-8
|
||||||
|
kl_GL.UTF-8
|
||||||
|
km_KH
|
||||||
|
kn_IN
|
||||||
|
ko_KR.UTF-8
|
||||||
|
kok_IN
|
||||||
|
ks_IN
|
||||||
|
ks_IN@devanagari
|
||||||
|
ku_TR.UTF-8
|
||||||
|
kw_GB.UTF-8
|
||||||
|
ky_KG
|
||||||
|
lb_LU
|
||||||
|
lg_UG.UTF-8
|
||||||
|
li_BE
|
||||||
|
li_NL
|
||||||
|
lij_IT
|
||||||
|
ln_CD
|
||||||
|
lo_LA
|
||||||
|
lt_LT.UTF-8
|
||||||
|
lv_LV.UTF-8
|
||||||
|
lzh_TW
|
||||||
|
mag_IN
|
||||||
|
mai_IN
|
||||||
|
mai_NP
|
||||||
|
mfe_MU
|
||||||
|
mg_MG.UTF-8
|
||||||
|
mhr_RU
|
||||||
|
mi_NZ.UTF-8
|
||||||
|
miq_NI
|
||||||
|
mjw_IN
|
||||||
|
mk_MK.UTF-8
|
||||||
|
ml_IN
|
||||||
|
mn_MN
|
||||||
|
mni_IN
|
||||||
|
mnw_MM
|
||||||
|
mr_IN
|
||||||
|
ms_MY.UTF-8
|
||||||
|
mt_MT.UTF-8
|
||||||
|
my_MM
|
||||||
|
nan_TW
|
||||||
|
nan_TW@latin
|
||||||
|
nb_NO.UTF-8
|
||||||
|
nds_DE
|
||||||
|
nds_NL
|
||||||
|
ne_NP
|
||||||
|
nhn_MX
|
||||||
|
niu_NU
|
||||||
|
niu_NZ
|
||||||
|
nl_AW
|
||||||
|
nl_BE.UTF-8
|
||||||
|
nl_NL.UTF-8
|
||||||
|
nn_NO.UTF-8
|
||||||
|
nr_ZA
|
||||||
|
nso_ZA
|
||||||
|
oc_FR.UTF-8
|
||||||
|
om_ET
|
||||||
|
om_KE.UTF-8
|
||||||
|
or_IN
|
||||||
|
os_RU
|
||||||
|
pa_IN
|
||||||
|
pa_PK
|
||||||
|
pap_AW
|
||||||
|
pap_CW
|
||||||
|
pl_PL.UTF-8
|
||||||
|
ps_AF
|
||||||
|
pt_BR.UTF-8
|
||||||
|
pt_PT.UTF-8
|
||||||
|
quz_PE
|
||||||
|
raj_IN
|
||||||
|
ro_RO.UTF-8
|
||||||
|
ru_RU.UTF-8
|
||||||
|
ru_UA.UTF-8
|
||||||
|
rw_RW
|
||||||
|
sa_IN
|
||||||
|
sah_RU
|
||||||
|
sat_IN
|
||||||
|
sc_IT
|
||||||
|
sd_IN
|
||||||
|
sd_IN@devanagari
|
||||||
|
sd_PK
|
||||||
|
se_NO
|
||||||
|
sgs_LT
|
||||||
|
shn_MM
|
||||||
|
shs_CA
|
||||||
|
si_LK
|
||||||
|
sid_ET
|
||||||
|
sk_SK.UTF-8
|
||||||
|
sl_SI.UTF-8
|
||||||
|
sm_WS
|
||||||
|
so_DJ.UTF-8
|
||||||
|
so_ET
|
||||||
|
so_KE.UTF-8
|
||||||
|
so_SO.UTF-8
|
||||||
|
sq_AL.UTF-8
|
||||||
|
sq_MK
|
||||||
|
sr_ME
|
||||||
|
sr_RS
|
||||||
|
sr_RS@latin
|
||||||
|
ss_ZA
|
||||||
|
st_ZA.UTF-8
|
||||||
|
sv_FI.UTF-8
|
||||||
|
sv_SE.UTF-8
|
||||||
|
sw_KE
|
||||||
|
sw_TZ
|
||||||
|
szl_PL
|
||||||
|
ta_IN
|
||||||
|
ta_LK
|
||||||
|
tcy_IN.UTF-8
|
||||||
|
te_IN
|
||||||
|
tg_TJ.UTF-8
|
||||||
|
th_TH.UTF-8
|
||||||
|
the_NP
|
||||||
|
ti_ER
|
||||||
|
ti_ET
|
||||||
|
tig_ER
|
||||||
|
tk_TM
|
||||||
|
tl_PH.UTF-8
|
||||||
|
tn_ZA
|
||||||
|
to_TO
|
||||||
|
tpi_PG
|
||||||
|
tr_CY.UTF-8
|
||||||
|
tr_TR.UTF-8
|
||||||
|
ts_ZA
|
||||||
|
tt_RU
|
||||||
|
tt_RU@iqtelif
|
||||||
|
ug_CN
|
||||||
|
ug_CN@latin
|
||||||
|
uk_UA.UTF-8
|
||||||
|
unm_US
|
||||||
|
ur_IN
|
||||||
|
ur_PK
|
||||||
|
uz_UZ.UTF-8
|
||||||
|
uz_UZ@cyrillic
|
||||||
|
ve_ZA
|
||||||
|
vi_VN
|
||||||
|
wa_BE.UTF-8
|
||||||
|
wae_CH
|
||||||
|
wal_ET
|
||||||
|
wo_SN
|
||||||
|
xh_ZA.UTF-8
|
||||||
|
yi_US.UTF-8
|
||||||
|
yo_NG
|
||||||
|
yue_HK
|
||||||
|
yuw_PG
|
||||||
|
zh_CN.UTF-8
|
||||||
|
zh_HK.UTF-8
|
||||||
|
zh_SG.UTF-8
|
||||||
|
zh_TW.UTF-8
|
||||||
|
zu_ZA.UTF-8
|
Loading…
Reference in New Issue
Block a user