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#
17# Copyright (c) 2016 by Delphix. All rights reserved.
18#
19
20. $STF_SUITE/include/libtest.shlib
21. $STF_SUITE/tests/functional/casenorm/casenorm.cfg
22
23function create_testfs
24{
25	typeset opts=$1
26
27	rm -rf $TESTDIR || log_unresolved Could not remove $TESTDIR
28	mkdir -p $TESTDIR || log_unresolved Could not create $TESTDIR
29
30	log_must zfs create $opts $TESTPOOL/$TESTFS
31	log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS
32}
33
34function destroy_testfs
35{
36	if datasetexists $TESTPOOL/$TESTFS ; then
37		log_must zfs destroy -f $TESTPOOL/$TESTFS
38		rm -rf $TESTDIR || log_unresolved Could not remove $TESTDIR
39	fi
40}
41
42function create_file
43{
44	typeset name=$TESTDIR/$1
45
46	echo $name > $name
47}
48
49function delete_file
50{
51	typeset name=$TESTDIR/$1
52
53	rm $name >/dev/null 2>&1
54
55	if [[ $? -ne 0 ]] ; then
56		return 1
57	fi
58
59	if [[ -f $name ]] ; then
60		return 2
61	fi
62}
63
64function lookup_file
65{
66	typeset name=$1
67
68	zlook -l $TESTDIR $name >/dev/null 2>&1
69}
70
71function lookup_file_ci
72{
73	typeset name=$1
74
75	zlook -il $TESTDIR $name >/dev/null 2>&1
76}
77
78function lookup_any
79{
80	for name in $NAMES_ALL ; do
81		lookup_file $name
82		if [[ $? -eq 0 ]] ; then
83			return 0
84		fi
85	done
86
87	return 1
88}
89
90function switch_norm
91{
92	typeset norm=$(get_norm $1)
93
94	if [[ $norm == "C" ]] ; then
95		print "D"
96	else
97		print "C"
98	fi
99}
100
101function get_norm
102{
103	if [[ "${NAMES_C#*$1}" != "${NAMES_C}" ]] ; then
104		print "C"
105	elif [[ "${NAMES_D#*$1}" != "${NAMES_D}" ]] ; then
106		print "D"
107	else
108		return 1
109	fi
110}
111
112function get_case
113{
114	if [[ ${NAMES_UPPER#*$1} != ${NAMES_UPPER} ]] ; then
115		print "UPPER"
116	elif [[ ${NAMES_LOWER#*$1} != ${NAMES_LOWER} ]] ; then
117		print "LOWER"
118	elif [[ ${NAMES_ORIG#*$1} != ${NAMES_ORIG} ]] ; then
119		print "ORIG"
120	else
121		return 1
122	fi
123}
124