diff --git a/test_externalfailures.py b/test_externalfailures.py index c4f120b..cdd01dc 100644 --- a/test_externalfailures.py +++ b/test_externalfailures.py @@ -216,6 +216,43 @@ test_target1/test_source2/fs2/sub@test-20101111000000 """) + #create a resume situation, where the other side doesnt want the snapshot anymore ( should abort resume ) + def test_abort_unwanted_resume(self): + + if "0.6.5" in ZFS_USERSPACE: + self.skipTest("Resume not supported in this ZFS userspace version") + + with patch('time.strftime', return_value="20101111000000"): + self.assertFalse(ZfsAutobackup("test test_target1 --verbose".split(" ")).run()) + + #generate resume + with patch('time.strftime', return_value="20101111000001"): + self.generate_resume() + + with OutputIO() as buf: + with redirect_stdout(buf): + #incremental, doesnt want previous anymore + with patch('time.strftime', return_value="20101111000002"): + self.assertFalse(ZfsAutobackup("test test_target1 --verbose --keep-target=0 --debug --allow-empty".split(" ")).run()) + + print(buf.getvalue()) + + self.assertIn(": aborting resume, since", buf.getvalue()) + + 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 +""") + def test_missing_common(self): @@ -231,6 +268,7 @@ test_target1/test_source2/fs2/sub@test-20101111000000 + ############# TODO: def test_ignoretransfererrors(self): diff --git a/test_zfsautobackup.py b/test_zfsautobackup.py index 2367a72..1529470 100644 --- a/test_zfsautobackup.py +++ b/test_zfsautobackup.py @@ -9,6 +9,11 @@ class TestZfsAutobackup(unittest2.TestCase): prepare_zpools() self.longMessage=True + def test_invalidpars(self): + + self.assertEqual(ZfsAutobackup("test test_target1 --keep-source -1".split(" ")).run(), 255) + + def test_defaults(self): with self.subTest("no datasets selected"):