mirror of https://github.com/borgbackup/borg.git
commit
f834e335f9
|
@ -35,6 +35,20 @@ from .remote import RepositoryServer, RemoteRepository
|
||||||
has_lchflags = hasattr(os, 'lchflags')
|
has_lchflags = hasattr(os, 'lchflags')
|
||||||
|
|
||||||
|
|
||||||
|
class ToggleAction(argparse.Action):
|
||||||
|
"""argparse action to handle "toggle" flags easily
|
||||||
|
|
||||||
|
toggle flags are in the form of ``--foo``, ``--no-foo``.
|
||||||
|
|
||||||
|
the ``--no-foo`` argument still needs to be passed to the
|
||||||
|
``add_argument()`` call, but it simplifies the ``--no``
|
||||||
|
detection.
|
||||||
|
"""
|
||||||
|
def __call__(self, parser, ns, values, option):
|
||||||
|
"""set the given flag to true unless ``--no`` is passed"""
|
||||||
|
setattr(ns, self.dest, not option.startswith('--no-'))
|
||||||
|
|
||||||
|
|
||||||
class Archiver:
|
class Archiver:
|
||||||
|
|
||||||
def __init__(self, verbose=False, lock_wait=None):
|
def __init__(self, verbose=False, lock_wait=None):
|
||||||
|
@ -777,19 +791,6 @@ class Archiver:
|
||||||
See the output of the "borg help patterns" command for more help on exclude patterns.
|
See the output of the "borg help patterns" command for more help on exclude patterns.
|
||||||
""")
|
""")
|
||||||
|
|
||||||
class ToggleAction(argparse.Action):
|
|
||||||
"""argparse action to handle "toggle" flags easily
|
|
||||||
|
|
||||||
toggle flags are in the form of ``--foo``, ``--no-foo``.
|
|
||||||
|
|
||||||
the ``--no-foo`` argument still needs to be passed to the
|
|
||||||
``add_argument()`` call, but it simplifies the ``--no``
|
|
||||||
detection.
|
|
||||||
"""
|
|
||||||
def __call__(self, parser, ns, values, option):
|
|
||||||
"""set the given flag to true unless ``--no`` is passed"""
|
|
||||||
setattr(ns, self.dest, option.startswith('--no-'))
|
|
||||||
|
|
||||||
subparser = subparsers.add_parser('create', parents=[common_parser],
|
subparser = subparsers.add_parser('create', parents=[common_parser],
|
||||||
description=self.do_create.__doc__,
|
description=self.do_create.__doc__,
|
||||||
epilog=create_epilog,
|
epilog=create_epilog,
|
||||||
|
|
|
@ -669,6 +669,41 @@ class ArchiverTestCase(ArchiverTestCaseBase):
|
||||||
manifest, key = Manifest.load(repository)
|
manifest, key = Manifest.load(repository)
|
||||||
self.assert_equal(len(manifest.archives), 0)
|
self.assert_equal(len(manifest.archives), 0)
|
||||||
|
|
||||||
|
def test_progress(self):
|
||||||
|
self.create_regular_file('file1', size=1024 * 80)
|
||||||
|
self.cmd('init', self.repository_location)
|
||||||
|
# progress forced on
|
||||||
|
output = self.cmd('create', '--progress', self.repository_location + '::test4', 'input')
|
||||||
|
self.assert_in("\r", output)
|
||||||
|
# progress forced off
|
||||||
|
output = self.cmd('create', '--no-progress', self.repository_location + '::test5', 'input')
|
||||||
|
self.assert_not_in("\r", output)
|
||||||
|
|
||||||
|
@unittest.skipUnless(sys.stdout.isatty(), 'need a tty to test auto-detection')
|
||||||
|
def test_progress_tty(self):
|
||||||
|
"""test that the --progress and --no-progress flags work,
|
||||||
|
overriding defaults from the terminal auto-detection"""
|
||||||
|
self.create_regular_file('file1', size=1024 * 80)
|
||||||
|
self.cmd('init', self.repository_location)
|
||||||
|
# without a terminal, no progress expected
|
||||||
|
output = self.cmd('create', self.repository_location + '::test1', 'input', fork=False)
|
||||||
|
self.assert_not_in("\r", output)
|
||||||
|
# with a terminal, progress expected
|
||||||
|
output = self.cmd('create', self.repository_location + '::test2', 'input', fork=True)
|
||||||
|
self.assert_in("\r", output)
|
||||||
|
# without a terminal, progress forced on
|
||||||
|
output = self.cmd('create', '--progress', self.repository_location + '::test3', 'input', fork=False)
|
||||||
|
self.assert_in("\r", output)
|
||||||
|
# with a terminal, progress forced on
|
||||||
|
output = self.cmd('create', '--progress', self.repository_location + '::test4', 'input', fork=True)
|
||||||
|
self.assert_in("\r", output)
|
||||||
|
# without a terminal, progress forced off
|
||||||
|
output = self.cmd('create', '--no-progress', self.repository_location + '::test5', 'input', fork=False)
|
||||||
|
self.assert_not_in("\r", output)
|
||||||
|
# with a terminal, progress forced off
|
||||||
|
output = self.cmd('create', '--no-progress', self.repository_location + '::test6', 'input', fork=True)
|
||||||
|
self.assert_not_in("\r", output)
|
||||||
|
|
||||||
def test_cmdline_compatibility(self):
|
def test_cmdline_compatibility(self):
|
||||||
self.create_regular_file('file1', size=1024 * 80)
|
self.create_regular_file('file1', size=1024 * 80)
|
||||||
self.cmd('init', self.repository_location)
|
self.cmd('init', self.repository_location)
|
||||||
|
|
Loading…
Reference in New Issue