fish-shell/tests/checks/locale-numeric.fish

38 lines
1.2 KiB
Fish
Raw Normal View History

# RUN: %fish %s
# musl currently does not have a `locale` command, so we skip this test there.
# REQUIRES: command -v locale
# We need a comma-using locale we know.
# REQUIRES: locale -a | grep -i '(bg_BG\|de_DE\|es_ES\|fr_FR\|ru_RU).(UTF-8|utf8)'
# OpenBSD does not use LC_NUMERIC, this test is pointless there.
# REQUIRES: test "$(uname)" != OpenBSD
set -l locales (locale -a)
set -l acceptable_locales bg_BG de_DE es_ES fr_FR ru_RU
set -l numeric_locale
for locale in {$acceptable_locales}.{UTF-8,UTF8}
if string match -i -q $locale $locales
set numeric_locale $locale
break
end
end
if not set -q numeric_locale[1]
# Note we tried to check for a locale above,
# but in case this fails because of e.g. case issues,
# let's error again.
echo Please install one of the following locales: >&2
printf '%s\n' $acceptable_locales".utf-8" >&2
exit 127
end
begin
set -x LC_NUMERIC $numeric_locale
printf '%e\n' "3,45" # should succeed, output should be 3,450000e+00
# CHECK: 3,450000e+00
printf '%e\n' "4.56" # should succeed, output should be 4,560000e+00
# CHECK: 4,560000e+00
# This should succeed without output
test 42.5 -gt 37.2
end