xref: /freebsd/contrib/atf/test-programs/srcdir_test.sh (revision 8f0ea33f2bbf3a6aa80235f0a02fa5f2780c2b17)
1*c243e490SMarcel Moolenaar# Copyright (c) 2007 The NetBSD Foundation, Inc.
2*c243e490SMarcel Moolenaar# All rights reserved.
3*c243e490SMarcel Moolenaar#
4*c243e490SMarcel Moolenaar# Redistribution and use in source and binary forms, with or without
5*c243e490SMarcel Moolenaar# modification, are permitted provided that the following conditions
6*c243e490SMarcel Moolenaar# are met:
7*c243e490SMarcel Moolenaar# 1. Redistributions of source code must retain the above copyright
8*c243e490SMarcel Moolenaar#    notice, this list of conditions and the following disclaimer.
9*c243e490SMarcel Moolenaar# 2. Redistributions in binary form must reproduce the above copyright
10*c243e490SMarcel Moolenaar#    notice, this list of conditions and the following disclaimer in the
11*c243e490SMarcel Moolenaar#    documentation and/or other materials provided with the distribution.
12*c243e490SMarcel Moolenaar#
13*c243e490SMarcel Moolenaar# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND
14*c243e490SMarcel Moolenaar# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
15*c243e490SMarcel Moolenaar# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
16*c243e490SMarcel Moolenaar# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
17*c243e490SMarcel Moolenaar# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY
18*c243e490SMarcel Moolenaar# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19*c243e490SMarcel Moolenaar# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
20*c243e490SMarcel Moolenaar# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21*c243e490SMarcel Moolenaar# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
22*c243e490SMarcel Moolenaar# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
23*c243e490SMarcel Moolenaar# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
24*c243e490SMarcel Moolenaar# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25*c243e490SMarcel Moolenaar
26*c243e490SMarcel Moolenaarcreate_files()
27*c243e490SMarcel Moolenaar{
28*c243e490SMarcel Moolenaar    mkdir tmp
29*c243e490SMarcel Moolenaar    touch tmp/datafile
30*c243e490SMarcel Moolenaar}
31*c243e490SMarcel Moolenaar
32*c243e490SMarcel Moolenaaratf_test_case default
33*c243e490SMarcel Moolenaardefault_head()
34*c243e490SMarcel Moolenaar{
35*c243e490SMarcel Moolenaar    atf_set "descr" "Checks that the program can find its files if" \
36*c243e490SMarcel Moolenaar                    "executed from the same directory"
37*c243e490SMarcel Moolenaar}
38*c243e490SMarcel Moolenaardefault_body()
39*c243e490SMarcel Moolenaar{
40*c243e490SMarcel Moolenaar    create_files
41*c243e490SMarcel Moolenaar
42*c243e490SMarcel Moolenaar    for hp in $(get_helpers); do
43*c243e490SMarcel Moolenaar        h=${hp##*/}
44*c243e490SMarcel Moolenaar        cp ${hp} tmp
45*c243e490SMarcel Moolenaar        atf_check -s eq:0 -o ignore -e ignore -x \
46*c243e490SMarcel Moolenaar                  "cd tmp && ./${h} srcdir_exists"
47*c243e490SMarcel Moolenaar        atf_check -s eq:1 -o empty -e ignore "${hp}" -r res srcdir_exists
48*c243e490SMarcel Moolenaar        atf_check -s eq:0 -o ignore -e empty grep "Cannot find datafile" res
49*c243e490SMarcel Moolenaar    done
50*c243e490SMarcel Moolenaar}
51*c243e490SMarcel Moolenaar
52*c243e490SMarcel Moolenaaratf_test_case libtool
53*c243e490SMarcel Moolenaarlibtool_head()
54*c243e490SMarcel Moolenaar{
55*c243e490SMarcel Moolenaar    atf_set "descr" "Checks that the program can find its files if" \
56*c243e490SMarcel Moolenaar                    "executed from the source directory and if it" \
57*c243e490SMarcel Moolenaar                    "was built with libtool"
58*c243e490SMarcel Moolenaar}
59*c243e490SMarcel Moolenaarlibtool_body()
60*c243e490SMarcel Moolenaar{
61*c243e490SMarcel Moolenaar    create_files
62*c243e490SMarcel Moolenaar    mkdir tmp/.libs
63*c243e490SMarcel Moolenaar
64*c243e490SMarcel Moolenaar    for hp in $(get_helpers c_helpers cpp_helpers); do
65*c243e490SMarcel Moolenaar        h=${hp##*/}
66*c243e490SMarcel Moolenaar        cp ${hp} tmp
67*c243e490SMarcel Moolenaar        cp ${hp} tmp/.libs
68*c243e490SMarcel Moolenaar        atf_check -s eq:0 -o ignore -e ignore -x \
69*c243e490SMarcel Moolenaar                  "cd tmp && ./.libs/${h} srcdir_exists"
70*c243e490SMarcel Moolenaar        atf_check -s eq:1 -o empty -e ignore "${hp}" -r res srcdir_exists
71*c243e490SMarcel Moolenaar        atf_check -s eq:0 -o ignore -e empty grep "Cannot find datafile" res
72*c243e490SMarcel Moolenaar    done
73*c243e490SMarcel Moolenaar
74*c243e490SMarcel Moolenaar    for hp in $(get_helpers c_helpers cpp_helpers); do
75*c243e490SMarcel Moolenaar        h=${hp##*/}
76*c243e490SMarcel Moolenaar        cp ${hp} tmp
77*c243e490SMarcel Moolenaar        cp ${hp} tmp/.libs/lt-${h}
78*c243e490SMarcel Moolenaar        atf_check -s eq:0 -o ignore -e ignore -x \
79*c243e490SMarcel Moolenaar                  "cd tmp && ./.libs/lt-${h} srcdir_exists"
80*c243e490SMarcel Moolenaar        atf_check -s eq:1 -o empty -e ignore "${hp}" -r res srcdir_exists
81*c243e490SMarcel Moolenaar        atf_check -s eq:0 -o ignore -e empty grep "Cannot find datafile" res
82*c243e490SMarcel Moolenaar    done
83*c243e490SMarcel Moolenaar}
84*c243e490SMarcel Moolenaar
85*c243e490SMarcel Moolenaaratf_test_case sflag
86*c243e490SMarcel Moolenaarsflag_head()
87*c243e490SMarcel Moolenaar{
88*c243e490SMarcel Moolenaar    atf_set "descr" "Checks that the program can find its files when" \
89*c243e490SMarcel Moolenaar                    "using the -s flag"
90*c243e490SMarcel Moolenaar}
91*c243e490SMarcel Moolenaarsflag_body()
92*c243e490SMarcel Moolenaar{
93*c243e490SMarcel Moolenaar    create_files
94*c243e490SMarcel Moolenaar
95*c243e490SMarcel Moolenaar    for hp in $(get_helpers); do
96*c243e490SMarcel Moolenaar        h=${hp##*/}
97*c243e490SMarcel Moolenaar        cp ${hp} tmp
98*c243e490SMarcel Moolenaar        atf_check -s eq:0 -o ignore -e ignore -x \
99*c243e490SMarcel Moolenaar                  "cd tmp && ./${h} -s $(pwd)/tmp \
100*c243e490SMarcel Moolenaar                   srcdir_exists"
101*c243e490SMarcel Moolenaar        atf_check -s eq:1 -o empty -e save:stderr "${hp}" -r res srcdir_exists
102*c243e490SMarcel Moolenaar        atf_check -s eq:0 -o ignore -e empty grep "Cannot find datafile" res
103*c243e490SMarcel Moolenaar        atf_check -s eq:0 -o ignore -e ignore \
104*c243e490SMarcel Moolenaar                  "${hp}" -s "$(pwd)"/tmp srcdir_exists
105*c243e490SMarcel Moolenaar    done
106*c243e490SMarcel Moolenaar}
107*c243e490SMarcel Moolenaar
108*c243e490SMarcel Moolenaaratf_test_case relative
109*c243e490SMarcel Moolenaarrelative_head()
110*c243e490SMarcel Moolenaar{
111*c243e490SMarcel Moolenaar    atf_set "descr" "Checks that passing a relative path through -s" \
112*c243e490SMarcel Moolenaar                    "works"
113*c243e490SMarcel Moolenaar}
114*c243e490SMarcel Moolenaarrelative_body()
115*c243e490SMarcel Moolenaar{
116*c243e490SMarcel Moolenaar    create_files
117*c243e490SMarcel Moolenaar
118*c243e490SMarcel Moolenaar    for hp in $(get_helpers); do
119*c243e490SMarcel Moolenaar        h=${hp##*/}
120*c243e490SMarcel Moolenaar        cp ${hp} tmp
121*c243e490SMarcel Moolenaar
122*c243e490SMarcel Moolenaar        for p in tmp tmp/. ./tmp; do
123*c243e490SMarcel Moolenaar            echo "Helper is: ${h}"
124*c243e490SMarcel Moolenaar            echo "Using source directory: ${p}"
125*c243e490SMarcel Moolenaar
126*c243e490SMarcel Moolenaar            atf_check -s eq:0 -o ignore -e ignore \
127*c243e490SMarcel Moolenaar                      "./tmp/${h}" -s "${p}" srcdir_exists
128*c243e490SMarcel Moolenaar            atf_check -s eq:1 -o empty -e save:stderr "${hp}" -r res \
129*c243e490SMarcel Moolenaar                srcdir_exists
130*c243e490SMarcel Moolenaar            atf_check -s eq:0 -o ignore -e empty grep "Cannot find datafile" res
131*c243e490SMarcel Moolenaar            atf_check -s eq:0 -o ignore -e ignore \
132*c243e490SMarcel Moolenaar                      "${hp}" -s "${p}" srcdir_exists
133*c243e490SMarcel Moolenaar        done
134*c243e490SMarcel Moolenaar    done
135*c243e490SMarcel Moolenaar}
136*c243e490SMarcel Moolenaar
137*c243e490SMarcel Moolenaaratf_init_test_cases()
138*c243e490SMarcel Moolenaar{
139*c243e490SMarcel Moolenaar    atf_add_test_case default
140*c243e490SMarcel Moolenaar    atf_add_test_case libtool
141*c243e490SMarcel Moolenaar    atf_add_test_case sflag
142*c243e490SMarcel Moolenaar    atf_add_test_case relative
143*c243e490SMarcel Moolenaar}
144*c243e490SMarcel Moolenaar
145*c243e490SMarcel Moolenaar# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4
146