123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- # Process this file with autom4te to create testsuite. -*- Autotest -*-
- # Test suite for GNU tar.
- # Copyright 2009-2023 Free Software Foundation, Inc.
- # This file is part of GNU tar.
- # GNU tar 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 of the License, or
- # (at your option) any later version.
- # GNU tar 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/>.
- # Description: When called with --create --remove-files and a compression
- # options tar (v. <= 1.22.90) would remove files even if it had failed
- # to store them in the archive.
- #
- # References: <[email protected]>
- # http://lists.gnu.org/archive/html/bug-tar/2009-10/msg00005.html
- AT_SETUP([remove-files with compression])
- AT_KEYWORDS([create remove-files remfiles01 gzip])
- unset TAR_OPTIONS
- AT_CHECK([
- AT_UNPRIVILEGED_PREREQ
- AT_GZIP_PREREQ
- AT_SIGPIPE_PREREQ
- AT_SORT_PREREQ
- mkdir dir
- cd dir
- genfile --file a --length 0
- chmod 0 a
- genfile --file b
- mkdir c
- # Depending on when the SIGPIPE gets delivered, the invocation below
- # may finish with either
- # tar: a: Cannot write: Broken pipe
- # or
- # tar: Child returned status 2
- # Discard diagnostics that some shells generate about broken pipes,
- # and discard all of tar's diagnostics except for the ones saying "(child)".
- # Gzip's exit code is propagated to the shell. Usually it is 141.
- # Convert all non-zero exits to 2 to make it predictable.
- (tar -c -f a -z --remove-files b c 2>err || (exit 2) ) 2>/dev/null
- EC=$?
- sed -n '/(child)/p' err >&2
- rm err
- find . | sort
- exit $EC
- ],
- [2],
- [.
- ./a
- ./b
- ./c
- ],
- [tar (child): a: Cannot open: Permission denied
- tar (child): Error is not recoverable: exiting now
- ])
- AT_CLEANUP
|