]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - lib/libpathconv/tests/test.pl
MFV r357687: Import NFS fix for O_SEARCH tests
[FreeBSD/FreeBSD.git] / lib / libpathconv / tests / test.pl
1 #!/usr/bin/perl
2 #
3 # Copyright (c) 1997 Shigio Yamaguchi. All rights reserved.
4 # Copyright (c) 1999 Tama Communications Corporation. All rights reserved.
5 #
6 # Redistribution and use in source and binary forms, with or without
7 # modification, are permitted provided that the following conditions
8 # are met:
9 # 1. Redistributions of source code must retain the above copyright
10 #    notice, this list of conditions and the following disclaimer.
11 # 2. Redistributions in binary form must reproduce the above copyright
12 #    notice, this list of conditions and the following disclaimer in the
13 #    documentation and/or other materials provided with the distribution.
14 #
15 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18 # ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19 # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21 # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22 # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24 # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25 # SUCH DAMAGE.
26 #
27 # $FreeBSD$
28
29
30 #
31 # Test script for abs2rel(3) and rel2abs(3).
32 #
33 $logfile = 'err';
34 #
35 #       target          base directory  result
36 #       --------------------------------------
37 @abs2rel = (
38         '.              /               .',
39         'a/b/c          /               a/b/c',
40         'a/b/c          /a              a/b/c',
41         '/a/b/c         a               ERROR',
42 );
43 @rel2abs = (
44         '.              /               /',
45         './             /               /',
46         '/a/b/c         /               /a/b/c',
47         '/a/b/c         /a              /a/b/c',
48         'a/b/c          a               ERROR',
49         '..             /a              /',
50         '../            /a              /',
51         '../..          /a              /',
52         '../../         /a              /',
53         '../../..       /a              /',
54         '../../../      /a              /',
55         '../b           /a              /b',
56         '../b/          /a              /b/',
57         '../../b        /a              /b',
58         '../../b/       /a              /b/',
59         '../../../b     /a              /b',
60         '../../../b/    /a              /b/',
61         '../b/c         /a              /b/c',
62         '../b/c/        /a              /b/c/',
63         '../../b/c      /a              /b/c',
64         '../../b/c/     /a              /b/c/',
65         '../../../b/c   /a              /b/c',
66         '../../../b/c/  /a              /b/c/',
67 );
68 @common = (
69         '/a/b/c         /a/b/c          .',
70         '/a/b/c         /a/b/           c',
71         '/a/b/c         /a/b            c',
72         '/a/b/c         /a/             b/c',
73         '/a/b/c         /a              b/c',
74         '/a/b/c         /               a/b/c',
75         '/a/b/c         /a/b/c          .',
76         '/a/b/c         /a/b/c/         .',
77         '/a/b/c/        /a/b/c          ./',
78         '/a/b/          /a/b/c          ../',
79         '/a/b           /a/b/c          ..',
80         '/a/            /a/b/c          ../../',
81         '/a             /a/b/c          ../..',
82         '/              /a/b/c          ../../../',
83         '/a/b/c         /a/b/z          ../c',
84         '/a/b/c         /a/y/z          ../../b/c',
85         '/a/b/c         /x/y/z          ../../../a/b/c',
86 );
87 print "TEST start ";
88 open(LOG, ">$logfile") || die("cannot open log file '$logfile'.\n");
89 $cnt = 0;
90 $progname = 'abs2rel';
91 foreach (@abs2rel) {
92         @d = split;
93         chop($result = `./$progname $d[0] $d[1]`);
94         if ($d[2] eq $result) {
95                 print '.';
96         } else {
97                 print 'X';
98                 print LOG "$progname $d[0] $d[1] -> $result (It should be '$d[2]')\n";
99                 $cnt++;
100         }
101 }
102 foreach (@common) {
103         @d = split;
104         chop($result = `./$progname $d[0] $d[1]`);
105         if ($d[2] eq $result) {
106                 print '.';
107         } else {
108                 print 'X';
109                 print LOG "$progname $d[0] $d[1] -> $result (It should be '$d[2]')\n";
110                 $cnt++;
111         }
112 }
113 $progname = 'rel2abs';
114 foreach (@rel2abs) {
115         @d = split;
116         chop($result = `./$progname $d[0] $d[1]`);
117         if ($d[2] eq $result) {
118                 print '.';
119         } else {
120                 print 'X';
121                 print LOG "$progname $d[0] $d[1] -> $result (It should be '$d[2]')\n";
122                 $cnt++;
123         }
124 }
125 foreach (@common) {
126         @d = split;
127         chop($result = `./$progname $d[2] $d[1]`);
128         if ($d[0] eq $result) {
129                 print '.';
130         } else {
131                 print 'X';
132                 print LOG "$progname $d[2] $d[1] -> $result (It should be '$d[0]')\n";
133                 $cnt++;
134         }
135 }
136 close(LOG);
137 if ($cnt == 0) {
138         print " COMPLETED.\n";
139 } else {
140         print " $cnt errors detected.\n";
141         open(LOG, $logfile) || die("log file not found.\n");
142         while (<LOG>) {
143                 print;
144         }
145         close(LOG);
146 }