2024-04-12 10:19:32 +00:00
|
|
|
# RUN: %fish %s
|
2021-08-17 12:23:21 +00:00
|
|
|
# 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
|