cedar-backup-svn Mailing List for Cedar Backup (Page 4)
Brought to you by:
pronovic
You can subscribe to this list here.
| 2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(5) |
Dec
(50) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2008 |
Jan
|
Feb
(5) |
Mar
(55) |
Apr
(13) |
May
(6) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(5) |
Nov
(3) |
Dec
(3) |
| 2009 |
Jan
|
Feb
|
Mar
(11) |
Apr
|
May
|
Jun
|
Jul
|
Aug
(7) |
Sep
|
Oct
|
Nov
|
Dec
|
| 2010 |
Jan
(14) |
Feb
(2) |
Mar
|
Apr
|
May
(7) |
Jun
(8) |
Jul
(30) |
Aug
|
Sep
|
Oct
(4) |
Nov
|
Dec
|
| 2011 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(9) |
Nov
|
Dec
|
| 2013 |
Jan
|
Feb
|
Mar
(3) |
Apr
(10) |
May
(6) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2014 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(48) |
Nov
(1) |
Dec
|
| 2015 |
Jan
(5) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(3) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: <pro...@us...> - 2013-03-21 14:15:12
|
Revision: 1027
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=1027&view=rev
Author: pronovic
Date: 2013-03-21 14:15:05 +0000 (Thu, 21 Mar 2013)
Log Message:
-----------
Apply patches from Jan Medlock
Modified Paths:
--------------
cedar-backup2/trunk/CedarBackup2/extend/split.py
cedar-backup2/trunk/Changelog
cedar-backup2/trunk/doc/cback.1
Modified: cedar-backup2/trunk/CedarBackup2/extend/split.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/extend/split.py 2011-10-12 14:22:54 UTC (rev 1026)
+++ cedar-backup2/trunk/CedarBackup2/extend/split.py 2013-03-21 14:15:05 UTC (rev 1027)
@@ -482,7 +482,7 @@
(result, output) = executeCommand(command, args, returnOutput=True, ignoreStderr=False)
if result != 0:
raise IOError("Error [%d] calling split for [%s]." % (result, sourcePath))
- pattern = re.compile(r"(creating file `)(%s)(.*)(')" % prefix)
+ pattern = re.compile(r"(creating file [`'])(%s)(.*)(')" % prefix)
match = pattern.search(output[-1:][0])
if match is None:
raise IOError("Unable to parse output from split command.")
Modified: cedar-backup2/trunk/Changelog
===================================================================
--- cedar-backup2/trunk/Changelog 2011-10-12 14:22:54 UTC (rev 1026)
+++ cedar-backup2/trunk/Changelog 2013-03-21 14:15:05 UTC (rev 1027)
@@ -1,3 +1,9 @@
+Version 2.21.1 unreleased
+
+ * Apply patches provided by Jan Medlock as Debian bugs.
+ * Fix typo in manpage (showed -s instead of -D)
+ * Support output from latest /usr/bin/split (' vs. `)
+
Version 2.21.0 12 Oct 2011
* Update CREDITS file to consistently credit all contributers.
Modified: cedar-backup2/trunk/doc/cback.1
===================================================================
--- cedar-backup2/trunk/doc/cback.1 2011-10-12 14:22:54 UTC (rev 1026)
+++ cedar-backup2/trunk/doc/cback.1 2013-03-21 14:15:05 UTC (rev 1027)
@@ -125,7 +125,7 @@
Under some circumstances, this is useful information to include along with a
bug report.
.TP
-\fB\-s\fR, \fB\-\-diagnostics\fR
+\fB\-D\fR, \fB\-\-diagnostics\fR
Display runtime diagnostic information and then exit. This diagnostic
information is often useful when filing a bug report.
.SH ACTIONS
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2011-10-12 14:23:01
|
Revision: 1026
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=1026&view=rev
Author: pronovic
Date: 2011-10-12 14:22:54 +0000 (Wed, 12 Oct 2011)
Log Message:
-----------
Relase 2.21.0
Modified Paths:
--------------
cedar-backup2/trunk/CedarBackup2/release.py
cedar-backup2/trunk/Changelog
Modified: cedar-backup2/trunk/CedarBackup2/release.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/release.py 2011-10-12 14:17:51 UTC (rev 1025)
+++ cedar-backup2/trunk/CedarBackup2/release.py 2011-10-12 14:22:54 UTC (rev 1026)
@@ -35,6 +35,6 @@
EMAIL = "pro...@ie..."
COPYRIGHT = "2004-2011"
VERSION = "2.21.0"
-DATE = "unreleased"
+DATE = "12 Oct 2011"
URL = "http://cedar-backup.sourceforge.net/"
Modified: cedar-backup2/trunk/Changelog
===================================================================
--- cedar-backup2/trunk/Changelog 2011-10-12 14:17:51 UTC (rev 1025)
+++ cedar-backup2/trunk/Changelog 2011-10-12 14:22:54 UTC (rev 1026)
@@ -1,4 +1,4 @@
-Version 2.21.0 unreleased
+Version 2.21.0 12 Oct 2011
* Update CREDITS file to consistently credit all contributers.
* Minor tweaks based on PyLint analysis (mostly config changes).
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2011-10-12 14:18:00
|
Revision: 1025
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=1025&view=rev
Author: pronovic
Date: 2011-10-12 14:17:51 +0000 (Wed, 12 Oct 2011)
Log Message:
-----------
Update CREDITS
Modified Paths:
--------------
cedar-backup2/trunk/CREDITS
Modified: cedar-backup2/trunk/CREDITS
===================================================================
--- cedar-backup2/trunk/CREDITS 2011-10-12 14:17:14 UTC (rev 1024)
+++ cedar-backup2/trunk/CREDITS 2011-10-12 14:17:51 UTC (rev 1025)
@@ -32,8 +32,8 @@
the optimized media blanking strategy as well as improvements to the DVD
writer implementation.
-The PostgreSQL extension was contributed by Antoine Beaupre, based on
-the existing MySQL extension.
+The PostgreSQL extension was contributed by Antoine Beaupre ("The
+Anarcat"), based on the existing MySQL extension.
Lukasz K. Nowak helped debug the split functionality and also provided
patches for parts of the documentation.
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2011-10-12 14:17:24
|
Revision: 1024
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=1024&view=rev
Author: pronovic
Date: 2011-10-12 14:17:14 +0000 (Wed, 12 Oct 2011)
Log Message:
-----------
Update CREDITS
Modified Paths:
--------------
cedar-backup2/trunk/CREDITS
cedar-backup2/trunk/Changelog
Modified: cedar-backup2/trunk/CREDITS
===================================================================
--- cedar-backup2/trunk/CREDITS 2011-10-11 23:44:50 UTC (rev 1023)
+++ cedar-backup2/trunk/CREDITS 2011-10-12 14:17:14 UTC (rev 1024)
@@ -32,12 +32,15 @@
the optimized media blanking strategy as well as improvements to the DVD
writer implementation.
+The PostgreSQL extension was contributed by Antoine Beaupre, based on
+the existing MySQL extension.
+
+Lukasz K. Nowak helped debug the split functionality and also provided
+patches for parts of the documentation.
+
Zoran Bosnjak contributed changes to collect.py to implement recursive
collect behavior based on recursion level.
-The PostgreSQL extension was contributed by Antoine Beaupre, based on
-the existing MySQL extension.
-
Minor code snippets derived from newsgroup and mailing list postings are
not generally attributed unless I used someone else's source code verbatim.
Modified: cedar-backup2/trunk/Changelog
===================================================================
--- cedar-backup2/trunk/Changelog 2011-10-11 23:44:50 UTC (rev 1023)
+++ cedar-backup2/trunk/Changelog 2011-10-12 14:17:14 UTC (rev 1024)
@@ -1,12 +1,14 @@
Version 2.21.0 unreleased
+ * Update CREDITS file to consistently credit all contributers.
+ * Minor tweaks based on PyLint analysis (mostly config changes).
* Make ISO image unit tests more robust in writersutiltests.py.
- Handle failures with unmount (wait 1 second and try again)
- Programmatically disable (and re-enable) the GNOME auto-mounter
* Implement configurable recursion for collect action.
- Update collect.py to handle recursion (patch by Zoran Bosnjak)
- Add new configuration item CollectDir.recursionLevel
- - Update user manual, CREDITS, etc. for new functionality
+ - Update user manual to discuss new functionality
Version 2.20.1 19 Oct 2010
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2011-10-11 23:44:57
|
Revision: 1023
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=1023&view=rev
Author: pronovic
Date: 2011-10-11 23:44:50 +0000 (Tue, 11 Oct 2011)
Log Message:
-----------
Handle Pylint warnings
Modified Paths:
--------------
cedar-backup2/trunk/CedarBackup2/extend/split.py
cedar-backup2/trunk/CedarBackup2/testutil.py
cedar-backup2/trunk/CedarBackup2/util.py
cedar-backup2/trunk/testcase/utiltests.py
cedar-backup2/trunk/testcase/writersutiltests.py
Modified: cedar-backup2/trunk/CedarBackup2/extend/split.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/extend/split.py 2011-10-11 23:27:49 UTC (rev 1022)
+++ cedar-backup2/trunk/CedarBackup2/extend/split.py 2011-10-11 23:44:50 UTC (rev 1023)
@@ -475,7 +475,7 @@
dirname = os.path.dirname(sourcePath)
filename = os.path.basename(sourcePath)
prefix = "%s_" % filename
- bytes = int(splitSize.bytes)
+ bytes = int(splitSize.bytes) # pylint: disable=W0622
os.chdir(dirname) # need to operate from directory that we want files written to
command = resolveCommand(SPLIT_COMMAND)
args = [ "--verbose", "--numeric-suffixes", "--suffix-length=5", "--bytes=%d" % bytes, filename, prefix, ]
Modified: cedar-backup2/trunk/CedarBackup2/testutil.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/testutil.py 2011-10-11 23:27:49 UTC (rev 1022)
+++ cedar-backup2/trunk/CedarBackup2/testutil.py 2011-10-11 23:44:50 UTC (rev 1023)
@@ -369,7 +369,8 @@
exec "obj.%s = value" % prop # pylint: disable=W0122
missed = True
except exception: pass
- except Exception, e: instead = e
+ except Exception, e:
+ instead = e
if missed:
testCase.fail("Expected assignment to raise %s, but got no exception." % (exception.__name__))
if instead is not None:
Modified: cedar-backup2/trunk/CedarBackup2/util.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/util.py 2011-10-11 23:27:49 UTC (rev 1022)
+++ cedar-backup2/trunk/CedarBackup2/util.py 2011-10-11 23:44:50 UTC (rev 1023)
@@ -1134,7 +1134,7 @@
# displayBytes() function
##########################
-def displayBytes(bytes, digits=2):
+def displayBytes(bytes, digits=2): # pylint: disable=W0622
"""
Format a byte quantity so it can be sensibly displayed.
@@ -1167,18 +1167,18 @@
raise ValueError("Cannot display byte value of None.")
bytes = float(bytes)
if math.fabs(bytes) < BYTES_PER_KBYTE:
- format = "%.0f bytes"
+ fmt = "%.0f bytes"
value = bytes
elif math.fabs(bytes) < BYTES_PER_MBYTE:
- format = "%." + "%d" % digits + "f kB"
+ fmt = "%." + "%d" % digits + "f kB"
value = bytes / BYTES_PER_KBYTE
elif math.fabs(bytes) < BYTES_PER_GBYTE:
- format = "%." + "%d" % digits + "f MB"
+ fmt = "%." + "%d" % digits + "f MB"
value = bytes / BYTES_PER_MBYTE
else:
- format = "%." + "%d" % digits + "f GB"
+ fmt = "%." + "%d" % digits + "f GB"
value = bytes / BYTES_PER_GBYTE
- return format % value
+ return fmt % value
##################################
Modified: cedar-backup2/trunk/testcase/utiltests.py
===================================================================
--- cedar-backup2/trunk/testcase/utiltests.py 2011-10-11 23:27:49 UTC (rev 1022)
+++ cedar-backup2/trunk/testcase/utiltests.py 2011-10-11 23:44:50 UTC (rev 1023)
@@ -3534,7 +3534,7 @@
"""
Test display for a positive value < 1 KB
"""
- bytes = 12
+ bytes = 12 # pylint: disable=W0622
result = displayBytes(bytes)
self.failUnlessEqual("12 bytes", result)
result = displayBytes(bytes, 3)
@@ -3544,7 +3544,7 @@
"""
Test display for a negative value < 1 KB
"""
- bytes = -12
+ bytes = -12 # pylint: disable=W0622
result = displayBytes(bytes)
self.failUnlessEqual("-12 bytes", result)
result = displayBytes(bytes, 3)
@@ -3554,7 +3554,7 @@
"""
Test display for a positive value = 1kB
"""
- bytes = 1024
+ bytes = 1024 # pylint: disable=W0622
result = displayBytes(bytes)
self.failUnlessEqual("1.00 kB", result)
result = displayBytes(bytes, 3)
@@ -3564,7 +3564,7 @@
"""
Test display for a positive value >= 1kB
"""
- bytes = 5678
+ bytes = 5678 # pylint: disable=W0622
result = displayBytes(bytes)
self.failUnlessEqual("5.54 kB", result)
result = displayBytes(bytes, 3)
@@ -3574,7 +3574,7 @@
"""
Test display for a negative value >= 1kB
"""
- bytes = -5678
+ bytes = -5678 # pylint: disable=W0622
result = displayBytes(bytes)
self.failUnlessEqual("-5.54 kB", result)
result = displayBytes(bytes, 3)
@@ -3584,7 +3584,7 @@
"""
Test display for a positive value = 1MB
"""
- bytes = 1024.0 * 1024.0
+ bytes = 1024.0 * 1024.0 # pylint: disable=W0622
result = displayBytes(bytes)
self.failUnlessEqual("1.00 MB", result)
result = displayBytes(bytes, 3)
@@ -3594,7 +3594,7 @@
"""
Test display for a positive value >= 1MB
"""
- bytes = 72372224
+ bytes = 72372224 # pylint: disable=W0622
result = displayBytes(bytes)
self.failUnlessEqual("69.02 MB", result)
result = displayBytes(bytes, 3)
@@ -3604,7 +3604,7 @@
"""
Test display for a negative value >= 1MB
"""
- bytes = -72372224.0
+ bytes = -72372224.0 # pylint: disable=W0622
result = displayBytes(bytes)
self.failUnlessEqual("-69.02 MB", result)
result = displayBytes(bytes, 3)
@@ -3614,7 +3614,7 @@
"""
Test display for a positive value = 1GB
"""
- bytes = 1024.0 * 1024.0 * 1024.0
+ bytes = 1024.0 * 1024.0 * 1024.0 # pylint: disable=W0622
result = displayBytes(bytes)
self.failUnlessEqual("1.00 GB", result)
result = displayBytes(bytes, 3)
@@ -3624,7 +3624,7 @@
"""
Test display for a positive value >= 1GB
"""
- bytes = 4.4 * 1024.0 * 1024.0 * 1024.0
+ bytes = 4.4 * 1024.0 * 1024.0 * 1024.0 # pylint: disable=W0622
result = displayBytes(bytes)
self.failUnlessEqual("4.40 GB", result)
result = displayBytes(bytes, 3)
@@ -3634,7 +3634,7 @@
"""
Test display for a negative value >= 1GB
"""
- bytes = -1234567891011
+ bytes = -1234567891011 # pylint: disable=W0622
result = displayBytes(bytes)
self.failUnlessEqual("-1149.78 GB", result)
result = displayBytes(bytes, 3)
@@ -3644,14 +3644,14 @@
"""
Test display with an invalid quantity (None).
"""
- bytes = None
+ bytes = None # pylint: disable=W0622
self.failUnlessRaises(ValueError, displayBytes, bytes)
def testDisplayBytes_013(self):
"""
Test display with an invalid quantity (not a floating point).
"""
- bytes = "ken"
+ bytes = "ken" # pylint: disable=W0622
self.failUnlessRaises(ValueError, displayBytes, bytes)
Modified: cedar-backup2/trunk/testcase/writersutiltests.py
===================================================================
--- cedar-backup2/trunk/testcase/writersutiltests.py 2011-10-11 23:27:49 UTC (rev 1022)
+++ cedar-backup2/trunk/testcase/writersutiltests.py 2011-10-11 23:44:50 UTC (rev 1023)
@@ -503,21 +503,21 @@
have complete control over the mounting and unmounting process. So, for
these tests to work, we need to disable GNOME auto-mounting.
"""
- self.orig_media_automount = None
- self.orig_media_automount_open = None
+ self.origMediaAutomount = None
+ self.origMediaAutomountOpen = None
if runAllTests():
args = [ "--get", "/apps/nautilus/preferences/media_automount", ]
(result, output) = executeCommand(GCONF_CMD, args, returnOutput=True)
if result == 0:
- self.orig_media_automount = output[0][:-1]
- if self.orig_media_automount == "true":
+ self.origMediaAutomount = output[0][:-1] # pylint: disable=W0201
+ if self.origMediaAutomount == "true":
args = [ "--type", "bool", "--set", "/apps/nautilus/preferences/media_automount", "false", ]
executeCommand(GCONF_CMD, args)
args = [ "--get", "/apps/nautilus/preferences/media_automount_open", ]
(result, output) = executeCommand(GCONF_CMD, args, returnOutput=True)
if result == 0:
- self.orig_media_automount_open = output[0][:-1] # should be either "true" or "false"
- if self.orig_media_automount_open == "true":
+ self.origMediaAutomountOpen = output[0][:-1] # pylint: disable=W0201
+ if self.origMediaAutomountOpen == "true":
args = [ "--type", "bool", "--set", "/apps/nautilus/preferences/media_automount_open", "false", ]
executeCommand(GCONF_CMD, args)
@@ -525,10 +525,10 @@
"""
Resets GNOME auto-mounting options back to their state prior to disableGnomeAutomount().
"""
- if self.orig_media_automount == "true":
+ if self.origMediaAutomount == "true":
args = [ "--type", "bool", "--set", "/apps/nautilus/preferences/media_automount", "true", ]
executeCommand(GCONF_CMD, args)
- if self.orig_media_automount_open == "true":
+ if self.origMediaAutomountOpen == "true":
args = [ "--type", "bool", "--set", "/apps/nautilus/preferences/media_automount_open", "true", ]
executeCommand(GCONF_CMD, args)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2011-10-11 23:27:56
|
Revision: 1022
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=1022&view=rev
Author: pronovic
Date: 2011-10-11 23:27:49 +0000 (Tue, 11 Oct 2011)
Log Message:
-----------
Update pylint configuration for new version
Modified Paths:
--------------
cedar-backup2/trunk/CedarBackup2/action.py
cedar-backup2/trunk/CedarBackup2/cli.py
cedar-backup2/trunk/CedarBackup2/extend/mysql.py
cedar-backup2/trunk/CedarBackup2/extend/postgresql.py
cedar-backup2/trunk/CedarBackup2/filesystem.py
cedar-backup2/trunk/CedarBackup2/image.py
cedar-backup2/trunk/CedarBackup2/testutil.py
cedar-backup2/trunk/CedarBackup2/util.py
cedar-backup2/trunk/CedarBackup2/writer.py
cedar-backup2/trunk/CedarBackup2/xmlutil.py
cedar-backup2/trunk/pylint-code.rc
cedar-backup2/trunk/pylint-test.rc
cedar-backup2/trunk/setup.py
cedar-backup2/trunk/testcase/utiltests.py
cedar-backup2/trunk/util/createtree.py
cedar-backup2/trunk/util/sorttags.py
Modified: cedar-backup2/trunk/CedarBackup2/action.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/action.py 2011-10-11 22:44:17 UTC (rev 1021)
+++ cedar-backup2/trunk/CedarBackup2/action.py 2011-10-11 23:27:49 UTC (rev 1022)
@@ -35,7 +35,7 @@
# Imported modules
########################################################################
-# pylint: disable-msg=W0611
+# pylint: disable=W0611
from CedarBackup2.actions.collect import executeCollect
from CedarBackup2.actions.stage import executeStage
from CedarBackup2.actions.store import executeStore
Modified: cedar-backup2/trunk/CedarBackup2/cli.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/cli.py 2011-10-11 22:44:17 UTC (rev 1021)
+++ cedar-backup2/trunk/CedarBackup2/cli.py 2011-10-11 23:27:49 UTC (rev 1022)
@@ -377,7 +377,7 @@
logger.debug("Calling action function [%s], execution index [%d]" % (name, self.index))
self.function(configPath, options, config)
- def _executeHook(self, type, hook): # pylint: disable-msg=W0622,R0201
+ def _executeHook(self, type, hook): # pylint: disable=W0622,R0201
"""
Executes a hook command via L{util.executeCommand()}.
@param type: String describing the type of hook, for logging.
Modified: cedar-backup2/trunk/CedarBackup2/extend/mysql.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/extend/mysql.py 2011-10-11 22:44:17 UTC (rev 1021)
+++ cedar-backup2/trunk/CedarBackup2/extend/mysql.py 2011-10-11 23:27:49 UTC (rev 1022)
@@ -129,7 +129,7 @@
@sort: __init__, __repr__, __str__, __cmp__, user, password, all, databases
"""
- def __init__(self, user=None, password=None, compressMode=None, all=None, databases=None): # pylint: disable-msg=W0622
+ def __init__(self, user=None, password=None, compressMode=None, all=None, databases=None): # pylint: disable=W0622
"""
Constructor for the C{MysqlConfig} class.
Modified: cedar-backup2/trunk/CedarBackup2/extend/postgresql.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/extend/postgresql.py 2011-10-11 22:44:17 UTC (rev 1021)
+++ cedar-backup2/trunk/CedarBackup2/extend/postgresql.py 2011-10-11 23:27:49 UTC (rev 1022)
@@ -120,7 +120,7 @@
@sort: __init__, __repr__, __str__, __cmp__, user, all, databases
"""
- def __init__(self, user=None, compressMode=None, all=None, databases=None): # pylint: disable-msg=W0622
+ def __init__(self, user=None, compressMode=None, all=None, databases=None): # pylint: disable=W0622
"""
Constructor for the C{PostgresqlConfig} class.
Modified: cedar-backup2/trunk/CedarBackup2/filesystem.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/filesystem.py 2011-10-11 22:44:17 UTC (rev 1021)
+++ cedar-backup2/trunk/CedarBackup2/filesystem.py 2011-10-11 23:27:49 UTC (rev 1022)
@@ -724,7 +724,7 @@
# SpanItem class definition
########################################################################
-class SpanItem(object): # pylint: disable-msg=R0903
+class SpanItem(object): # pylint: disable=R0903
"""
Item returned by L{BackupFileList.generateSpan}.
"""
@@ -745,7 +745,7 @@
# BackupFileList class definition
########################################################################
-class BackupFileList(FilesystemList): # pylint: disable-msg=R0904
+class BackupFileList(FilesystemList): # pylint: disable=R0904
######################
# Class documentation
@@ -911,7 +911,7 @@
@return: ASCII-safe SHA digest for the file.
@raise OSError: If the file cannot be opened.
"""
- # pylint: disable-msg=C0103
+ # pylint: disable=C0103
try:
import hashlib
s = hashlib.sha1()
@@ -1097,7 +1097,7 @@
@raise ValueError: If the path could not be encoded properly.
@raise TarError: If there is a problem creating the tar file
"""
- # pylint: disable-msg=E1101
+ # pylint: disable=E1101
path = encodePath(path)
if len(self) == 0: raise ValueError("Empty list cannot be used to generate tarfile.")
if(mode == 'tar'): tarmode = "w:"
@@ -1228,7 +1228,7 @@
# PurgeItemList class definition
########################################################################
-class PurgeItemList(FilesystemList): # pylint: disable-msg=R0904
+class PurgeItemList(FilesystemList): # pylint: disable=R0904
######################
# Class documentation
Modified: cedar-backup2/trunk/CedarBackup2/image.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/image.py 2011-10-11 22:44:17 UTC (rev 1021)
+++ cedar-backup2/trunk/CedarBackup2/image.py 2011-10-11 23:27:49 UTC (rev 1022)
@@ -35,5 +35,5 @@
# Imported modules
########################################################################
-from CedarBackup2.writers.util import IsoImage # pylint: disable-msg=W0611
+from CedarBackup2.writers.util import IsoImage # pylint: disable=W0611
Modified: cedar-backup2/trunk/CedarBackup2/testutil.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/testutil.py 2011-10-11 22:44:17 UTC (rev 1021)
+++ cedar-backup2/trunk/CedarBackup2/testutil.py 2011-10-11 23:27:49 UTC (rev 1022)
@@ -70,7 +70,7 @@
import time
import getpass
import random
-import string # pylint: disable-msg=W0402
+import string # pylint: disable=W0402
import platform
import logging
from StringIO import StringIO
@@ -234,7 +234,7 @@
@param filepath: Path to tarfile to extract.
@raise ValueError: If a path cannot be encoded properly.
"""
- # pylint: disable-msg=E1101
+ # pylint: disable=E1101
tmpdir = encodePath(tmpdir)
filepath = encodePath(filepath)
tar = tarfile.open(filepath)
@@ -366,7 +366,7 @@
missed = False
instead = None
try:
- exec "obj.%s = value" % prop # pylint: disable-msg=W0122
+ exec "obj.%s = value" % prop # pylint: disable=W0122
missed = True
except exception: pass
except Exception, e: instead = e
Modified: cedar-backup2/trunk/CedarBackup2/util.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/util.py 2011-10-11 22:44:17 UTC (rev 1021)
+++ cedar-backup2/trunk/CedarBackup2/util.py 2011-10-11 23:27:49 UTC (rev 1022)
@@ -83,7 +83,7 @@
import re
import time
import logging
-import string # pylint: disable-msg=W0402
+import string # pylint: disable=W0402
from subprocess import Popen, STDOUT, PIPE
from CedarBackup2.release import VERSION, DATE
@@ -639,7 +639,7 @@
@param other: Other object to compare to.
@return: -1/0/1 depending on whether self is C{<}, C{=} or C{>} other.
"""
- # pylint: disable-msg=W0212
+ # pylint: disable=W0212
if other is None:
return 1
if self.name != other.name:
@@ -803,7 +803,7 @@
def __init__(self):
pass
def __call__(self, *args, **kw):
- # pylint: disable-msg=W0212,R0201
+ # pylint: disable=W0212,R0201
if PathResolverSingleton._instance is None:
obj = PathResolverSingleton()
PathResolverSingleton._instance = obj
@@ -878,7 +878,7 @@
@sort: __init__, __repr__, __str__
"""
- # pylint: disable-msg=R0201
+ # pylint: disable=R0201
def __init__(self):
"""
@@ -988,7 +988,7 @@
try:
if sys.platform.startswith("win"):
windowsPlatforms = [ "Windows 3.1", "Windows 95/98/ME", "Windows NT/2000/XP", "Windows CE", ]
- wininfo = sys.getwindowsversion() # pylint: disable-msg=E1101
+ wininfo = sys.getwindowsversion() # pylint: disable=E1101
winversion = "%d.%d.%d" % (wininfo[0], wininfo[1], wininfo[2])
winplatform = windowsPlatforms[wininfo[3]]
wintext = wininfo[4] # i.e. "Service Pack 2"
Modified: cedar-backup2/trunk/CedarBackup2/writer.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/writer.py 2011-10-11 22:44:17 UTC (rev 1021)
+++ cedar-backup2/trunk/CedarBackup2/writer.py 2011-10-11 23:27:49 UTC (rev 1022)
@@ -35,7 +35,7 @@
# Imported modules
########################################################################
-# pylint: disable-msg=W0611
+# pylint: disable=W0611
from CedarBackup2.writers.util import validateScsiId, validateDriveSpeed
from CedarBackup2.writers.cdwriter import MediaDefinition, MediaCapacity, CdWriter
from CedarBackup2.writers.cdwriter import MEDIA_CDRW_74, MEDIA_CDR_74, MEDIA_CDRW_80, MEDIA_CDR_80
Modified: cedar-backup2/trunk/CedarBackup2/xmlutil.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/xmlutil.py 2011-10-11 22:44:17 UTC (rev 1021)
+++ cedar-backup2/trunk/CedarBackup2/xmlutil.py 2011-10-11 23:27:49 UTC (rev 1022)
@@ -58,7 +58,7 @@
@author: Kenneth J. Pronovici <pro...@ie...>
"""
-# pylint: disable-msg=C0111,C0103,W0511,W0104
+# pylint: disable=C0111,C0103,W0511,W0104
########################################################################
# Imported modules
Modified: cedar-backup2/trunk/pylint-code.rc
===================================================================
--- cedar-backup2/trunk/pylint-code.rc 2011-10-11 22:44:17 UTC (rev 1021)
+++ cedar-backup2/trunk/pylint-code.rc 2011-10-11 23:27:49 UTC (rev 1022)
@@ -70,7 +70,7 @@
#enable-msg=
# Disable the message(s) with the given id(s).
-disable-msg=I0011,W0702,W0703,W0704,C0302,C0321,R0902,R0911,R0912,R0913,R0914,R0915
+disable=I0011,W0702,W0703,W0704,C0302,C0321,R0902,R0911,R0912,R0913,R0914,R0915
[REPORTS]
Modified: cedar-backup2/trunk/pylint-test.rc
===================================================================
--- cedar-backup2/trunk/pylint-test.rc 2011-10-11 22:44:17 UTC (rev 1021)
+++ cedar-backup2/trunk/pylint-test.rc 2011-10-11 23:27:49 UTC (rev 1022)
@@ -73,7 +73,7 @@
#enable-msg=
# Disable the message(s) with the given id(s).
-disable-msg=I0011,W0212,W0702,W0703,W0704,C0302,C0301,C0321,C0111,R0201,R0902,R0904,R0911,R0912,R0913,R0914,R0915
+disable=I0011,W0212,W0702,W0703,W0704,C0302,C0301,C0321,C0111,R0201,R0902,R0904,R0911,R0912,R0913,R0914,R0915
[REPORTS]
Modified: cedar-backup2/trunk/setup.py
===================================================================
--- cedar-backup2/trunk/setup.py 2011-10-11 22:44:17 UTC (rev 1021)
+++ cedar-backup2/trunk/setup.py 2011-10-11 23:27:49 UTC (rev 1022)
@@ -17,7 +17,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
-# pylint: disable-msg=C0111
+# pylint: disable=C0111
########################################################################
# Imported modules
Modified: cedar-backup2/trunk/testcase/utiltests.py
===================================================================
--- cedar-backup2/trunk/testcase/utiltests.py 2011-10-11 22:44:17 UTC (rev 1021)
+++ cedar-backup2/trunk/testcase/utiltests.py 2011-10-11 23:27:49 UTC (rev 1022)
@@ -32,7 +32,7 @@
# Purpose : Tests utility functionality.
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
-# pylint: disable-msg=C0322,C0324
+# pylint: disable=C0322,C0324
########################################################################
# Module documentation
@@ -2057,7 +2057,7 @@
"""
Test the locale attribute.
"""
- # pylint: disable-msg=W0104
+ # pylint: disable=W0104
diagnostics = Diagnostics()
diagnostics.locale # might not be set, so just make sure method doesn't fail
Modified: cedar-backup2/trunk/util/createtree.py
===================================================================
--- cedar-backup2/trunk/util/createtree.py 2011-10-11 22:44:17 UTC (rev 1021)
+++ cedar-backup2/trunk/util/createtree.py 2011-10-11 23:27:49 UTC (rev 1022)
@@ -99,7 +99,7 @@
import sys
import os
-import string # pylint: disable-msg=W0402
+import string # pylint: disable=W0402
import random
from ConfigParser import SafeConfigParser
Modified: cedar-backup2/trunk/util/sorttags.py
===================================================================
--- cedar-backup2/trunk/util/sorttags.py 2011-10-11 22:44:17 UTC (rev 1021)
+++ cedar-backup2/trunk/util/sorttags.py 2011-10-11 23:27:49 UTC (rev 1022)
@@ -2,7 +2,7 @@
# Sort the output of 'svn list --verbose' on a tags directory, by version
# The output is assumed to be piped in.
-# pylint: disable-msg=C0111,C0103
+# pylint: disable=C0111,C0103
import sys
import re
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2011-10-11 22:44:24
|
Revision: 1021
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=1021&view=rev
Author: pronovic
Date: 2011-10-11 22:44:17 +0000 (Tue, 11 Oct 2011)
Log Message:
-----------
Fix typo
Modified Paths:
--------------
cedar-backup2/trunk/manual/src/config.xml
Modified: cedar-backup2/trunk/manual/src/config.xml
===================================================================
--- cedar-backup2/trunk/manual/src/config.xml 2011-10-11 21:47:53 UTC (rev 1020)
+++ cedar-backup2/trunk/manual/src/config.xml 2011-10-11 22:44:17 UTC (rev 1021)
@@ -1404,7 +1404,7 @@
</para>
<para>
This field is optional. if it doesn't exist, the backup
- will use the default list recursion level of zero.
+ will use the default recursion level of zero.
</para>
<para>
<emphasis>Restrictions:</emphasis> Must be an integer.
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2011-10-11 21:48:00
|
Revision: 1020
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=1020&view=rev
Author: pronovic
Date: 2011-10-11 21:47:53 +0000 (Tue, 11 Oct 2011)
Log Message:
-----------
Fix my screwed-up code: recursionLevel belongs on CollectDir not CollectConfig
Modified Paths:
--------------
cedar-backup2/trunk/CedarBackup2/actions/collect.py
cedar-backup2/trunk/CedarBackup2/config.py
cedar-backup2/trunk/testcase/configtests.py
cedar-backup2/trunk/testcase/data/cback.conf.8
Modified: cedar-backup2/trunk/CedarBackup2/actions/collect.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/actions/collect.py 2011-10-11 20:19:35 UTC (rev 1019)
+++ cedar-backup2/trunk/CedarBackup2/actions/collect.py 2011-10-11 21:47:53 UTC (rev 1020)
@@ -208,7 +208,7 @@
@param excludePatterns: List of patterns to exclude.
@param recursionLevel: Recursion level (zero for no recursion)
"""
- if recursionLevel == 0:
+ if recursionLevel == 0:
# Collect the actual directory because we're at recursion level 0
logger.info("Collecting directory [%s]" % absolutePath)
tarfilePath = _getTarfilePath(config, absolutePath, archiveMode)
Modified: cedar-backup2/trunk/CedarBackup2/config.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/config.py 2011-10-11 20:19:35 UTC (rev 1019)
+++ cedar-backup2/trunk/CedarBackup2/config.py 2011-10-11 21:47:53 UTC (rev 1020)
@@ -1312,7 +1312,7 @@
def __init__(self, absolutePath=None, collectMode=None, archiveMode=None, ignoreFile=None,
absoluteExcludePaths=None, relativeExcludePaths=None, excludePatterns=None,
- linkDepth=None, dereference=False):
+ linkDepth=None, dereference=False, recursionLevel=None):
"""
Constructor for the C{CollectDir} class.
@@ -1334,6 +1334,7 @@
self._ignoreFile = None
self._linkDepth = None
self._dereference = None
+ self._recursionLevel = None
self._absoluteExcludePaths = None
self._relativeExcludePaths = None
self._excludePatterns = None
@@ -1343,6 +1344,7 @@
self.ignoreFile = ignoreFile
self.linkDepth = linkDepth
self.dereference = dereference
+ self.recursionLevel = recursionLevel
self.absoluteExcludePaths = absoluteExcludePaths
self.relativeExcludePaths = relativeExcludePaths
self.excludePatterns = excludePatterns
@@ -1351,12 +1353,13 @@
"""
Official string representation for class instance.
"""
- return "CollectDir(%s, %s, %s, %s, %s, %s, %s, %s, %s)" % (self.absolutePath, self.collectMode,
- self.archiveMode, self.ignoreFile,
- self.absoluteExcludePaths,
- self.relativeExcludePaths,
- self.excludePatterns,
- self.linkDepth, self.dereference)
+ return "CollectDir(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)" % (self.absolutePath, self.collectMode,
+ self.archiveMode, self.ignoreFile,
+ self.absoluteExcludePaths,
+ self.relativeExcludePaths,
+ self.excludePatterns,
+ self.linkDepth, self.dereference,
+ self.recursionLevel)
def __str__(self):
"""
@@ -1403,6 +1406,11 @@
return -1
else:
return 1
+ if self.recursionLevel != other.recursionLevel:
+ if self.recursionLevel < other.recursionLevel:
+ return -1
+ else:
+ return 1
if self.absoluteExcludePaths != other.absoluteExcludePaths:
if self.absoluteExcludePaths < other.absoluteExcludePaths:
return -1
@@ -1529,6 +1537,27 @@
"""
return self._dereference
+ def _setRecursionLevel(self, value):
+ """
+ Property target used to set the recursionLevel.
+ The value must be an integer.
+ @raise ValueError: If the value is not valid.
+ """
+ if value is None:
+ self._recursionLevel = None
+ else:
+ try:
+ value = int(value)
+ except TypeError:
+ raise ValueError("Recusion level value must be an integer.")
+ self._recursionLevel = value
+
+ def _getRecursionLevel(self):
+ """
+ Property target used to get the action recursionLevel.
+ """
+ return self._recursionLevel
+
def _setAbsoluteExcludePaths(self, value):
"""
Property target used to set the absolute exclude paths list.
@@ -1602,6 +1631,7 @@
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.")
dereference = property(_getDereference, _setDereference, None, doc="Whether to dereference links that are followed.")
+ recursionLevel = property(_getRecursionLevel, _setRecursionLevel, None, "Recursion level to use for recursive directory collection")
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.")
@@ -2934,12 +2964,12 @@
@sort: __init__, __repr__, __str__, __cmp__, targetDir,
collectMode, archiveMode, ignoreFile, absoluteExcludePaths,
- excludePatterns, collectFiles, collectDirs, recursionLevel
+ excludePatterns, collectFiles, collectDirs
"""
def __init__(self, targetDir=None, collectMode=None, archiveMode=None, ignoreFile=None,
absoluteExcludePaths=None, excludePatterns=None, collectFiles=None,
- collectDirs=None, recursionLevel=None):
+ collectDirs=None):
"""
Constructor for the C{CollectConfig} class.
@@ -2951,7 +2981,6 @@
@param excludePatterns: List of regular expression patterns to exclude.
@param collectFiles: List of collect files.
@param collectDirs: List of collect directories.
- @param recursionLevel: Recursion level to use for recursive directory collection
@raise ValueError: If one of the values is invalid.
"""
@@ -2963,7 +2992,6 @@
self._excludePatterns = None
self._collectFiles = None
self._collectDirs = None
- self._recursionLevel = None
self.targetDir = targetDir
self.collectMode = collectMode
self.archiveMode = archiveMode
@@ -2972,16 +3000,14 @@
self.excludePatterns = excludePatterns
self.collectFiles = collectFiles
self.collectDirs = collectDirs
- self.recursionLevel = recursionLevel
def __repr__(self):
"""
Official string representation for class instance.
"""
- return "CollectConfig(%s, %s, %s, %s, %s, %s, %s, %s, %s)" % (self.targetDir, self.collectMode, self.archiveMode,
- self.ignoreFile, self.absoluteExcludePaths,
- self.excludePatterns, self.collectFiles,
- self.collectDirs, self.recursionLevel)
+ return "CollectConfig(%s, %s, %s, %s, %s, %s, %s, %s)" % (self.targetDir, self.collectMode, self.archiveMode,
+ self.ignoreFile, self.absoluteExcludePaths,
+ self.excludePatterns, self.collectFiles, self.collectDirs)
def __str__(self):
"""
@@ -3038,11 +3064,6 @@
return -1
else:
return 1
- if self.recursionLevel != other.recursionLevel:
- if self.recursionLevel < other.recursionLevel:
- return -1
- else:
- return 1
return 0
def _setTargetDir(self, value):
@@ -3207,27 +3228,6 @@
"""
return self._collectDirs
- def _setRecursionLevel(self, value):
- """
- Property target used to set the recursionLevel.
- The value must be an integer.
- @raise ValueError: If the value is not valid.
- """
- if value is None:
- self._recursionLevel = None
- else:
- try:
- value = int(value)
- except TypeError:
- raise ValueError("Recusion level value must be an integer.")
- self._recursionLevel = value
-
- def _getRecursionLevel(self):
- """
- Property target used to get the action recursionLevel.
- """
- return self._recursionLevel
-
targetDir = property(_getTargetDir, _setTargetDir, None, "Directory to collect files into.")
collectMode = property(_getCollectMode, _setCollectMode, None, "Default collect mode.")
archiveMode = property(_getArchiveMode, _setArchiveMode, None, "Default archive mode for collect files.")
@@ -3236,7 +3236,6 @@
excludePatterns = property(_getExcludePatterns, _setExcludePatterns, None, "List of regular expressions patterns to exclude.")
collectFiles = property(_getCollectFiles, _setCollectFiles, None, "List of collect files.")
collectDirs = property(_getCollectDirs, _setCollectDirs, None, "List of collect directories.")
- recursionLevel = property(_getRecursionLevel, _setRecursionLevel, None, "Recursion level to use for recursive directory collection")
########################################################################
@@ -4485,7 +4484,6 @@
collectMode //cb_config/collect/collect_mode
archiveMode //cb_config/collect/archive_mode
ignoreFile //cb_config/collect/ignore_file
- recursionLevel //cb_config/collect/recursion_level
We also read groups of the following items, one list element per
item::
@@ -4512,7 +4510,6 @@
collect.collectMode = readString(sectionNode, "collect_mode")
collect.archiveMode = readString(sectionNode, "archive_mode")
collect.ignoreFile = readString(sectionNode, "ignore_file")
- collect.recursionLevel = readInteger(sectionNode, "recursion_level")
(collect.absoluteExcludePaths, unused, collect.excludePatterns) = Config._parseExclusions(sectionNode)
collect.collectFiles = Config._parseCollectFiles(sectionNode)
collect.collectDirs = Config._parseCollectDirs(sectionNode)
@@ -4787,6 +4784,7 @@
ignoreFile ignore_file
linkDepth link_depth
dereference dereference
+ recursionLevel recursion_level
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
@@ -4819,6 +4817,7 @@
cdir.ignoreFile = readString(entry, "ignore_file")
cdir.linkDepth = readInteger(entry, "link_depth")
cdir.dereference = readBoolean(entry, "dereference")
+ cdir.recursionLevel = readInteger(entry, "recursion_level")
(cdir.absoluteExcludePaths, cdir.relativeExcludePaths, cdir.excludePatterns) = Config._parseExclusions(entry)
lst.append(cdir)
if lst == []:
@@ -5144,7 +5143,6 @@
collectMode //cb_config/collect/collect_mode
archiveMode //cb_config/collect/archive_mode
ignoreFile //cb_config/collect/ignore_file
- recursionLevel //cb_config/collect/recursion_level
We also add groups of the following items, one list element per
item::
@@ -5169,7 +5167,6 @@
addStringNode(xmlDom, sectionNode, "collect_mode", collectConfig.collectMode)
addStringNode(xmlDom, sectionNode, "archive_mode", collectConfig.archiveMode)
addStringNode(xmlDom, sectionNode, "ignore_file", collectConfig.ignoreFile)
- addStringNode(xmlDom, sectionNode, "recursion_level", collectConfig.recursionLevel)
if ((collectConfig.absoluteExcludePaths is not None and collectConfig.absoluteExcludePaths != []) or
(collectConfig.excludePatterns is not None and collectConfig.excludePatterns != [])):
excludeNode = addContainerNode(xmlDom, sectionNode, "exclude")
@@ -5422,6 +5419,7 @@
ignoreFile dir/ignore_file
linkDepth dir/link_depth
dereference dir/dereference
+ recursionLevel dir/recursion_level
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}.
@@ -5451,6 +5449,7 @@
addStringNode(xmlDom, sectionNode, "ignore_file", collectDir.ignoreFile)
addIntegerNode(xmlDom, sectionNode, "link_depth", collectDir.linkDepth)
addBooleanNode(xmlDom, sectionNode, "dereference", collectDir.dereference)
+ addIntegerNode(xmlDom, sectionNode, "recursion_level", collectDir.recursionLevel)
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/testcase/configtests.py
===================================================================
--- cedar-backup2/trunk/testcase/configtests.py 2011-10-11 20:19:35 UTC (rev 1019)
+++ cedar-backup2/trunk/testcase/configtests.py 2011-10-11 21:47:53 UTC (rev 1020)
@@ -9,7 +9,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2004-2008,2010 Kenneth J. Pronovici.
+# Copyright (c) 2004-2008,2010,2011 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
@@ -2439,6 +2439,7 @@
self.failUnlessEqual(None, collectDir.ignoreFile)
self.failUnlessEqual(None, collectDir.linkDepth)
self.failUnlessEqual(False, collectDir.dereference)
+ self.failUnlessEqual(None, collectDir.recursionLevel)
self.failUnlessEqual(None, collectDir.absoluteExcludePaths)
self.failUnlessEqual(None, collectDir.relativeExcludePaths)
self.failUnlessEqual(None, collectDir.excludePatterns)
@@ -2447,13 +2448,14 @@
"""
Test constructor with all values filled in, with valid values.
"""
- collectDir = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [], 2, True)
+ collectDir = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [], 2, True, 6)
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(True, collectDir.dereference)
+ self.failUnlessEqual(6, collectDir.recursionLevel)
self.failUnlessEqual([], collectDir.absoluteExcludePaths)
self.failUnlessEqual([], collectDir.relativeExcludePaths)
self.failUnlessEqual([], collectDir.excludePatterns)
@@ -2845,7 +2847,34 @@
collectDir.dereference = 3
self.failUnlessEqual(True, collectDir.dereference)
+ def testConstructor_042(self):
+ """
+ Test assignment of recursionLevel attribute, None value.
+ """
+ collectDir = CollectDir(recursionLevel=1)
+ self.failUnlessEqual(1, collectDir.recursionLevel)
+ collectDir.recursionLevel = None
+ self.failUnlessEqual(None, collectDir.recursionLevel)
+ def testConstructor_043(self):
+ """
+ Test assignment of recursionLevel attribute, valid value.
+ """
+ collectDir = CollectDir()
+ self.failUnlessEqual(None, collectDir.recursionLevel)
+ collectDir.recursionLevel = 1
+ self.failUnlessEqual(1, collectDir.recursionLevel)
+
+ def testConstructor_044(self):
+ """
+ Test assignment of recursionLevel attribute, invalid value.
+ """
+ collectDir = CollectDir()
+ self.failUnlessEqual(None, collectDir.recursionLevel)
+ self.failUnlessAssignRaises(ValueError, collectDir, "recursionLevel", "ken")
+ self.failUnlessEqual(None, collectDir.recursionLevel)
+
+
############################
# Test comparison operators
############################
@@ -2869,8 +2898,8 @@
Test comparison of two identical objects, all attributes non-None (empty
lists).
"""
- collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [], 1, True)
- collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [], 1, True)
+ collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [], 1, True, 6)
+ collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [], 1, True, 6)
self.failUnless(collectDir1 == collectDir2)
self.failUnless(not collectDir1 < collectDir2)
self.failUnless(collectDir1 <= collectDir2)
@@ -2883,8 +2912,8 @@
Test comparison of two identical objects, all attributes non-None
(non-empty lists).
"""
- collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", ["/one", ], ["two", ], ["three", ], 1, True)
- collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", ["/one", ], ["two", ], ["three", ], 1, True)
+ collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", ["/one", ], ["two", ], ["three", ], 1, True, 6)
+ collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", ["/one", ], ["two", ], ["three", ], 1, True, 6)
self.failUnless(collectDir1 == collectDir2)
self.failUnless(not collectDir1 < collectDir2)
self.failUnless(collectDir1 <= collectDir2)
@@ -2910,8 +2939,8 @@
"""
Test comparison of two differing objects, absolutePath differs.
"""
- collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [], 1, True)
- collectDir2 = CollectDir("/stuff", "incr", "tar", ".ignore", [], [], [], 1, True)
+ collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [], 1, True, 6)
+ collectDir2 = CollectDir("/stuff", "incr", "tar", ".ignore", [], [], [], 1, True, 6)
self.failIfEqual(collectDir1, collectDir2)
self.failUnless(not collectDir1 == collectDir2)
self.failUnless(collectDir1 < collectDir2)
@@ -2938,8 +2967,8 @@
"""
Test comparison of two differing objects, collectMode differs.
"""
- collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [], 1, True)
- collectDir2 = CollectDir("/etc/whatever", "daily", "tar", ".ignore", [], [], [], 1, True)
+ collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [], 1, True, 6)
+ collectDir2 = CollectDir("/etc/whatever", "daily", "tar", ".ignore", [], [], [], 1, True, 6)
self.failIfEqual(collectDir1, collectDir2)
self.failUnless(not collectDir1 == collectDir2)
self.failUnless(not collectDir1 < collectDir2)
@@ -2966,8 +2995,8 @@
"""
Test comparison of two differing objects, archiveMode differs.
"""
- collectDir1 = CollectDir("/etc/whatever", "incr", "targz", ".ignore", [], [], [], 1, True)
- collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [], 1, True)
+ collectDir1 = CollectDir("/etc/whatever", "incr", "targz", ".ignore", [], [], [], 1, True, 6)
+ collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [], 1, True, 6)
self.failIfEqual(collectDir1, collectDir2)
self.failUnless(not collectDir1 == collectDir2)
self.failUnless(not collectDir1 < collectDir2)
@@ -2994,8 +3023,8 @@
"""
Test comparison of two differing objects, ignoreFile differs.
"""
- collectDir1 = CollectDir("/etc/whatever", "incr", "tar", "ignore", [], [], [], 1, True)
- collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [], 1, True)
+ collectDir1 = CollectDir("/etc/whatever", "incr", "tar", "ignore", [], [], [], 1, True, 6)
+ collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [], 1, True, 6)
self.failIfEqual(collectDir1, collectDir2)
self.failUnless(not collectDir1 == collectDir2)
self.failUnless(not collectDir1 < collectDir2)
@@ -3039,8 +3068,8 @@
Test comparison of two differing objects, absoluteExcludePaths differs
(one empty, one not empty).
"""
- collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [], 1, True)
- collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", ["/whatever", ], [], [], 1, True)
+ collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [], 1, True, 6)
+ collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", ["/whatever", ], [], [], 1, True, 6)
self.failIfEqual(collectDir1, collectDir2)
self.failUnless(not collectDir1 == collectDir2)
self.failUnless(collectDir1 < collectDir2)
@@ -3054,8 +3083,8 @@
Test comparison of two differing objects, absoluteExcludePaths differs
(both not empty).
"""
- collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", ["/stuff", ], [], [], 1, True)
- collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", ["/stuff", "/something", ], [], [], 1, True)
+ collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", ["/stuff", ], [], [], 1, True, 6)
+ collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", ["/stuff", "/something", ], [], [], 1, True, 6)
self.failIfEqual(collectDir1, collectDir2)
self.failUnless(not collectDir1 == collectDir2)
self.failUnless(not collectDir1 < collectDir2) # note: different than standard due to unsorted list
@@ -3099,8 +3128,8 @@
Test comparison of two differing objects, relativeExcludePaths differs
(one empty, one not empty).
"""
- collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], ["one", ], [], 1, True)
- collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [], 1, True)
+ collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], ["one", ], [], 1, True, 6)
+ collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [], 1, True, 6)
self.failIfEqual(collectDir1, collectDir2)
self.failUnless(not collectDir1 == collectDir2)
self.failUnless(not collectDir1 < collectDir2)
@@ -3114,8 +3143,8 @@
Test comparison of two differing objects, relativeExcludePaths differs
(both not empty).
"""
- collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], ["one", ], [], 1, True)
- collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], ["two", ], [], 1, True)
+ collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], ["one", ], [], 1, True, 6)
+ collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], ["two", ], [], 1, True, 6)
self.failIfEqual(collectDir1, collectDir2)
self.failUnless(not collectDir1 == collectDir2)
self.failUnless(collectDir1 < collectDir2)
@@ -3159,8 +3188,8 @@
Test comparison of two differing objects, excludePatterns differs (one
empty, one not empty).
"""
- collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [], 1, True)
- collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], ["pattern", ], 1, True)
+ collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], [], 1, True, 6)
+ collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], ["pattern", ], 1, True, 6)
self.failIfEqual(collectDir1, collectDir2)
self.failUnless(not collectDir1 == collectDir2)
self.failUnless(collectDir1 < collectDir2)
@@ -3174,8 +3203,8 @@
Test comparison of two differing objects, excludePatterns differs (both
not empty).
"""
- collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], ["p1", ], 1, True)
- collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], ["p2", ], 1, True)
+ collectDir1 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], ["p1", ], 1, True, 6)
+ collectDir2 = CollectDir("/etc/whatever", "incr", "tar", ".ignore", [], [], ["p2", ], 1, True, 6)
self.failIfEqual(collectDir1, collectDir2)
self.failUnless(not collectDir1 == collectDir2)
self.failUnless(collectDir1 < collectDir2)
@@ -3202,8 +3231,8 @@
"""
Test comparison of two differing objects, linkDepth differs.
"""
- collectDir1 = CollectDir("/etc/whatever", "incr", "tar", "ignore", [], [], [], 2, True)
- collectDir2 = CollectDir("/etc/whatever", "incr", "tar", "ignore", [], [], [], 1, True)
+ collectDir1 = CollectDir("/etc/whatever", "incr", "tar", "ignore", [], [], [], 2, True, 6)
+ collectDir2 = CollectDir("/etc/whatever", "incr", "tar", "ignore", [], [], [], 1, True, 6)
self.failIfEqual(collectDir1, collectDir2)
self.failUnless(not collectDir1 == collectDir2)
self.failUnless(not collectDir1 < collectDir2)
@@ -3230,8 +3259,8 @@
"""
Test comparison of two differing objects, dereference differs.
"""
- collectDir1 = CollectDir("/etc/whatever", "incr", "tar", "ignore", [], [], [], 1, True)
- collectDir2 = CollectDir("/etc/whatever", "incr", "tar", "ignore", [], [], [], 1, False)
+ collectDir1 = CollectDir("/etc/whatever", "incr", "tar", "ignore", [], [], [], 1, True, 6)
+ collectDir2 = CollectDir("/etc/whatever", "incr", "tar", "ignore", [], [], [], 1, False, 6)
self.failIfEqual(collectDir1, collectDir2)
self.failUnless(not collectDir1 == collectDir2)
self.failUnless(not collectDir1 < collectDir2)
@@ -3240,7 +3269,35 @@
self.failUnless(collectDir1 >= collectDir2)
self.failUnless(collectDir1 != collectDir2)
+ def testComparison_028(self):
+ """
+ Test comparison of two differing objects, recursionLevel differs (one None).
+ """
+ collectDir1 = CollectDir()
+ collectDir2 = CollectDir(recursionLevel=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_029(self):
+ """
+ Test comparison of two differing objects, recursionLevel differs.
+ """
+ collectDir1 = CollectDir("/etc/whatever", "incr", "tar", "ignore", [], [], [], 1, True, 6)
+ collectDir2 = CollectDir("/etc/whatever", "incr", "tar", "ignore", [], [], [], 1, True, 5)
+ 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
#####################
@@ -11256,7 +11313,6 @@
config = Config(xmlPath=path, validate=False)
expected = Config()
expected.collect = CollectConfig("/opt/backup/collect", "daily", "targz", ".cbignore")
- expected.collect.recursionLevel = 1
expected.collect.absoluteExcludePaths = ["/etc/cback.conf", "/etc/X11", ]
expected.collect.excludePatterns = [".*tmp.*", ".*\.netscape\/.*", ]
expected.collect.collectFiles = []
@@ -11264,7 +11320,7 @@
expected.collect.collectFiles.append(CollectFile(absolutePath="/home/root/.kshrc", collectMode="weekly"))
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="/root", recursionLevel=1))
expected.collect.collectDirs.append(CollectDir(absolutePath="/tmp", linkDepth=3))
expected.collect.collectDirs.append(CollectDir(absolutePath="/ken", linkDepth=1, dereference=True))
expected.collect.collectDirs.append(CollectDir(absolutePath="/var/log", collectMode="incr"))
Modified: cedar-backup2/trunk/testcase/data/cback.conf.8
===================================================================
--- cedar-backup2/trunk/testcase/data/cback.conf.8 2011-10-11 20:19:35 UTC (rev 1019)
+++ cedar-backup2/trunk/testcase/data/cback.conf.8 2011-10-11 21:47:53 UTC (rev 1020)
@@ -6,7 +6,6 @@
<collect_mode>daily</collect_mode>
<archive_mode>targz</archive_mode>
<ignore_file>.cbignore</ignore_file>
- <recursion_level>1</recursion_level>
<exclude>
<abs_path>/etc/cback.conf</abs_path>
<abs_path>/etc/X11</abs_path>
@@ -15,6 +14,7 @@
</exclude>
<dir>
<abs_path>/root</abs_path>
+ <recursion_level>1</recursion_level>
</dir>
<dir>
<abs_path>/tmp</abs_path>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2011-10-11 21:26:43
|
Revision: 1019
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=1019&view=rev
Author: pronovic
Date: 2011-10-11 20:19:35 +0000 (Tue, 11 Oct 2011)
Log Message:
-----------
Make ISO image tests more robust
Modified Paths:
--------------
cedar-backup2/trunk/Changelog
cedar-backup2/trunk/testcase/writersutiltests.py
Modified: cedar-backup2/trunk/Changelog
===================================================================
--- cedar-backup2/trunk/Changelog 2011-10-10 03:27:34 UTC (rev 1018)
+++ cedar-backup2/trunk/Changelog 2011-10-11 20:19:35 UTC (rev 1019)
@@ -1,5 +1,8 @@
Version 2.21.0 unreleased
+ * Make ISO image unit tests more robust in writersutiltests.py.
+ - Handle failures with unmount (wait 1 second and try again)
+ - Programmatically disable (and re-enable) the GNOME auto-mounter
* Implement configurable recursion for collect action.
- Update collect.py to handle recursion (patch by Zoran Bosnjak)
- Add new configuration item CollectDir.recursionLevel
Modified: cedar-backup2/trunk/testcase/writersutiltests.py
===================================================================
--- cedar-backup2/trunk/testcase/writersutiltests.py 2011-10-10 03:27:34 UTC (rev 1018)
+++ cedar-backup2/trunk/testcase/writersutiltests.py 2011-10-11 20:19:35 UTC (rev 1019)
@@ -9,7 +9,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2004-2007,2010 Kenneth J. Pronovici.
+# Copyright (c) 2004-2007,2010,2011 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
@@ -95,6 +95,7 @@
import os
import unittest
import tempfile
+import time
from CedarBackup2.testutil import findResources, buildPath, removedir, extractTar
from CedarBackup2.testutil import platformMacOsX, platformSupportsLinks
from CedarBackup2.filesystem import FilesystemList
@@ -111,6 +112,7 @@
SUDO_CMD = [ "sudo", ]
HDIUTIL_CMD = [ "hdiutil", ]
+GCONF_CMD = [ "gconftool-2", ]
INVALID_FILE = "bogus" # This file name should never exist
@@ -331,6 +333,7 @@
def setUp(self):
try:
+ self.disableGnomeAutomount()
self.mounted = False
self.tmpdir = tempfile.mkdtemp()
self.resources = findResources(RESOURCES, DATA_DIRS)
@@ -341,6 +344,7 @@
if self.mounted:
self.unmountImage()
removedir(self.tmpdir)
+ self.enableGnomeAutomount()
##################
@@ -403,7 +407,7 @@
Note that this will fail unless the user has been granted permissions via
sudo, using something like this:
- Cmnd_Alias LOOPMOUNT = /bin/mount -t iso9660 -o loop * *
+ Cmnd_Alias LOOPMOUNT = /bin/mount -d -t iso9660 -o loop * *
Keep in mind that this entry is a security hole, so you might not want to
keep it in C{/etc/sudoers} all of the time.
@@ -460,10 +464,16 @@
"""
Unmounts an ISO image from C{self.tmpdir/mnt}.
+ Sometimes, multiple tries are needed because the ISO filesystem is still
+ in use. We try twice with a 1-second pause between attempts. If this
+ isn't successful, you may run out of loopback devices. Check for leftover
+ mounts using 'losetup -a' as root. You can remove a leftover mount using
+ something like 'losetup -d /dev/loop0'.
+
Note that this will fail unless the user has been granted permissions via
sudo, using something like this:
- Cmnd_Alias LOOPUNMOUNT = /bin/umount -t iso9660 *
+ Cmnd_Alias LOOPUNMOUNT = /bin/umount -d -t iso9660 *
Keep in mind that this entry is a security hole, so you might not want to
keep it in C{/etc/sudoers} all of the time.
@@ -474,10 +484,55 @@
args = [ "umount", "-d", "-t", "iso9660", mountPath, ]
(result, output) = executeCommand(SUDO_CMD, args, returnOutput=True)
if result != 0:
- raise IOError("Error (%d) executing command to unmount image." % result)
+ time.sleep(1)
+ (result, output) = executeCommand(SUDO_CMD, args, returnOutput=True)
+ if result != 0:
+ raise IOError("Error (%d) executing command to unmount image." % result)
self.mounted = False
+ def disableGnomeAutomount(self):
+ """
+ Disables GNOME auto-mounting of ISO volumes when full tests are enabled.
+ As of this writing (October 2011), recent versions of GNOME in Debian
+ come pre-configured to auto-mount various kinds of media (like CDs and
+ thumb drives). Besides auto-mounting the media, GNOME also often opens
+ up a Nautilus browser window to explore the newly-mounted media.
+
+ This causes lots of problems for these unit tests, which assume that they
+ have complete control over the mounting and unmounting process. So, for
+ these tests to work, we need to disable GNOME auto-mounting.
+ """
+ self.orig_media_automount = None
+ self.orig_media_automount_open = None
+ if runAllTests():
+ args = [ "--get", "/apps/nautilus/preferences/media_automount", ]
+ (result, output) = executeCommand(GCONF_CMD, args, returnOutput=True)
+ if result == 0:
+ self.orig_media_automount = output[0][:-1]
+ if self.orig_media_automount == "true":
+ args = [ "--type", "bool", "--set", "/apps/nautilus/preferences/media_automount", "false", ]
+ executeCommand(GCONF_CMD, args)
+ args = [ "--get", "/apps/nautilus/preferences/media_automount_open", ]
+ (result, output) = executeCommand(GCONF_CMD, args, returnOutput=True)
+ if result == 0:
+ self.orig_media_automount_open = output[0][:-1] # should be either "true" or "false"
+ if self.orig_media_automount_open == "true":
+ args = [ "--type", "bool", "--set", "/apps/nautilus/preferences/media_automount_open", "false", ]
+ executeCommand(GCONF_CMD, args)
+
+ def enableGnomeAutomount(self):
+ """
+ Resets GNOME auto-mounting options back to their state prior to disableGnomeAutomount().
+ """
+ if self.orig_media_automount == "true":
+ args = [ "--type", "bool", "--set", "/apps/nautilus/preferences/media_automount", "true", ]
+ executeCommand(GCONF_CMD, args)
+ if self.orig_media_automount_open == "true":
+ args = [ "--type", "bool", "--set", "/apps/nautilus/preferences/media_automount_open", "true", ]
+ executeCommand(GCONF_CMD, args)
+
+
###################
# Test constructor
###################
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2011-10-10 03:27:41
|
Revision: 1018
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=1018&view=rev
Author: pronovic
Date: 2011-10-10 03:27:34 +0000 (Mon, 10 Oct 2011)
Log Message:
-----------
Implement recursive collect (original patch from Zoran Bosnjak)
Modified Paths:
--------------
cedar-backup2/trunk/CREDITS
cedar-backup2/trunk/CedarBackup2/actions/collect.py
cedar-backup2/trunk/CedarBackup2/config.py
cedar-backup2/trunk/CedarBackup2/release.py
cedar-backup2/trunk/Changelog
cedar-backup2/trunk/manual/src/config.xml
cedar-backup2/trunk/testcase/configtests.py
cedar-backup2/trunk/testcase/data/cback.conf.8
Modified: cedar-backup2/trunk/CREDITS
===================================================================
--- cedar-backup2/trunk/CREDITS 2011-03-02 17:35:31 UTC (rev 1017)
+++ cedar-backup2/trunk/CREDITS 2011-10-10 03:27:34 UTC (rev 1018)
@@ -23,7 +23,7 @@
software, as indicated in the source code itself.
Unless otherwise indicated, all Cedar Backup source code is Copyright
-(c) 2004-2010 Kenneth J. Pronovici and is released under the GNU General
+(c) 2004-2011 Kenneth J. Pronovici and is released under the GNU General
Public License. The contents of the GNU General Public License can be
found in the LICENSE file, or can be downloaded from http://www.gnu.org/.
@@ -32,6 +32,9 @@
the optimized media blanking strategy as well as improvements to the DVD
writer implementation.
+Zoran Bosnjak contributed changes to collect.py to implement recursive
+collect behavior based on recursion level.
+
The PostgreSQL extension was contributed by Antoine Beaupre, based on
the existing MySQL extension.
Modified: cedar-backup2/trunk/CedarBackup2/actions/collect.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/actions/collect.py 2011-03-02 17:35:31 UTC (rev 1017)
+++ cedar-backup2/trunk/CedarBackup2/actions/collect.py 2011-10-10 03:27:34 UTC (rev 1018)
@@ -8,7 +8,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2004-2008,2010 Kenneth J. Pronovici.
+# Copyright (c) 2004-2008,2011 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
@@ -53,7 +53,7 @@
import pickle
# Cedar Backup modules
-from CedarBackup2.filesystem import BackupFileList
+from CedarBackup2.filesystem import BackupFileList, FilesystemList
from CedarBackup2.util import isStartOfWeek, changeOwnership, displayBytes, buildNormalizedPath
from CedarBackup2.actions.constants import DIGEST_EXTENSION, COLLECT_INDICATOR
from CedarBackup2.actions.util import writeIndicatorFile
@@ -111,8 +111,8 @@
logger.debug("Working with collect file [%s]" % collectFile.absolutePath)
collectMode = _getCollectMode(config, collectFile)
archiveMode = _getArchiveMode(config, collectFile)
- digestPath = _getDigestPath(config, collectFile)
- tarfilePath = _getTarfilePath(config, collectFile, archiveMode)
+ digestPath = _getDigestPath(config, collectFile.absolutePath)
+ tarfilePath = _getTarfilePath(config, collectFile.absolutePath, archiveMode)
if fullBackup or (collectMode in ['daily', 'incr', ]) or (collectMode == 'weekly' and todayIsStart):
logger.debug("File meets criteria to be backed up today.")
_collectFile(config, collectFile.absolutePath, tarfilePath,
@@ -128,14 +128,13 @@
ignoreFile = _getIgnoreFile(config, collectDir)
linkDepth = _getLinkDepth(collectDir)
dereference = _getDereference(collectDir)
- digestPath = _getDigestPath(config, collectDir)
- tarfilePath = _getTarfilePath(config, collectDir, archiveMode)
+ recursionLevel = _getRecursionLevel(collectDir)
(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,
+ _collectDirectory(config, collectDir.absolutePath,
collectMode, archiveMode, ignoreFile, linkDepth, dereference,
- resetDigest, digestPath, excludePaths, excludePatterns)
+ resetDigest, excludePaths, excludePatterns, recursionLevel)
else:
logger.debug("Directory will not be backed up, per collect mode.")
logger.info("Completed collecting directory [%s]" % collectDir.absolutePath)
@@ -182,9 +181,9 @@
# _collectDirectory() function
###############################
-def _collectDirectory(config, absolutePath, tarfilePath, collectMode, archiveMode,
- ignoreFile, linkDepth, dereference, resetDigest, digestPath,
- excludePaths, excludePatterns):
+def _collectDirectory(config, absolutePath, collectMode, archiveMode,
+ ignoreFile, linkDepth, dereference, resetDigest,
+ excludePaths, excludePatterns, recursionLevel):
"""
Collects a configured collect directory.
@@ -199,25 +198,51 @@
@param config: Config object.
@param absolutePath: Absolute path of directory to collect.
- @param tarfilePath: Path to tarfile that should be created.
@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 dereference: Dereference flag 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.
@param excludePatterns: List of patterns to exclude.
+ @param recursionLevel: Recursion level (zero for no recursion)
"""
- backupList = BackupFileList()
- backupList.ignoreFile = ignoreFile
- backupList.excludePaths = excludePaths
- backupList.excludePatterns = excludePatterns
- backupList.addDirContents(absolutePath, linkDepth=linkDepth, dereference=dereference)
- _executeBackup(config, backupList, absolutePath, tarfilePath, collectMode, archiveMode, resetDigest, digestPath)
+ if recursionLevel == 0:
+ # Collect the actual directory because we're at recursion level 0
+ logger.info("Collecting directory [%s]" % absolutePath)
+ tarfilePath = _getTarfilePath(config, absolutePath, archiveMode)
+ digestPath = _getDigestPath(config, absolutePath)
+ backupList = BackupFileList()
+ backupList.ignoreFile = ignoreFile
+ backupList.excludePaths = excludePaths
+ backupList.excludePatterns = excludePatterns
+ backupList.addDirContents(absolutePath, linkDepth=linkDepth, dereference=dereference)
+ _executeBackup(config, backupList, absolutePath, tarfilePath, collectMode, archiveMode, resetDigest, digestPath)
+ else:
+ # Find all of the immediate subdirectories
+ subdirs = FilesystemList()
+ subdirs.excludeFiles = True
+ subdirs.excludeLinks = True
+ subdirs.excludePaths = excludePaths
+ subdirs.excludePatterns = excludePatterns
+ subdirs.addDirContents(path=absolutePath, recursive=False, addSelf=False)
+
+ # Back up the subdirectories separately
+ for subdir in subdirs:
+ _collectDirectory(config, subdir, collectMode, archiveMode,
+ ignoreFile, linkDepth, dereference, resetDigest,
+ excludePaths, excludePatterns, recursionLevel-1)
+ excludePaths.append(subdir) # this directory is already backed up, so exclude it
+
+ # Back up everything that hasn't previously been backed up
+ _collectDirectory(config, absolutePath, collectMode, archiveMode,
+ ignoreFile, linkDepth, dereference, resetDigest,
+ excludePaths, excludePatterns, 0)
+
+
############################
# _executeBackup() function
############################
@@ -398,7 +423,7 @@
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.
+ @return: Link depth to use.
"""
if item.linkDepth is None:
linkDepth = 0
@@ -417,7 +442,7 @@
Gets the dereference flag that should be used for a collect directory.
If possible, use the one on the directory, otherwise set a value of False.
@param item: C{CollectDir} object
- @return: Ignore file to use.
+ @return: Dereference flag to use.
"""
if item.dereference is None:
dereference = False
@@ -427,18 +452,37 @@
return dereference
+################################
+# _getRecursionLevel() function
+################################
+
+def _getRecursionLevel(item):
+ """
+ Gets the recursion level 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: Recursion level to use.
+ """
+ if item.recursionLevel is None:
+ recursionLevel = 0
+ else:
+ recursionLevel = item.recursionLevel
+ logger.debug("Recursion level is [%d]" % recursionLevel)
+ return recursionLevel
+
+
############################
# _getDigestPath() function
############################
-def _getDigestPath(config, item):
+def _getDigestPath(config, absolutePath):
"""
Gets the digest path associated with a collect directory or file.
@param config: Config object.
- @param item: C{CollectFile} or C{CollectDir} object
+ @param absolutePath: Absolute path to generate digest for
@return: Absolute path to the digest associated with the collect directory or file.
"""
- normalized = buildNormalizedPath(item.absolutePath)
+ normalized = buildNormalizedPath(absolutePath)
filename = "%s.%s" % (normalized, DIGEST_EXTENSION)
digestPath = os.path.join(config.options.workingDir, filename)
logger.debug("Digest path is [%s]" % digestPath)
@@ -449,11 +493,11 @@
# _getTarfilePath() function
#############################
-def _getTarfilePath(config, item, archiveMode):
+def _getTarfilePath(config, absolutePath, archiveMode):
"""
Gets the tarfile path (including correct extension) associated with a collect directory.
@param config: Config object.
- @param item: C{CollectFile} or C{CollectDir} object
+ @param absolutePath: Absolute path to generate tarfile for
@param archiveMode: Archive mode to use for this tarfile.
@return: Absolute path to the tarfile associated with the collect directory.
"""
@@ -463,7 +507,7 @@
extension = "tar.gz"
elif archiveMode == 'tarbz2':
extension = "tar.bz2"
- normalized = buildNormalizedPath(item.absolutePath)
+ normalized = buildNormalizedPath(absolutePath)
filename = "%s.%s" % (normalized, extension)
tarfilePath = os.path.join(config.collect.targetDir, filename)
logger.debug("Tarfile path is [%s]" % tarfilePath)
Modified: cedar-backup2/trunk/CedarBackup2/config.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/config.py 2011-03-02 17:35:31 UTC (rev 1017)
+++ cedar-backup2/trunk/CedarBackup2/config.py 2011-10-10 03:27:34 UTC (rev 1018)
@@ -2934,11 +2934,12 @@
@sort: __init__, __repr__, __str__, __cmp__, targetDir,
collectMode, archiveMode, ignoreFile, absoluteExcludePaths,
- excludePatterns, collectFiles, collectDirs
+ excludePatterns, collectFiles, collectDirs, recursionLevel
"""
def __init__(self, targetDir=None, collectMode=None, archiveMode=None, ignoreFile=None,
- absoluteExcludePaths=None, excludePatterns=None, collectFiles=None, collectDirs=None):
+ absoluteExcludePaths=None, excludePatterns=None, collectFiles=None,
+ collectDirs=None, recursionLevel=None):
"""
Constructor for the C{CollectConfig} class.
@@ -2950,6 +2951,7 @@
@param excludePatterns: List of regular expression patterns to exclude.
@param collectFiles: List of collect files.
@param collectDirs: List of collect directories.
+ @param recursionLevel: Recursion level to use for recursive directory collection
@raise ValueError: If one of the values is invalid.
"""
@@ -2961,6 +2963,7 @@
self._excludePatterns = None
self._collectFiles = None
self._collectDirs = None
+ self._recursionLevel = None
self.targetDir = targetDir
self.collectMode = collectMode
self.archiveMode = archiveMode
@@ -2969,15 +2972,17 @@
self.excludePatterns = excludePatterns
self.collectFiles = collectFiles
self.collectDirs = collectDirs
+ self.recursionLevel = recursionLevel
def __repr__(self):
"""
Official string representation for class instance.
"""
- return "CollectConfig(%s, %s, %s, %s, %s, %s, %s, %s)" % (self.targetDir, self.collectMode, self.archiveMode,
- self.ignoreFile, self.absoluteExcludePaths,
- self.excludePatterns, self.collectFiles, self.collectDirs)
-
+ return "CollectConfig(%s, %s, %s, %s, %s, %s, %s, %s, %s)" % (self.targetDir, self.collectMode, self.archiveMode,
+ self.ignoreFile, self.absoluteExcludePaths,
+ self.excludePatterns, self.collectFiles,
+ self.collectDirs, self.recursionLevel)
+
def __str__(self):
"""
Informal string representation for class instance.
@@ -3033,6 +3038,11 @@
return -1
else:
return 1
+ if self.recursionLevel != other.recursionLevel:
+ if self.recursionLevel < other.recursionLevel:
+ return -1
+ else:
+ return 1
return 0
def _setTargetDir(self, value):
@@ -3197,6 +3207,27 @@
"""
return self._collectDirs
+ def _setRecursionLevel(self, value):
+ """
+ Property target used to set the recursionLevel.
+ The value must be an integer.
+ @raise ValueError: If the value is not valid.
+ """
+ if value is None:
+ self._recursionLevel = None
+ else:
+ try:
+ value = int(value)
+ except TypeError:
+ raise ValueError("Recusion level value must be an integer.")
+ self._recursionLevel = value
+
+ def _getRecursionLevel(self):
+ """
+ Property target used to get the action recursionLevel.
+ """
+ return self._recursionLevel
+
targetDir = property(_getTargetDir, _setTargetDir, None, "Directory to collect files into.")
collectMode = property(_getCollectMode, _setCollectMode, None, "Default collect mode.")
archiveMode = property(_getArchiveMode, _setArchiveMode, None, "Default archive mode for collect files.")
@@ -3205,6 +3236,7 @@
excludePatterns = property(_getExcludePatterns, _setExcludePatterns, None, "List of regular expressions patterns to exclude.")
collectFiles = property(_getCollectFiles, _setCollectFiles, None, "List of collect files.")
collectDirs = property(_getCollectDirs, _setCollectDirs, None, "List of collect directories.")
+ recursionLevel = property(_getRecursionLevel, _setRecursionLevel, None, "Recursion level to use for recursive directory collection")
########################################################################
@@ -4453,6 +4485,7 @@
collectMode //cb_config/collect/collect_mode
archiveMode //cb_config/collect/archive_mode
ignoreFile //cb_config/collect/ignore_file
+ recursionLevel //cb_config/collect/recursion_level
We also read groups of the following items, one list element per
item::
@@ -4479,6 +4512,7 @@
collect.collectMode = readString(sectionNode, "collect_mode")
collect.archiveMode = readString(sectionNode, "archive_mode")
collect.ignoreFile = readString(sectionNode, "ignore_file")
+ collect.recursionLevel = readInteger(sectionNode, "recursion_level")
(collect.absoluteExcludePaths, unused, collect.excludePatterns) = Config._parseExclusions(sectionNode)
collect.collectFiles = Config._parseCollectFiles(sectionNode)
collect.collectDirs = Config._parseCollectDirs(sectionNode)
@@ -5110,6 +5144,7 @@
collectMode //cb_config/collect/collect_mode
archiveMode //cb_config/collect/archive_mode
ignoreFile //cb_config/collect/ignore_file
+ recursionLevel //cb_config/collect/recursion_level
We also add groups of the following items, one list element per
item::
@@ -5134,6 +5169,7 @@
addStringNode(xmlDom, sectionNode, "collect_mode", collectConfig.collectMode)
addStringNode(xmlDom, sectionNode, "archive_mode", collectConfig.archiveMode)
addStringNode(xmlDom, sectionNode, "ignore_file", collectConfig.ignoreFile)
+ addStringNode(xmlDom, sectionNode, "recursion_level", collectConfig.recursionLevel)
if ((collectConfig.absoluteExcludePaths is not None and collectConfig.absoluteExcludePaths != []) or
(collectConfig.excludePatterns is not None and collectConfig.excludePatterns != [])):
excludeNode = addContainerNode(xmlDom, sectionNode, "exclude")
@@ -5694,10 +5730,10 @@
"""
Validates collect configuration.
- The target directory must be filled in. The collect mode, archive mode
- and ignore file are all optional. The list of absolute paths to exclude
- and patterns to exclude may be either C{None} or an empty list C{[]} if
- desired.
+ The target directory must be filled in. The collect mode, archive mode,
+ ignore file, and recursion level are all optional. The list of absolute
+ paths to exclude and patterns to exclude may be either C{None} or an
+ empty list C{[]} if desired.
Each collect directory entry must contain an absolute path to collect,
and then must either be able to take collect mode, archive mode and
Modified: cedar-backup2/trunk/CedarBackup2/release.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/release.py 2011-03-02 17:35:31 UTC (rev 1017)
+++ cedar-backup2/trunk/CedarBackup2/release.py 2011-10-10 03:27:34 UTC (rev 1018)
@@ -33,8 +33,8 @@
AUTHOR = "Kenneth J. Pronovici"
EMAIL = "pro...@ie..."
-COPYRIGHT = "2004-2010"
-VERSION = "2.20.1"
-DATE = "19 Oct 2010"
+COPYRIGHT = "2004-2011"
+VERSION = "2.21.0"
+DATE = "unreleased"
URL = "http://cedar-backup.sourceforge.net/"
Modified: cedar-backup2/trunk/Changelog
===================================================================
--- cedar-backup2/trunk/Changelog 2011-03-02 17:35:31 UTC (rev 1017)
+++ cedar-backup2/trunk/Changelog 2011-10-10 03:27:34 UTC (rev 1018)
@@ -1,3 +1,10 @@
+Version 2.21.0 unreleased
+
+ * Implement configurable recursion for collect action.
+ - Update collect.py to handle recursion (patch by Zoran Bosnjak)
+ - Add new configuration item CollectDir.recursionLevel
+ - Update user manual, CREDITS, etc. for new functionality
+
Version 2.20.1 19 Oct 2010
* Fix minor formatting issues in manpages, pointed out by Debian lintian.
Modified: cedar-backup2/trunk/manual/src/config.xml
===================================================================
--- cedar-backup2/trunk/manual/src/config.xml 2011-03-02 17:35:31 UTC (rev 1017)
+++ cedar-backup2/trunk/manual/src/config.xml 2011-10-10 03:27:34 UTC (rev 1018)
@@ -1366,6 +1366,53 @@
</varlistentry>
<varlistentry>
+ <term><literal>recursion_level</literal></term>
+ <listitem>
+ <para>Recursion level to use when collecting directories.</para>
+ <para>
+ This is an integer value that Cedar Backup will consider
+ when generating archive files for a configured collect
+ directory.
+ </para>
+ <para>
+ Normally, Cedar Backup generates one archive file per
+ collect directory. So, if you collect
+ <literal>/etc</literal> you get
+ <literal>etc.tar.gz</literal>. Most of the time, this is
+ what you want. However, you may sometimes wish to
+ generate multiple archive files for a single collect
+ directory.
+ </para>
+ <para>
+ The most obvious example is for <literal>/home</literal>.
+ By default, Cedar Backup will generate
+ <literal>home.tar.gz</literal>. If instead, you want one
+ archive file per home directory you can set a recursion
+ level of <literal>1</literal>. Cedar Backup will generate
+ <literal>home-user1.tar.gz</literal>,
+ <literal>home-user2.tar.gz</literal>, etc.
+ </para>
+ <para>
+ Higher recursion levels (<literal>2</literal>,
+ <literal>3</literal>, etc.) are legal, and it doesn't
+ matter if the configured recursion level is deeper than
+ the directory tree that is being collected. You can use a
+ negative recursion level (like <literal>-1</literal>) to
+ specify an infinite level of recursion. This will exhaust
+ the tree in the same way as if the recursion level is set
+ too high.
+ </para>
+ <para>
+ This field is optional. if it doesn't exist, the backup
+ will use the default list recursion level of zero.
+ </para>
+ <para>
+ <emphasis>Restrictions:</emphasis> Must be an integer.
+ </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/testcase/configtests.py
===================================================================
--- cedar-backup2/trunk/testcase/configtests.py 2011-03-02 17:35:31 UTC (rev 1017)
+++ cedar-backup2/trunk/testcase/configtests.py 2011-10-10 03:27:34 UTC (rev 1018)
@@ -11256,6 +11256,7 @@
config = Config(xmlPath=path, validate=False)
expected = Config()
expected.collect = CollectConfig("/opt/backup/collect", "daily", "targz", ".cbignore")
+ expected.collect.recursionLevel = 1
expected.collect.absoluteExcludePaths = ["/etc/cback.conf", "/etc/X11", ]
expected.collect.excludePatterns = [".*tmp.*", ".*\.netscape\/.*", ]
expected.collect.collectFiles = []
Modified: cedar-backup2/trunk/testcase/data/cback.conf.8
===================================================================
--- cedar-backup2/trunk/testcase/data/cback.conf.8 2011-03-02 17:35:31 UTC (rev 1017)
+++ cedar-backup2/trunk/testcase/data/cback.conf.8 2011-10-10 03:27:34 UTC (rev 1018)
@@ -6,6 +6,7 @@
<collect_mode>daily</collect_mode>
<archive_mode>targz</archive_mode>
<ignore_file>.cbignore</ignore_file>
+ <recursion_level>1</recursion_level>
<exclude>
<abs_path>/etc/cback.conf</abs_path>
<abs_path>/etc/X11</abs_path>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2011-03-02 17:35:38
|
Revision: 1017
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=1017&view=rev
Author: pronovic
Date: 2011-03-02 17:35:31 +0000 (Wed, 02 Mar 2011)
Log Message:
-----------
Add vim setting
Modified Paths:
--------------
cedar-backup2/trunk/pylint-code.rc
Modified: cedar-backup2/trunk/pylint-code.rc
===================================================================
--- cedar-backup2/trunk/pylint-code.rc 2010-10-20 01:55:58 UTC (rev 1016)
+++ cedar-backup2/trunk/pylint-code.rc 2011-03-02 17:35:31 UTC (rev 1017)
@@ -1,3 +1,4 @@
+# vim: set ft=config:
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
# C E D A R
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2010-10-20 01:56:04
|
Revision: 1016
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=1016&view=rev
Author: pronovic
Date: 2010-10-20 01:55:58 +0000 (Wed, 20 Oct 2010)
Log Message:
-----------
Tagging the 2.20.1 release of Cedar Backup.
Added Paths:
-----------
cedar-backup2/tags/CEDAR_BACKUP2_V2.20.1/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2010-10-20 01:55:50
|
Revision: 1015
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=1015&view=rev
Author: pronovic
Date: 2010-10-20 01:55:44 +0000 (Wed, 20 Oct 2010)
Log Message:
-----------
Release 2.20.1
Modified Paths:
--------------
cedar-backup2/trunk/CedarBackup2/release.py
cedar-backup2/trunk/Changelog
Modified: cedar-backup2/trunk/CedarBackup2/release.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/release.py 2010-10-20 01:38:23 UTC (rev 1014)
+++ cedar-backup2/trunk/CedarBackup2/release.py 2010-10-20 01:55:44 UTC (rev 1015)
@@ -34,7 +34,7 @@
AUTHOR = "Kenneth J. Pronovici"
EMAIL = "pro...@ie..."
COPYRIGHT = "2004-2010"
-VERSION = "2.20.0"
-DATE = "07 Jul 2010"
+VERSION = "2.20.1"
+DATE = "19 Oct 2010"
URL = "http://cedar-backup.sourceforge.net/"
Modified: cedar-backup2/trunk/Changelog
===================================================================
--- cedar-backup2/trunk/Changelog 2010-10-20 01:38:23 UTC (rev 1014)
+++ cedar-backup2/trunk/Changelog 2010-10-20 01:55:44 UTC (rev 1015)
@@ -1,4 +1,4 @@
-Version 2.20.1 unreleased
+Version 2.20.1 19 Oct 2010
* Fix minor formatting issues in manpages, pointed out by Debian lintian.
* Changes required to make code compatible with Python 2.7
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2010-10-20 01:38:30
|
Revision: 1014
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=1014&view=rev
Author: pronovic
Date: 2010-10-20 01:38:23 +0000 (Wed, 20 Oct 2010)
Log Message:
-----------
Fix tests that extract a tarfile twice (exposed by new error behavior)
Modified Paths:
--------------
cedar-backup2/trunk/Changelog
cedar-backup2/trunk/testcase/filesystemtests.py
Modified: cedar-backup2/trunk/Changelog
===================================================================
--- cedar-backup2/trunk/Changelog 2010-10-20 01:06:10 UTC (rev 1013)
+++ cedar-backup2/trunk/Changelog 2010-10-20 01:38:23 UTC (rev 1014)
@@ -4,6 +4,7 @@
* Changes required to make code compatible with Python 2.7
- StreamHandler no longer accepts strm= argument (closes: #3079930)
- Modify logfile os.fdopen() to be explicit about read/write mode
+ - Fix tests that extract a tarfile twice (exposed by new error behavior)
Version 2.20.0 07 Jul 2010
Modified: cedar-backup2/trunk/testcase/filesystemtests.py
===================================================================
--- cedar-backup2/trunk/testcase/filesystemtests.py 2010-10-20 01:06:10 UTC (rev 1013)
+++ cedar-backup2/trunk/testcase/filesystemtests.py 2010-10-20 01:38:23 UTC (rev 1014)
@@ -539,13 +539,13 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
fsList = FilesystemList()
count = fsList.addFile(path)
self.failUnlessEqual(1, count)
self.failUnlessEqual([path], fsList)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
fsList = FilesystemList()
self.failUnlessRaises(ValueError, fsList.addFile, path)
@@ -586,6 +586,7 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
fsList = FilesystemList()
fsList.excludeFiles = True
@@ -593,7 +594,6 @@
self.failUnlessEqual(0, count)
self.failUnlessEqual([], fsList)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
fsList = FilesystemList()
fsList.excludeFiles = True
@@ -636,6 +636,7 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
fsList = FilesystemList()
fsList.excludeDirs = True
@@ -643,7 +644,6 @@
self.failUnlessEqual(1, count)
self.failUnlessEqual([path], fsList)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
fsList = FilesystemList()
fsList.excludeDirs = True
@@ -688,6 +688,7 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
fsList = FilesystemList()
fsList.excludeLinks = True
@@ -695,7 +696,6 @@
self.failUnlessEqual(0, count)
self.failUnlessEqual([], fsList)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
fsList = FilesystemList()
fsList.excludeLinks = True
@@ -740,6 +740,7 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
fsList = FilesystemList()
fsList.excludePaths = [ path ]
@@ -747,7 +748,6 @@
self.failUnlessEqual(0, count)
self.failUnlessEqual([], fsList)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
fsList = FilesystemList()
fsList.excludePaths = [ path ]
@@ -791,6 +791,7 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
fsList = FilesystemList()
fsList.excludePaths = [ NOMATCH_PATH ]
@@ -798,7 +799,6 @@
self.failUnlessEqual(1, count)
self.failUnlessEqual([path], fsList)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
fsList = FilesystemList()
fsList.excludePaths = [ NOMATCH_PATH ]
@@ -842,6 +842,7 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
fsList = FilesystemList()
fsList.excludePatterns = [ self.pathPattern(path) ]
@@ -849,7 +850,6 @@
self.failUnlessEqual(0, count)
self.failUnlessEqual([], fsList)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
fsList = FilesystemList()
fsList.excludePatterns = [ self.pathPattern(path) ]
@@ -893,6 +893,7 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
fsList = FilesystemList()
fsList.excludePaths = [ NOMATCH_PATH ]
@@ -900,7 +901,6 @@
self.failUnlessEqual(1, count)
self.failUnlessEqual([path], fsList)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
fsList = FilesystemList()
fsList.excludePaths = [ NOMATCH_PATH ]
@@ -980,6 +980,7 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
fsList = FilesystemList()
fsList.excludeBasenamePatterns = [ "link001", ]
@@ -987,7 +988,6 @@
self.failUnlessEqual(0, count)
self.failUnlessEqual([], fsList)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
fsList = FilesystemList()
fsList.excludeBasenamePatterns = [ "link001", ]
@@ -1034,6 +1034,7 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
fsList = FilesystemList()
fsList.excludeBasenamePaths = [ NOMATCH_BASENAME ]
@@ -1041,7 +1042,6 @@
self.failUnlessEqual(1, count)
self.failUnlessEqual([path], fsList)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
fsList = FilesystemList()
fsList.excludeBasenamePaths = [ NOMATCH_BASENAME ]
@@ -1088,11 +1088,11 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
fsList = FilesystemList()
self.failUnlessRaises(ValueError, fsList.addDir, path)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
fsList = FilesystemList()
count = fsList.addDir(path)
@@ -1135,12 +1135,12 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
fsList = FilesystemList()
fsList.excludeFiles = True
self.failUnlessRaises(ValueError, fsList.addDir, path)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
fsList = FilesystemList()
fsList.excludeFiles = True
@@ -1185,12 +1185,12 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
fsList = FilesystemList()
fsList.excludeDirs = True
self.failUnlessRaises(ValueError, fsList.addDir, path)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
fsList = FilesystemList()
fsList.excludeDirs = True
@@ -1237,12 +1237,12 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
fsList = FilesystemList()
fsList.excludeLinks = True
self.failUnlessRaises(ValueError, fsList.addDir, path)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
fsList = FilesystemList()
fsList.excludeLinks = True
@@ -1289,12 +1289,12 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
fsList = FilesystemList()
fsList.excludePaths = [ path ]
self.failUnlessRaises(ValueError, fsList.addDir, path)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
fsList = FilesystemList()
fsList.excludePaths = [ path ]
@@ -1341,12 +1341,12 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
fsList = FilesystemList()
fsList.excludePaths = [ NOMATCH_PATH ]
self.failUnlessRaises(ValueError, fsList.addDir, path)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
fsList = FilesystemList()
fsList.excludePaths = [ NOMATCH_PATH ]
@@ -1393,12 +1393,12 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
fsList = FilesystemList()
fsList.excludePatterns = [ self.pathPattern(path) ]
self.failUnlessRaises(ValueError, fsList.addDir, path)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
fsList = FilesystemList()
fsList.excludePatterns = [ self.pathPattern(path) ]
@@ -1445,12 +1445,12 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
fsList = FilesystemList()
fsList.excludePatterns = [ NOMATCH_PATH ]
self.failUnlessRaises(ValueError, fsList.addDir, path)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
fsList = FilesystemList()
fsList.excludePatterns = [ NOMATCH_PATH ]
@@ -1520,12 +1520,12 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
fsList = FilesystemList()
fsList.excludeBasenamePatterns = [ "link001", ]
self.failUnlessRaises(ValueError, fsList.addDir, path)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
fsList = FilesystemList()
fsList.excludeBasenamePatterns = [ "link001", ]
@@ -1574,12 +1574,12 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
fsList = FilesystemList()
fsList.excludeBasenamePatterns = [ NOMATCH_BASENAME ]
self.failUnlessRaises(ValueError, fsList.addDir, path)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
fsList = FilesystemList()
fsList.excludeBasenamePatterns = [ NOMATCH_BASENAME ]
@@ -1628,11 +1628,11 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
fsList = FilesystemList()
self.failUnlessRaises(ValueError, fsList.addDirContents, path)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
fsList = FilesystemList()
count = fsList.addDir(path)
@@ -1719,12 +1719,12 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
fsList = FilesystemList()
fsList.excludeFiles = True
self.failUnlessRaises(ValueError, fsList.addDirContents, path)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
fsList = FilesystemList()
fsList.excludeFiles = True
@@ -1812,12 +1812,12 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
fsList = FilesystemList()
fsList.excludeDirs = True
self.failUnlessRaises(ValueError, fsList.addDirContents, path)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
fsList = FilesystemList()
fsList.excludeDirs = True
@@ -1905,12 +1905,12 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
fsList = FilesystemList()
fsList.excludeLinks = True
self.failUnlessRaises(ValueError, fsList.addDirContents, path)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
fsList = FilesystemList()
fsList.excludeLinks = True
@@ -2005,12 +2005,12 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
fsList = FilesystemList()
fsList.excludePaths = [ path ]
self.failUnlessRaises(ValueError, fsList.addDirContents, path)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
fsList = FilesystemList()
fsList.excludePaths = [ path ]
@@ -2097,12 +2097,12 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
fsList = FilesystemList()
fsList.excludePaths = [ NOMATCH_PATH ]
self.failUnlessRaises(ValueError, fsList.addDirContents, path)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
fsList = FilesystemList()
fsList.excludePaths = [ NOMATCH_PATH ]
@@ -2198,12 +2198,12 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
fsList = FilesystemList()
fsList.excludePatterns = [ self.pathPattern(path) ]
self.failUnlessRaises(ValueError, fsList.addDirContents, path)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
fsList = FilesystemList()
fsList.excludePatterns = [ self.pathPattern(path) ]
@@ -2291,12 +2291,12 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
fsList = FilesystemList()
fsList.excludePatterns = [ NOMATCH_PATH ]
self.failUnlessRaises(ValueError, fsList.addDirContents, path)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
fsList = FilesystemList()
fsList.excludePatterns = [ NOMATCH_PATH ]
@@ -3900,12 +3900,12 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
fsList = FilesystemList()
fsList.excludeBasenamePatterns = [ "link001", ]
self.failUnlessRaises(ValueError, fsList.addDirContents, path)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
fsList = FilesystemList()
fsList.excludeBasenamePatterns = [ "link001", ]
@@ -3995,12 +3995,12 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
fsList = FilesystemList()
fsList.excludeBasenamePatterns = [ NOMATCH_PATH ]
self.failUnlessRaises(ValueError, fsList.addDirContents, path)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
fsList = FilesystemList()
fsList.excludeBasenamePatterns = [ NOMATCH_BASENAME ]
@@ -5715,12 +5715,12 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
fsList = FilesystemList()
fsList.excludeFiles = True
self.failUnlessRaises(ValueError, fsList.addDirContents, path, True, True, 1, True)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to dir003
fsList = FilesystemList()
fsList.excludeFiles = True
@@ -5734,12 +5734,12 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
fsList = FilesystemList()
fsList.excludeDirs = True
self.failUnlessRaises(ValueError, fsList.addDirContents, path, True, True, 1, True)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to dir003
fsList = FilesystemList()
fsList.excludeDirs = True
@@ -5753,12 +5753,12 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
fsList = FilesystemList()
fsList.excludeLinks = True
self.failUnlessRaises(ValueError, fsList.addDirContents, path, True, True, 1, True)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to dir003
fsList = FilesystemList()
fsList.excludeLinks = True
@@ -5773,12 +5773,12 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
fsList = FilesystemList()
fsList.excludePaths = [ path ]
self.failUnlessRaises(ValueError, fsList.addDirContents, path, True, True, 1, True)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to dir003
fsList = FilesystemList()
fsList.excludePaths = [ path ]
@@ -5793,12 +5793,12 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
fsList = FilesystemList()
fsList.excludePatterns = [ self.pathPattern(path) ]
self.failUnlessRaises(ValueError, fsList.addDirContents, path, True, True, 1, True)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to dir003
fsList = FilesystemList()
fsList.excludePatterns = [ self.pathPattern(path) ]
@@ -5872,12 +5872,12 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
fsList = FilesystemList()
fsList.excludeBasenamePatterns = [ "link001", ]
self.failUnlessRaises(ValueError, fsList.addDirContents, path, True, True, 1, True)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
fsList = FilesystemList()
fsList.excludeBasenamePatterns = [ "link001", ]
@@ -19476,11 +19476,11 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
purgeList = PurgeItemList()
self.failUnlessRaises(ValueError, purgeList.addDirContents, path)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
purgeList = PurgeItemList()
count = purgeList.addDir(path)
@@ -19566,12 +19566,12 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
purgeList = PurgeItemList()
purgeList.excludeFiles = True
self.failUnlessRaises(ValueError, purgeList.addDirContents, path)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
purgeList = PurgeItemList()
purgeList.excludeFiles = True
@@ -19658,12 +19658,12 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
purgeList = PurgeItemList()
purgeList.excludeDirs = True
self.failUnlessRaises(ValueError, purgeList.addDirContents, path)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
purgeList = PurgeItemList()
purgeList.excludeDirs = True
@@ -19751,12 +19751,12 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
purgeList = PurgeItemList()
purgeList.excludeLinks = True
self.failUnlessRaises(ValueError, purgeList.addDirContents, path)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
purgeList = PurgeItemList()
purgeList.excludeLinks = True
@@ -19850,12 +19850,12 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
purgeList = PurgeItemList()
purgeList.excludePaths = [ path ]
self.failUnlessRaises(ValueError, purgeList.addDirContents, path)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
purgeList = PurgeItemList()
purgeList.excludePaths = [ path ]
@@ -19942,12 +19942,12 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
purgeList = PurgeItemList()
purgeList.excludePaths = [ NOMATCH_PATH ]
self.failUnlessRaises(ValueError, purgeList.addDirContents, path)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
purgeList = PurgeItemList()
purgeList.excludePaths = [ NOMATCH_PATH ]
@@ -20042,12 +20042,12 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
purgeList = PurgeItemList()
purgeList.excludePatterns = [ self.pathPattern(path) ]
self.failUnlessRaises(ValueError, purgeList.addDirContents, path)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
purgeList = PurgeItemList()
purgeList.excludePatterns = [ self.pathPattern(path) ]
@@ -20135,12 +20135,12 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
purgeList = PurgeItemList()
purgeList.excludePatterns = [ NOMATCH_PATH ]
self.failUnlessRaises(ValueError, purgeList.addDirContents, path)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
purgeList = PurgeItemList()
purgeList.excludePatterns = [ NOMATCH_PATH ]
@@ -21596,12 +21596,12 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
purgeList = PurgeItemList()
purgeList.excludeBasenamePatterns = [ "link001", ]
self.failUnlessRaises(ValueError, purgeList.addDirContents, path)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
purgeList = PurgeItemList()
purgeList.excludeBasenamePatterns = [ "link001", ]
@@ -21691,12 +21691,12 @@
"""
if platformSupportsLinks():
self.extractTar("tree5")
+
path = self.buildPath(["tree5", "link001"]) # link to a file
purgeList = PurgeItemList()
purgeList.excludeBasenamePatterns = [ NOMATCH_BASENAME ]
self.failUnlessRaises(ValueError, purgeList.addDirContents, path)
- self.extractTar("tree5")
path = self.buildPath(["tree5", "dir002", "link001"]) # link to a dir
purgeList = PurgeItemList()
purgeList.excludeBasenamePatterns = [ NOMATCH_BASENAME ]
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2010-10-20 01:06:16
|
Revision: 1013
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=1013&view=rev
Author: pronovic
Date: 2010-10-20 01:06:10 +0000 (Wed, 20 Oct 2010)
Log Message:
-----------
Tweaks to logging setup for Python 2.7
Modified Paths:
--------------
cedar-backup2/trunk/CedarBackup2/cli.py
cedar-backup2/trunk/Changelog
Modified: cedar-backup2/trunk/CedarBackup2/cli.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/cli.py 2010-07-11 00:01:08 UTC (rev 1012)
+++ cedar-backup2/trunk/CedarBackup2/cli.py 2010-10-20 01:06:10 UTC (rev 1013)
@@ -1058,9 +1058,9 @@
logfile = options.logfile
if not os.path.exists(logfile):
if options.mode is None:
- os.fdopen(os.open(logfile, os.O_CREAT|os.O_APPEND, DEFAULT_MODE)).write("")
+ os.fdopen(os.open(logfile, os.O_RDWR|os.O_CREAT|os.O_APPEND, DEFAULT_MODE), "a+").write("")
else:
- os.fdopen(os.open(logfile, os.O_CREAT|os.O_APPEND, options.mode)).write("")
+ os.fdopen(os.open(logfile, os.O_RDWR|os.O_CREAT|os.O_APPEND, options.mode), "a+").write("")
try:
if options.owner is None or len(options.owner) < 2:
(uid, gid) = getUidGid(DEFAULT_OWNERSHIP[0], DEFAULT_OWNERSHIP[1])
@@ -1114,7 +1114,7 @@
@param options: Command-line options.
"""
formatter = logging.Formatter(fmt=SCREEN_LOG_FORMAT)
- handler = logging.StreamHandler(strm=SCREEN_LOG_STREAM)
+ handler = logging.StreamHandler(SCREEN_LOG_STREAM)
handler.setFormatter(formatter)
if options.quiet:
handler.setLevel(logging.CRITICAL) # effectively turn it off
Modified: cedar-backup2/trunk/Changelog
===================================================================
--- cedar-backup2/trunk/Changelog 2010-07-11 00:01:08 UTC (rev 1012)
+++ cedar-backup2/trunk/Changelog 2010-10-20 01:06:10 UTC (rev 1013)
@@ -1,6 +1,9 @@
Version 2.20.1 unreleased
* Fix minor formatting issues in manpages, pointed out by Debian lintian.
+ * Changes required to make code compatible with Python 2.7
+ - StreamHandler no longer accepts strm= argument (closes: #3079930)
+ - Modify logfile os.fdopen() to be explicit about read/write mode
Version 2.20.0 07 Jul 2010
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2010-07-11 00:01:14
|
Revision: 1012
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=1012&view=rev
Author: pronovic
Date: 2010-07-11 00:01:08 +0000 (Sun, 11 Jul 2010)
Log Message:
-----------
Remove trailing whitespace
Modified Paths:
--------------
cedar-backup2/trunk/doc/cback.1
Modified: cedar-backup2/trunk/doc/cback.1
===================================================================
--- cedar-backup2/trunk/doc/cback.1 2010-07-10 23:58:29 UTC (rev 1011)
+++ cedar-backup2/trunk/doc/cback.1 2010-07-11 00:01:08 UTC (rev 1012)
@@ -17,7 +17,7 @@
.\"
.TH cback "1" "July 2010" "Cedar Backup" "Kenneth J. Pronovici"
.SH NAME
-cback \- Local and remote backups to CD\-R/CD\-RW media
+cback \- Local and remote backups to CD\-R/CD\-RW media
.SH SYNOPSIS
.B cback
[\fIswitches\fR]
@@ -87,7 +87,7 @@
\fB\-N\fR, \fB\-\-managed-only\fR
Include only managed clients when executing actions. If the action being
executed is listed as a managed action for a managed client, execute the action
-on that client, but do not execute the action locally.
+on that client, but do not execute the action locally.
.TP
\fB\-l\fR, \fB\-\-logfile\fR
Specify the path to an alternate logfile. The default logfile file is
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2010-07-10 23:58:36
|
Revision: 1011
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=1011&view=rev
Author: pronovic
Date: 2010-07-10 23:58:29 +0000 (Sat, 10 Jul 2010)
Log Message:
-----------
Fix minor formatting bugs in manpages, pointed out by Debian lintian
Modified Paths:
--------------
cedar-backup2/trunk/Changelog
cedar-backup2/trunk/doc/cback-span.1
cedar-backup2/trunk/doc/cback.1
Modified: cedar-backup2/trunk/Changelog
===================================================================
--- cedar-backup2/trunk/Changelog 2010-07-07 21:57:35 UTC (rev 1010)
+++ cedar-backup2/trunk/Changelog 2010-07-10 23:58:29 UTC (rev 1011)
@@ -1,3 +1,7 @@
+Version 2.20.1 unreleased
+
+ * Fix minor formatting issues in manpages, pointed out by Debian lintian.
+
Version 2.20.0 07 Jul 2010
* This is a cleanup release with no functional changes.
Modified: cedar-backup2/trunk/doc/cback-span.1
===================================================================
--- cedar-backup2/trunk/doc/cback-span.1 2010-07-07 21:57:35 UTC (rev 1010)
+++ cedar-backup2/trunk/doc/cback-span.1 2010-07-10 23:58:29 UTC (rev 1011)
@@ -15,11 +15,11 @@
.\" #
.\" # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
.\"
-.TH cback-span "1" "Feb 2007" "Cedar Backup" "Kenneth J. Pronovici"
+.TH cback\-span "1" "July 2010" "Cedar Backup" "Kenneth J. Pronovici"
.SH NAME
-cback-span \- Span staged data among multiple discs
+cback\-span \- Span staged data among multiple discs
.SH SYNOPSIS
-.B cback-span
+.B cback\-span
[\fIswitches\fR]
.SH DESCRIPTION
.PP
@@ -28,7 +28,7 @@
staged data between more than one disc. It can't be a Cedar Backup extension
in the usual sense because it requires user input when switching media.
.PP
-Generally, one can run the cback-span command with no arguments. This will
+Generally, one can run the cback\-span command with no arguments. This will
start it using the default configuration file, the default log file, etc. You
only need to use the switches if you need to change the default behavior.
.PP
@@ -66,7 +66,7 @@
.TP
\fB\-m\fR, \fB\-\-mode\fR
Specify the permissions for the logfile, using the numeric mode as in chmod(1).
-The default mode is 640 (-rw-r-----). This value will only be used when
+The default mode is 640 (\-rw\-r\-\-\-\-\-). This value will only be used when
creating a new logfile. If the logfile already exists when the cback script is
executed, it will retain its existing ownership and mode.
.TP
@@ -79,7 +79,7 @@
\fB\-d\fR, \fB\-\-debug\fR
Write debugging information to the logfile. This option produces a high volume
of output, and would generally only be needed when debugging a problem. This
-option implies the --output option, as well.
+option implies the \-\-output option, as well.
.TP
\fB\-s\fR, \fB\-\-stack\fR
Dump a Python stack trace instead of swallowing exceptions. This forces Cedar
@@ -96,7 +96,7 @@
The Python interpreter version is < 2.5.
.TP
\fB2\fR
-Error processing command-line arguments.
+Error processing command\-line arguments.
.TP
\fB3\fR
Error configuring logging.
@@ -105,7 +105,7 @@
Error parsing indicated configuration file.
.TP
\fB5\fR
-Backup was interrupted with a CTRL-C or similar.
+Backup was interrupted with a CTRL\-C or similar.
.TP
\fB6\fR
Other error during processing.
@@ -123,7 +123,7 @@
.TP
\fI/var/log/cback.log\fR - Default log file
.SH BUGS
-Report bugs to <su...@ce...>.
+Report bugs to <support@cedar\-solutions.com>.
.SH AUTHOR
Written by Kenneth J. Pronovici <pro...@ie...>.
.SH COPYRIGHT
Modified: cedar-backup2/trunk/doc/cback.1
===================================================================
--- cedar-backup2/trunk/doc/cback.1 2010-07-07 21:57:35 UTC (rev 1010)
+++ cedar-backup2/trunk/doc/cback.1 2010-07-10 23:58:29 UTC (rev 1011)
@@ -15,16 +15,16 @@
.\" #
.\" # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
.\"
-.TH cback "1" "March 2008" "Cedar Backup" "Kenneth J. Pronovici"
+.TH cback "1" "July 2010" "Cedar Backup" "Kenneth J. Pronovici"
.SH NAME
-cback \- Local and remote backups to CD-R/CD-RW media
+cback \- Local and remote backups to CD\-R/CD\-RW media
.SH SYNOPSIS
.B cback
[\fIswitches\fR]
action(s)
.SH DESCRIPTION
.PP
-The cback script provides the command-line interface for Cedar Backup.
+The cback script provides the command\-line interface for Cedar Backup.
Cedar Backup is a software package designed to manage system backups for a
pool of local and remote machines. Cedar Backup understands how to back up
filesystem data as well as MySQL and PostgreSQL databases and Subversion
@@ -38,7 +38,7 @@
a daily basis.
.PP
There are two kinds of machines in a Cedar Backup pool. One machine (the
-\fImaster\fR) has a CD-R or CD-RW drive on it and is where the backup is
+\fImaster\fR) has a CD\-R or CD\-RW drive on it and is where the backup is
written to disc. The others (\fIclients\fR) collect data to be written to disc
by the master. Collectively, the master and client machines in a pool are all
referred to as \fIpeer\fR machines. There are four actions that take place as
@@ -87,7 +87,7 @@
\fB\-N\fR, \fB\-\-managed-only\fR
Include only managed clients when executing actions. If the action being
executed is listed as a managed action for a managed client, execute the action
-on that client -- but do not execute the action locally.
+on that client, but do not execute the action locally.
.TP
\fB\-l\fR, \fB\-\-logfile\fR
Specify the path to an alternate logfile. The default logfile file is
@@ -103,7 +103,7 @@
.TP
\fB\-m\fR, \fB\-\-mode\fR
Specify the permissions for the logfile, using the numeric mode as in chmod(1).
-The default mode is 640 (-rw-r-----). This value will only be used when
+The default mode is 640 (\-rw\-r\-\-\-\-\-). This value will only be used when
creating a new logfile. If the logfile already exists when the cback script is
executed, it will retain its existing ownership and mode.
.TP
@@ -116,7 +116,7 @@
\fB\-d\fR, \fB\-\-debug\fR
Write debugging information to the logfile. This option produces a high volume
of output, and would generally only be needed when debugging a problem. This
-option implies the --output option, as well.
+option implies the \-\-output option, as well.
.TP
\fB\-s\fR, \fB\-\-stack\fR
Dump a Python stack trace instead of swallowing exceptions. This forces Cedar
@@ -169,7 +169,7 @@
The Python interpreter version is < 2.5.
.TP
\fB2\fR
-Error processing command-line arguments.
+Error processing command\-line arguments.
.TP
\fB3\fR
Error configuring logging.
@@ -178,7 +178,7 @@
Error parsing indicated configuration file.
.TP
\fB5\fR
-Backup was interrupted with a CTRL-C or similar.
+Backup was interrupted with a CTRL\-C or similar.
.TP
\fB6\fR
Error executing specified backup actions.
@@ -219,16 +219,16 @@
.PP
There probably are bugs in this code. However, it is in active use for my own
backups, and I fix problems as I notice them. If you find a bug, please report
-it. If possible, give me the output from --diagnostics, all of the error
-messages that the script printed into its log, and also any stack-traces
+it. If possible, give me the output from \-\-diagnostics, all of the error
+messages that the script printed into its log, and also any stack\-traces
(exceptions) that Python printed. It would be even better if you could tell me
how to reproduce the problem (i.e. by sending me your configuration file).
.PP
-Report bugs to <su...@ce...>.
+Report bugs to <support@cedar\-solutions.com>.
.SH AUTHOR
Written by Kenneth J. Pronovici <pro...@ie...>.
.SH COPYRIGHT
-Copyright (c) 2004-2010 Kenneth J. Pronovici.
+Copyright (c) 2004\-2010 Kenneth J. Pronovici.
.br
This is free software; see the source for copying conditions. There is
NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2010-07-07 21:57:41
|
Revision: 1010
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=1010&view=rev
Author: pronovic
Date: 2010-07-07 21:57:35 +0000 (Wed, 07 Jul 2010)
Log Message:
-----------
Tagging the 2.20.0 release of Cedar Backup.
Added Paths:
-----------
cedar-backup2/tags/CEDAR_BACKUP2_V2.20.0/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2010-07-07 21:57:24
|
Revision: 1009
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=1009&view=rev
Author: pronovic
Date: 2010-07-07 21:57:18 +0000 (Wed, 07 Jul 2010)
Log Message:
-----------
Document change to doscs
Modified Paths:
--------------
cedar-backup2/trunk/Changelog
Modified: cedar-backup2/trunk/Changelog
===================================================================
--- cedar-backup2/trunk/Changelog 2010-07-07 21:36:57 UTC (rev 1008)
+++ cedar-backup2/trunk/Changelog 2010-07-07 21:57:18 UTC (rev 1009)
@@ -14,6 +14,7 @@
* Refactor out util.isRunningAsRoot() to replace scattered os.getuid() calls.
* Remove boilerplate comments "As with all of the ... " in config code.
* Refactor checkUnique() and parseCommaSeparatedString() from config to util.
+ * Add note in manual about intermittent problems with DVD writer soft links.
Version 2.19.6 22 May 2010
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2010-07-07 21:37:03
|
Revision: 1008
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=1008&view=rev
Author: pronovic
Date: 2010-07-07 21:36:57 +0000 (Wed, 07 Jul 2010)
Log Message:
-----------
Release 2.20.0
Modified Paths:
--------------
cedar-backup2/trunk/CedarBackup2/release.py
cedar-backup2/trunk/Changelog
Modified: cedar-backup2/trunk/CedarBackup2/release.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/release.py 2010-07-07 21:33:58 UTC (rev 1007)
+++ cedar-backup2/trunk/CedarBackup2/release.py 2010-07-07 21:36:57 UTC (rev 1008)
@@ -35,6 +35,6 @@
EMAIL = "pro...@ie..."
COPYRIGHT = "2004-2010"
VERSION = "2.20.0"
-DATE = "unreleased"
+DATE = "07 Jul 2010"
URL = "http://cedar-backup.sourceforge.net/"
Modified: cedar-backup2/trunk/Changelog
===================================================================
--- cedar-backup2/trunk/Changelog 2010-07-07 21:33:58 UTC (rev 1007)
+++ cedar-backup2/trunk/Changelog 2010-07-07 21:36:57 UTC (rev 1008)
@@ -1,4 +1,4 @@
-Version 2.20.0 unreleased
+Version 2.20.0 07 Jul 2010
* This is a cleanup release with no functional changes.
* Switch to minimum Python version of 2.5 (everyone should have it now).
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2010-07-07 21:34:04
|
Revision: 1007
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=1007&view=rev
Author: pronovic
Date: 2010-07-07 21:33:58 +0000 (Wed, 07 Jul 2010)
Log Message:
-----------
Refactor checkUnique() and parseCommaSeparatedString() from config to util.
Modified Paths:
--------------
cedar-backup2/trunk/testcase/configtests.py
cedar-backup2/trunk/testcase/utiltests.py
Modified: cedar-backup2/trunk/testcase/configtests.py
===================================================================
--- cedar-backup2/trunk/testcase/configtests.py 2010-07-07 21:03:57 UTC (rev 1006)
+++ cedar-backup2/trunk/testcase/configtests.py 2010-07-07 21:33:58 UTC (rev 1007)
@@ -9575,56 +9575,6 @@
self.failUnless(config1 != config2)
- #########################
- # Test certain utilities
- #########################
-
- def testUtilities_001(self):
- """
- Test _parseCommaSeparatedString() for a None string.
- """
- actual = Config._parseCommaSeparatedString(None)
- self.failUnlessEqual(None, actual)
-
- def testUtilities_002(self):
- """
- Test _parseCommaSeparatedString() for an empty string.
- """
- actual = Config._parseCommaSeparatedString("")
- self.failUnlessEqual([], actual)
-
- def testUtilities_003(self):
- """
- Test _parseCommaSeparatedString() for a string with one value.
- """
- actual = Config._parseCommaSeparatedString("ken")
- self.failUnlessEqual(["ken", ], actual)
-
- def testUtilities_004(self):
- """
- Test _parseCommaSeparatedString() for a string with multiple values, no
- spaces.
- """
- actual = Config._parseCommaSeparatedString("a,b,c")
- self.failUnlessEqual(["a", "b", "c", ], actual)
-
- def testUtilities_005(self):
- """
- Test _parseCommaSeparatedString() for a string with multiple values, with
- spaces.
- """
- actual = Config._parseCommaSeparatedString("a, b, c")
- self.failUnlessEqual(["a", "b", "c", ], actual)
-
- def testUtilities_006(self):
- """
- Test _parseCommaSeparatedString() for a string with multiple values,
- worst-case kind of value.
- """
- actual = Config._parseCommaSeparatedString(" one, two,three, four , five , six, seven,,eight ,")
- self.failUnlessEqual(["one", "two", "three", "four", "five", "six", "seven", "eight", ], actual)
-
-
######################
# Test validate logic
######################
Modified: cedar-backup2/trunk/testcase/utiltests.py
===================================================================
--- cedar-backup2/trunk/testcase/utiltests.py 2010-07-07 21:03:57 UTC (rev 1006)
+++ cedar-backup2/trunk/testcase/utiltests.py 2010-07-07 21:33:58 UTC (rev 1007)
@@ -85,9 +85,9 @@
from CedarBackup2.testutil import findResources, removedir, extractTar, buildPath, captureOutput
from CedarBackup2.testutil import platformHasEcho, platformWindows, platformCygwin, platformSupportsLinks
-from CedarBackup2.util import UnorderedList, AbsolutePathList, ObjectTypeList
+from CedarBackup2.util import UnorderedList, AbsolutePathList, ObjectTypeList
from CedarBackup2.util import RestrictedContentList, RegexMatchList, RegexList
-from CedarBackup2.util import DirectedGraph, PathResolverSingleton, Diagnostics
+from CedarBackup2.util import DirectedGraph, PathResolverSingleton, Diagnostics, parseCommaSeparatedString
from CedarBackup2.util import sortDict, resolveCommand, executeCommand, getFunctionReference, encodePath
from CedarBackup2.util import convertSize, UNIT_BYTES, UNIT_SECTORS, UNIT_KBYTES, UNIT_MBYTES, UNIT_GBYTES
from CedarBackup2.util import displayBytes, deriveDayOfWeek, isStartOfWeek, dereferenceLink
@@ -4023,6 +4023,56 @@
self.failUnlessEqual(expected, actual)
+ ###################################
+ # Test parseCommaSeparatedString()
+ ###################################
+
+ def testParseCommaSeparatedString_001(self):
+ """
+ Test parseCommaSeparatedString() for a None string.
+ """
+ actual = parseCommaSeparatedString(None)
+ self.failUnlessEqual(None, actual)
+
+ def testParseCommaSeparatedString_002(self):
+ """
+ Test parseCommaSeparatedString() for an empty string.
+ """
+ actual = parseCommaSeparatedString("")
+ self.failUnlessEqual([], actual)
+
+ def testParseCommaSeparatedString_003(self):
+ """
+ Test parseCommaSeparatedString() for a string with one value.
+ """
+ actual = parseCommaSeparatedString("ken")
+ self.failUnlessEqual(["ken", ], actual)
+
+ def testParseCommaSeparatedString_004(self):
+ """
+ Test parseCommaSeparatedString() for a string with multiple values, no
+ spaces.
+ """
+ actual = parseCommaSeparatedString("a,b,c")
+ self.failUnlessEqual(["a", "b", "c", ], actual)
+
+ def testParseCommaSeparatedString_005(self):
+ """
+ Test parseCommaSeparatedString() for a string with multiple values, with
+ spaces.
+ """
+ actual = parseCommaSeparatedString("a, b, c")
+ self.failUnlessEqual(["a", "b", "c", ], actual)
+
+ def testParseCommaSeparatedString_006(self):
+ """
+ Test parseCommaSeparatedString() for a string with multiple values,
+ worst-case kind of value.
+ """
+ actual = parseCommaSeparatedString(" one, two,three, four , five , six, seven,,eight ,")
+ self.failUnlessEqual(["one", "two", "three", "four", "five", "six", "seven", "eight", ], actual)
+
+
#######################################################################
# Suite definition
#######################################################################
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2010-07-07 21:04:04
|
Revision: 1006
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=1006&view=rev
Author: pronovic
Date: 2010-07-07 21:03:57 +0000 (Wed, 07 Jul 2010)
Log Message:
-----------
Update copyright statement to include 2010
Modified Paths:
--------------
cedar-backup2/trunk/CedarBackup2/actions/collect.py
cedar-backup2/trunk/CedarBackup2/actions/initialize.py
cedar-backup2/trunk/CedarBackup2/actions/purge.py
cedar-backup2/trunk/CedarBackup2/actions/rebuild.py
cedar-backup2/trunk/CedarBackup2/actions/stage.py
cedar-backup2/trunk/CedarBackup2/actions/store.py
cedar-backup2/trunk/CedarBackup2/actions/util.py
cedar-backup2/trunk/CedarBackup2/actions/validate.py
cedar-backup2/trunk/CedarBackup2/extend/capacity.py
cedar-backup2/trunk/CedarBackup2/extend/encrypt.py
cedar-backup2/trunk/CedarBackup2/extend/mbox.py
cedar-backup2/trunk/CedarBackup2/extend/mysql.py
cedar-backup2/trunk/CedarBackup2/extend/postgresql.py
cedar-backup2/trunk/CedarBackup2/extend/split.py
cedar-backup2/trunk/CedarBackup2/extend/subversion.py
cedar-backup2/trunk/CedarBackup2/extend/sysinfo.py
cedar-backup2/trunk/CedarBackup2/filesystem.py
cedar-backup2/trunk/CedarBackup2/knapsack.py
cedar-backup2/trunk/CedarBackup2/peer.py
cedar-backup2/trunk/CedarBackup2/release.py
cedar-backup2/trunk/CedarBackup2/testutil.py
cedar-backup2/trunk/CedarBackup2/util.py
cedar-backup2/trunk/CedarBackup2/writers/cdwriter.py
cedar-backup2/trunk/CedarBackup2/writers/dvdwriter.py
cedar-backup2/trunk/CedarBackup2/writers/util.py
cedar-backup2/trunk/CedarBackup2/xmlutil.py
cedar-backup2/trunk/doc/cback-span.1
cedar-backup2/trunk/doc/cback.1
cedar-backup2/trunk/manual/src/basic.xml
cedar-backup2/trunk/manual/src/book.xml
cedar-backup2/trunk/manual/src/commandline.xml
cedar-backup2/trunk/manual/src/config.xml
cedar-backup2/trunk/manual/src/copyright.xml
cedar-backup2/trunk/manual/src/depends.xml
cedar-backup2/trunk/manual/src/extensions.xml
cedar-backup2/trunk/manual/src/extenspec.xml
cedar-backup2/trunk/manual/src/install.xml
cedar-backup2/trunk/manual/src/intro.xml
cedar-backup2/trunk/manual/src/preface.xml
cedar-backup2/trunk/manual/src/recovering.xml
cedar-backup2/trunk/manual/src/securingssh.xml
cedar-backup2/trunk/testcase/actionsutiltests.py
cedar-backup2/trunk/testcase/capacitytests.py
cedar-backup2/trunk/testcase/cdwritertests.py
cedar-backup2/trunk/testcase/clitests.py
cedar-backup2/trunk/testcase/dvdwritertests.py
cedar-backup2/trunk/testcase/encrypttests.py
cedar-backup2/trunk/testcase/filesystemtests.py
cedar-backup2/trunk/testcase/knapsacktests.py
cedar-backup2/trunk/testcase/mboxtests.py
cedar-backup2/trunk/testcase/mysqltests.py
cedar-backup2/trunk/testcase/peertests.py
cedar-backup2/trunk/testcase/postgresqltests.py
cedar-backup2/trunk/testcase/spantests.py
cedar-backup2/trunk/testcase/splittests.py
cedar-backup2/trunk/testcase/subversiontests.py
cedar-backup2/trunk/testcase/utiltests.py
cedar-backup2/trunk/testcase/writersutiltests.py
cedar-backup2/trunk/util/createtree.py
cedar-backup2/trunk/util/knapsackdemo.py
Modified: cedar-backup2/trunk/CedarBackup2/actions/collect.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/actions/collect.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/CedarBackup2/actions/collect.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -8,7 +8,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2004-2008 Kenneth J. Pronovici.
+# Copyright (c) 2004-2008,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/CedarBackup2/actions/initialize.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/actions/initialize.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/CedarBackup2/actions/initialize.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -8,7 +8,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2007 Kenneth J. Pronovici.
+# Copyright (c) 2007,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/CedarBackup2/actions/purge.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/actions/purge.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/CedarBackup2/actions/purge.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -8,7 +8,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2004-2007 Kenneth J. Pronovici.
+# Copyright (c) 2004-2007,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/CedarBackup2/actions/rebuild.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/actions/rebuild.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/CedarBackup2/actions/rebuild.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -8,7 +8,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2004-2007 Kenneth J. Pronovici.
+# Copyright (c) 2004-2007,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/CedarBackup2/actions/stage.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/actions/stage.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/CedarBackup2/actions/stage.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -8,7 +8,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2004-2008 Kenneth J. Pronovici.
+# Copyright (c) 2004-2008,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/CedarBackup2/actions/store.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/actions/store.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/CedarBackup2/actions/store.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -8,7 +8,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2004-2007 Kenneth J. Pronovici.
+# Copyright (c) 2004-2007,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/CedarBackup2/actions/util.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/actions/util.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/CedarBackup2/actions/util.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -8,7 +8,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2007 Kenneth J. Pronovici.
+# Copyright (c) 2007,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/CedarBackup2/actions/validate.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/actions/validate.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/CedarBackup2/actions/validate.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -8,7 +8,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2004-2007 Kenneth J. Pronovici.
+# Copyright (c) 2004-2007,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/CedarBackup2/extend/capacity.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/extend/capacity.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/CedarBackup2/extend/capacity.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -8,7 +8,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2008 Kenneth J. Pronovici.
+# Copyright (c) 2008,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/CedarBackup2/extend/encrypt.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/extend/encrypt.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/CedarBackup2/extend/encrypt.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -8,7 +8,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2007 Kenneth J. Pronovici.
+# Copyright (c) 2007,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/CedarBackup2/extend/mbox.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/extend/mbox.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/CedarBackup2/extend/mbox.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -8,7 +8,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2006-2007 Kenneth J. Pronovici.
+# Copyright (c) 2006-2007,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/CedarBackup2/extend/mysql.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/extend/mysql.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/CedarBackup2/extend/mysql.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -8,7 +8,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2005 Kenneth J. Pronovici.
+# Copyright (c) 2005,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/CedarBackup2/extend/postgresql.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/extend/postgresql.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/CedarBackup2/extend/postgresql.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -8,7 +8,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2006 Kenneth J. Pronovici.
+# Copyright (c) 2006,2010 Kenneth J. Pronovici.
# Copyright (c) 2006 Antoine Beaupre.
# All rights reserved.
#
Modified: cedar-backup2/trunk/CedarBackup2/extend/split.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/extend/split.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/CedarBackup2/extend/split.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -8,7 +8,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2007 Kenneth J. Pronovici.
+# Copyright (c) 2007,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/CedarBackup2/extend/subversion.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/extend/subversion.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/CedarBackup2/extend/subversion.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -8,7 +8,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2005,2007 Kenneth J. Pronovici.
+# Copyright (c) 2005,2007,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/CedarBackup2/extend/sysinfo.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/extend/sysinfo.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/CedarBackup2/extend/sysinfo.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -8,7 +8,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2005 Kenneth J. Pronovici.
+# Copyright (c) 2005,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/CedarBackup2/filesystem.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/filesystem.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/CedarBackup2/filesystem.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -8,7 +8,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2004-2008 Kenneth J. Pronovici.
+# Copyright (c) 2004-2008,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/CedarBackup2/knapsack.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/knapsack.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/CedarBackup2/knapsack.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -8,7 +8,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2004-2005 Kenneth J. Pronovici.
+# Copyright (c) 2004-2005,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/CedarBackup2/peer.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/peer.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/CedarBackup2/peer.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -8,7 +8,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2004-2008 Kenneth J. Pronovici.
+# Copyright (c) 2004-2008,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/CedarBackup2/release.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/release.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/CedarBackup2/release.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -34,7 +34,7 @@
AUTHOR = "Kenneth J. Pronovici"
EMAIL = "pro...@ie..."
COPYRIGHT = "2004-2010"
-VERSION = "2.19.7"
+VERSION = "2.20.0"
DATE = "unreleased"
URL = "http://cedar-backup.sourceforge.net/"
Modified: cedar-backup2/trunk/CedarBackup2/testutil.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/testutil.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/CedarBackup2/testutil.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -8,7 +8,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2004-2006,2008 Kenneth J. Pronovici.
+# Copyright (c) 2004-2006,2008,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/CedarBackup2/util.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/util.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/CedarBackup2/util.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -8,7 +8,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2004-2008 Kenneth J. Pronovici.
+# Copyright (c) 2004-2008,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# Portions copyright (c) 2001, 2002 Python Software Foundation.
Modified: cedar-backup2/trunk/CedarBackup2/writers/cdwriter.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/writers/cdwriter.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/CedarBackup2/writers/cdwriter.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -8,7 +8,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2004-2008 Kenneth J. Pronovici.
+# Copyright (c) 2004-2008,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/CedarBackup2/writers/dvdwriter.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/writers/dvdwriter.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/CedarBackup2/writers/dvdwriter.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -8,7 +8,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2007-2008 Kenneth J. Pronovici.
+# Copyright (c) 2007-2008,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/CedarBackup2/writers/util.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/writers/util.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/CedarBackup2/writers/util.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -8,7 +8,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2004-2007 Kenneth J. Pronovici.
+# Copyright (c) 2004-2007,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/CedarBackup2/xmlutil.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/xmlutil.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/CedarBackup2/xmlutil.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -8,7 +8,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2004-2006 Kenneth J. Pronovici.
+# Copyright (c) 2004-2006,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# Portions Copyright (c) 2000 Fourthought Inc, USA.
Modified: cedar-backup2/trunk/doc/cback-span.1
===================================================================
--- cedar-backup2/trunk/doc/cback-span.1 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/doc/cback-span.1 2010-07-07 21:03:57 UTC (rev 1006)
@@ -127,7 +127,7 @@
.SH AUTHOR
Written by Kenneth J. Pronovici <pro...@ie...>.
.SH COPYRIGHT
-Copyright (c) 2007 Kenneth J. Pronovici.
+Copyright (c) 2007,2010 Kenneth J. Pronovici.
.br
This is free software; see the source for copying conditions. There is
NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
Modified: cedar-backup2/trunk/doc/cback.1
===================================================================
--- cedar-backup2/trunk/doc/cback.1 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/doc/cback.1 2010-07-07 21:03:57 UTC (rev 1006)
@@ -228,7 +228,7 @@
.SH AUTHOR
Written by Kenneth J. Pronovici <pro...@ie...>.
.SH COPYRIGHT
-Copyright (c) 2004-2008 Kenneth J. Pronovici.
+Copyright (c) 2004-2010 Kenneth J. Pronovici.
.br
This is free software; see the source for copying conditions. There is
NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
Modified: cedar-backup2/trunk/manual/src/basic.xml
===================================================================
--- cedar-backup2/trunk/manual/src/basic.xml 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/manual/src/basic.xml 2010-07-07 21:03:57 UTC (rev 1006)
@@ -7,7 +7,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2005-2008 Kenneth J. Pronovici.
+# Copyright (c) 2005-2008,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This work is free; you can redistribute it and/or modify it
Modified: cedar-backup2/trunk/manual/src/book.xml
===================================================================
--- cedar-backup2/trunk/manual/src/book.xml 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/manual/src/book.xml 2010-07-07 21:03:57 UTC (rev 1006)
@@ -8,7 +8,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2005-2008 Kenneth J. Pronovici.
+# Copyright (c) 2005-2008,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This work is free; you can redistribute it and/or modify it
Modified: cedar-backup2/trunk/manual/src/commandline.xml
===================================================================
--- cedar-backup2/trunk/manual/src/commandline.xml 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/manual/src/commandline.xml 2010-07-07 21:03:57 UTC (rev 1006)
@@ -7,7 +7,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2005-2007 Kenneth J. Pronovici.
+# Copyright (c) 2005-2007,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This work is free; you can redistribute it and/or modify it
Modified: cedar-backup2/trunk/manual/src/config.xml
===================================================================
--- cedar-backup2/trunk/manual/src/config.xml 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/manual/src/config.xml 2010-07-07 21:03:57 UTC (rev 1006)
@@ -7,7 +7,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2005-2008 Kenneth J. Pronovici.
+# Copyright (c) 2005-2008,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This work is free; you can redistribute it and/or modify it
Modified: cedar-backup2/trunk/manual/src/copyright.xml
===================================================================
--- cedar-backup2/trunk/manual/src/copyright.xml 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/manual/src/copyright.xml 2010-07-07 21:03:57 UTC (rev 1006)
@@ -7,7 +7,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2005-2008 Kenneth J. Pronovici.
+# Copyright (c) 2005-2008,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This work is free; you can redistribute it and/or modify it
@@ -40,7 +40,7 @@
<programlisting>
-Copyright (c) 2005-2008
+Copyright (c) 2005-2010
Kenneth J. Pronovici
This work is free; you can redistribute it and/or modify it under
Modified: cedar-backup2/trunk/manual/src/depends.xml
===================================================================
--- cedar-backup2/trunk/manual/src/depends.xml 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/manual/src/depends.xml 2010-07-07 21:03:57 UTC (rev 1006)
@@ -7,7 +7,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2005-2007 Kenneth J. Pronovici.
+# Copyright (c) 2005-2007,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This work is free; you can redistribute it and/or modify it
Modified: cedar-backup2/trunk/manual/src/extensions.xml
===================================================================
--- cedar-backup2/trunk/manual/src/extensions.xml 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/manual/src/extensions.xml 2010-07-07 21:03:57 UTC (rev 1006)
@@ -7,7 +7,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2005-2008 Kenneth J. Pronovici.
+# Copyright (c) 2005-2008,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This work is free; you can redistribute it and/or modify it
Modified: cedar-backup2/trunk/manual/src/extenspec.xml
===================================================================
--- cedar-backup2/trunk/manual/src/extenspec.xml 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/manual/src/extenspec.xml 2010-07-07 21:03:57 UTC (rev 1006)
@@ -7,7 +7,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2005-2007 Kenneth J. Pronovici.
+# Copyright (c) 2005-2007,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This work is free; you can redistribute it and/or modify it
Modified: cedar-backup2/trunk/manual/src/install.xml
===================================================================
--- cedar-backup2/trunk/manual/src/install.xml 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/manual/src/install.xml 2010-07-07 21:03:57 UTC (rev 1006)
@@ -7,7 +7,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2005-2008 Kenneth J. Pronovici.
+# Copyright (c) 2005-2008,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This work is free; you can redistribute it and/or modify it
Modified: cedar-backup2/trunk/manual/src/intro.xml
===================================================================
--- cedar-backup2/trunk/manual/src/intro.xml 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/manual/src/intro.xml 2010-07-07 21:03:57 UTC (rev 1006)
@@ -7,7 +7,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2005-2007 Kenneth J. Pronovici.
+# Copyright (c) 2005-2007,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This work is free; you can redistribute it and/or modify it
Modified: cedar-backup2/trunk/manual/src/preface.xml
===================================================================
--- cedar-backup2/trunk/manual/src/preface.xml 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/manual/src/preface.xml 2010-07-07 21:03:57 UTC (rev 1006)
@@ -7,7 +7,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2005-2007 Kenneth J. Pronovici.
+# Copyright (c) 2005-2007,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This work is free; you can redistribute it and/or modify it
Modified: cedar-backup2/trunk/manual/src/recovering.xml
===================================================================
--- cedar-backup2/trunk/manual/src/recovering.xml 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/manual/src/recovering.xml 2010-07-07 21:03:57 UTC (rev 1006)
@@ -7,7 +7,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2005-2006 Kenneth J. Pronovici.
+# Copyright (c) 2005-2006,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This work is free; you can redistribute it and/or modify it
Modified: cedar-backup2/trunk/manual/src/securingssh.xml
===================================================================
--- cedar-backup2/trunk/manual/src/securingssh.xml 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/manual/src/securingssh.xml 2010-07-07 21:03:57 UTC (rev 1006)
@@ -7,7 +7,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2007 Kenneth J. Pronovici.
+# Copyright (c) 2007,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This work is free; you can redistribute it and/or modify it
Modified: cedar-backup2/trunk/testcase/actionsutiltests.py
===================================================================
--- cedar-backup2/trunk/testcase/actionsutiltests.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/testcase/actionsutiltests.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -9,7 +9,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2007 Kenneth J. Pronovici.
+# Copyright (c) 2007,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/testcase/capacitytests.py
===================================================================
--- cedar-backup2/trunk/testcase/capacitytests.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/testcase/capacitytests.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -9,7 +9,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2008 Kenneth J. Pronovici.
+# Copyright (c) 2008,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/testcase/cdwritertests.py
===================================================================
--- cedar-backup2/trunk/testcase/cdwritertests.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/testcase/cdwritertests.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -9,7 +9,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2004-2007 Kenneth J. Pronovici.
+# Copyright (c) 2004-2007,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/testcase/clitests.py
===================================================================
--- cedar-backup2/trunk/testcase/clitests.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/testcase/clitests.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -9,7 +9,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2004-2005,2007 Kenneth J. Pronovici.
+# Copyright (c) 2004-2005,2007,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/testcase/dvdwritertests.py
===================================================================
--- cedar-backup2/trunk/testcase/dvdwritertests.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/testcase/dvdwritertests.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -9,7 +9,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2007 Kenneth J. Pronovici.
+# Copyright (c) 2007,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/testcase/encrypttests.py
===================================================================
--- cedar-backup2/trunk/testcase/encrypttests.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/testcase/encrypttests.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -9,7 +9,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2007 Kenneth J. Pronovici.
+# Copyright (c) 2007,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/testcase/filesystemtests.py
===================================================================
--- cedar-backup2/trunk/testcase/filesystemtests.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/testcase/filesystemtests.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -9,7 +9,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2004-2008 Kenneth J. Pronovici.
+# Copyright (c) 2004-2008,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/testcase/knapsacktests.py
===================================================================
--- cedar-backup2/trunk/testcase/knapsacktests.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/testcase/knapsacktests.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -9,7 +9,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2004-2005 Kenneth J. Pronovici.
+# Copyright (c) 2004-2005,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/testcase/mboxtests.py
===================================================================
--- cedar-backup2/trunk/testcase/mboxtests.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/testcase/mboxtests.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -9,7 +9,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2006 Kenneth J. Pronovici.
+# Copyright (c) 2006,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/testcase/mysqltests.py
===================================================================
--- cedar-backup2/trunk/testcase/mysqltests.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/testcase/mysqltests.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -9,7 +9,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2005-2006 Kenneth J. Pronovici.
+# Copyright (c) 2005-2006,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/testcase/peertests.py
===================================================================
--- cedar-backup2/trunk/testcase/peertests.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/testcase/peertests.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -9,7 +9,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2004-2007 Kenneth J. Pronovici.
+# Copyright (c) 2004-2007,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/testcase/postgresqltests.py
===================================================================
--- cedar-backup2/trunk/testcase/postgresqltests.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/testcase/postgresqltests.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -9,7 +9,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2006 Kenneth J. Pronovici.
+# Copyright (c) 2006,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/testcase/spantests.py
===================================================================
--- cedar-backup2/trunk/testcase/spantests.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/testcase/spantests.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -9,7 +9,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2007 Kenneth J. Pronovici.
+# Copyright (c) 2007,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/testcase/splittests.py
===================================================================
--- cedar-backup2/trunk/testcase/splittests.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/testcase/splittests.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -9,7 +9,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2007-2008 Kenneth J. Pronovici.
+# Copyright (c) 2007-2008,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/testcase/subversiontests.py
===================================================================
--- cedar-backup2/trunk/testcase/subversiontests.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/testcase/subversiontests.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -9,7 +9,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2005-2007 Kenneth J. Pronovici.
+# Copyright (c) 2005-2007,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/testcase/utiltests.py
===================================================================
--- cedar-backup2/trunk/testcase/utiltests.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/testcase/utiltests.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -9,7 +9,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2004-2008 Kenneth J. Pronovici.
+# Copyright (c) 2004-2008,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/testcase/writersutiltests.py
===================================================================
--- cedar-backup2/trunk/testcase/writersutiltests.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/testcase/writersutiltests.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -9,7 +9,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2004-2007 Kenneth J. Pronovici.
+# Copyright (c) 2004-2007,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/util/createtree.py
===================================================================
--- cedar-backup2/trunk/util/createtree.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/util/createtree.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -9,7 +9,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2004-2005 Kenneth J. Pronovici.
+# Copyright (c) 2004-2005,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
Modified: cedar-backup2/trunk/util/knapsackdemo.py
===================================================================
--- cedar-backup2/trunk/util/knapsackdemo.py 2010-07-07 21:03:15 UTC (rev 1005)
+++ cedar-backup2/trunk/util/knapsackdemo.py 2010-07-07 21:03:57 UTC (rev 1006)
@@ -9,7 +9,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2004-2005 Kenneth J. Pronovici.
+# Copyright (c) 2004-2005,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2010-07-07 21:03:21
|
Revision: 1005
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=1005&view=rev
Author: pronovic
Date: 2010-07-07 21:03:15 +0000 (Wed, 07 Jul 2010)
Log Message:
-----------
'make clean' should remove tags file
Modified Paths:
--------------
cedar-backup2/trunk/Makefile
Modified: cedar-backup2/trunk/Makefile
===================================================================
--- cedar-backup2/trunk/Makefile 2010-07-07 20:51:16 UTC (rev 1004)
+++ cedar-backup2/trunk/Makefile 2010-07-07 21:03:15 UTC (rev 1005)
@@ -67,7 +67,7 @@
clean: docclean distribclean
-@$(FIND) . -name "*.pyc" | xargs rm -f
- -@rm -f PKG-INFO
+ -@rm -f PKG-INFO tags
tags:
ctags `find . -name "*.py"`
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2010-07-07 20:51:24
|
Revision: 1004
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=1004&view=rev
Author: pronovic
Date: 2010-07-07 20:51:16 +0000 (Wed, 07 Jul 2010)
Log Message:
-----------
Note that Cedar Backup 3 rewrite (if any) would be in Python 3.x
Modified Paths:
--------------
cedar-backup2/trunk/TODO
Modified: cedar-backup2/trunk/TODO
===================================================================
--- cedar-backup2/trunk/TODO 2010-07-07 20:48:46 UTC (rev 1003)
+++ cedar-backup2/trunk/TODO 2010-07-07 20:51:16 UTC (rev 1004)
@@ -34,6 +34,7 @@
============================
+Probably move to Python 3.x for any Cedar Backup 3 rewrite.
New images for manual (something I have given up on several times)
Remove action.py
Use decorator in places like cli._usage() rather than passing in file descriptor?
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2010-07-07 20:48:52
|
Revision: 1003
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=1003&view=rev
Author: pronovic
Date: 2010-07-07 20:48:46 +0000 (Wed, 07 Jul 2010)
Log Message:
-----------
Refactor checkUnique() and parseCommaSeparatedString() from config to util.
Modified Paths:
--------------
cedar-backup2/trunk/CedarBackup2/config.py
cedar-backup2/trunk/CedarBackup2/util.py
cedar-backup2/trunk/Changelog
cedar-backup2/trunk/TODO
Modified: cedar-backup2/trunk/CedarBackup2/config.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/config.py 2010-07-07 20:23:00 UTC (rev 1002)
+++ cedar-backup2/trunk/CedarBackup2/config.py 2010-07-07 20:48:46 UTC (rev 1003)
@@ -244,8 +244,8 @@
# Cedar Backup modules
from CedarBackup2.writers.util import validateScsiId, validateDriveSpeed
-from CedarBackup2.util import UnorderedList, AbsolutePathList, ObjectTypeList
-from CedarBackup2.util import RegexMatchList, RegexList, encodePath
+from CedarBackup2.util import UnorderedList, AbsolutePathList, ObjectTypeList, parseCommaSeparatedString
+from CedarBackup2.util import RegexMatchList, RegexList, encodePath, checkUnique
from CedarBackup2.util import convertSize, UNIT_BYTES, UNIT_KBYTES, UNIT_MBYTES, UNIT_GBYTES
from CedarBackup2.xmlutil import isElement, readChildren, readFirstChild
from CedarBackup2.xmlutil import readStringList, readString, readInteger, readBoolean
@@ -4414,7 +4414,7 @@
options.overrides = Config._parseOverrides(sectionNode)
options.hooks = Config._parseHooks(sectionNode)
managedActions = readString(sectionNode, "managed_actions")
- options.managedActions = Config._parseCommaSeparatedString(managedActions)
+ options.managedActions = parseCommaSeparatedString(managedActions)
return options
@staticmethod
@@ -4872,7 +4872,7 @@
remotePeer.ignoreFailureMode = readString(entry, "ignore_failures")
remotePeer.managed = readBoolean(entry, "managed")
managedActions = readString(entry, "managed_actions")
- remotePeer.managedActions = Config._parseCommaSeparatedString(managedActions)
+ remotePeer.managedActions = parseCommaSeparatedString(managedActions)
remotePeers.append(remotePeer)
if localPeers == []:
localPeers = None
@@ -4909,34 +4909,11 @@
else:
runBefore = readString(sectionNode, "run_before")
runAfter = readString(sectionNode, "run_after")
- beforeList = Config._parseCommaSeparatedString(runBefore)
- afterList = Config._parseCommaSeparatedString(runAfter)
+ beforeList = parseCommaSeparatedString(runBefore)
+ afterList = parseCommaSeparatedString(runAfter)
return ActionDependencies(beforeList, afterList)
@staticmethod
- def _parseCommaSeparatedString(commaString):
- """
- Parses a list of values out of a comma-separated string.
-
- The items in the list are split by comma, and then have whitespace
- stripped. As a special case, if C{commaString} is C{None}, then C{None}
- will be returned.
-
- @param commaString: List of values in comma-separated string format.
- @return: Values from commaString split into a list, or C{None}.
- """
- if commaString is None:
- return None
- else:
- pass1 = commaString.split(",")
- pass2 = []
- for item in pass1:
- item = item.strip()
- if len(item) > 0:
- pass2.append(item)
- return pass2
-
- @staticmethod
def _parseBlankBehavior(parentNode):
"""
Reads a single C{BlankBehavior} object from immediately beneath the parent.
@@ -5680,7 +5657,7 @@
elif self.extensions.orderMode == "dependency":
if action.dependencies is None:
raise ValueError("Each extended action must set dependency information, based on order mode.")
- Config._checkUnique("Duplicate extension names exist:", names)
+ checkUnique("Duplicate extension names exist:", names)
def _validateOptions(self):
"""
@@ -5893,36 +5870,9 @@
if ((self.options is None or self.options.managedActions is None or len(self.options.managedActions) < 1)
and (remotePeer.managedActions is None or len(remotePeer.managedActions) < 1)):
raise ValueError("Managed actions list must be set in options section or individual remote peer.")
- Config._checkUnique("Duplicate peer names exist:", names)
+ checkUnique("Duplicate peer names exist:", names)
- ##############################################
- # Utility methods used for validating content
- ##############################################
-
- @staticmethod
- def _checkUnique(prefix, values):
- """
- Checks that all values are unique.
-
- The values list is checked for duplicate values. If there are
- duplicates, an exception is thrown. All duplicate values are listed in
- the exception.
-
- @param prefix: Prefix to use in the thrown exception
- @param values: List of values to check
-
- @raise ValueError: If there are duplicates in the list
- """
- values.sort()
- duplicates = []
- for i in range(1, len(values)):
- if values[i-1] == values[i]:
- duplicates.append(values[i])
- if duplicates:
- raise ValueError("%s %s" % (prefix, duplicates))
-
-
########################################################################
# General utility functions
########################################################################
Modified: cedar-backup2/trunk/CedarBackup2/util.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/util.py 2010-07-07 20:23:00 UTC (rev 1002)
+++ cedar-backup2/trunk/CedarBackup2/util.py 2010-07-07 20:48:46 UTC (rev 1003)
@@ -1936,3 +1936,56 @@
return result
return path
+
+#########################
+# checkUnique() function
+#########################
+
+def checkUnique(prefix, values):
+ """
+ Checks that all values are unique.
+
+ The values list is checked for duplicate values. If there are
+ duplicates, an exception is thrown. All duplicate values are listed in
+ the exception.
+
+ @param prefix: Prefix to use in the thrown exception
+ @param values: List of values to check
+
+ @raise ValueError: If there are duplicates in the list
+ """
+ values.sort()
+ duplicates = []
+ for i in range(1, len(values)):
+ if values[i-1] == values[i]:
+ duplicates.append(values[i])
+ if duplicates:
+ raise ValueError("%s %s" % (prefix, duplicates))
+
+
+#######################################
+# parseCommaSeparatedString() function
+#######################################
+
+def parseCommaSeparatedString(commaString):
+ """
+ Parses a list of values out of a comma-separated string.
+
+ The items in the list are split by comma, and then have whitespace
+ stripped. As a special case, if C{commaString} is C{None}, then C{None}
+ will be returned.
+
+ @param commaString: List of values in comma-separated string format.
+ @return: Values from commaString split into a list, or C{None}.
+ """
+ if commaString is None:
+ return None
+ else:
+ pass1 = commaString.split(",")
+ pass2 = []
+ for item in pass1:
+ item = item.strip()
+ if len(item) > 0:
+ pass2.append(item)
+ return pass2
+
Modified: cedar-backup2/trunk/Changelog
===================================================================
--- cedar-backup2/trunk/Changelog 2010-07-07 20:23:00 UTC (rev 1002)
+++ cedar-backup2/trunk/Changelog 2010-07-07 20:48:46 UTC (rev 1003)
@@ -1,5 +1,6 @@
Version 2.20.0 unreleased
+ * This is a cleanup release with no functional changes.
* Switch to minimum Python version of 2.5 (everyone should have it now).
- Make cback script more robust in the case of a bad interpreter version
- Change file headers, comments, manual, etc. to reference Python 2.5
@@ -11,7 +12,8 @@
- Move unit tests into testcase folder to avoid test.py naming conflict
* Remove "Translate [x:y] into [a:b]" debug message for uid/gid translation.
* Refactor out util.isRunningAsRoot() to replace scattered os.getuid() calls.
- * Remove configuration boilerplate "As with all of the ... are optional..."
+ * Remove boilerplate comments "As with all of the ... " in config code.
+ * Refactor checkUnique() and parseCommaSeparatedString() from config to util.
Version 2.19.6 22 May 2010
Modified: cedar-backup2/trunk/TODO
===================================================================
--- cedar-backup2/trunk/TODO 2010-07-07 20:23:00 UTC (rev 1002)
+++ cedar-backup2/trunk/TODO 2010-07-07 20:48:46 UTC (rev 1003)
@@ -78,9 +78,6 @@
If each extension really has its own Config object (?) pull out common parsing code
Config code is generally readable, might not be worth abstracting it
- Not sure that comments are worth it -- they're longer than the method body
-Pull out general utilities from config parsing
- - Comma-separated string
- - Check unique
FilesystemList
- excludePaths should become excludedPaths (to differentiate from flags)
- same goes for other lists and maybe ignoreFile (ignoreFileName?)
@@ -90,7 +87,6 @@
- In fact, maybe the knapsack algorithms could operate on a filesystem list instead of the the other way around?
- or, a knapsack algorithm is some sort of predicate or "filter" on a list ???
remove image.py
-maybe get rid of epydoc @type declarations -- they clutter things up and aren't that useful (?)
should common test methods be put into a test case superclass?
- here, I'm thinking of the tar stuff, the "raise on assign failure" etc.
- maybe looking up resources is something a test class always does?
@@ -104,7 +100,7 @@
Get rid of specialized Subversion repository configuration (BDBRepository, FSFSRepository, etc.)
Come up with standard parsing for config items lots of code uses -- exclusions, for example
Spread out the functionality for the validate action
-Standardize on a way to "merge" several levels of configuration for a parmeters that exist on more than one level
+Standardize on a way to "merge" several levels of configuration for a parameters that exist on more than one level
get rid of store.writeImage() -- or rather, rename writeImageBlankSafe to be writeImage
Come up with a way to better share store and rebuild functionality
- Can one extension class provide more than one command, maybe with two named methods?
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|