1 #
2 # This file and its contents are supplied under the terms of the
3 # Common Development and Distribution License ("CDDL"), version 1.0.
4 # You may only use this file in accordance with the terms of version
5 # 1.0 of the CDDL.
6 #
7 # A full copy of the text of the CDDL should have accompanied this
8 # source. A copy of the CDDL is also available via the Internet at
9 # http://www.illumos.org/license/CDDL.
10 #
11
12 #
13 # Copyright 2015 Nexenta Systems, Inc. All rights reserved.
14 #
15
16 . $STF_SUITE/include/libtest.shlib
17 . $STF_SUITE/tests/functional/casenorm/casenorm.cfg
18
19 function create_testfs
20 {
21 typeset opts=$1
22
23 $RM -rf $TESTDIR || log_unresolved Could not remove $TESTDIR
24 $MKDIR -p $TESTDIR || log_unresolved Could not create $TESTDIR
25
26 log_must $ZFS create $opts $TESTPOOL/$TESTFS
27 log_must $ZFS set mountpoint=$TESTDIR $TESTPOOL/$TESTFS
28 }
29
30 function destroy_testfs
31 {
32 if datasetexists $TESTPOOL/$TESTFS ; then
33 log_must $ZFS destroy -f $TESTPOOL/$TESTFS
34 $RM -rf $TESTDIR || log_unresolved Could not remove $TESTDIR
35 fi
36 }
37
38 function create_file
39 {
40 typeset name=$TESTDIR/$1
41
42 $ECHO $name > $name
43 }
44
45 function delete_file
46 {
47 typeset name=$TESTDIR/$1
48
49 $RM $name >/dev/null 2>&1
50
51 if [[ $? -ne 0 ]] ; then
52 return 1
53 fi
54
55 if [[ -f $name ]] ; then
56 return 2
57 fi
58 }
59
60 function lookup_file
61 {
62 typeset name=$1
63
64 $ZLOOK -l $TESTDIR $name >/dev/null 2>&1
65 }
66
67 function lookup_file_ci
68 {
69 typeset name=$1
70
71 $ZLOOK -il $TESTDIR $name >/dev/null 2>&1
72 }
73
74 function lookup_any
75 {
76 for name in $NAMES_ALL ; do
77 lookup_file $name
78 if [[ $? -eq 0 ]] ; then
79 return 0
80 fi
81 done
82
83 return 1
84 }
85
86 function switch_norm
87 {
88 typeset norm=$(get_norm $1)
89
90 if [[ $norm == "C" ]] ; then
91 print "D"
92 else
93 print "C"
94 fi
95 }
96
97 function get_norm
98 {
99 if [[ "${NAMES_C#*$1}" != "${NAMES_C}" ]] ; then
100 print "C"
101 elif [[ "${NAMES_D#*$1}" != "${NAMES_D}" ]] ; then
102 print "D"
103 else
104 return 1
105 fi
106 }
107
108 function get_case
109 {
110 if [[ ${NAMES_UPPER#*$1} != ${NAMES_UPPER} ]] ; then
111 print "UPPER"
112 elif [[ ${NAMES_LOWER#*$1} != ${NAMES_LOWER} ]] ; then
113 print "LOWER"
114 elif [[ ${NAMES_ORIG#*$1} != ${NAMES_ORIG} ]] ; then
115 print "ORIG"
116 else
117 return 1
118 fi
119 }