mirror of
https://github.com/CachyOS/New-Cli-Installer.git
synced 2025-01-23 22:42:31 +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
|
// Set system language
|
||||||
auto set_locale(std::string_view locale, std::string_view mountpoint) noexcept -> bool;
|
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
|
} // namespace gucc::locale
|
||||||
|
|
||||||
#endif // LOCALE_HPP
|
#endif // LOCALE_HPP
|
||||||
|
@ -12,7 +12,7 @@ using namespace std::string_view_literals;
|
|||||||
|
|
||||||
namespace gucc::locale {
|
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_config_path = fmt::format(FMT_COMPILE("{}/etc/locale.conf"), mountpoint);
|
||||||
const auto& locale_gen_path = fmt::format(FMT_COMPILE("{}/etc/locale.gen"), 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
|
// 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));
|
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
|
// Generate locales
|
||||||
if (!utils::arch_chroot_checked("locale-gen", mountpoint)) {
|
if (!utils::arch_chroot_checked("locale-gen", mountpoint)) {
|
||||||
spdlog::error("Failed to run locale-gen with locale '{}'", locale);
|
spdlog::error("Failed to run locale-gen with locale '{}'", locale);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: maybe we should also write into /etc/default/locale if /etc/default exists and is a dir?
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,6 +4,8 @@
|
|||||||
|
|
||||||
file(GLOB files unit-*.cpp)
|
file(GLOB files unit-*.cpp)
|
||||||
|
|
||||||
|
set(GUCC_TEST_DIR "${CMAKE_CURRENT_SOURCE_DIR}/")
|
||||||
|
|
||||||
foreach(file ${files})
|
foreach(file ${files})
|
||||||
get_filename_component(file_basename ${file} NAME_WE)
|
get_filename_component(file_basename ${file} NAME_WE)
|
||||||
string(REGEX REPLACE "unit-([^$]+)" "test-\\1" testcase ${file_basename})
|
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>
|
$<$<NOT:$<CXX_COMPILER_ID:MSVC>>:-Wno-deprecated;-Wno-float-equal>
|
||||||
$<$<CXX_COMPILER_ID:GNU>:-Wno-deprecated-declarations>
|
$<$<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)
|
target_link_libraries(${testcase} PRIVATE project_warnings project_options gucc::gucc)
|
||||||
endforeach()
|
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(
|
executable(
|
||||||
'test-initcpio',
|
'test-initcpio',
|
||||||
files('unit-initcpio.cpp'),
|
files('unit-initcpio.cpp'),
|
||||||
@ -45,3 +48,11 @@ executable(
|
|||||||
link_with: [gucc_lib],
|
link_with: [gucc_lib],
|
||||||
include_directories: [include_directories('../include')],
|
include_directories: [include_directories('../include')],
|
||||||
install: false)
|
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