diff options
| author | Marcel Moolenaar <marcel@FreeBSD.org> | 2012-09-04 23:07:32 +0000 | 
|---|---|---|
| committer | Marcel Moolenaar <marcel@FreeBSD.org> | 2012-09-04 23:07:32 +0000 | 
| commit | 679bf1899d7d81eaa5b2e95cba72d5db6f7491a3 (patch) | |
| tree | 748bcc46e1493df6fa88441f5e3783a5e2266e13 /test-programs/srcdir_test.sh | |
Diffstat (limited to 'test-programs/srcdir_test.sh')
| -rw-r--r-- | test-programs/srcdir_test.sh | 149 | 
1 files changed, 149 insertions, 0 deletions
| diff --git a/test-programs/srcdir_test.sh b/test-programs/srcdir_test.sh new file mode 100644 index 000000000000..11d6831f8868 --- /dev/null +++ b/test-programs/srcdir_test.sh @@ -0,0 +1,149 @@ +# +# Automated Testing Framework (atf) +# +# Copyright (c) 2007 The NetBSD Foundation, Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +#    notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +#    notice, this list of conditions and the following disclaimer in the +#    documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND +# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, +# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +create_files() +{ +    mkdir tmp +    touch tmp/datafile +} + +atf_test_case default +default_head() +{ +    atf_set "descr" "Checks that the program can find its files if" \ +                    "executed from the same directory" +} +default_body() +{ +    create_files + +    for hp in $(get_helpers); do +        h=${hp##*/} +        cp ${hp} tmp +        atf_check -s eq:0 -o ignore -e ignore -x \ +                  "cd tmp && ./${h} srcdir_exists" +        atf_check -s eq:1 -o empty -e ignore "${hp}" -r res srcdir_exists +        atf_check -s eq:0 -o ignore -e empty grep "Cannot find datafile" res +    done +} + +atf_test_case libtool +libtool_head() +{ +    atf_set "descr" "Checks that the program can find its files if" \ +                    "executed from the source directory and if it" \ +                    "was built with libtool" +} +libtool_body() +{ +    create_files +    mkdir tmp/.libs + +    for hp in $(get_helpers c_helpers cpp_helpers); do +        h=${hp##*/} +        cp ${hp} tmp +        cp ${hp} tmp/.libs +        atf_check -s eq:0 -o ignore -e ignore -x \ +                  "cd tmp && ./.libs/${h} srcdir_exists" +        atf_check -s eq:1 -o empty -e ignore "${hp}" -r res srcdir_exists +        atf_check -s eq:0 -o ignore -e empty grep "Cannot find datafile" res +    done + +    for hp in $(get_helpers c_helpers cpp_helpers); do +        h=${hp##*/} +        cp ${hp} tmp +        cp ${hp} tmp/.libs/lt-${h} +        atf_check -s eq:0 -o ignore -e ignore -x \ +                  "cd tmp && ./.libs/lt-${h} srcdir_exists" +        atf_check -s eq:1 -o empty -e ignore "${hp}" -r res srcdir_exists +        atf_check -s eq:0 -o ignore -e empty grep "Cannot find datafile" res +    done +} + +atf_test_case sflag +sflag_head() +{ +    atf_set "descr" "Checks that the program can find its files when" \ +                    "using the -s flag" +} +sflag_body() +{ +    create_files + +    for hp in $(get_helpers); do +        h=${hp##*/} +        cp ${hp} tmp +        atf_check -s eq:0 -o ignore -e ignore -x \ +                  "cd tmp && ./${h} -s $(pwd)/tmp \ +                   srcdir_exists" +        atf_check -s eq:1 -o empty -e save:stderr "${hp}" -r res srcdir_exists +        atf_check -s eq:0 -o ignore -e empty grep "Cannot find datafile" res +        atf_check -s eq:0 -o ignore -e ignore \ +                  "${hp}" -s "$(pwd)"/tmp srcdir_exists +    done +} + +atf_test_case relative +relative_head() +{ +    atf_set "descr" "Checks that passing a relative path through -s" \ +                    "works" +} +relative_body() +{ +    create_files + +    for hp in $(get_helpers); do +        h=${hp##*/} +        cp ${hp} tmp + +        for p in tmp tmp/. ./tmp; do +            echo "Helper is: ${h}" +            echo "Using source directory: ${p}" + +            atf_check -s eq:0 -o ignore -e ignore \ +                      "./tmp/${h}" -s "${p}" srcdir_exists +            atf_check -s eq:1 -o empty -e save:stderr "${hp}" -r res \ +                srcdir_exists +            atf_check -s eq:0 -o ignore -e empty grep "Cannot find datafile" res +            atf_check -s eq:0 -o ignore -e ignore \ +                      "${hp}" -s "${p}" srcdir_exists +        done +    done +} + +atf_init_test_cases() +{ +    atf_add_test_case default +    atf_add_test_case libtool +    atf_add_test_case sflag +    atf_add_test_case relative +} + +# vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 | 
