123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- #! /bin/sh
- # Copyright (C) 2002-2017 Free Software Foundation, Inc.
- #
- # This program is free software; you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation; either version 2, or (at your option)
- # any later version.
- #
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
- # Various install-sh checks.
- am_create_testdir=empty
- . test-init.sh
- install_sh_fail ()
- {
- err_rx=$1; shift
- ./install-sh ${1+"$@"} 2>stderr && { cat stderr >&2; exit 1; }
- cat stderr >&2
- $EGREP "install-sh:.* $err_rx" stderr || exit 1
- }
- get_shell_script install-sh
- # Basic errors.
- install_sh_fail 'no input file specified'
- install_sh_fail 'no input file specified' dest
- install_sh_fail 'no input file specified' -m 644 dest
- install_sh_fail 'no input file specified' -c -t dest
- # Incorrect usages.
- : > bar
- : > baz
- : > qux
- install_sh_fail 'target directory not allowed when installing a directory' \
- -d -t foo
- install_sh_fail 'target directory not allowed when installing a directory' \
- -d -t foo bar
- install_sh_fail 'foo: [iI]s not a directory' -t foo bar
- install_sh_fail 'foo: [iI]s not a directory' bar baz foo
- mkdir foo
- install_sh_fail 'target directory not allowed when installing a directory' \
- -d -t foo
- install_sh_fail 'target directory not allowed when installing a directory' \
- -d -t foo bar
- rmdir foo
- rm -f bar baz qux
- # Directories.
- for opts in '-d' '-d -T' '-T -d' '-d -T -d' '-T -d -T -d -T'; do
- # It should be OK to create no directory. We sometimes need
- # this when directory are conditionally defined.
- ./install-sh $opts
- # One directory.
- ./install-sh $opts d0
- test -d d0
- # Multiple directories (for make installdirs).
- ./install-sh $opts d1 d2 d3 d4
- test -d d1
- test -d d2
- test -d d3
- test -d d4
- rmdir d[0-9]
- # Subdirectories.
- ./install-sh $opts p1/p2/p3 p4//p5//p6//
- test -d p1/p2/p3
- test -d p4/p5/p6
- rmdir p[0-9]/p[0-9]/p[0-9]
- rmdir p[0-9]/p[0-9]
- rmdir p[0-9]
- done
- # Files.
- mkdir d0 d1 d2 d3 d4
- : > x
- ./install-sh -c -m 644 x y
- test -f x
- test -f y
- ./install-sh -m 644 y z
- test -f y
- test -f z
- # Multiple files.
- ./install-sh -m 644 -c x z d1
- test -f x
- test -f z
- test -f d1/x
- test -f d1/z
- ./install-sh -m 644 x z d2//
- test -f x
- test -f z
- test -f d2/x
- test -f d2/z
- ./install-sh -t d3 -m 644 x z
- test -f x
- test -f z
- test -f d3/x
- test -f d3/z
- ./install-sh -t d4// -m 644 x z
- test -f x
- test -f z
- test -f d4/x
- test -f d4/z
- ./install-sh -T x d3/y
- test -f x
- test -f d3/y
- install_sh_fail 'd3: [iI]s a directory' -T x d3
- install_sh_fail 'd4(//)?: [iI]s a directory' -T x d4//
- # Ensure that install-sh works with names that include spaces.
- touch 'a b'
- mkdir 'x y'
- ./install-sh 'a b' 'x y'
- test -f x\ \ y/a\ \ b
- test -f 'a b'
- # Ensure we do not run into 'test' operator precedence bugs with Tru64 sh.
- for c in = '(' ')' '!'; do
- install_sh_fail 'no input file specified' $c
- test -f stderr # sanity check
- grep 'test: ' stderr && exit 1
- # Skip tests if the file system is not capable.
- mkdir ./$c || continue
- rmdir ./$c
- ./install-sh -d $c/$c/$c
- rm -rf ./$c
- ./install-sh -d $c d5/$c/$c
- test -d ./$c
- test -d d5/$c/$c
- ./install-sh x $c
- test -f ./$c/x
- rm -f ./$c/x
- ./install-sh -t $c x
- test -f ./$c/x
- rm -rf ./$c
- ( : > ./$c ) || continue
- ./install-sh $c x d5/$c/$c
- test -f d5/$c/$c/x
- test -f d5/$c/$c/$c
- rm -f d5/$c/$c/?
- ./install-sh -t d5/$c/$c $c x
- test -f d5/$c/$c/x
- test -f d5/$c/$c/$c
- done
- :
|