[cedar-backup-svn] SF.net SVN: cedar-backup: [858] cedar-backup2/trunk
Brought to you by:
pronovic
|
From: <pro...@us...> - 2008-03-17 02:46:48
|
Revision: 858
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=858&view=rev
Author: pronovic
Date: 2008-03-16 19:46:45 -0700 (Sun, 16 Mar 2008)
Log Message:
-----------
Add support for collecting soft links (closes: #1854631)
Modified Paths:
--------------
cedar-backup2/trunk/CedarBackup2/actions/collect.py
cedar-backup2/trunk/CedarBackup2/config.py
cedar-backup2/trunk/CedarBackup2/filesystem.py
cedar-backup2/trunk/Changelog
cedar-backup2/trunk/manual/src/config.xml
cedar-backup2/trunk/test/configtests.py
cedar-backup2/trunk/test/data/cback.conf.15
cedar-backup2/trunk/test/data/cback.conf.20
cedar-backup2/trunk/test/data/cback.conf.21
cedar-backup2/trunk/test/data/cback.conf.8
Modified: cedar-backup2/trunk/CedarBackup2/actions/collect.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/actions/collect.py 2008-03-17 02:44:37 UTC (rev 857)
+++ cedar-backup2/trunk/CedarBackup2/actions/collect.py 2008-03-17 02:46:45 UTC (rev 858)
@@ -8,7 +8,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2004-2007 Kenneth J. Pronovici.
+# Copyright (c) 2004-2008 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
@@ -126,14 +126,15 @@
collectMode = _getCollectMode(config, collectDir)
archiveMode = _getArchiveMode(config, collectDir)
ignoreFile = _getIgnoreFile(config, collectDir)
+ linkDepth = _getLinkDepth(collectDir)
digestPath = _getDigestPath(config, collectDir)
tarfilePath = _getTarfilePath(config, collectDir, archiveMode)
(excludePaths, excludePatterns) = _getExclusions(config, collectDir)
if fullBackup or (collectMode in ['daily', 'incr', ]) or (collectMode == 'weekly' and todayIsStart):
logger.debug("Directory meets criteria to be backed up today.")
_collectDirectory(config, collectDir.absolutePath, tarfilePath,
- collectMode, archiveMode, ignoreFile, resetDigest,
- digestPath, excludePaths, excludePatterns)
+ collectMode, archiveMode, ignoreFile, linkDepth,
+ resetDigest, digestPath, excludePaths, excludePatterns)
else:
logger.debug("Directory will not be backed up, per collect mode.")
logger.info("Completed collecting directory [%s]" % collectDir.absolutePath)
@@ -181,7 +182,8 @@
###############################
def _collectDirectory(config, absolutePath, tarfilePath, collectMode, archiveMode,
- ignoreFile, resetDigest, digestPath, excludePaths, excludePatterns):
+ ignoreFile, linkDepth, resetDigest, digestPath, excludePaths,
+ excludePatterns):
"""
Collects a configured collect directory.
@@ -200,6 +202,7 @@
@param collectMode: Collect mode to use.
@param archiveMode: Archive mode to use.
@param ignoreFile: Ignore file to use.
+ @param linkDepth: Link depth value to use.
@param resetDigest: Reset digest flag.
@param digestPath: Path to digest file on disk, if needed.
@param excludePaths: List of absolute paths to exclude.
@@ -209,7 +212,7 @@
backupList.ignoreFile = ignoreFile
backupList.excludePaths = excludePaths
backupList.excludePatterns = excludePatterns
- backupList.addDirContents(absolutePath)
+ backupList.addDirContents(absolutePath, linkDepth=linkDepth)
_executeBackup(config, backupList, absolutePath, tarfilePath, collectMode, archiveMode, resetDigest, digestPath)
@@ -385,6 +388,25 @@
############################
+# _getLinkDepth() function
+############################
+
+def _getLinkDepth(item):
+ """
+ Gets the link depth that should be used for a collect directory.
+ If possible, use the one on the directory, otherwise set a value of 0 (zero).
+ @param item: C{CollectDir} object
+ @return: Ignore file to use.
+ """
+ if item.linkDepth is None:
+ linkDepth = 0
+ else:
+ linkDepth = item.linkDepth
+ logger.debug("Link depth is [%d]" % linkDepth)
+ return linkDepth
+
+
+############################
# _getDigestPath() function
############################
Modified: cedar-backup2/trunk/CedarBackup2/config.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/config.py 2008-03-17 02:44:37 UTC (rev 857)
+++ cedar-backup2/trunk/CedarBackup2/config.py 2008-03-17 02:46:45 UTC (rev 858)
@@ -8,7 +8,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2004-2007 Kenneth J. Pronovici.
+# Copyright (c) 2004-2008 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
@@ -1230,12 +1230,13 @@
@note: Lists within this class are "unordered" for equality comparisons.
@sort: __init__, __repr__, __str__, __cmp__, absolutePath, collectMode,
- archiveMode, ignoreFile, absoluteExcludePaths, relativeExcludePaths,
- excludePatterns
+ archiveMode, ignoreFile, linkDepth, absoluteExcludePaths,
+ relativeExcludePaths, excludePatterns
"""
def __init__(self, absolutePath=None, collectMode=None, archiveMode=None, ignoreFile=None,
- absoluteExcludePaths=None, relativeExcludePaths=None, excludePatterns=None):
+ absoluteExcludePaths=None, relativeExcludePaths=None, excludePatterns=None,
+ linkDepth=None):
"""
Constructor for the C{CollectDir} class.
@@ -1243,6 +1244,7 @@
@param collectMode: Overridden collect mode for this directory.
@param archiveMode: Overridden archive mode for this directory.
@param ignoreFile: Overidden ignore file name for this directory.
+ @param linkDepth: Maximum at which soft links should be followed.
@param absoluteExcludePaths: List of absolute paths to exclude.
@param relativeExcludePaths: List of relative paths to exclude.
@param excludePatterns: List of regular expression patterns to exclude.
@@ -1253,6 +1255,7 @@
self._collectMode = None
self._archiveMode = None
self._ignoreFile = None
+ self._linkDepth = None
self._absoluteExcludePaths = None
self._relativeExcludePaths = None
self._excludePatterns = None
@@ -1260,6 +1263,7 @@
self.collectMode = collectMode
self.archiveMode = archiveMode
self.ignoreFile = ignoreFile
+ self.linkDepth = linkDepth
self.absoluteExcludePaths = absoluteExcludePaths
self.relativeExcludePaths = relativeExcludePaths
self.excludePatterns = excludePatterns
@@ -1268,11 +1272,12 @@
"""
Official string representation for class instance.
"""
- return "CollectDir(%s, %s, %s, %s, %s, %s, %s)" % (self.absolutePath, self.collectMode,
- self.archiveMode, self.ignoreFile,
- self.absoluteExcludePaths,
- self.relativeExcludePaths,
- self.excludePatterns)
+ return "CollectDir(%s, %s, %s, %s, %s, %s, %s, %s)" % (self.absolutePath, self.collectMode,
+ self.archiveMode, self.ignoreFile,
+ self.absoluteExcludePaths,
+ self.relativeExcludePaths,
+ self.excludePatterns,
+ self.linkDepth)
def __str__(self):
"""
@@ -1309,6 +1314,11 @@
return -1
else:
return 1
+ if self._linkDepth != other._linkDepth:
+ if self._linkDepth < other._linkDepth:
+ return -1
+ else:
+ return 1
if self._absoluteExcludePaths != other._absoluteExcludePaths:
if self._absoluteExcludePaths < other._absoluteExcludePaths:
return -1
@@ -1396,6 +1406,29 @@
"""
return self._ignoreFile
+ def _setLinkDepth(self, value):
+ """
+ Property target used to set the link depth.
+ The value must be an integer >= 0.
+ @raise ValueError: If the value is not valid.
+ """
+ if value is None:
+ self._linkDepth = None
+ else:
+ try:
+ value = int(value)
+ except TypeError:
+ raise ValueError("Link depth value must be an integer >= 0.")
+ if value < 0:
+ raise ValueError("Link depth value must be an integer >= 0.")
+ self._linkDepth = value
+
+ def _getLinkDepth(self):
+ """
+ Property target used to get the action linkDepth.
+ """
+ return self._linkDepth
+
def _setAbsoluteExcludePaths(self, value):
"""
Property target used to set the absolute exclude paths list.
@@ -1467,6 +1500,7 @@
collectMode = property(_getCollectMode, _setCollectMode, None, doc="Overridden collect mode for this directory.")
archiveMode = property(_getArchiveMode, _setArchiveMode, None, doc="Overridden archive mode for this directory.")
ignoreFile = property(_getIgnoreFile, _setIgnoreFile, None, doc="Overridden ignore file name for this directory.")
+ linkDepth = property(_getLinkDepth, _setLinkDepth, None, doc="Maximum at which soft links should be followed.")
absoluteExcludePaths = property(_getAbsoluteExcludePaths, _setAbsoluteExcludePaths, None, "List of absolute paths to exclude.")
relativeExcludePaths = property(_getRelativeExcludePaths, _setRelativeExcludePaths, None, "List of relative paths to exclude.")
excludePatterns = property(_getExcludePatterns, _setExcludePatterns, None, "List of regular expression patterns to exclude.")
@@ -4550,6 +4584,7 @@
collectMode mode I{or} collect_mode
archiveMode archive_mode
ignoreFile ignore_file
+ linkDepth link_depth
The collect mode is a special case. Just a C{mode} tag is accepted for
backwards compatibility, but we prefer C{collect_mode} for consistency
@@ -4580,6 +4615,7 @@
cdir.collectMode = readString(entry, "collect_mode")
cdir.archiveMode = readString(entry, "archive_mode")
cdir.ignoreFile = readString(entry, "ignore_file")
+ cdir.linkDepth = readInteger(entry, "link_depth")
(cdir.absoluteExcludePaths, cdir.relativeExcludePaths, cdir.excludePatterns) = Config._parseExclusions(entry)
lst.append(cdir)
if lst == []:
@@ -5199,6 +5235,7 @@
collectMode dir/collect_mode
archiveMode dir/archive_mode
ignoreFile dir/ignore_file
+ linkDepth dir/link_depth
Note that an original XML document might have listed the collect mode
using the C{mode} tag, since we accept both C{collect_mode} and C{mode}.
@@ -5226,6 +5263,7 @@
addStringNode(xmlDom, sectionNode, "collect_mode", collectDir.collectMode)
addStringNode(xmlDom, sectionNode, "archive_mode", collectDir.archiveMode)
addStringNode(xmlDom, sectionNode, "ignore_file", collectDir.ignoreFile)
+ addIntegerNode(xmlDom, sectionNode, "link_depth", collectDir.linkDepth)
if ((collectDir.absoluteExcludePaths is not None and collectDir.absoluteExcludePaths != []) or
(collectDir.relativeExcludePaths is not None and collectDir.relativeExcludePaths != []) or
(collectDir.excludePatterns is not None and collectDir.excludePatterns != [])):
Modified: cedar-backup2/trunk/CedarBackup2/filesystem.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/filesystem.py 2008-03-17 02:44:37 UTC (rev 857)
+++ cedar-backup2/trunk/CedarBackup2/filesystem.py 2008-03-17 02:46:45 UTC (rev 858)
@@ -396,7 +396,7 @@
@param addSelf: Indicates whether the directory itself should be added to the list.
@type addSelf: Boolean value
- @param linkDepth: Depth to which soft links should be followed
+ @param linkDepth: Maximum depth of the tree at which soft links should be followed
@type linkDepth: Integer value, where zero means not to follow any soft links
@return: Number of items recursively added to the list
Modified: cedar-backup2/trunk/Changelog
===================================================================
--- cedar-backup2/trunk/Changelog 2008-03-17 02:44:37 UTC (rev 857)
+++ cedar-backup2/trunk/Changelog 2008-03-17 02:46:45 UTC (rev 858)
@@ -1,6 +1,11 @@
Version 2.16.0 unreleased
- * Add linkDepth parameter to FilesystemList.addDirContents().
+ * Make name attribute optional in RemotPeer constructor.
+ * Add support for collecting soft links (closes: #1854631).
+ - Add linkDepth parameter to FilesystemList.addDirContents()
+ - Add CollectDir.linkDepth attribute
+ - Modify collect action to obey CollectDir.linkDepth
+ - Update user manual to discuss new attribute
Version 2.15.3 16 Mar 2008
Modified: cedar-backup2/trunk/manual/src/config.xml
===================================================================
--- cedar-backup2/trunk/manual/src/config.xml 2008-03-17 02:44:37 UTC (rev 857)
+++ cedar-backup2/trunk/manual/src/config.xml 2008-03-17 02:46:45 UTC (rev 858)
@@ -1459,8 +1459,8 @@
</para>
<para>
This section can be repeated as many times as is
- necessary. At least one collect directory must be
- configured when the collect action is executed.
+ necessary. At least one collect directory or collect file
+ must be configured when the collect action is executed.
</para>
<para>
The collect directory subsection contains the following
@@ -1585,6 +1585,32 @@
</varlistentry>
<varlistentry>
+ <term><literal>link_depth</literal></term>
+ <listitem>
+ <para>Link depth value to use for this directory.</para>
+ <para>
+ The link depth is maximum depth of the tree at
+ which soft links should be followed. So, a depth
+ of 0 does not follow any soft links within the
+ collect directory, a depth of 1 follows only
+ links immediately within the collect directory, a
+ depth of 2 follows the links at the next level
+ down, etc.
+ </para>
+ <para>
+ This field is optional. If it doesn't exist,
+ the backup will assume a value of zero, meaning
+ that soft links within the collect directory will
+ never be followed.
+ </para>
+ <para>
+ <emphasis>Restrictions:</emphasis> If set, must
+ be an integer ≥ 0.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
<term><literal>exclude</literal></term>
<listitem>
<para>List of paths or patterns to exclude from the backup.</para>
Modified: cedar-backup2/trunk/test/configtests.py
===================================================================
--- cedar-backup2/trunk/test/configtests.py 2008-03-17 02:44:37 UTC (rev 857)
+++ cedar-backup2/trunk/test/configtests.py 2008-03-17 02:46:45 UTC (rev 858)
@@ -2162,6 +2162,7 @@
self.failUnlessEqual(None, collectDir.collectMode)
self.failUnlessEqual(None, collectDir.archiveMode)
self.failUnlessEqual(None, collectDir.ignoreFile)
+ self.failUnlessEqual(None, collectDir.linkDepth)
self.failUnlessEqual(None, collectDir.absoluteExcludePaths)
self.failUnlessEqual(None, collectDir.relativeExcludePaths)
self.failUnlessEqual(None, collectDir.excludePatterns)
@@ -2170,11 +2171,12 @@
"""
Test constructor with all values filled in, with valid values.
"""
- collectDir = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [])
+ collectDir = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [], 2)
self.failUnlessEqual("/etc/whatever", collectDir.absolutePath)
self.failUnlessEqual("incr", collectDir.collectMode)
self.failUnlessEqual("tar", collectDir.archiveMode)
self.failUnlessEqual(".ignore", collectDir.ignoreFile)
+ self.failUnlessEqual(2, collectDir.linkDepth)
self.failUnlessEqual([], collectDir.absoluteExcludePaths)
self.failUnlessEqual([], collectDir.relativeExcludePaths)
self.failUnlessEqual([], collectDir.excludePatterns)
@@ -2502,7 +2504,34 @@
self.failUnlessAssignRaises(ValueError, collectDir, "excludePatterns", ["*.jpg", "valid", ])
self.failUnlessEqual(None, collectDir.excludePatterns)
+ def testConstructor_036(self):
+ """
+ Test assignment of linkDepth attribute, None value.
+ """
+ collectDir = CollectDir(linkDepth=1)
+ self.failUnlessEqual(1, collectDir.linkDepth)
+ collectDir.linkDepth = None
+ self.failUnlessEqual(None, collectDir.linkDepth)
+ def testConstructor_037(self):
+ """
+ Test assignment of linkDepth attribute, valid value.
+ """
+ collectDir = CollectDir()
+ self.failUnlessEqual(None, collectDir.linkDepth)
+ collectDir.linkDepth = 1
+ self.failUnlessEqual(1, collectDir.linkDepth)
+
+ def testConstructor_038(self):
+ """
+ Test assignment of linkDepth attribute, invalid value.
+ """
+ collectDir = CollectDir()
+ self.failUnlessEqual(None, collectDir.linkDepth)
+ self.failUnlessAssignRaises(ValueError, collectDir, "linkDepth", "ken")
+ self.failUnlessEqual(None, collectDir.linkDepth)
+
+
############################
# Test comparison operators
############################
@@ -2526,8 +2555,8 @@
Test comparison of two identical objects, all attributes non-None (empty
lists).
"""
- collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [])
- collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [])
+ collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [], 1)
+ collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [], 1)
self.failUnless(collectDir1 == collectDir2)
self.failUnless(not collectDir1 < collectDir2)
self.failUnless(collectDir1 <= collectDir2)
@@ -2540,8 +2569,8 @@
Test comparison of two identical objects, all attributes non-None
(non-empty lists).
"""
- collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", ["/one",], ["two",], ["three",])
- collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", ["/one",], ["two",], ["three",])
+ collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", ["/one",], ["two",], ["three",], 1)
+ collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", ["/one",], ["two",], ["three",], 1)
self.failUnless(collectDir1 == collectDir2)
self.failUnless(not collectDir1 < collectDir2)
self.failUnless(collectDir1 <= collectDir2)
@@ -2567,8 +2596,8 @@
"""
Test comparison of two differing objects, absolutePath differs.
"""
- collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [])
- collectDir2 = CollectDir("/stuff", "incr", "tar", ".ignore", [], [], [])
+ collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [], 1)
+ collectDir2 = CollectDir("/stuff", "incr", "tar", ".ignore", [], [], [], 1)
self.failIfEqual(collectDir1, collectDir2)
self.failUnless(not collectDir1 == collectDir2)
self.failUnless(collectDir1 < collectDir2)
@@ -2595,8 +2624,8 @@
"""
Test comparison of two differing objects, collectMode differs.
"""
- collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [])
- collectDir2 = CollectDir("/etc/whatever", "daily", "tar", ".ignore", [], [], [])
+ collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [], 1)
+ collectDir2 = CollectDir("/etc/whatever", "daily", "tar", ".ignore", [], [], [], 1)
self.failIfEqual(collectDir1, collectDir2)
self.failUnless(not collectDir1 == collectDir2)
self.failUnless(not collectDir1 < collectDir2)
@@ -2623,8 +2652,8 @@
"""
Test comparison of two differing objects, archiveMode differs.
"""
- collectDir1 = CollectDir("/etc/whatever", "incr", "targz", ".ignore", [], [], [])
- collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [])
+ collectDir1 = CollectDir("/etc/whatever", "incr", "targz", ".ignore", [], [], [], 1)
+ collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [], 1)
self.failIfEqual(collectDir1, collectDir2)
self.failUnless(not collectDir1 == collectDir2)
self.failUnless(not collectDir1 < collectDir2)
@@ -2651,8 +2680,8 @@
"""
Test comparison of two differing objects, ignoreFile differs.
"""
- collectDir1 = CollectDir("/etc/whatever", "incr", "tar", "ignore", [], [], [])
- collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [])
+ collectDir1 = CollectDir("/etc/whatever", "incr", "tar", "ignore", [], [], [], 1)
+ collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [], 1)
self.failIfEqual(collectDir1, collectDir2)
self.failUnless(not collectDir1 == collectDir2)
self.failUnless(not collectDir1 < collectDir2)
@@ -2696,8 +2725,8 @@
Test comparison of two differing objects, absoluteExcludePaths differs
(one empty, one not empty).
"""
- collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [])
- collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", ["/whatever", ], [], [])
+ collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [], 1)
+ collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", ["/whatever", ], [], [], 1)
self.failIfEqual(collectDir1, collectDir2)
self.failUnless(not collectDir1 == collectDir2)
self.failUnless(collectDir1 < collectDir2)
@@ -2711,8 +2740,8 @@
Test comparison of two differing objects, absoluteExcludePaths differs
(both not empty).
"""
- collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", ["/stuff", ], [], [])
- collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", ["/stuff", "/something", ], [], [])
+ collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", ["/stuff", ], [], [], 1)
+ collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", ["/stuff", "/something", ], [], [], 1)
self.failIfEqual(collectDir1, collectDir2)
self.failUnless(not collectDir1 == collectDir2)
self.failUnless(not collectDir1 < collectDir2) # note: different than standard due to unsorted list
@@ -2756,8 +2785,8 @@
Test comparison of two differing objects, relativeExcludePaths differs
(one empty, one not empty).
"""
- collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], ["one", ], [])
- collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [])
+ collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], ["one", ], [], 1)
+ collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [], 1)
self.failIfEqual(collectDir1, collectDir2)
self.failUnless(not collectDir1 == collectDir2)
self.failUnless(not collectDir1 < collectDir2)
@@ -2771,8 +2800,8 @@
Test comparison of two differing objects, relativeExcludePaths differs
(both not empty).
"""
- collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], ["one", ], [])
- collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], ["two", ], [])
+ collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], ["one", ], [], 1)
+ collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], ["two", ], [], 1)
self.failIfEqual(collectDir1, collectDir2)
self.failUnless(not collectDir1 == collectDir2)
self.failUnless(collectDir1 < collectDir2)
@@ -2816,8 +2845,8 @@
Test comparison of two differing objects, excludePatterns differs (one
empty, one not empty).
"""
- collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [])
- collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], ["pattern", ])
+ collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [], 1)
+ collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], ["pattern", ], 1)
self.failIfEqual(collectDir1, collectDir2)
self.failUnless(not collectDir1 == collectDir2)
self.failUnless(collectDir1 < collectDir2)
@@ -2831,8 +2860,8 @@
Test comparison of two differing objects, excludePatterns differs (both
not empty).
"""
- collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], ["p1", ])
- collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], ["p2", ])
+ collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], ["p1", ], 1)
+ collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], ["p2", ], 1)
self.failIfEqual(collectDir1, collectDir2)
self.failUnless(not collectDir1 == collectDir2)
self.failUnless(collectDir1 < collectDir2)
@@ -2841,7 +2870,35 @@
self.failUnless(not collectDir1 >= collectDir2)
self.failUnless(collectDir1 != collectDir2)
+ def testComparison_024(self):
+ """
+ Test comparison of two differing objects, linkDepth differs (one None).
+ """
+ collectDir1 = CollectDir()
+ collectDir2 = CollectDir(linkDepth=1)
+ self.failIfEqual(collectDir1, collectDir2)
+ self.failUnless(not collectDir1 == collectDir2)
+ self.failUnless(collectDir1 < collectDir2)
+ self.failUnless(collectDir1 <= collectDir2)
+ self.failUnless(not collectDir1 > collectDir2)
+ self.failUnless(not collectDir1 >= collectDir2)
+ self.failUnless(collectDir1 != collectDir2)
+ def testComparison_025(self):
+ """
+ Test comparison of two differing objects, linkDepth differs.
+ """
+ collectDir1 = CollectDir("/etc/whatever", "incr", "tar", "ignore", [], [], [], 2)
+ collectDir2 = CollectDir("/etc/whatever", "incr", "tar", "ignore", [], [], [], 1)
+ self.failIfEqual(collectDir1, collectDir2)
+ self.failUnless(not collectDir1 == collectDir2)
+ self.failUnless(not collectDir1 < collectDir2)
+ self.failUnless(not collectDir1 <= collectDir2)
+ self.failUnless(collectDir1 > collectDir2)
+ self.failUnless(collectDir1 >= collectDir2)
+ self.failUnless(collectDir1 != collectDir2)
+
+
#####################
# TestPurgeDir class
#####################
@@ -10605,6 +10662,7 @@
expected.collect.collectFiles.append(CollectFile(absolutePath="/home/root/.aliases",collectMode="daily",archiveMode="tarbz2"))
expected.collect.collectDirs = []
expected.collect.collectDirs.append(CollectDir(absolutePath="/root"))
+ expected.collect.collectDirs.append(CollectDir(absolutePath="/tmp", linkDepth=3))
expected.collect.collectDirs.append(CollectDir(absolutePath="/var/log", collectMode="incr"))
expected.collect.collectDirs.append(CollectDir(absolutePath="/etc",collectMode="incr",archiveMode="tar",ignoreFile=".ignore"))
collectDir = CollectDir(absolutePath="/opt")
@@ -10791,6 +10849,7 @@
expected.collect.collectFiles.append(CollectFile(absolutePath="/home/root/.aliases",collectMode="daily",archiveMode="tarbz2"))
expected.collect.collectDirs = []
expected.collect.collectDirs.append(CollectDir(absolutePath="/root"))
+ expected.collect.collectDirs.append(CollectDir(absolutePath="/tmp", linkDepth=3))
expected.collect.collectDirs.append(CollectDir(absolutePath="/var/log", collectMode="incr"))
expected.collect.collectDirs.append(CollectDir(absolutePath="/etc",collectMode="incr",archiveMode="tar",ignoreFile=".ignore"))
collectDir = CollectDir(absolutePath="/opt")
@@ -10857,6 +10916,7 @@
expected.collect.collectFiles.append(CollectFile(absolutePath="/home/root/.aliases",collectMode="daily",archiveMode="tarbz2"))
expected.collect.collectDirs = []
expected.collect.collectDirs.append(CollectDir(absolutePath="/root"))
+ expected.collect.collectDirs.append(CollectDir(absolutePath="/tmp", linkDepth=3))
expected.collect.collectDirs.append(CollectDir(absolutePath="/var/log", collectMode="incr"))
expected.collect.collectDirs.append(CollectDir(absolutePath="/etc",collectMode="incr",archiveMode="tar",ignoreFile=".ignore"))
collectDir = CollectDir(absolutePath="/opt")
@@ -10920,6 +10980,7 @@
expected.collect.collectFiles.append(CollectFile(absolutePath="/home/root/.aliases",collectMode="daily",archiveMode="tarbz2"))
expected.collect.collectDirs = []
expected.collect.collectDirs.append(CollectDir(absolutePath="/root"))
+ expected.collect.collectDirs.append(CollectDir(absolutePath="/tmp", linkDepth=3))
expected.collect.collectDirs.append(CollectDir(absolutePath="/var/log", collectMode="incr"))
expected.collect.collectDirs.append(CollectDir(absolutePath="/etc",collectMode="incr",archiveMode="tar",ignoreFile=".ignore"))
collectDir = CollectDir(absolutePath="/opt")
@@ -10986,6 +11047,7 @@
expected.collect.collectFiles.append(CollectFile(absolutePath="/home/root/.aliases",collectMode="daily",archiveMode="tarbz2"))
expected.collect.collectDirs = []
expected.collect.collectDirs.append(CollectDir(absolutePath="/root"))
+ expected.collect.collectDirs.append(CollectDir(absolutePath="/tmp", linkDepth=3))
expected.collect.collectDirs.append(CollectDir(absolutePath="/var/log", collectMode="incr"))
expected.collect.collectDirs.append(CollectDir(absolutePath="/etc",collectMode="incr",archiveMode="tar",ignoreFile=".ignore"))
collectDir = CollectDir(absolutePath="/opt")
@@ -11140,6 +11202,7 @@
expected.collect.collectFiles.append(CollectFile(absolutePath="/home/root/.aliases",collectMode="daily",archiveMode="tarbz2"))
expected.collect.collectDirs = []
expected.collect.collectDirs.append(CollectDir(absolutePath="/root"))
+ expected.collect.collectDirs.append(CollectDir(absolutePath="/tmp", linkDepth=3))
expected.collect.collectDirs.append(CollectDir(absolutePath="/var/log", collectMode="incr"))
expected.collect.collectDirs.append(CollectDir(absolutePath="/etc",collectMode="incr",archiveMode="tar",ignoreFile=".ignore"))
collectDir = CollectDir(absolutePath="/opt")
@@ -11210,6 +11273,7 @@
expected.collect.collectFiles.append(CollectFile(absolutePath="/home/root/.aliases",collectMode="daily",archiveMode="tarbz2"))
expected.collect.collectDirs = []
expected.collect.collectDirs.append(CollectDir(absolutePath="/root"))
+ expected.collect.collectDirs.append(CollectDir(absolutePath="/tmp", linkDepth=3))
expected.collect.collectDirs.append(CollectDir(absolutePath="/var/log", collectMode="incr"))
expected.collect.collectDirs.append(CollectDir(absolutePath="/etc",collectMode="incr",archiveMode="tar",ignoreFile=".ignore"))
collectDir = CollectDir(absolutePath="/opt")
Modified: cedar-backup2/trunk/test/data/cback.conf.15
===================================================================
--- cedar-backup2/trunk/test/data/cback.conf.15 2008-03-17 02:44:37 UTC (rev 857)
+++ cedar-backup2/trunk/test/data/cback.conf.15 2008-03-17 02:46:45 UTC (rev 858)
@@ -67,6 +67,10 @@
<abs_path>/root</abs_path>
</dir>
<dir>
+ <abs_path>/tmp</abs_path>
+ <link_depth>3</link_depth>
+ </dir>
+ <dir>
<abs_path>/var/log</abs_path>
<mode>incr</mode> <!-- deprecated form -->
</dir>
Modified: cedar-backup2/trunk/test/data/cback.conf.20
===================================================================
--- cedar-backup2/trunk/test/data/cback.conf.20 2008-03-17 02:44:37 UTC (rev 857)
+++ cedar-backup2/trunk/test/data/cback.conf.20 2008-03-17 02:46:45 UTC (rev 858)
@@ -70,6 +70,10 @@
<abs_path>/root</abs_path>
</dir>
<dir>
+ <abs_path>/tmp</abs_path>
+ <link_depth>3</link_depth>
+ </dir>
+ <dir>
<abs_path>/var/log</abs_path>
<mode>incr</mode> <!-- deprecated form -->
</dir>
Modified: cedar-backup2/trunk/test/data/cback.conf.21
===================================================================
--- cedar-backup2/trunk/test/data/cback.conf.21 2008-03-17 02:44:37 UTC (rev 857)
+++ cedar-backup2/trunk/test/data/cback.conf.21 2008-03-17 02:46:45 UTC (rev 858)
@@ -111,6 +111,10 @@
<abs_path>/root</abs_path>
</dir>
<dir>
+ <abs_path>/tmp</abs_path>
+ <link_depth>3</link_depth>
+ </dir>
+ <dir>
<abs_path>/var/log</abs_path>
<mode>incr</mode> <!-- deprecated form -->
</dir>
Modified: cedar-backup2/trunk/test/data/cback.conf.8
===================================================================
--- cedar-backup2/trunk/test/data/cback.conf.8 2008-03-17 02:44:37 UTC (rev 857)
+++ cedar-backup2/trunk/test/data/cback.conf.8 2008-03-17 02:46:45 UTC (rev 858)
@@ -16,6 +16,10 @@
<abs_path>/root</abs_path>
</dir>
<dir>
+ <abs_path>/tmp</abs_path>
+ <link_depth>3</link_depth>
+ </dir>
+ <dir>
<abs_path>/var/log</abs_path>
<mode>incr</mode> <!-- deprecated form -->
</dir>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|