mirror of
https://github.com/fish-shell/fish-shell
synced 2024-12-25 12:23:09 +00:00
363fa0a598
Another dev noticed that tests/printf.in was failing because they didn't have the fr_FR.UTF-8 locale installed. Make that test more resilient by trying other locales and if no suitable locale is found skipping the test.
63 lines
1.7 KiB
Fish
63 lines
1.7 KiB
Fish
printf "Hello %d %i %f %F %g %G\n" 1 2 3 4 5 6
|
|
|
|
printf "%x %X %o %llu\n" 10 11 8 -1
|
|
# %a has OS-dependent output - see #1139
|
|
#printf "%a %A\n" 14 15
|
|
|
|
printf "%c %s\n" a hello
|
|
printf "%c%c%c\n" hello … o
|
|
printf "%e %E\n" 5 6
|
|
|
|
printf "%20d\n" 50
|
|
printf "%-20d%d\n" 5 10
|
|
|
|
printf "%*d\n" 10 100
|
|
|
|
printf "%%\"\\\n"
|
|
printf "%s\b%s\n" x y
|
|
printf "abc\rdef\n"
|
|
printf "Msg1\fMsg2\n"
|
|
printf "foo\vbar\vbaz\n"
|
|
printf "\111 \x50 \u0051 \U00000052"
|
|
|
|
echo
|
|
echo "Test escapes"
|
|
|
|
# \c escape means "stop printing"
|
|
printf 'a\cb'
|
|
echo
|
|
|
|
# Bogus printf specifier, should produce no stdout
|
|
printf "%5" 10 ^ /dev/null
|
|
|
|
# Octal escapes produce literal bytes, not characters
|
|
# \376 is 0xFE
|
|
printf '\376' | xxd -p
|
|
|
|
# Verify that floating point conversions and output work correctly with
|
|
# different combinations of locales and floating point strings. See issue
|
|
# #3334. This starts by assuming an locale using english conventions.
|
|
printf '%e\n' "1.23" # should succeed, output should be 1.230000e+00
|
|
printf '%e\n' "2,34" # should fail
|
|
|
|
# Try to use one of several locales that use a comma as the decimal mark
|
|
# rather than the period used in english speaking locales. If we don't find
|
|
# one installed we simply don't run this test.
|
|
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 set -q numeric_locale[1]
|
|
set -x LC_NUMERIC $numeric_locale
|
|
printf '%e\n' "3,45" # should succeed, output should be 3,450000e+00
|
|
printf '%e\n' "4.56" # should succeed, output should be 4,560000e+00
|
|
else
|
|
echo '3,450000e+00'
|
|
echo '4,560000e+00'
|
|
end
|