diff --git a/tests/test_externalfailures.py b/tests/test_externalfailures.py index b4de200..d856af0 100644 --- a/tests/test_externalfailures.py +++ b/tests/test_externalfailures.py @@ -1,7 +1,7 @@ -from basetest import * +from .basetest import * -class TestZfsNode(unittest2.TestCase): +class TestExternalFailures(unittest2.TestCase): def setUp(self): prepare_zpools() @@ -259,8 +259,28 @@ test_target1/test_source2/fs2/sub@test-20101111000002 with patch('time.strftime', return_value="20101111000001"): self.assertTrue(ZfsAutobackup("test test_target1 --verbose --allow-empty".split(" ")).run()) - ############# TODO: + #UPDATE: offcourse the one thing that wasn't tested had a bug :( (in ExecuteNode.run()). def test_ignoretransfererrors(self): - self.skipTest( - "todo: create some kind of situation where zfs recv exits with an error but transfer is still ok (happens in practice with acltype)") + self.skipTest("Not sure how to implement a test for this without some serious hacking and patching.") + +# #recreate target pool without any features +# # shelltest("zfs set compress=on test_source1; zpool destroy test_target1; zpool create test_target1 -o feature@project_quota=disabled /dev/ram2") +# +# with patch('time.strftime', return_value="20101111000000"): +# self.assertFalse(ZfsAutobackup("test test_target1 --verbose --allow-empty --no-progress".split(" ")).run()) +# +# r = shelltest("zfs list -H -o name -r -t all test_target1") +# +# self.assertMultiLineEqual(r, """ +# test_target1 +# test_target1/test_source1 +# test_target1/test_source1/fs1 +# test_target1/test_source1/fs1@test-20101111000002 +# test_target1/test_source1/fs1/sub +# test_target1/test_source1/fs1/sub@test-20101111000002 +# test_target1/test_source2 +# test_target1/test_source2/fs2 +# test_target1/test_source2/fs2/sub +# test_target1/test_source2/fs2/sub@test-20101111000002 +# """) diff --git a/zfs_autobackup/ZfsAutobackup.py b/zfs_autobackup/ZfsAutobackup.py index 31e1df6..4b3d697 100644 --- a/zfs_autobackup/ZfsAutobackup.py +++ b/zfs_autobackup/ZfsAutobackup.py @@ -23,8 +23,7 @@ class ZfsAutobackup: parser = argparse.ArgumentParser( description=self.HEADER, - epilog='When a filesystem fails, zfs_backup will continue and report the number of failures at that end. ' - 'Also the exit code will indicate the number of failures. Full manual at: https://github.com/psy0rz/zfs_autobackup') + epilog='Full manual at: https://github.com/psy0rz/zfs_autobackup') parser.add_argument('--ssh-config', default=None, help='Custom ssh client config') parser.add_argument('--ssh-source', default=None, help='Source host to get backup from. (user@hostname) Default %(default)s.') diff --git a/zfs_autobackup/ZfsDataset.py b/zfs_autobackup/ZfsDataset.py index 5852c2b..959e407 100644 --- a/zfs_autobackup/ZfsDataset.py +++ b/zfs_autobackup/ZfsDataset.py @@ -489,8 +489,8 @@ class ZfsDataset: if self.zfs_node.readonly: self.force_exists = True - # check if transfer was really ok (exit codes have been wrong before due to bugs in zfs-utils and can be - # ignored by some parameters) + # check if transfer was really ok (exit codes have been wrong before due to bugs in zfs-utils and some + # errors should be ignored, thats where the ignore_exitcodes is for.) if not self.exists: self.error("error during transfer") raise (Exception("Target doesn't exist after transfer, something went wrong."))