Files
tar/tests/rename05.at
Sergey Poznyakoff dbbffde583 Fix incremental archiving of renamed directories.
* src/incremen.c (struct directory): New member `next'.  Change
type of `name'.
(dirhead, dirtail): New statics.
(make_directory): Reflect changes to struct directory.
(free_directory, attach_directory): New functions.
(dirlist_replace_prefix): New function.
(note_directory): Use attach_directory, instead of make_directory,
(find_directory, find_directory_meta): Use free_directory.
(procdir): Replace directory prefixes in directory list to avoid
marking subdirectories as renamed after renaming their parent
directory.
(append_incremental_renames): Iterate over directory list, not
hash table, to preserve logical ordering of renames.
* tests/rename04.at, tests/rename05.at: New test cases.
* tests/Makefile.am, tests/testsuite.at: Add rename04.at and
rename05.at.
* tests/atlocal.in (decho): New function.
* tests/multiv06.at: Use decho instead of echo2.
* tests/incremental.at: Raise wait interval to 2 seconds.
2008-07-31 07:12:50 +00:00

82 lines
1.9 KiB
Plaintext

# Process this file with autom4te to create testsuite. -*- Autotest -*-
# Test suite for GNU tar.
# Copyright (C) 2008 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.
# Description: A continuation of rename04.at, that checks additionally if
# renamed subdirectories are restored correctly.
AT_SETUP([renamed subdirectories])
AT_KEYWORDS([incremental rename05 rename])
AT_TAR_CHECK([
AT_SORT_PREREQ
decho Creating directory structure
mkdir directory
mkdir directory/subdir
genfile --file=directory/file
decho Creating initial archive
tar -cf archive.1 -g db.1 directory
decho Renaming
mv directory/subdir directory/subdir.0
mv directory dir
decho Creating incremental archive
cp db.1 db.2
tar -cf archive.2 -g db.2 dir
mv dir orig
decho First restore
tar -xf archive.1 -g db.1
find directory | sort
decho Second restore
tar -xf archive.2 -g db.2
find dir | sort
],
[0],
[Creating directory structure
Creating initial archive
Renaming
Creating incremental archive
First restore
directory
directory/file
directory/subdir
Second restore
dir
dir/subdir.0
],
[Creating directory structure
Creating initial archive
Renaming
Creating incremental archive
First restore
Second restore
],[],[],[gnu, oldgnu, posix])
AT_CLEANUP
# End of rename05.at