1 #!/bin/ksh
2 #
3 # This file and its contents are supplied under the terms of the
4 # Common Development and Distribution License ("CDDL"), version 1.0.
5 # You may only use this file in accordance with the terms of version
6 # 1.0 of the CDDL.
7 #
8 # A full copy of the text of the CDDL should have accompanied this
9 # source. A copy of the CDDL is also available via the Internet at
10 # http://www.illumos.org/license/CDDL.
11 #
12
13 #
14 # Copyright 2020 Joyent, Inc.
15 #
16
17 #
18 # Clearly, grossly incomplete.
19 #
20
21 export LC_ALL=C.UTF-8
22
23 set -o pipefail
24 unalias -a
25
26 find_prog=/usr/bin/find
27 find_prog_xpg4=/usr/xpg4/bin/find
28 find_exit=0
29
30 # make sure we don't end in 1 or 2, which breaks the tests
31 find_dir=/tmp/findtest.$$.dir
32
33 mkdir $find_dir
34
35 testfind()
36 {
37 exp=$1
38 shift
39 cmd="$@"
40
41 echo "TEST: $cmd"
42
43 out=$(eval $cmd | tr '\n' ',')
44
45 [[ "$exp" = "$out" ]] || {
46 echo "TEST FAILED: $cmd" >&2
47 echo "expected: $exp" >&2
48 echo "got: $out" >&2
49 find_exit=1
50 }
51 }
52
53 mkdir -p $find_dir/1
54 mkdir -p $find_dir/.2
55 touch $find_dir/.2/1
56 touch $find_dir/.2/c
57
58 testfind "$find_dir/1,$find_dir/.2/1," \
59 $find_prog $find_dir -name \"1\"
60 testfind "$find_dir/1,$find_dir/.2/1," \
61 $find_prog $find_dir -path \"*1\"
62
63 cd $find_dir
64
65 testfind "" $find_prog . -name \"*2\"
66 testfind "./.2," $find_prog_xpg4 . -name \"*2\"
67 testfind "./.2," $find_prog . -name \".*2\"
68 testfind "./.2," $find_prog_xpg4 . -name \".*2\"
69 testfind "./1,./.2/1," $find_prog . -path \"*1\"
70 testfind "./.2," $find_prog . -path \"*2\"
71 testfind "./.2,./.2/1,./.2/c," $find_prog . -path \"*2*\"
72
73 cd -
74 rm -rf $find_dir
75
76 exit $find_exit