Files
tar/tests/update04.at
Sergey Poznyakoff 10954cf163 Fix --update --wildcards
* src/common.h (name): New field: is_wildcard.
(name_scan): Change protoype.
* src/delete.c: Update calls to name_scan.
* src/names.c (addname, add_starting_file): Initialize is_wildcard.
(namelist_match): Take two arguments.  If second one is true, return
only exact matches.
(name_scan): Likewise.  All callers updated.
(name_from_list): Skip patterns.
* src/update.c (remove_exact_name): New function.
(update_archive): Do not remove matching name, if it is a pattern.
Instead, add a new entry with the matching file name.

* tests/update04.at: New test.
* tests/Makefile.am: Add new test.
* tests/testsuite.at: Include new test.

* NEWS: Update.
2023-07-10 21:25:30 +03:00

57 lines
1.4 KiB
Plaintext

# Process this file with autom4te to create testsuite. -*- Autotest -*-
# Test suite for GNU tar.
# Copyright 2016-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/>.
AT_SETUP([update with wildcards])
AT_KEYWORDS([update update04 wildcards])
AT_TAR_CHECK([
genfile --file file.a
genfile --file file.b
genfile --file file.c
echo Create
tar cf archive ./file.*
sleep 1
echo "update" > file.b
echo First update
tar ufv archive --wildcards './file.*'
echo "Second update"
tar ufv archive --wildcards './file.*'
echo "Non-matching pattern"
tar ufv archive --wildcards './file.*' './foo.*'
echo $?
],
[0],
[Create
First update
./file.b
Second update
Non-matching pattern
2
],
[tar: ./foo.*: Not found in archive
tar: Exiting with failure status due to previous errors
])
AT_CLEANUP