aboutsummaryrefslogtreecommitdiff
path: root/sys/contrib/openzfs/tests/zfs-tests/tests/functional/casenorm/casenorm.kshlib
blob: cb61798d7be7fc2831a65c809757701fc856fe53 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#
# This file and its contents are supplied under the terms of the
# Common Development and Distribution License ("CDDL"), version 1.0.
# You may only use this file in accordance with the terms of version
# 1.0 of the CDDL.
#
# A full copy of the text of the CDDL should have accompanied this
# source.  A copy of the CDDL is also available via the Internet at
# http://www.illumos.org/license/CDDL.
#

#
# Copyright 2015 Nexenta Systems, Inc.  All rights reserved.
#

#
# Copyright (c) 2016 by Delphix. All rights reserved.
#

. $STF_SUITE/include/libtest.shlib
. $STF_SUITE/tests/functional/casenorm/casenorm.cfg

function create_testfs
{
	typeset opts=$1

	rm -rf $TESTDIR || log_unresolved Could not remove $TESTDIR
	mkdir -p $TESTDIR || log_unresolved Could not create $TESTDIR

	log_must zfs create $opts $TESTPOOL/$TESTFS
	log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS
}

function destroy_testfs
{
	if datasetexists $TESTPOOL/$TESTFS ; then
		log_must zfs destroy -f $TESTPOOL/$TESTFS
		rm -rf $TESTDIR || log_unresolved Could not remove $TESTDIR
	fi
}

function create_file
{
	typeset name=$TESTDIR/$1

	echo $name > $name
}

function delete_file
{
	typeset name=$TESTDIR/$1

	rm $name >/dev/null 2>&1

	if [[ $? -ne 0 ]] ; then
		return 1
	fi

	if [[ -f $name ]] ; then
		return 2
	fi
}

function lookup_file
{
	typeset name=$1

	if is_illumos; then
		zlook -l $TESTDIR $name >/dev/null 2>&1
	else
		test -f "${TESTDIR}/${name}" >/dev/null 2>&1
	fi
}

function lookup_file_ci
{
	typeset name=$1

	if is_illumos; then
		zlook -il $TESTDIR $name >/dev/null 2>&1
	else
		test -f "${TESTDIR}/${name}" >/dev/null 2>&1
	fi
}

function lookup_any
{
	for name in $NAMES_ALL ; do
		lookup_file $name
		if [[ $? -eq 0 ]] ; then
			return 0
		fi
	done

	return 1
}

function switch_norm
{
	typeset norm=$(get_norm $1)

	if [[ $norm == "C" ]] ; then
		print "D"
	else
		print "C"
	fi
}

function get_norm
{
	if [[ "${NAMES_C#*$1}" != "${NAMES_C}" ]] ; then
		print "C"
	elif [[ "${NAMES_D#*$1}" != "${NAMES_D}" ]] ; then
		print "D"
	else
		return 1
	fi
}

function get_case
{
	if [[ ${NAMES_UPPER#*$1} != ${NAMES_UPPER} ]] ; then
		print "UPPER"
	elif [[ ${NAMES_LOWER#*$1} != ${NAMES_LOWER} ]] ; then
		print "LOWER"
	elif [[ ${NAMES_ORIG#*$1} != ${NAMES_ORIG} ]] ; then
		print "ORIG"
	else
		return 1
	fi
}