Files
tar/tests/testsuite.at
Paul Eggert 1f9b376c90 tar: --owner and --group names and numbers
The --owner and --group options now accept operands of the form
NAME:NUM, so that you can specify both symbolic name and numeric
ID for owner and group.  Also, in these options, NAME no longer
needs to be present in the current host's user and group
databases; this implements Debian enhancement request 136231
<http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=136231> reported
by Mark W. Eichin, communicated by Thayne Harbaugh to bug-tar in
<http://lists.gnu.org/archive/html/bug-tar/2011-08/msg00001.html>.
* NEWS, doc/tar.texi (Option Summary, override): Document enhancement.
* src/common.h (group_name_option, owner_name_option): New decls.
* src/create.c (start_header): Don't assume owner and group names
are in current host database.
* src/tar.c (parse_owner_group): New function, for parsing NAME:NUM.
(parse_opt): Use it.
(decode_options): Initialize owner_name_option, group_name_option.
* tests/owner.at: New file, to test this enhancement.
* tests/Makefile.am (TESTSUITE_AT): Add it.
* tests/testsuite.at: Include it.
2011-08-13 10:20:40 -07:00

274 lines
6.4 KiB
Plaintext

# Process this file with autom4te to create testsuite. -*- Autotest -*-
# Test suite for GNU tar.
# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2010 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 3, 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, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
# We need a recent Autotest.
m4_version_prereq([2.52g])
m4_define([AT_TAR_CHECK_HOOK])
m4_define([AT_TAR_CHECK],[
AT_XFAIL_IF(test -f $[]XFAILFILE)
m4_foreach([FMT],
[m4_if([$7],[],[v7,oldgnu,ustar,posix,gnu],[$7])],
[AT_CHECK([
mkdir FMT
(cd FMT
TEST_TAR_FORMAT=FMT
export TEST_TAR_FORMAT
TAR_OPTIONS="-H FMT"
export TAR_OPTIONS
rm -rf *
$1)],$2,$3,$4,$5,$6)
AT_TAR_CHECK_HOOK])
])
m4_define([AT_TAR_WITH_HOOK],[
m4_pushdef([AT_TAR_CHECK_HOOK],[$1])
$2
m4_popdef([AT_TAR_CHECK_HOOK])])
m4_define([TAR_IGNREC_HOOK],[
AT_CHECK([grep -v '^.*tar: Record size = ' stderr; exit 0])
])
m4_define([RE_CHECK],[
AT_DATA([$1.re],[$2])
awk '{print NR " " $[]0}' $1 > $[]$.1
awk '{print NR " " $[]0}' $1.re | join - $[]$.1 |
while read NUM RE LINE
do
echo "$LINE" | grep -- "$RE" >/dev/null || exit 1
done
])
m4_define([AT_SKIP_TEST],[exit 77])
dnl AT_TARBALL_PREREQ(tarball, md5sum) - Check if test tarball exists
dnl in $TEST_DATA_DIR. If it does not, try to download it from
dnl $TEST_DATA_URL. If download fails, or it the file's md5 sum does not
dnl match second argument, skip the test.
m4_define([AT_TARBALL_PREREQ],[
test -z "$[]TEST_DATA_DIR" && AT_SKIP_TEST
tarball_prereq $1 $2 $[]TEST_DATA_DIR $[]TEST_DATA_URL || AT_SKIP_TEST])
dnl AT_STAR_PREREQ(tarball, md5sum) - Same for star testfiles
m4_define([AT_STAR_PREREQ],[
test -z "$STAR_TESTSCRIPTS" && AT_SKIP_TEST
tarball_prereq $1 $2 $[]STAR_TESTSCRIPTS $[]STAR_DATA_URL || AT_SKIP_TEST
])
dnl AT_GZIP_PREREQ - Skip test unless gzip (or $1) is available
m4_define([AT_GZIP_PREREQ],[
cat /dev/null | m4_if([$1],[],gzip,[$1]) - > /dev/null 2>&1 || AT_SKIP_TEST
])
dnl AT_SIGPIPE_PREREQ - Skip test unless SIGPIPE handling is the default
m4_define([AT_SIGPIPE_PREREQ],[
case `(cat "$at_myself" 2>&3 | :) 3>&1 >/dev/null` in #(
?*) AT_SKIP_TEST;;
esac
])
dnl AT_SORT_PREREQ - Skip test if sort utility outputs unwanted data on stderr
m4_define([AT_SORT_PREREQ],[
test -z "`sort < /dev/null 2>&1`" || AT_SKIP_TEST
])
dnl AT_UNPRIVILEGED_PREREQ - Skip test if running at root privileges
m4_define([AT_UNPRIVILEGED_PREREQ],[
echo "test" > $[]$
chmod 0 $[]$
cat $[]$ > /dev/null 2>&1
result=$?
rm -f $[]$
test $result -eq 0 && AT_SKIP_TEST
])
m4_define([AT_TAR_MKHIER],[
install-sh -d $1 >/dev/null dnl
m4_if([$2],,,&& genfile --file [$1]/[$2]) || AT_SKIP_TEST])
m4_include([sparsemvp.at])
AT_INIT
AT_TESTED([tar])
m4_include([version.at])
m4_include([pipe.at])
m4_include([options.at])
m4_include([options02.at])
m4_include([T-empty.at])
m4_include([T-null.at])
m4_include([indexfile.at])
m4_include([verbose.at])
m4_include([append.at])
m4_include([append01.at])
m4_include([append02.at])
m4_include([append03.at])
m4_include([xform-h.at])
m4_include([xform01.at])
m4_include([exclude.at])
m4_include([exclude01.at])
m4_include([exclude02.at])
m4_include([exclude03.at])
m4_include([exclude04.at])
m4_include([exclude05.at])
m4_include([exclude06.at])
m4_include([exclude07.at])
m4_include([delete01.at])
m4_include([delete02.at])
m4_include([delete03.at])
m4_include([delete04.at])
m4_include([delete05.at])
m4_include([extrac01.at])
m4_include([extrac02.at])
m4_include([extrac03.at])
m4_include([extrac04.at])
m4_include([extrac05.at])
m4_include([extrac06.at])
m4_include([extrac07.at])
m4_include([extrac08.at])
m4_include([extrac09.at])
m4_include([extrac10.at])
m4_include([extrac11.at])
m4_include([extrac12.at])
m4_include([extrac13.at])
m4_include([extrac14.at])
m4_include([extrac15.at])
m4_include([extrac16.at])
m4_include([extrac17.at])
m4_include([label01.at])
m4_include([label02.at])
m4_include([label03.at])
m4_include([label04.at])
m4_include([label05.at])
m4_include([backup01.at])
m4_include([gzip.at])
m4_include([incremental.at])
m4_include([incr01.at])
m4_include([incr02.at])
m4_include([listed01.at])
m4_include([listed02.at])
m4_include([listed03.at])
m4_include([listed04.at])
m4_include([incr03.at])
m4_include([incr04.at])
m4_include([incr05.at])
m4_include([incr06.at])
m4_include([filerem01.at])
m4_include([filerem02.at])
m4_include([rename01.at])
m4_include([rename02.at])
m4_include([rename03.at])
m4_include([rename04.at])
m4_include([rename05.at])
m4_include([chtype.at])
m4_include([ignfail.at])
m4_include([link01.at])
m4_include([link02.at])
m4_include([link03.at])
m4_include([link04.at])
m4_include([longv7.at])
m4_include([long01.at])
m4_include([lustar01.at])
m4_include([lustar02.at])
m4_include([lustar03.at])
m4_include([multiv01.at])
m4_include([multiv02.at])
m4_include([multiv03.at])
m4_include([multiv04.at])
m4_include([multiv05.at])
m4_include([multiv06.at])
m4_include([multiv07.at])
m4_include([multiv08.at])
m4_include([old.at])
m4_include([owner.at])
m4_include([recurse.at])
m4_include([same-order01.at])
m4_include([same-order02.at])
m4_include([shortrec.at])
m4_include([sparse01.at])
m4_include([sparse02.at])
m4_include([sparse03.at])
m4_include([sparse04.at])
m4_include([sparsemv.at])
m4_include([spmvp00.at])
m4_include([spmvp01.at])
m4_include([spmvp10.at])
m4_include([update.at])
m4_include([update01.at])
m4_include([update02.at])
m4_include([verify.at])
m4_include([volume.at])
m4_include([volsize.at])
m4_include([comprec.at])
m4_include([shortfile.at])
m4_include([shortupd.at])
m4_include([truncate.at])
m4_include([grow.at])
m4_include([remfiles01.at])
m4_include([remfiles02.at])
m4_include([remfiles03.at])
m4_include([sigpipe.at])
m4_include([star/gtarfail.at])
m4_include([star/gtarfail2.at])
m4_include([star/multi-fail.at])
m4_include([star/ustar-big-2g.at])
m4_include([star/ustar-big-8g.at])
m4_include([star/pax-big-10g.at])