mirror of
https://github.com/CachyOS/New-Cli-Installer.git
synced 2025-01-23 14:32:22 +08:00
👷 gucc: improve test coverage for locale
This commit is contained in:
parent
f8fdeb28ea
commit
4b35d00724
@ -8,6 +8,10 @@ namespace gucc::locale {
|
||||
// Set system language
|
||||
auto set_locale(std::string_view locale, std::string_view mountpoint) noexcept -> bool;
|
||||
|
||||
// Prepare system language.
|
||||
// Sets without updating system locale
|
||||
auto prepare_locale_set(std::string_view locale, std::string_view mountpoint) noexcept -> bool;
|
||||
|
||||
} // namespace gucc::locale
|
||||
|
||||
#endif // LOCALE_HPP
|
||||
|
@ -12,7 +12,7 @@ using namespace std::string_view_literals;
|
||||
|
||||
namespace gucc::locale {
|
||||
|
||||
auto set_locale(std::string_view locale, std::string_view mountpoint) noexcept -> bool {
|
||||
auto prepare_locale_set(std::string_view locale, std::string_view mountpoint) noexcept -> bool {
|
||||
const auto& locale_config_path = fmt::format(FMT_COMPILE("{}/etc/locale.conf"), mountpoint);
|
||||
const auto& locale_gen_path = fmt::format(FMT_COMPILE("{}/etc/locale.gen"), mountpoint);
|
||||
|
||||
@ -40,13 +40,23 @@ LC_MESSAGES="{0}"
|
||||
// TODO(vnepogodin): refactor and make backups of locale config and locale gen
|
||||
utils::exec(fmt::format(FMT_COMPILE("sed -i \"s/#{0}/{0}/\" {1}"), locale, locale_gen_path));
|
||||
|
||||
// NOTE: maybe we should also write into /etc/default/locale if /etc/default exists and is a dir?
|
||||
return true;
|
||||
}
|
||||
|
||||
auto set_locale(std::string_view locale, std::string_view mountpoint) noexcept -> bool {
|
||||
// Prepare locale
|
||||
if (!locale::prepare_locale_set(locale, mountpoint)) {
|
||||
spdlog::error("Failed to prepare locale files for '{}'", locale);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Generate locales
|
||||
if (!utils::arch_chroot_checked("locale-gen", mountpoint)) {
|
||||
spdlog::error("Failed to run locale-gen with locale '{}'", locale);
|
||||
return false;
|
||||
}
|
||||
|
||||
// NOTE: maybe we should also write into /etc/default/locale if /etc/default exists and is a dir?
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -4,6 +4,8 @@
|
||||
|
||||
file(GLOB files unit-*.cpp)
|
||||
|
||||
set(GUCC_TEST_DIR "${CMAKE_CURRENT_SOURCE_DIR}/")
|
||||
|
||||
foreach(file ${files})
|
||||
get_filename_component(file_basename ${file} NAME_WE)
|
||||
string(REGEX REPLACE "unit-([^$]+)" "test-\\1" testcase ${file_basename})
|
||||
@ -13,5 +15,6 @@ foreach(file ${files})
|
||||
$<$<NOT:$<CXX_COMPILER_ID:MSVC>>:-Wno-deprecated;-Wno-float-equal>
|
||||
$<$<CXX_COMPILER_ID:GNU>:-Wno-deprecated-declarations>
|
||||
)
|
||||
add_definitions(-DGUCC_TEST_DIR="${GUCC_TEST_DIR}")
|
||||
target_link_libraries(${testcase} PRIVATE project_warnings project_options gucc::gucc)
|
||||
endforeach()
|
||||
|
512
gucc/tests/files/locale.gen
Normal file
512
gucc/tests/files/locale.gen
Normal file
@ -0,0 +1,512 @@
|
||||
# Configuration file for locale-gen
|
||||
#
|
||||
# lists of locales that are to be generated by the locale-gen command.
|
||||
#
|
||||
# Each line is of the form:
|
||||
#
|
||||
# <locale> <charset>
|
||||
#
|
||||
# where <locale> is one of the locales given in /usr/share/i18n/locales
|
||||
# and <charset> is one of the character sets listed in /usr/share/i18n/charmaps
|
||||
#
|
||||
# Examples:
|
||||
# en_US ISO-8859-1
|
||||
# en_US.UTF-8 UTF-8
|
||||
# de_DE ISO-8859-1
|
||||
# de_DE@euro ISO-8859-15
|
||||
#
|
||||
# The locale-gen command will generate all the locales,
|
||||
# placing them in /usr/lib/locale.
|
||||
#
|
||||
# A list of supported locales is included in this file.
|
||||
# Uncomment the ones you need.
|
||||
#
|
||||
#aa_DJ.UTF-8 UTF-8
|
||||
#aa_DJ ISO-8859-1
|
||||
#aa_ER UTF-8
|
||||
#aa_ER@saaho UTF-8
|
||||
#aa_ET UTF-8
|
||||
#af_ZA.UTF-8 UTF-8
|
||||
#af_ZA ISO-8859-1
|
||||
#agr_PE UTF-8
|
||||
#ak_GH UTF-8
|
||||
#am_ET UTF-8
|
||||
#an_ES.UTF-8 UTF-8
|
||||
#an_ES ISO-8859-15
|
||||
#anp_IN UTF-8
|
||||
#ar_AE.UTF-8 UTF-8
|
||||
#ar_AE ISO-8859-6
|
||||
#ar_BH.UTF-8 UTF-8
|
||||
#ar_BH ISO-8859-6
|
||||
#ar_DZ.UTF-8 UTF-8
|
||||
#ar_DZ ISO-8859-6
|
||||
#ar_EG.UTF-8 UTF-8
|
||||
#ar_EG ISO-8859-6
|
||||
#ar_IN UTF-8
|
||||
#ar_IQ.UTF-8 UTF-8
|
||||
#ar_IQ ISO-8859-6
|
||||
#ar_JO.UTF-8 UTF-8
|
||||
#ar_JO ISO-8859-6
|
||||
#ar_KW.UTF-8 UTF-8
|
||||
#ar_KW ISO-8859-6
|
||||
#ar_LB.UTF-8 UTF-8
|
||||
#ar_LB ISO-8859-6
|
||||
#ar_LY.UTF-8 UTF-8
|
||||
#ar_LY ISO-8859-6
|
||||
#ar_MA.UTF-8 UTF-8
|
||||
#ar_MA ISO-8859-6
|
||||
#ar_OM.UTF-8 UTF-8
|
||||
#ar_OM ISO-8859-6
|
||||
#ar_QA.UTF-8 UTF-8
|
||||
#ar_QA ISO-8859-6
|
||||
#ar_SA.UTF-8 UTF-8
|
||||
#ar_SA ISO-8859-6
|
||||
#ar_SD.UTF-8 UTF-8
|
||||
#ar_SD ISO-8859-6
|
||||
#ar_SS UTF-8
|
||||
#ar_SY.UTF-8 UTF-8
|
||||
#ar_SY ISO-8859-6
|
||||
#ar_TN.UTF-8 UTF-8
|
||||
#ar_TN ISO-8859-6
|
||||
#ar_YE.UTF-8 UTF-8
|
||||
#ar_YE ISO-8859-6
|
||||
#ayc_PE UTF-8
|
||||
#az_AZ UTF-8
|
||||
#az_IR UTF-8
|
||||
#as_IN UTF-8
|
||||
#ast_ES.UTF-8 UTF-8
|
||||
#ast_ES ISO-8859-15
|
||||
#be_BY.UTF-8 UTF-8
|
||||
#be_BY CP1251
|
||||
#be_BY@latin UTF-8
|
||||
#bem_ZM UTF-8
|
||||
#ber_DZ UTF-8
|
||||
#ber_MA UTF-8
|
||||
#bg_BG.UTF-8 UTF-8
|
||||
#bg_BG CP1251
|
||||
#bhb_IN.UTF-8 UTF-8
|
||||
#bho_IN UTF-8
|
||||
#bho_NP UTF-8
|
||||
#bi_VU UTF-8
|
||||
#bn_BD UTF-8
|
||||
#bn_IN UTF-8
|
||||
#bo_CN UTF-8
|
||||
#bo_IN UTF-8
|
||||
#br_FR.UTF-8 UTF-8
|
||||
#br_FR ISO-8859-1
|
||||
#br_FR@euro ISO-8859-15
|
||||
#brx_IN UTF-8
|
||||
#bs_BA.UTF-8 UTF-8
|
||||
#bs_BA ISO-8859-2
|
||||
#byn_ER UTF-8
|
||||
#C.UTF-8 UTF-8
|
||||
#ca_AD.UTF-8 UTF-8
|
||||
#ca_AD ISO-8859-15
|
||||
#ca_ES.UTF-8 UTF-8
|
||||
#ca_ES ISO-8859-1
|
||||
#ca_ES@euro ISO-8859-15
|
||||
#ca_ES@valencia UTF-8
|
||||
#ca_FR.UTF-8 UTF-8
|
||||
#ca_FR ISO-8859-15
|
||||
#ca_IT.UTF-8 UTF-8
|
||||
#ca_IT ISO-8859-15
|
||||
#ce_RU UTF-8
|
||||
#chr_US UTF-8
|
||||
#ckb_IQ UTF-8
|
||||
#cmn_TW UTF-8
|
||||
#crh_UA UTF-8
|
||||
#cs_CZ.UTF-8 UTF-8
|
||||
#cs_CZ ISO-8859-2
|
||||
#csb_PL UTF-8
|
||||
#cv_RU UTF-8
|
||||
#cy_GB.UTF-8 UTF-8
|
||||
#cy_GB ISO-8859-14
|
||||
#da_DK.UTF-8 UTF-8
|
||||
#da_DK ISO-8859-1
|
||||
#de_AT.UTF-8 UTF-8
|
||||
#de_AT ISO-8859-1
|
||||
#de_AT@euro ISO-8859-15
|
||||
#de_BE.UTF-8 UTF-8
|
||||
#de_BE ISO-8859-1
|
||||
#de_BE@euro ISO-8859-15
|
||||
#de_CH.UTF-8 UTF-8
|
||||
#de_CH ISO-8859-1
|
||||
#de_DE.UTF-8 UTF-8
|
||||
#de_DE ISO-8859-1
|
||||
#de_DE@euro ISO-8859-15
|
||||
#de_IT.UTF-8 UTF-8
|
||||
#de_IT ISO-8859-1
|
||||
#de_LI.UTF-8 UTF-8
|
||||
#de_LU.UTF-8 UTF-8
|
||||
#de_LU ISO-8859-1
|
||||
#de_LU@euro ISO-8859-15
|
||||
#doi_IN UTF-8
|
||||
#dsb_DE UTF-8
|
||||
#dv_MV UTF-8
|
||||
#dz_BT UTF-8
|
||||
#el_GR.UTF-8 UTF-8
|
||||
#el_GR ISO-8859-7
|
||||
#el_GR@euro ISO-8859-7
|
||||
#el_CY.UTF-8 UTF-8
|
||||
#el_CY ISO-8859-7
|
||||
#en_AG UTF-8
|
||||
#en_AU.UTF-8 UTF-8
|
||||
#en_AU ISO-8859-1
|
||||
#en_BW.UTF-8 UTF-8
|
||||
#en_BW ISO-8859-1
|
||||
#en_CA.UTF-8 UTF-8
|
||||
#en_CA ISO-8859-1
|
||||
#en_DK.UTF-8 UTF-8
|
||||
#en_DK ISO-8859-1
|
||||
#en_GB.UTF-8 UTF-8
|
||||
#en_GB ISO-8859-1
|
||||
#en_HK.UTF-8 UTF-8
|
||||
#en_HK ISO-8859-1
|
||||
#en_IE.UTF-8 UTF-8
|
||||
#en_IE ISO-8859-1
|
||||
#en_IE@euro ISO-8859-15
|
||||
#en_IL UTF-8
|
||||
#en_IN UTF-8
|
||||
#en_NG UTF-8
|
||||
#en_NZ.UTF-8 UTF-8
|
||||
#en_NZ ISO-8859-1
|
||||
#en_PH.UTF-8 UTF-8
|
||||
#en_PH ISO-8859-1
|
||||
#en_SC.UTF-8 UTF-8
|
||||
#en_SG.UTF-8 UTF-8
|
||||
#en_SG ISO-8859-1
|
||||
#en_US.UTF-8 UTF-8
|
||||
#en_US ISO-8859-1
|
||||
#en_ZA.UTF-8 UTF-8
|
||||
#en_ZA ISO-8859-1
|
||||
#en_ZM UTF-8
|
||||
#en_ZW.UTF-8 UTF-8
|
||||
#en_ZW ISO-8859-1
|
||||
#eo UTF-8
|
||||
#es_AR.UTF-8 UTF-8
|
||||
#es_AR ISO-8859-1
|
||||
#es_BO.UTF-8 UTF-8
|
||||
#es_BO ISO-8859-1
|
||||
#es_CL.UTF-8 UTF-8
|
||||
#es_CL ISO-8859-1
|
||||
#es_CO.UTF-8 UTF-8
|
||||
#es_CO ISO-8859-1
|
||||
#es_CR.UTF-8 UTF-8
|
||||
#es_CR ISO-8859-1
|
||||
#es_CU UTF-8
|
||||
#es_DO.UTF-8 UTF-8
|
||||
#es_DO ISO-8859-1
|
||||
#es_EC.UTF-8 UTF-8
|
||||
#es_EC ISO-8859-1
|
||||
#es_ES.UTF-8 UTF-8
|
||||
#es_ES ISO-8859-1
|
||||
#es_ES@euro ISO-8859-15
|
||||
#es_GT.UTF-8 UTF-8
|
||||
#es_GT ISO-8859-1
|
||||
#es_HN.UTF-8 UTF-8
|
||||
#es_HN ISO-8859-1
|
||||
#es_MX.UTF-8 UTF-8
|
||||
#es_MX ISO-8859-1
|
||||
#es_NI.UTF-8 UTF-8
|
||||
#es_NI ISO-8859-1
|
||||
#es_PA.UTF-8 UTF-8
|
||||
#es_PA ISO-8859-1
|
||||
#es_PE.UTF-8 UTF-8
|
||||
#es_PE ISO-8859-1
|
||||
#es_PR.UTF-8 UTF-8
|
||||
#es_PR ISO-8859-1
|
||||
#es_PY.UTF-8 UTF-8
|
||||
#es_PY ISO-8859-1
|
||||
#es_SV.UTF-8 UTF-8
|
||||
#es_SV ISO-8859-1
|
||||
#es_US.UTF-8 UTF-8
|
||||
#es_US ISO-8859-1
|
||||
#es_UY.UTF-8 UTF-8
|
||||
#es_UY ISO-8859-1
|
||||
#es_VE.UTF-8 UTF-8
|
||||
#es_VE ISO-8859-1
|
||||
#et_EE.UTF-8 UTF-8
|
||||
#et_EE ISO-8859-1
|
||||
#et_EE.ISO-8859-15 ISO-8859-15
|
||||
#eu_ES.UTF-8 UTF-8
|
||||
#eu_ES ISO-8859-1
|
||||
#eu_ES@euro ISO-8859-15
|
||||
#fa_IR UTF-8
|
||||
#ff_SN UTF-8
|
||||
#fi_FI.UTF-8 UTF-8
|
||||
#fi_FI ISO-8859-1
|
||||
#fi_FI@euro ISO-8859-15
|
||||
#fil_PH UTF-8
|
||||
#fo_FO.UTF-8 UTF-8
|
||||
#fo_FO ISO-8859-1
|
||||
#fr_BE.UTF-8 UTF-8
|
||||
#fr_BE ISO-8859-1
|
||||
#fr_BE@euro ISO-8859-15
|
||||
#fr_CA.UTF-8 UTF-8
|
||||
#fr_CA ISO-8859-1
|
||||
#fr_CH.UTF-8 UTF-8
|
||||
#fr_CH ISO-8859-1
|
||||
#fr_FR.UTF-8 UTF-8
|
||||
#fr_FR ISO-8859-1
|
||||
#fr_FR@euro ISO-8859-15
|
||||
#fr_LU.UTF-8 UTF-8
|
||||
#fr_LU ISO-8859-1
|
||||
#fr_LU@euro ISO-8859-15
|
||||
#fur_IT UTF-8
|
||||
#fy_NL UTF-8
|
||||
#fy_DE UTF-8
|
||||
#ga_IE.UTF-8 UTF-8
|
||||
#ga_IE ISO-8859-1
|
||||
#ga_IE@euro ISO-8859-15
|
||||
#gd_GB.UTF-8 UTF-8
|
||||
#gd_GB ISO-8859-15
|
||||
#gez_ER UTF-8
|
||||
#gez_ER@abegede UTF-8
|
||||
#gez_ET UTF-8
|
||||
#gez_ET@abegede UTF-8
|
||||
#gl_ES.UTF-8 UTF-8
|
||||
#gl_ES ISO-8859-1
|
||||
#gl_ES@euro ISO-8859-15
|
||||
#gu_IN UTF-8
|
||||
#gv_GB.UTF-8 UTF-8
|
||||
#gv_GB ISO-8859-1
|
||||
#ha_NG UTF-8
|
||||
#hak_TW UTF-8
|
||||
#he_IL.UTF-8 UTF-8
|
||||
#he_IL ISO-8859-8
|
||||
#hi_IN UTF-8
|
||||
#hif_FJ UTF-8
|
||||
#hne_IN UTF-8
|
||||
#hr_HR.UTF-8 UTF-8
|
||||
#hr_HR ISO-8859-2
|
||||
#hsb_DE ISO-8859-2
|
||||
#hsb_DE.UTF-8 UTF-8
|
||||
#ht_HT UTF-8
|
||||
#hu_HU.UTF-8 UTF-8
|
||||
#hu_HU ISO-8859-2
|
||||
#hy_AM UTF-8
|
||||
#hy_AM.ARMSCII-8 ARMSCII-8
|
||||
#ia_FR UTF-8
|
||||
#id_ID.UTF-8 UTF-8
|
||||
#id_ID ISO-8859-1
|
||||
#ig_NG UTF-8
|
||||
#ik_CA UTF-8
|
||||
#is_IS.UTF-8 UTF-8
|
||||
#is_IS ISO-8859-1
|
||||
#it_CH.UTF-8 UTF-8
|
||||
#it_CH ISO-8859-1
|
||||
#it_IT.UTF-8 UTF-8
|
||||
#it_IT ISO-8859-1
|
||||
#it_IT@euro ISO-8859-15
|
||||
#iu_CA UTF-8
|
||||
#ja_JP.EUC-JP EUC-JP
|
||||
#ja_JP.UTF-8 UTF-8
|
||||
#ka_GE.UTF-8 UTF-8
|
||||
#ka_GE GEORGIAN-PS
|
||||
#kab_DZ UTF-8
|
||||
#kk_KZ.UTF-8 UTF-8
|
||||
#kk_KZ PT154
|
||||
#kl_GL.UTF-8 UTF-8
|
||||
#kl_GL ISO-8859-1
|
||||
#km_KH UTF-8
|
||||
#kn_IN UTF-8
|
||||
#ko_KR.EUC-KR EUC-KR
|
||||
#ko_KR.UTF-8 UTF-8
|
||||
#kok_IN UTF-8
|
||||
#ks_IN UTF-8
|
||||
#ks_IN@devanagari UTF-8
|
||||
#ku_TR.UTF-8 UTF-8
|
||||
#ku_TR ISO-8859-9
|
||||
#kw_GB.UTF-8 UTF-8
|
||||
#kw_GB ISO-8859-1
|
||||
#ky_KG UTF-8
|
||||
#lb_LU UTF-8
|
||||
#lg_UG.UTF-8 UTF-8
|
||||
#lg_UG ISO-8859-10
|
||||
#li_BE UTF-8
|
||||
#li_NL UTF-8
|
||||
#lij_IT UTF-8
|
||||
#ln_CD UTF-8
|
||||
#lo_LA UTF-8
|
||||
#lt_LT.UTF-8 UTF-8
|
||||
#lt_LT ISO-8859-13
|
||||
#lv_LV.UTF-8 UTF-8
|
||||
#lv_LV ISO-8859-13
|
||||
#lzh_TW UTF-8
|
||||
#mag_IN UTF-8
|
||||
#mai_IN UTF-8
|
||||
#mai_NP UTF-8
|
||||
#mfe_MU UTF-8
|
||||
#mg_MG.UTF-8 UTF-8
|
||||
#mg_MG ISO-8859-15
|
||||
#mhr_RU UTF-8
|
||||
#mi_NZ.UTF-8 UTF-8
|
||||
#mi_NZ ISO-8859-13
|
||||
#miq_NI UTF-8
|
||||
#mjw_IN UTF-8
|
||||
#mk_MK.UTF-8 UTF-8
|
||||
#mk_MK ISO-8859-5
|
||||
#ml_IN UTF-8
|
||||
#mn_MN UTF-8
|
||||
#mni_IN UTF-8
|
||||
#mnw_MM UTF-8
|
||||
#mr_IN UTF-8
|
||||
#ms_MY.UTF-8 UTF-8
|
||||
#ms_MY ISO-8859-1
|
||||
#mt_MT.UTF-8 UTF-8
|
||||
#mt_MT ISO-8859-3
|
||||
#my_MM UTF-8
|
||||
#nan_TW UTF-8
|
||||
#nan_TW@latin UTF-8
|
||||
#nb_NO.UTF-8 UTF-8
|
||||
#nb_NO ISO-8859-1
|
||||
#nds_DE UTF-8
|
||||
#nds_NL UTF-8
|
||||
#ne_NP UTF-8
|
||||
#nhn_MX UTF-8
|
||||
#niu_NU UTF-8
|
||||
#niu_NZ UTF-8
|
||||
#nl_AW UTF-8
|
||||
#nl_BE.UTF-8 UTF-8
|
||||
#nl_BE ISO-8859-1
|
||||
#nl_BE@euro ISO-8859-15
|
||||
#nl_NL.UTF-8 UTF-8
|
||||
#nl_NL ISO-8859-1
|
||||
#nl_NL@euro ISO-8859-15
|
||||
#nn_NO.UTF-8 UTF-8
|
||||
#nn_NO ISO-8859-1
|
||||
#nr_ZA UTF-8
|
||||
#nso_ZA UTF-8
|
||||
#oc_FR.UTF-8 UTF-8
|
||||
#oc_FR ISO-8859-1
|
||||
#om_ET UTF-8
|
||||
#om_KE.UTF-8 UTF-8
|
||||
#om_KE ISO-8859-1
|
||||
#or_IN UTF-8
|
||||
#os_RU UTF-8
|
||||
#pa_IN UTF-8
|
||||
#pa_PK UTF-8
|
||||
#pap_AW UTF-8
|
||||
#pap_CW UTF-8
|
||||
#pl_PL.UTF-8 UTF-8
|
||||
#pl_PL ISO-8859-2
|
||||
#ps_AF UTF-8
|
||||
#pt_BR.UTF-8 UTF-8
|
||||
#pt_BR ISO-8859-1
|
||||
#pt_PT.UTF-8 UTF-8
|
||||
#pt_PT ISO-8859-1
|
||||
#pt_PT@euro ISO-8859-15
|
||||
#quz_PE UTF-8
|
||||
#raj_IN UTF-8
|
||||
#ro_RO.UTF-8 UTF-8
|
||||
#ro_RO ISO-8859-2
|
||||
#ru_RU.KOI8-R KOI8-R
|
||||
#ru_RU.UTF-8 UTF-8
|
||||
#ru_RU ISO-8859-5
|
||||
#ru_UA.UTF-8 UTF-8
|
||||
#ru_UA KOI8-U
|
||||
#rw_RW UTF-8
|
||||
#sa_IN UTF-8
|
||||
#sah_RU UTF-8
|
||||
#sat_IN UTF-8
|
||||
#sc_IT UTF-8
|
||||
#sd_IN UTF-8
|
||||
#sd_IN@devanagari UTF-8
|
||||
#se_NO UTF-8
|
||||
#sgs_LT UTF-8
|
||||
#shn_MM UTF-8
|
||||
#shs_CA UTF-8
|
||||
#si_LK UTF-8
|
||||
#sid_ET UTF-8
|
||||
#sk_SK.UTF-8 UTF-8
|
||||
#sk_SK ISO-8859-2
|
||||
#sl_SI.UTF-8 UTF-8
|
||||
#sl_SI ISO-8859-2
|
||||
#sm_WS UTF-8
|
||||
#so_DJ.UTF-8 UTF-8
|
||||
#so_DJ ISO-8859-1
|
||||
#so_ET UTF-8
|
||||
#so_KE.UTF-8 UTF-8
|
||||
#so_KE ISO-8859-1
|
||||
#so_SO.UTF-8 UTF-8
|
||||
#so_SO ISO-8859-1
|
||||
#sq_AL.UTF-8 UTF-8
|
||||
#sq_AL ISO-8859-1
|
||||
#sq_MK UTF-8
|
||||
#sr_ME UTF-8
|
||||
#sr_RS UTF-8
|
||||
#sr_RS@latin UTF-8
|
||||
#ss_ZA UTF-8
|
||||
#st_ZA.UTF-8 UTF-8
|
||||
#st_ZA ISO-8859-1
|
||||
#sv_FI.UTF-8 UTF-8
|
||||
#sv_FI ISO-8859-1
|
||||
#sv_FI@euro ISO-8859-15
|
||||
#sv_SE.UTF-8 UTF-8
|
||||
#sv_SE ISO-8859-1
|
||||
#sw_KE UTF-8
|
||||
#sw_TZ UTF-8
|
||||
#szl_PL UTF-8
|
||||
#ta_IN UTF-8
|
||||
#ta_LK UTF-8
|
||||
#tcy_IN.UTF-8 UTF-8
|
||||
#te_IN UTF-8
|
||||
#tg_TJ.UTF-8 UTF-8
|
||||
#tg_TJ KOI8-T
|
||||
#th_TH.UTF-8 UTF-8
|
||||
#th_TH TIS-620
|
||||
#the_NP UTF-8
|
||||
#ti_ER UTF-8
|
||||
#ti_ET UTF-8
|
||||
#tig_ER UTF-8
|
||||
#tk_TM UTF-8
|
||||
#tl_PH.UTF-8 UTF-8
|
||||
#tl_PH ISO-8859-1
|
||||
#tn_ZA UTF-8
|
||||
#to_TO UTF-8
|
||||
#tpi_PG UTF-8
|
||||
#tr_CY.UTF-8 UTF-8
|
||||
#tr_CY ISO-8859-9
|
||||
#tr_TR.UTF-8 UTF-8
|
||||
#tr_TR ISO-8859-9
|
||||
#ts_ZA UTF-8
|
||||
#tt_RU UTF-8
|
||||
#tt_RU@iqtelif UTF-8
|
||||
#ug_CN UTF-8
|
||||
#uk_UA.UTF-8 UTF-8
|
||||
#uk_UA KOI8-U
|
||||
#unm_US UTF-8
|
||||
#ur_IN UTF-8
|
||||
#ur_PK UTF-8
|
||||
#uz_UZ.UTF-8 UTF-8
|
||||
#uz_UZ ISO-8859-1
|
||||
#uz_UZ@cyrillic UTF-8
|
||||
#ve_ZA UTF-8
|
||||
#vi_VN UTF-8
|
||||
#wa_BE ISO-8859-1
|
||||
#wa_BE@euro ISO-8859-15
|
||||
#wa_BE.UTF-8 UTF-8
|
||||
#wae_CH UTF-8
|
||||
#wal_ET UTF-8
|
||||
#wo_SN UTF-8
|
||||
#xh_ZA.UTF-8 UTF-8
|
||||
#xh_ZA ISO-8859-1
|
||||
#yi_US.UTF-8 UTF-8
|
||||
#yi_US CP1255
|
||||
#yo_NG UTF-8
|
||||
#yue_HK UTF-8
|
||||
#yuw_PG UTF-8
|
||||
#zh_CN.GB18030 GB18030
|
||||
#zh_CN.GBK GBK
|
||||
#zh_CN.UTF-8 UTF-8
|
||||
#zh_CN GB2312
|
||||
#zh_HK.UTF-8 UTF-8
|
||||
#zh_HK BIG5-HKSCS
|
||||
#zh_SG.UTF-8 UTF-8
|
||||
#zh_SG.GBK GBK
|
||||
#zh_SG GB2312
|
||||
#zh_TW.EUC-TW EUC-TW
|
||||
#zh_TW.UTF-8 UTF-8
|
||||
#zh_TW BIG5
|
||||
#zu_ZA.UTF-8 UTF-8
|
||||
#zu_ZA ISO-8859-1
|
@ -1,3 +1,6 @@
|
||||
# gucc test path
|
||||
add_global_arguments('-DGUCC_TEST_DIR="' + meson.current_source_dir() + '"', language : 'cpp')
|
||||
|
||||
executable(
|
||||
'test-initcpio',
|
||||
files('unit-initcpio.cpp'),
|
||||
@ -45,3 +48,11 @@ executable(
|
||||
link_with: [gucc_lib],
|
||||
include_directories: [include_directories('../include')],
|
||||
install: false)
|
||||
|
||||
executable(
|
||||
'test-locale',
|
||||
files('unit-locale.cpp'),
|
||||
dependencies: deps,
|
||||
link_with: [gucc_lib],
|
||||
include_directories: [include_directories('../include')],
|
||||
install: false)
|
||||
|
95
gucc/tests/unit-locale.cpp
Normal file
95
gucc/tests/unit-locale.cpp
Normal file
@ -0,0 +1,95 @@
|
||||
#include "gucc/file_utils.hpp"
|
||||
#include "gucc/locale.hpp"
|
||||
|
||||
#include <cassert>
|
||||
|
||||
#include <filesystem>
|
||||
#include <fstream>
|
||||
#include <string_view>
|
||||
|
||||
#include <fmt/core.h>
|
||||
|
||||
#include <spdlog/sinks/callback_sink.h>
|
||||
#include <spdlog/spdlog.h>
|
||||
|
||||
#if defined(__clang__)
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wold-style-cast"
|
||||
#elif defined(__GNUC__)
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wnull-dereference"
|
||||
#pragma GCC diagnostic ignored "-Wuseless-cast"
|
||||
#pragma GCC diagnostic ignored "-Wold-style-cast"
|
||||
#endif
|
||||
|
||||
#include <range/v3/range/conversion.hpp>
|
||||
#include <range/v3/view/filter.hpp>
|
||||
#include <range/v3/view/join.hpp>
|
||||
#include <range/v3/view/split.hpp>
|
||||
|
||||
#if defined(__clang__)
|
||||
#pragma clang diagnostic pop
|
||||
#elif defined(__GNUC__)
|
||||
#pragma GCC diagnostic pop
|
||||
#endif
|
||||
|
||||
namespace fs = std::filesystem;
|
||||
using namespace std::string_view_literals;
|
||||
|
||||
static constexpr auto LOCALE_CONF_TEST = R"(LANG="ru_RU.UTF-8"
|
||||
LC_NUMERIC="ru_RU.UTF-8"
|
||||
LC_TIME="ru_RU.UTF-8"
|
||||
LC_MONETARY="ru_RU.UTF-8"
|
||||
LC_PAPER="ru_RU.UTF-8"
|
||||
LC_NAME="ru_RU.UTF-8"
|
||||
LC_ADDRESS="ru_RU.UTF-8"
|
||||
LC_TELEPHONE="ru_RU.UTF-8"
|
||||
LC_MEASUREMENT="ru_RU.UTF-8"
|
||||
LC_IDENTIFICATION="ru_RU.UTF-8"
|
||||
LC_MESSAGES="ru_RU.UTF-8"
|
||||
)"sv;
|
||||
|
||||
static constexpr auto LOCALE_GEN_TEST = R"(ru_RU.UTF-8 UTF-8
|
||||
)"sv;
|
||||
|
||||
inline auto filtered_res(std::string_view content) noexcept -> std::string {
|
||||
auto&& result = content | ranges::views::split('\n')
|
||||
| ranges::views::filter([](auto&& rng) {
|
||||
auto&& line = std::string_view(&*rng.begin(), static_cast<size_t>(ranges::distance(rng)));
|
||||
return !line.empty() && !line.starts_with('#');
|
||||
})
|
||||
| ranges::views::join('\n')
|
||||
| ranges::to<std::string>();
|
||||
return result + '\n';
|
||||
}
|
||||
|
||||
int main() {
|
||||
auto callback_sink = std::make_shared<spdlog::sinks::callback_sink_mt>([](const spdlog::details::log_msg&) {
|
||||
// noop
|
||||
});
|
||||
spdlog::set_default_logger(std::make_shared<spdlog::logger>("default", callback_sink));
|
||||
|
||||
// prepare test data
|
||||
static constexpr std::string_view folder_testpath{"/tmp/test-locale-unittest"};
|
||||
static constexpr std::string_view folder_path{"/tmp/test-locale-unittest/etc"};
|
||||
static constexpr std::string_view dest_locale_gen{"/tmp/test-locale-unittest/etc/locale.gen"};
|
||||
static constexpr std::string_view dest_locale_conf{"/tmp/test-locale-unittest/etc/locale.conf"};
|
||||
|
||||
fs::create_directories(folder_path);
|
||||
|
||||
fs::copy_file(GUCC_TEST_DIR "/files/locale.gen", dest_locale_gen, fs::copy_options::overwrite_existing);
|
||||
|
||||
// set test locale.
|
||||
assert(gucc::locale::prepare_locale_set("ru_RU.UTF-8"sv, folder_testpath));
|
||||
|
||||
auto locale_conf_content = gucc::file_utils::read_whole_file(dest_locale_conf);
|
||||
assert(locale_conf_content == LOCALE_CONF_TEST);
|
||||
|
||||
auto locale_gen_content = filtered_res(gucc::file_utils::read_whole_file(dest_locale_gen));
|
||||
assert(locale_gen_content == LOCALE_GEN_TEST);
|
||||
|
||||
// Cleanup.
|
||||
fs::remove_all(folder_testpath);
|
||||
|
||||
assert(!gucc::locale::prepare_locale_set("ru_RU.UTF-8"sv, folder_testpath));
|
||||
}
|
Loading…
Reference in New Issue
Block a user