xref: /freebsd/usr.bin/stat/tests/readlink_test.sh (revision 3c4ba5f55438f7afd4f4b0b56f88f2bb505fd6a6)
1#
2# Copyright (c) 2017 Dell EMC
3# All rights reserved.
4#
5# Redistribution and use in source and binary forms, with or without
6# modification, are permitted provided that the following conditions
7# are met:
8# 1. Redistributions of source code must retain the above copyright
9#    notice, this list of conditions and the following disclaimer.
10# 2. Redistributions in binary form must reproduce the above copyright
11#    notice, this list of conditions and the following disclaimer in the
12#    documentation and/or other materials provided with the distribution.
13#
14# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24# SUCH DAMAGE.
25#
26# $FreeBSD$
27
28atf_test_case basic
29basic_head()
30{
31	atf_set	"descr" "Verify that calling readlink without any flags " \
32			"prints out the symlink target for a file"
33}
34basic_body()
35{
36	atf_check ln -s foo bar
37	atf_check -o inline:'foo\n' readlink bar
38}
39
40atf_test_case f_flag
41f_flag_head()
42{
43	atf_set	"descr" "Verify that calling readlink with -f will not emit " \
44			"an error message/exit with a non-zero code"
45}
46f_flag_body()
47{
48	atf_check touch A.file
49	atf_check ln -s nonexistent A.link
50	atf_check -o inline:"nonexistent\n" \
51	    -s exit:1 readlink A.file A.link
52	atf_check -o inline:"$(realpath A.file)\n$PWD/nonexistent\n" \
53	    -s exit:1 readlink -f A.file A.link
54}
55
56atf_test_case n_flag
57n_flag_head()
58{
59}
60n_flag_body()
61{
62	atf_check ln -s nonexistent.A A
63	atf_check ln -s nonexistent.B B
64	atf_check -o 'inline:nonexistent.A\nnonexistent.B\n' readlink A B
65	atf_check -o 'inline:nonexistent.Anonexistent.B' readlink -n A B
66}
67
68atf_init_test_cases()
69{
70	atf_add_test_case basic
71	atf_add_test_case f_flag
72	atf_add_test_case n_flag
73}
74