d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov#
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov# This file and its contents are supplied under the terms of the
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov# Common Development and Distribution License ("CDDL"), version 1.0.
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov# You may only use this file in accordance with the terms of version
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov# 1.0 of the CDDL.
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov#
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov# A full copy of the text of the CDDL should have accompanied this
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov# source. A copy of the CDDL is also available via the Internet at
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov# http://www.illumos.org/license/CDDL.
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov#
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov#
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov# Copyright 2015 Nexenta Systems, Inc. All rights reserved.
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov#
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy#
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy# Copyright (c) 2016 by Delphix. All rights reserved.
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy#
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov. $STF_SUITE/include/libtest.shlib
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov. $STF_SUITE/tests/functional/casenorm/casenorm.cfg
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankovfunction create_testfs
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov{
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov typeset opts=$1
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy rm -rf $TESTDIR || log_unresolved Could not remove $TESTDIR
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy mkdir -p $TESTDIR || log_unresolved Could not create $TESTDIR
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy log_must zfs create $opts $TESTPOOL/$TESTFS
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov}
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankovfunction destroy_testfs
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov{
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov if datasetexists $TESTPOOL/$TESTFS ; then
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy log_must zfs destroy -f $TESTPOOL/$TESTFS
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy rm -rf $TESTDIR || log_unresolved Could not remove $TESTDIR
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov fi
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov}
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankovfunction create_file
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov{
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov typeset name=$TESTDIR/$1
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy echo $name > $name
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov}
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankovfunction delete_file
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov{
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov typeset name=$TESTDIR/$1
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy rm $name >/dev/null 2>&1
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov if [[ $? -ne 0 ]] ; then
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov return 1
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov fi
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov if [[ -f $name ]] ; then
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov return 2
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov fi
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov}
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankovfunction lookup_file
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov{
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov typeset name=$1
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy zlook -l $TESTDIR $name >/dev/null 2>&1
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov}
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankovfunction lookup_file_ci
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov{
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov typeset name=$1
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy zlook -il $TESTDIR $name >/dev/null 2>&1
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov}
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankovfunction lookup_any
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov{
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov for name in $NAMES_ALL ; do
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov lookup_file $name
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov if [[ $? -eq 0 ]] ; then
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov return 0
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov fi
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov done
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov return 1
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov}
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankovfunction switch_norm
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov{
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov typeset norm=$(get_norm $1)
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov if [[ $norm == "C" ]] ; then
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov print "D"
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov else
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov print "C"
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov fi
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov}
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankovfunction get_norm
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov{
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov if [[ "${NAMES_C#*$1}" != "${NAMES_C}" ]] ; then
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov print "C"
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov elif [[ "${NAMES_D#*$1}" != "${NAMES_D}" ]] ; then
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov print "D"
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov else
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov return 1
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov fi
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov}
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankovfunction get_case
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov{
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov if [[ ${NAMES_UPPER#*$1} != ${NAMES_UPPER} ]] ; then
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov print "UPPER"
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov elif [[ ${NAMES_LOWER#*$1} != ${NAMES_LOWER} ]] ; then
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov print "LOWER"
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov elif [[ ${NAMES_ORIG#*$1} != ${NAMES_ORIG} ]] ; then
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov print "ORIG"
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov else
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov return 1
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov fi
d7e7cb9c207e40874f6a4b61ca8ea1526b5555bdYuri Pankov}