diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2008-07-31 07:12:50 +0000 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2008-07-31 07:12:50 +0000 |
commit | dbbffde5835102b0cb1361c9f8dc716a38060d0d (patch) | |
tree | 8ea8d8425a03f2587555ce3faf147c3cf2065c53 /tests/rename05.at | |
parent | 1d79c6734cfbd302e53358760b4c3fe3e7b9be61 (diff) | |
download | tar-dbbffde5835102b0cb1361c9f8dc716a38060d0d.tar.gz |
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.
Diffstat (limited to 'tests/rename05.at')
-rw-r--r-- | tests/rename05.at | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/tests/rename05.at b/tests/rename05.at new file mode 100644 index 00000000..3ad93a67 --- /dev/null +++ b/tests/rename05.at @@ -0,0 +1,81 @@ +# 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 + + |