summaryrefslogtreecommitdiff
path: root/tests/rename05.at
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2008-07-31 07:12:50 +0000
committerSergey Poznyakoff <gray@gnu.org.ua>2008-07-31 07:12:50 +0000
commitdbbffde5835102b0cb1361c9f8dc716a38060d0d (patch)
tree8ea8d8425a03f2587555ce3faf147c3cf2065c53 /tests/rename05.at
parent1d79c6734cfbd302e53358760b4c3fe3e7b9be61 (diff)
downloadtar-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.at81
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
+
+