ZTS: Casenorm fix unicode interpretation

Use `printf` to properly interpret unicode characters.

Illumos uses a utility called `zlook` to allow additional flags to be 
provided to readdir and lookup for testing.  This functionality could 
be ported to Linux, but even without it several of the tests can be 
enabled by instead using the standard `test` command.

Additional, work is required to enable the remaining test cases.

Reviewed-by: Igor Kozhukhov <igor@dilos.org>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: George Melikov <mail@gmelikov.ru>
Issue #7633 
Closes #8812
This commit is contained in:
George Melikov 2019-11-20 03:23:27 +03:00 committed by Brian Behlendorf
parent 8221bcf1e4
commit 540312df7f
3 changed files with 20 additions and 16 deletions

View File

@ -160,17 +160,9 @@ summary = {
# reasons listed above can be used.
#
known = {
'casenorm/sensitive_none_lookup': ['FAIL', '7633'],
'casenorm/sensitive_none_delete': ['FAIL', '7633'],
'casenorm/sensitive_formd_lookup': ['FAIL', '7633'],
'casenorm/sensitive_formd_delete': ['FAIL', '7633'],
'casenorm/insensitive_none_lookup': ['FAIL', '7633'],
'casenorm/insensitive_none_delete': ['FAIL', '7633'],
'casenorm/insensitive_formd_lookup': ['FAIL', '7633'],
'casenorm/insensitive_formd_delete': ['FAIL', '7633'],
'casenorm/mixed_none_lookup': ['FAIL', '7633'],
'casenorm/mixed_none_lookup_ci': ['FAIL', '7633'],
'casenorm/mixed_none_delete': ['FAIL', '7633'],
'casenorm/mixed_formd_lookup': ['FAIL', '7633'],
'casenorm/mixed_formd_lookup_ci': ['FAIL', '7633'],
'casenorm/mixed_formd_delete': ['FAIL', '7633'],

View File

@ -17,12 +17,16 @@
# Copyright (c) 2016 by Delphix. All rights reserved.
#
NAME_C_ORIG=$(echo 'F\0303\0257L\0303\0253N\0303\0204m\0303\0253')
NAME_C_UPPER=$(echo 'F\0303\0217L\0303\0213N\0303\0204M\0303\0213')
NAME_C_LOWER=$(echo 'f\0303\0257l\0303\0253n\0303\0244m\0303\0253')
NAME_D_ORIG=$(echo 'Fi\0314\0210Le\0314\0210NA\0314\0210me\0314\0210')
NAME_D_UPPER=$(echo 'FI\0314\0210LE\0314\0210NA\0314\0210ME\0314\0210')
NAME_D_LOWER=$(echo 'fi\0314\0210le\0314\0210na\0314\0210me\0314\0210')
# Ksh on linux may have locale env variables undefined
export LANG="C.UTF-8"
export LC_ALL="C.UTF-8"
NAME_C_ORIG=$(printf '\u0046\u00ef\u004c\u00eb\u004e\u00c4\u006d\u00eb')
NAME_C_UPPER=$(printf '\u0046\u00cf\u004c\u00cb\u004e\u00c4\u004d\u00cb')
NAME_C_LOWER=$(printf '\u0066\u00ef\u006c\u00eb\u006e\u00e4\u006d\u00eb')
NAME_D_ORIG=$(printf '\u0046\u0069\u0308\u004c\u0065\u0308\u004e\u0041\u0308\u006d\u0065\u0308')
NAME_D_UPPER=$(printf '\u0046\u0049\u0308\u004c\u0045\u0308\u004e\u0041\u0308\u004d\u0045\u0308')
NAME_D_LOWER=$(printf '\u0066\u0069\u0308\u006c\u0065\u0308\u006e\u0061\u0308\u006d\u0065\u0308')
NAMES_ORIG="$NAME_C_ORIG $NAME_D_ORIG"
NAMES_UPPER="$NAME_C_UPPER $NAME_D_UPPER"
NAMES_LOWER="$NAME_C_LOWER $NAME_D_LOWER"

View File

@ -65,14 +65,22 @@ function lookup_file
{
typeset name=$1
zlook -l $TESTDIR $name >/dev/null 2>&1
if is_linux; then
test -f "${TESTDIR}/${name}" >/dev/null 2>&1
else
zlook -l $TESTDIR $name >/dev/null 2>&1
fi
}
function lookup_file_ci
{
typeset name=$1
zlook -il $TESTDIR $name >/dev/null 2>&1
if is_linux; then
test -f "${TESTDIR}/${name}" >/dev/null 2>&1
else
zlook -il $TESTDIR $name >/dev/null 2>&1
fi
}
function lookup_any