summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gemato/cli.py4
-rw-r--r--tests/test_recursiveloader.py27
2 files changed, 31 insertions, 0 deletions
diff --git a/gemato/cli.py b/gemato/cli.py
index 14e1dd5..fdd1a6c 100644
--- a/gemato/cli.py
+++ b/gemato/cli.py
@@ -146,6 +146,8 @@ class BaseManifestLoaderMixin(object):
subp.add_argument('-j', '--jobs', type=int,
help='Specify the maximum number of parallel jobs to use (default: {})'
.format(multiprocessing.cpu_count()))
+ subp.add_argument('-x', '--one-file-system', action='store_true',
+ help='Do not cross filesystem boundaries (report an error instead)')
def parse_args(self, args, argp):
super(BaseManifestLoaderMixin, self).parse_args(args, argp)
@@ -155,6 +157,8 @@ class BaseManifestLoaderMixin(object):
if args.jobs < 1:
argp.error('--jobs must be positive')
self.init_kwargs['max_jobs'] = args.jobs
+ if args.one_file_system:
+ self.init_kwargs['allow_xdev'] = False
class VerifyCommand(BaseManifestLoaderMixin, VerifyingOpenPGPMixin,
diff --git a/tests/test_recursiveloader.py b/tests/test_recursiveloader.py
index ae757f2..be32fc4 100644
--- a/tests/test_recursiveloader.py
+++ b/tests/test_recursiveloader.py
@@ -1575,6 +1575,11 @@ DATA sub/version 0 MD5 d41d8cd98f00b204e9800998ecf8427e
self.assertRaises(gemato.exceptions.ManifestCrossDevice,
m.assert_directory_verifies, 'sub')
+ def test_cli_verifies(self):
+ self.assertEqual(
+ gemato.cli.main(['gemato', 'verify', '-x', self.dir]),
+ 1)
+
def test_update_entries_for_directory(self):
m = gemato.recursiveloader.ManifestRecursiveLoader(
os.path.join(self.dir, 'Manifest'),
@@ -1583,6 +1588,12 @@ DATA sub/version 0 MD5 d41d8cd98f00b204e9800998ecf8427e
self.assertRaises(gemato.exceptions.ManifestCrossDevice,
m.update_entries_for_directory, '')
+ def test_cli_update(self):
+ self.assertEqual(
+ gemato.cli.main(['gemato', 'update', '-x',
+ '--hashes=SHA256 SHA512', self.dir]),
+ 1)
+
class CrossDeviceEmptyManifestTest(TempDirTestCase):
"""
@@ -1615,6 +1626,11 @@ class CrossDeviceEmptyManifestTest(TempDirTestCase):
m.assert_directory_verifies, '',
fail_handler=callback_return_true)
+ def test_cli_verifies(self):
+ self.assertEqual(
+ gemato.cli.main(['gemato', 'verify', '-x', self.dir]),
+ 1)
+
def test_update_entries_for_directory(self):
m = gemato.recursiveloader.ManifestRecursiveLoader(
os.path.join(self.dir, 'Manifest'),
@@ -1623,6 +1639,12 @@ class CrossDeviceEmptyManifestTest(TempDirTestCase):
self.assertRaises(gemato.exceptions.ManifestCrossDevice,
m.update_entries_for_directory, '')
+ def test_cli_update(self):
+ self.assertEqual(
+ gemato.cli.main(['gemato', 'update', '-x',
+ '--hashes=SHA256 SHA512', self.dir]),
+ 1)
+
class CrossDeviceIgnoreManifestTest(TempDirTestCase):
"""
@@ -1648,6 +1670,11 @@ IGNORE sub
allow_xdev=False)
m.assert_directory_verifies('')
+ def test_cli_verifies(self):
+ self.assertEqual(
+ gemato.cli.main(['gemato', 'verify', '-x', self.dir]),
+ 0)
+
def test_update_entries_for_directory(self):
m = gemato.recursiveloader.ManifestRecursiveLoader(
os.path.join(self.dir, 'Manifest'),