diff --git a/attic/archiver.py b/attic/archiver.py index 9e16a4467..f3d3463bb 100644 --- a/attic/archiver.py +++ b/attic/archiver.py @@ -331,8 +331,11 @@ Type "Yes I am sure" if you understand this and want to continue.\n""") for archive in keep: self.print_verbose('Keeping archive "%s"' % archive.name) for archive in to_delete: - self.print_verbose('Pruning archive "%s"', archive.name) - archive.delete(cache) + if args.dry_run: + self.print_verbose('Would prune "%s"' % archive.name) + else: + self.print_verbose('Pruning archive "%s"' % archive.name) + archive.delete(cache) return self.exit_code helptext = {} @@ -561,6 +564,9 @@ Type "Yes I am sure" if you understand this and want to continue.\n""") description=self.do_prune.__doc__, epilog=prune_epilog) subparser.set_defaults(func=self.do_prune) + subparser.add_argument('-n', '--dry-run', dest='dry_run', + default=False, action='store_true', + help='do not change repository') subparser.add_argument('--keep-within', dest='within', type=str, metavar='WITHIN', help='keep all archives within this time interval') subparser.add_argument('-H', '--keep-hourly', dest='hourly', type=int, default=0, diff --git a/attic/testsuite/archiver.py b/attic/testsuite/archiver.py index a163a2df7..90eea3118 100644 --- a/attic/testsuite/archiver.py +++ b/attic/testsuite/archiver.py @@ -253,10 +253,16 @@ class ArchiverTestCase(ArchiverTestCaseBase): self.attic('init', self.repository_location) self.attic('create', self.repository_location + '::test1', src_dir) self.attic('create', self.repository_location + '::test2', src_dir) - self.attic('prune', self.repository_location, '--daily=2') + output = self.attic('prune', '-v', '--dry-run', self.repository_location, '--keep-daily=2') + self.assert_in('Keeping archive "test2"', output) + self.assert_in('Would prune "test1"', output) output = self.attic('list', self.repository_location) - assert 'test1' not in output - assert 'test2' in output + self.assert_in('test1', output) + self.assert_in('test2', output) + self.attic('prune', self.repository_location, '--keep-daily=2') + output = self.attic('list', self.repository_location) + self.assert_not_in('test1', output) + self.assert_in('test2', output) def test_usage(self): self.assert_raises(SystemExit, lambda: self.attic())