summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gemato/cli.py2
-rw-r--r--gemato/manifest.py22
-rw-r--r--gemato/recursiveloader.py20
-rw-r--r--gemato/verify.py7
-rw-r--r--tests/test_manifest.py23
-rw-r--r--tests/test_openpgp.py67
-rw-r--r--tests/test_recursiveloader.py156
-rw-r--r--tests/test_verify.py70
8 files changed, 42 insertions, 325 deletions
diff --git a/gemato/cli.py b/gemato/cli.py
index a52030c..7440862 100644
--- a/gemato/cli.py
+++ b/gemato/cli.py
@@ -257,7 +257,7 @@ def main(argv):
help='Require that the top-level Manifest is OpenPGP signed')
verify.add_argument('-S', '--no-strict', action='store_false',
dest='strict',
- help='Do not fail on non-strict Manifest issues (MISC/OPTIONAL entries)')
+ help='Do not fail on non-strict Manifest issues (MISC entries)')
verify.set_defaults(func=do_verify)
update = subp.add_parser('update',
diff --git a/gemato/manifest.py b/gemato/manifest.py
index ebdb71f..029f93b 100644
--- a/gemato/manifest.py
+++ b/gemato/manifest.py
@@ -93,27 +93,6 @@ class ManifestEntryIGNORE(ManifestPathEntry):
return (self.tag, self.path)
-class ManifestEntryOPTIONAL(ManifestPathEntry):
- """
- Optional path.
- """
-
- tag = 'OPTIONAL'
-
- def __init__(self, path):
- super(ManifestEntryOPTIONAL, self).__init__(path)
- self.size = None
- self.checksums = {}
-
- @classmethod
- def from_list(cls, l):
- assert l[0] == cls.tag
- return cls(cls.process_path(l))
-
- def to_list(self):
- return (self.tag, self.path)
-
-
class ManifestFileEntry(ManifestPathEntry):
"""
Base class for entries providing checksums for a path.
@@ -295,7 +274,6 @@ MANIFEST_TAG_MAPPING = {
'IGNORE': ManifestEntryIGNORE,
'DATA': ManifestEntryDATA,
'MISC': ManifestEntryMISC,
- 'OPTIONAL': ManifestEntryOPTIONAL,
'DIST': ManifestEntryDIST,
'EBUILD': ManifestEntryEBUILD,
'AUX': ManifestEntryAUX,
diff --git a/gemato/recursiveloader.py b/gemato/recursiveloader.py
index 5369271..a58159c 100644
--- a/gemato/recursiveloader.py
+++ b/gemato/recursiveloader.py
@@ -387,7 +387,7 @@ class ManifestRecursiveLoader(object):
last_mtime=last_mtime)
if not ret:
- if e is not None and e.tag in ('MISC', 'OPTIONAL'):
+ if e is not None and e.tag == 'MISC':
h = warn_handler
else:
h = fail_handler
@@ -409,7 +409,7 @@ class ManifestRecursiveLoader(object):
@fail_handler is the callback called whenever verification
fails for 'strong' entries (or stray files). @warn_handler
- is called whenever verification fails for MISC/OPTIONAL entries.
+ is called whenever verification fails for MISC entries.
The handlers are passed a ManifestMismatch exception object.
The default fail handler raises the exception. Unless specified
@@ -611,7 +611,7 @@ class ManifestRecursiveLoader(object):
does not check if they were compatible.
The type of MANIFEST, DATA and MISC derived entries
- is preserved. OPTIONAL entries are left as-is.
+ is preserved.
If the path exists and has no Manifest entry, a new entry
of type @new_entry_type will be created in the Manifest most
@@ -620,7 +620,7 @@ class ManifestRecursiveLoader(object):
to an existing Manifest.
If the path does not exist, all Manifest entries for it will
- be removed except for OPTIONAL entries.
+ be removed.
@hashes override the value specified in the constructor.
If None, the values from the constructor are used. If those were
@@ -648,11 +648,6 @@ class ManifestRecursiveLoader(object):
# distfiles are not local files, so skip them
# timestamp is not a file ;-)
pass
- elif e.tag == 'OPTIONAL':
- # leave OPTIONAL entries as-is
- fullpath = os.path.join(relpath, e.path)
- if fullpath == path:
- had_entry = True
else:
# we update either file at the specified path
# or any relevant Manifests
@@ -693,8 +688,7 @@ class ManifestRecursiveLoader(object):
assert hashes is not None
for mpath, relpath, m in self._iter_manifests_for_path(path):
# add to the first relevant Manifest
- assert new_entry_type not in (
- 'DIST', 'IGNORE', 'OPTIONAL')
+ assert new_entry_type not in ('DIST', 'IGNORE')
newpath = os.path.relpath(path, relpath)
if new_entry_type == 'AUX':
# AUX has implicit files/ prefix
@@ -941,7 +935,7 @@ class ManifestRecursiveLoader(object):
fpath = os.path.join(relpath, f)
mpath, fe = entry_dict.pop(fpath, (None, None))
if fe is not None:
- if fe.tag in ('IGNORE', 'OPTIONAL'):
+ if fe.tag == 'IGNORE':
continue
if fe.tag == 'MANIFEST':
manifest_stack.append((fpath, relpath,
@@ -1025,7 +1019,7 @@ class ManifestRecursiveLoader(object):
# check for removed files
for relpath, me in entry_dict.items():
mpath, fe = me
- if fe.tag in ('IGNORE', 'OPTIONAL'):
+ if fe.tag == 'IGNORE':
continue
self.loaded_manifests[mpath].entries.remove(fe)
diff --git a/gemato/verify.py b/gemato/verify.py
index 942b93e..6497cd7 100644
--- a/gemato/verify.py
+++ b/gemato/verify.py
@@ -154,9 +154,8 @@ def verify_path(path, e, expected_dev=None, last_mtime=None):
if e.tag == 'IGNORE':
return (True, [])
- # OPTIONAL does not contain checksums, and expects not to exist
- # same goes for None
- if e is None or e.tag == 'OPTIONAL':
+ # None indicates we have no entry, so the file must not exist
+ if e is None:
expect_exist = False
checksums = ()
else:
@@ -238,7 +237,7 @@ def update_entry_for_path(path, e, hashes=None, expected_dev=None,
the checksum calculation is skipped.
"""
- assert e.tag not in ('IGNORE', 'OPTIONAL', 'TIMESTAMP')
+ assert e.tag not in ('IGNORE', 'TIMESTAMP')
if hashes is None:
hashes = list(e.checksums)
diff --git a/tests/test_manifest.py b/tests/test_manifest.py
index ed5042d..a99b31c 100644
--- a/tests/test_manifest.py
+++ b/tests/test_manifest.py
@@ -17,7 +17,6 @@ MANIFEST eclass/Manifest 0 MD5 d41d8cd98f00b204e9800998ecf8427e SHA1 da39a3ee5e6
IGNORE local
DATA myebuild-0.ebuild 0 MD5 d41d8cd98f00b204e9800998ecf8427e SHA1 da39a3ee5e6b4b0d3255bfef95601890afd80709
MISC metadata.xml 0 MD5 d41d8cd98f00b204e9800998ecf8427e SHA1 da39a3ee5e6b4b0d3255bfef95601890afd80709
-OPTIONAL ChangeLog
DIST mydistfile.tar.gz 0 MD5 d41d8cd98f00b204e9800998ecf8427e SHA1 da39a3ee5e6b4b0d3255bfef95601890afd80709
DATA foo.txt 0
'''
@@ -82,7 +81,6 @@ class ManifestTest(unittest.TestCase):
self.assertIsNone(m.find_path_entry('locale'))
self.assertEqual(m.find_path_entry('myebuild-0.ebuild').path, 'myebuild-0.ebuild')
self.assertEqual(m.find_path_entry('metadata.xml').path, 'metadata.xml')
- self.assertEqual(m.find_path_entry('ChangeLog').path, 'ChangeLog')
self.assertIsNone(m.find_path_entry('mydistfile.tar.gz'))
def test_find_path_entry_AUX(self):
@@ -128,7 +126,6 @@ DIST mydistfile.tar.gz 0 MD5 d41d8cd98f00b204e9800998ecf8427e SHA1 da39a3ee5e6b4
IGNORE local
MANIFEST eclass/Manifest 0 MD5 d41d8cd98f00b204e9800998ecf8427e SHA1 da39a3ee5e6b4b0d3255bfef95601890afd80709
MISC metadata.xml 0 MD5 d41d8cd98f00b204e9800998ecf8427e SHA1 da39a3ee5e6b4b0d3255bfef95601890afd80709
-OPTIONAL ChangeLog
TIMESTAMP 2017-10-22T18:06:41Z
'''.lstrip())
@@ -187,13 +184,6 @@ class ManifestEntryTest(unittest.TestCase):
self.assertListEqual(list(m.to_list()),
['MISC'] + list(self.file_vals))
- def test_OPTIONAL(self):
- self.assertEqual(gemato.manifest.ManifestEntryOPTIONAL.from_list(
- ('OPTIONAL', 'test')).path,
- 'test')
- self.assertListEqual(list(gemato.manifest.ManifestEntryOPTIONAL('test').to_list()),
- ['OPTIONAL', 'test'])
-
def test_DIST(self):
m = gemato.manifest.ManifestEntryDIST.from_list(
('DIST',) + self.file_vals)
@@ -246,10 +236,6 @@ class ManifestEntryTest(unittest.TestCase):
self.assertRaises(gemato.exceptions.ManifestSyntaxError,
gemato.manifest.ManifestEntryIGNORE.from_list, ('IGNORE', '/foo',))
self.assertRaises(gemato.exceptions.ManifestSyntaxError,
- gemato.manifest.ManifestEntryOPTIONAL.from_list, ('OPTIONAL', '',))
- self.assertRaises(gemato.exceptions.ManifestSyntaxError,
- gemato.manifest.ManifestEntryOPTIONAL.from_list, ('OPTIONAL', '/foo',))
- self.assertRaises(gemato.exceptions.ManifestSyntaxError,
gemato.manifest.ManifestEntryDATA.from_list, ('DATA', '',))
self.assertRaises(gemato.exceptions.ManifestSyntaxError,
gemato.manifest.ManifestEntryDATA.from_list, ('DATA', '/foo',))
@@ -360,10 +346,6 @@ class ManifestEntryTest(unittest.TestCase):
self.assertRaises(gemato.exceptions.ManifestSyntaxError,
gemato.manifest.ManifestEntryMISC.from_list, ('MISC', 'foo'))
self.assertRaises(gemato.exceptions.ManifestSyntaxError,
- gemato.manifest.ManifestEntryOPTIONAL.from_list, ('OPTIONAL',))
- self.assertRaises(gemato.exceptions.ManifestSyntaxError,
- gemato.manifest.ManifestEntryOPTIONAL.from_list, ('OPTIONAL', 'foo', 'bar'))
- self.assertRaises(gemato.exceptions.ManifestSyntaxError,
gemato.manifest.ManifestEntryDIST.from_list, ('DIST',))
self.assertRaises(gemato.exceptions.ManifestSyntaxError,
gemato.manifest.ManifestEntryDIST.from_list, ('DIST', 'foo'))
@@ -424,11 +406,6 @@ class NewManifestEntryTest(unittest.TestCase):
'test', 32, {}),
gemato.manifest.ManifestEntryMISC)
- def test_OPTIONAL(self):
- self.assertIsInstance(
- gemato.manifest.new_manifest_entry('OPTIONAL', 'test'),
- gemato.manifest.ManifestEntryOPTIONAL)
-
def test_DIST(self):
self.assertIsInstance(
gemato.manifest.new_manifest_entry('DIST',
diff --git a/tests/test_openpgp.py b/tests/test_openpgp.py
index 2c35880..0e765af 100644
--- a/tests/test_openpgp.py
+++ b/tests/test_openpgp.py
@@ -96,79 +96,70 @@ jCvJNJ7pU8YnJSRTQDH0PZEupAdzDU/AhGSrBz5+Jr7N0pQIxq4duE/Q
SIGNED_MANIFEST = u'''
-----BEGIN PGP SIGNED MESSAGE-----
-Hash: SHA512
+Hash: SHA256
TIMESTAMP 2017-10-22T18:06:41Z
MANIFEST eclass/Manifest 0 MD5 d41d8cd98f00b204e9800998ecf8427e SHA1 da39a3ee5e6b4b0d3255bfef95601890afd80709
IGNORE local
DATA myebuild-0.ebuild 0 MD5 d41d8cd98f00b204e9800998ecf8427e SHA1 da39a3ee5e6b4b0d3255bfef95601890afd80709
MISC metadata.xml 0 MD5 d41d8cd98f00b204e9800998ecf8427e SHA1 da39a3ee5e6b4b0d3255bfef95601890afd80709
-OPTIONAL ChangeLog
DIST mydistfile.tar.gz 0 MD5 d41d8cd98f00b204e9800998ecf8427e SHA1 da39a3ee5e6b4b0d3255bfef95601890afd80709
-----BEGIN PGP SIGNATURE-----
-iQGTBAEBCgB9FiEEgeEsFr2NzWC+GAhFE2iA5yp7E4QFAlnwXQpfFIAAAAAALgAo
-aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDgx
-RTEyQzE2QkQ4RENENjBCRTE4MDg0NTEzNjg4MEU3MkE3QjEzODQACgkQE2iA5yp7
-E4ScZAf+IF4suRtuN3bJki2zyYV/1VtSekK96tO+IzXxXDY0OKXmf61R6ZuuXcUD
-Q+DlBONMILG+CDY+qiDp6snEWPmeLuh57qjkxilTgEX88W7OSCSdvGzSbC5WIRQG
-KHtfZWtVVrZHTzQ6MF3u2Vombkpra/CQrf4Yx+8zdkorsoXwZ6ZjriB3W/zTUWIJ
-XUy2tNfupdu72q9ske3dhVLhUEjtBzq5MlTf6gUjLBEsIHCGSafO2VG00lii3q4E
-14EEilADJlKAOwK5WQUmAOjeeC60ck5EW5tGBotncd954v6n42pwlVXVmqSOJdYy
-9F1V8N1m6n9UEUQ7Hhrv/+BTDPJO0A==
-=9naF
+iQEzBAEBCAAdFiEEgeEsFr2NzWC+GAhFE2iA5yp7E4QFAloCx+YACgkQE2iA5yp7
+E4TYrwf+JxjkVDNtvSN3HjQmdtcayLsaliw/2kqjoaQKs0lZD8+NRe7xPmwSm4bP
+XKfoouJ0+/s87vuYJpBBCjtUDA9C9yZIeRTo8+eW6XsZbRRUmUD5ylTS+FpSsUrS
+bEyYk4yZQMYrat+GQ1QBv+625nqnSDv5LZHBBZ/rG36GGlwHPbIKIishnDfdG2QQ
+zuxkqepNq4Inzp//ES7Bv4qbTzyBI//HzfY31vOgdhhs5N5Ytez3Xxv/KNOTYdi1
+ZIfqeaQ4NoefmxQunyEjT+8X2DMaEeHQni7dwjQc+FiN4ReV9aWbLo2O2cArqEHR
+mkkhTd2Auao4D2K74BePBuiZ9+eDQA==
+=khff
-----END PGP SIGNATURE-----
'''
DASH_ESCAPED_SIGNED_MANIFEST = u'''
-----BEGIN PGP SIGNED MESSAGE-----
-Hash: SHA512
+Hash: SHA256
- TIMESTAMP 2017-10-22T18:06:41Z
- MANIFEST eclass/Manifest 0 MD5 d41d8cd98f00b204e9800998ecf8427e SHA1 da39a3ee5e6b4b0d3255bfef95601890afd80709
IGNORE local
- DATA myebuild-0.ebuild 0 MD5 d41d8cd98f00b204e9800998ecf8427e SHA1 da39a3ee5e6b4b0d3255bfef95601890afd80709
MISC metadata.xml 0 MD5 d41d8cd98f00b204e9800998ecf8427e SHA1 da39a3ee5e6b4b0d3255bfef95601890afd80709
-- OPTIONAL ChangeLog
- DIST mydistfile.tar.gz 0 MD5 d41d8cd98f00b204e9800998ecf8427e SHA1 da39a3ee5e6b4b0d3255bfef95601890afd80709
-----BEGIN PGP SIGNATURE-----
-iQGTBAEBCgB9FiEEgeEsFr2NzWC+GAhFE2iA5yp7E4QFAlnwXQpfFIAAAAAALgAo
-aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDgx
-RTEyQzE2QkQ4RENENjBCRTE4MDg0NTEzNjg4MEU3MkE3QjEzODQACgkQE2iA5yp7
-E4ScZAf+IF4suRtuN3bJki2zyYV/1VtSekK96tO+IzXxXDY0OKXmf61R6ZuuXcUD
-Q+DlBONMILG+CDY+qiDp6snEWPmeLuh57qjkxilTgEX88W7OSCSdvGzSbC5WIRQG
-KHtfZWtVVrZHTzQ6MF3u2Vombkpra/CQrf4Yx+8zdkorsoXwZ6ZjriB3W/zTUWIJ
-XUy2tNfupdu72q9ske3dhVLhUEjtBzq5MlTf6gUjLBEsIHCGSafO2VG00lii3q4E
-14EEilADJlKAOwK5WQUmAOjeeC60ck5EW5tGBotncd954v6n42pwlVXVmqSOJdYy
-9F1V8N1m6n9UEUQ7Hhrv/+BTDPJO0A==
-=9naF
+iQEzBAEBCAAdFiEEgeEsFr2NzWC+GAhFE2iA5yp7E4QFAloCx+YACgkQE2iA5yp7
+E4TYrwf+JxjkVDNtvSN3HjQmdtcayLsaliw/2kqjoaQKs0lZD8+NRe7xPmwSm4bP
+XKfoouJ0+/s87vuYJpBBCjtUDA9C9yZIeRTo8+eW6XsZbRRUmUD5ylTS+FpSsUrS
+bEyYk4yZQMYrat+GQ1QBv+625nqnSDv5LZHBBZ/rG36GGlwHPbIKIishnDfdG2QQ
+zuxkqepNq4Inzp//ES7Bv4qbTzyBI//HzfY31vOgdhhs5N5Ytez3Xxv/KNOTYdi1
+ZIfqeaQ4NoefmxQunyEjT+8X2DMaEeHQni7dwjQc+FiN4ReV9aWbLo2O2cArqEHR
+mkkhTd2Auao4D2K74BePBuiZ9+eDQA==
+=khff
-----END PGP SIGNATURE-----
'''
MODIFIED_SIGNED_MANIFEST = u'''
-----BEGIN PGP SIGNED MESSAGE-----
-Hash: SHA512
+Hash: SHA256
TIMESTAMP 2017-10-22T18:06:41Z
MANIFEST eclass/Manifest 0 MD5 d41d8cd98f00b204e9800998ecf8427e SHA1 da39a3ee5e6b4b0d3255bfef95601890afd80709
IGNORE local
DATA myebuild-0.ebuild 32
MISC metadata.xml 0 MD5 d41d8cd98f00b204e9800998ecf8427e SHA1 da39a3ee5e6b4b0d3255bfef95601890afd80709
-OPTIONAL ChangeLog
DIST mydistfile.tar.gz 0 MD5 d41d8cd98f00b204e9800998ecf8427e SHA1 da39a3ee5e6b4b0d3255bfef95601890afd80709
-----BEGIN PGP SIGNATURE-----
-iQGTBAEBCgB9FiEEgeEsFr2NzWC+GAhFE2iA5yp7E4QFAlnwXQpfFIAAAAAALgAo
-aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDgx
-RTEyQzE2QkQ4RENENjBCRTE4MDg0NTEzNjg4MEU3MkE3QjEzODQACgkQE2iA5yp7
-E4ScZAf+IF4suRtuN3bJki2zyYV/1VtSekK96tO+IzXxXDY0OKXmf61R6ZuuXcUD
-Q+DlBONMILG+CDY+qiDp6snEWPmeLuh57qjkxilTgEX88W7OSCSdvGzSbC5WIRQG
-KHtfZWtVVrZHTzQ6MF3u2Vombkpra/CQrf4Yx+8zdkorsoXwZ6ZjriB3W/zTUWIJ
-XUy2tNfupdu72q9ske3dhVLhUEjtBzq5MlTf6gUjLBEsIHCGSafO2VG00lii3q4E
-14EEilADJlKAOwK5WQUmAOjeeC60ck5EW5tGBotncd954v6n42pwlVXVmqSOJdYy
-9F1V8N1m6n9UEUQ7Hhrv/+BTDPJO0A==
-=9naF
+iQEzBAEBCAAdFiEEgeEsFr2NzWC+GAhFE2iA5yp7E4QFAloCx+YACgkQE2iA5yp7
+E4TYrwf+JxjkVDNtvSN3HjQmdtcayLsaliw/2kqjoaQKs0lZD8+NRe7xPmwSm4bP
+XKfoouJ0+/s87vuYJpBBCjtUDA9C9yZIeRTo8+eW6XsZbRRUmUD5ylTS+FpSsUrS
+bEyYk4yZQMYrat+GQ1QBv+625nqnSDv5LZHBBZ/rG36GGlwHPbIKIishnDfdG2QQ
+zuxkqepNq4Inzp//ES7Bv4qbTzyBI//HzfY31vOgdhhs5N5Ytez3Xxv/KNOTYdi1
+ZIfqeaQ4NoefmxQunyEjT+8X2DMaEeHQni7dwjQc+FiN4ReV9aWbLo2O2cArqEHR
+mkkhTd2Auao4D2K74BePBuiZ9+eDQA==
+=khff
-----END PGP SIGNATURE-----
'''
@@ -215,13 +206,13 @@ class SignedManifestTest(unittest.TestCase):
def test_junk_before_manifest_load(self):
m = gemato.manifest.ManifestFile()
- with io.StringIO('OPTIONAL test\n' + SIGNED_MANIFEST) as f:
+ with io.StringIO('IGNORE test\n' + SIGNED_MANIFEST) as f:
self.assertRaises(gemato.exceptions.ManifestUnsignedData,
m.load, f, verify_openpgp=False)
def test_junk_after_manifest_load(self):
m = gemato.manifest.ManifestFile()
- with io.StringIO(SIGNED_MANIFEST + 'OPTIONAL test\n') as f:
+ with io.StringIO(SIGNED_MANIFEST + 'IGNORE test\n') as f:
self.assertRaises(gemato.exceptions.ManifestUnsignedData,
m.load, f, verify_openpgp=False)
diff --git a/tests/test_recursiveloader.py b/tests/test_recursiveloader.py
index 3d51d8b..380ce34 100644
--- a/tests/test_recursiveloader.py
+++ b/tests/test_recursiveloader.py
@@ -22,13 +22,12 @@ class BasicNestingTest(TempDirTestCase):
FILES = {
'Manifest': u'''
TIMESTAMP 2017-01-01T01:01:01Z
-MANIFEST sub/Manifest 146 MD5 81180715a77069664b4b695e53bb856d
+MANIFEST sub/Manifest 128 MD5 30fd28b98a23031c72793908dd35c530
MANIFEST other/Manifest 0 MD5 d41d8cd98f00b204e9800998ecf8427e
DIST topdistfile-1.txt 0 MD5 d41d8cd98f00b204e9800998ecf8427e
''',
'sub/Manifest': u'''
MANIFEST deeper/Manifest 50 MD5 0f7cd9ed779a4844f98d28315dd9176a
-OPTIONAL nonstray
DIST subdistfile-1.txt 0 MD5 d41d8cd98f00b204e9800998ecf8427e
''',
'sub/stray': u'',
@@ -159,11 +158,6 @@ DATA test 0 MD5 d41d8cd98f00b204e9800998ecf8427e
os.path.join(self.dir, 'Manifest'))
self.assertEqual(m.verify_path('sub/deeper/test'), (True, []))
- def test_verify_optional_path(self):
- m = gemato.recursiveloader.ManifestRecursiveLoader(
- os.path.join(self.dir, 'Manifest'))
- self.assertEqual(m.verify_path('sub/nonstray'), (True, []))
-
def test_verify_nonexistent_path(self):
m = gemato.recursiveloader.ManifestRecursiveLoader(
os.path.join(self.dir, 'Manifest'))
@@ -180,11 +174,6 @@ DATA test 0 MD5 d41d8cd98f00b204e9800998ecf8427e
os.path.join(self.dir, 'Manifest'))
m.assert_path_verifies('sub/deeper/test')
- def test_assert_path_verifies_optional_path(self):
- m = gemato.recursiveloader.ManifestRecursiveLoader(
- os.path.join(self.dir, 'Manifest'))
- m.assert_path_verifies('sub/nonstray')
-
def test_assert_path_verifies_nonexistent_path(self):
m = gemato.recursiveloader.ManifestRecursiveLoader(
os.path.join(self.dir, 'Manifest'))
@@ -204,13 +193,11 @@ DATA test 0 MD5 d41d8cd98f00b204e9800998ecf8427e
frozenset((
'other/Manifest',
'sub/Manifest',
- 'sub/nonstray',
'sub/deeper/Manifest',
'sub/deeper/test',
)))
self.assertEqual(entries['other/Manifest'].path, 'other/Manifest')
self.assertEqual(entries['sub/Manifest'].path, 'sub/Manifest')
- self.assertEqual(entries['sub/nonstray'].path, 'nonstray')
self.assertEqual(entries['sub/deeper/Manifest'].path, 'deeper/Manifest')
self.assertEqual(entries['sub/deeper/test'].path, 'test')
@@ -249,18 +236,15 @@ DATA test 0 MD5 d41d8cd98f00b204e9800998ecf8427e
frozenset((
'other/Manifest',
'sub/Manifest',
- 'sub/nonstray',
'sub/deeper/Manifest',
'sub/deeper/test',
)))
self.assertEqual(entries['other/Manifest'][0], 'Manifest')
self.assertEqual(entries['sub/Manifest'][0], 'Manifest')
- self.assertEqual(entries['sub/nonstray'][0], 'sub/Manifest')
self.assertEqual(entries['sub/deeper/Manifest'][0], 'sub/Manifest')
self.assertEqual(entries['sub/deeper/test'][0], 'sub/deeper/Manifest')
self.assertEqual(entries['other/Manifest'][1].path, 'other/Manifest')
self.assertEqual(entries['sub/Manifest'][1].path, 'sub/Manifest')
- self.assertEqual(entries['sub/nonstray'][1].path, 'nonstray')
self.assertEqual(entries['sub/deeper/Manifest'][1].path, 'deeper/Manifest')
self.assertEqual(entries['sub/deeper/test'][1].path, 'test')
@@ -271,12 +255,10 @@ DATA test 0 MD5 d41d8cd98f00b204e9800998ecf8427e
self.assertSetEqual(frozenset(entries),
frozenset((
'sub/Manifest',
- 'sub/nonstray',
'sub/deeper/Manifest',
'sub/deeper/test',
)))
self.assertEqual(entries['sub/Manifest'].path, 'sub/Manifest')
- self.assertEqual(entries['sub/nonstray'].path, 'nonstray')
self.assertEqual(entries['sub/deeper/Manifest'].path, 'deeper/Manifest')
self.assertEqual(entries['sub/deeper/test'].path, 'test')
@@ -288,16 +270,13 @@ DATA test 0 MD5 d41d8cd98f00b204e9800998ecf8427e
self.assertSetEqual(frozenset(entries),
frozenset((
'sub/Manifest',
- 'sub/nonstray',
'sub/deeper/Manifest',
'sub/deeper/test',
)))
self.assertEqual(entries['sub/Manifest'][0], 'Manifest')
- self.assertEqual(entries['sub/nonstray'][0], 'sub/Manifest')
self.assertEqual(entries['sub/deeper/Manifest'][0], 'sub/Manifest')
self.assertEqual(entries['sub/deeper/test'][0], 'sub/deeper/Manifest')
self.assertEqual(entries['sub/Manifest'][1].path, 'sub/Manifest')
- self.assertEqual(entries['sub/nonstray'][1].path, 'nonstray')
self.assertEqual(entries['sub/deeper/Manifest'][1].path, 'deeper/Manifest')
self.assertEqual(entries['sub/deeper/test'][1].path, 'test')
@@ -421,7 +400,7 @@ DATA test 0 MD5 d41d8cd98f00b204e9800998ecf8427e
self.assertEqual(f.read(), u'''
DIST topdistfile-1.txt 0 MD5 d41d8cd98f00b204e9800998ecf8427e
MANIFEST other/Manifest 0 MD5 d41d8cd98f00b204e9800998ecf8427e
-MANIFEST sub/Manifest 145 MD5 75e2be2f56f58e486fd195ec4d96da4a
+MANIFEST sub/Manifest 127 MD5 de990fbccb1261da02c7513dfec56045
TIMESTAMP 2017-01-01T01:01:01Z
'''.lstrip())
with io.open(os.path.join(self.dir, 'sub/Manifest'),
@@ -429,7 +408,6 @@ TIMESTAMP 2017-01-01T01:01:01Z
self.assertEqual(f.read(), u'''
DIST subdistfile-1.txt 0 MD5 d41d8cd98f00b204e9800998ecf8427e
MANIFEST deeper/Manifest 49 MD5 b86a7748346d54c6455886306f017e6c
-OPTIONAL nonstray
'''.lstrip())
def test_update_entry_for_path(self):
@@ -1357,68 +1335,6 @@ MISC test.ebuild 0 MD5 d41d8cd98f00b204e9800998ecf8427e
m.get_deduplicated_file_entry_dict_for_update, '')
-class DuplicateIncompatibleDataOptionalTypeFileEntryTest(TempDirTestCase):
- """
- Test for specifying the entry for the same file twice, with
- incompatible types.
- """
-
- FILES = {
- 'Manifest': u'''
-DATA test.ebuild 0 MD5 d41d8cd98f00b204e9800998ecf8427e
-OPTIONAL test.ebuild
-''',
- }
-
- def test_find_path_entry(self):
- m = gemato.recursiveloader.ManifestRecursiveLoader(
- os.path.join(self.dir, 'Manifest'))
- self.assertEqual(m.find_path_entry('test.ebuild').path, 'test.ebuild')
-
- def test_get_file_entry_dict(self):
- m = gemato.recursiveloader.ManifestRecursiveLoader(
- os.path.join(self.dir, 'Manifest'))
- self.assertRaises(gemato.exceptions.ManifestIncompatibleEntry,
- m.get_file_entry_dict, '')
-
- def test_deduplicated_get_file_entry_dict_for_update(self):
- m = gemato.recursiveloader.ManifestRecursiveLoader(
- os.path.join(self.dir, 'Manifest'))
- self.assertRaises(gemato.exceptions.ManifestIncompatibleEntry,
- m.get_deduplicated_file_entry_dict_for_update, '')
-
-
-class DuplicateIncompatibleMiscOptionalTypeFileEntryTest(TempDirTestCase):
- """
- Test for specifying the entry for the same file twice, with
- incompatible types.
- """
-
- FILES = {
- 'Manifest': u'''
-MISC test.ebuild 0 MD5 d41d8cd98f00b204e9800998ecf8427e
-OPTIONAL test.ebuild
-''',
- }
-
- def test_find_path_entry(self):
- m = gemato.recursiveloader.ManifestRecursiveLoader(
- os.path.join(self.dir, 'Manifest'))
- self.assertEqual(m.find_path_entry('test.ebuild').path, 'test.ebuild')
-
- def test_get_file_entry_dict(self):
- m = gemato.recursiveloader.ManifestRecursiveLoader(
- os.path.join(self.dir, 'Manifest'))
- self.assertRaises(gemato.exceptions.ManifestIncompatibleEntry,
- m.get_file_entry_dict, '')
-
- def test_deduplicated_get_file_entry_dict_for_update(self):
- m = gemato.recursiveloader.ManifestRecursiveLoader(
- os.path.join(self.dir, 'Manifest'))
- self.assertRaises(gemato.exceptions.ManifestIncompatibleEntry,
- m.get_deduplicated_file_entry_dict_for_update, '')
-
-
class DuplicateDifferentSizeFileEntryTest(TempDirTestCase):
"""
Test for specifying the entry for the same file twice, with
@@ -1619,74 +1535,6 @@ MISC foo 0 MD5 d41d8cd98f00b204e9800998ecf8427e
m.assert_directory_verifies()
-class ManifestOptionalEntryTest(TempDirTestCase):
- """
- Test for a Manifest file with OPTIONAL.
- """
-
- FILES = {
- 'Manifest': u'''
-OPTIONAL foo
-''',
- 'foo': u'test',
- }
-
- def test_assert_directory_verifies(self):
- m = gemato.recursiveloader.ManifestRecursiveLoader(
- os.path.join(self.dir, 'Manifest'))
- self.assertRaises(gemato.exceptions.ManifestMismatch,
- m.assert_directory_verifies, '')
-
- def test_assert_directory_verifies_nonstrict(self):
- m = gemato.recursiveloader.ManifestRecursiveLoader(
- os.path.join(self.dir, 'Manifest'))
- self.assertTrue(m.assert_directory_verifies('',
- warn_handler=lambda x: True))
-
- def test_assert_directory_verifies_nonstrict_false(self):
- m = gemato.recursiveloader.ManifestRecursiveLoader(
- os.path.join(self.dir, 'Manifest'))
- self.assertFalse(m.assert_directory_verifies('',
- warn_handler=lambda x: False))
-
- def test_cli_verifies(self):
- self.assertEqual(
- gemato.cli.main(['gemato', 'verify', self.dir]),
- 1)
-
- def test_cli_verifies_nonstrict(self):
- self.assertEqual(
- gemato.cli.main(['gemato', 'verify', '--no-strict', self.dir]),
- 0)
-
- def test_update_entry_for_path(self):
- m = gemato.recursiveloader.ManifestRecursiveLoader(
- os.path.join(self.dir, 'Manifest'))
- m.update_entry_for_path('foo')
- self.assertIsInstance(m.find_path_entry('foo'),
- gemato.manifest.ManifestEntryOPTIONAL)
- m.save_manifests()
- with io.open(os.path.join(self.dir, 'Manifest'),
- 'r', encoding='utf8') as f:
- self.assertEqual(f.read(), self.FILES['Manifest'])
- self.assertRaises(gemato.exceptions.ManifestMismatch,
- m.assert_directory_verifies, '')
-
- def test_update_entries_for_directory(self):
- m = gemato.recursiveloader.ManifestRecursiveLoader(
- os.path.join(self.dir, 'Manifest'),
- hashes=['SHA256', 'SHA512'])
- m.update_entries_for_directory('')
- self.assertIsInstance(m.find_path_entry('foo'),
- gemato.manifest.ManifestEntryOPTIONAL)
- m.save_manifests()
- with io.open(os.path.join(self.dir, 'Manifest'),
- 'r', encoding='utf8') as f:
- self.assertEqual(f.read(), self.FILES['Manifest'])
- self.assertRaises(gemato.exceptions.ManifestMismatch,
- m.assert_directory_verifies, '')
-
-
class CrossDeviceManifestTest(TempDirTestCase):
"""
Test for a Manifest that crosses filesystem boundaries.
diff --git a/tests/test_verify.py b/tests/test_verify.py
index a32ea8d..7fe81a7 100644
--- a/tests/test_verify.py
+++ b/tests/test_verify.py
@@ -40,12 +40,6 @@ class NonExistingFileVerificationTest(unittest.TestCase):
self.assertEqual(gemato.verify.verify_path(os.path.join(self.dir, e.path), e),
(True, []))
- def testOPTIONAL(self):
- e = gemato.manifest.ManifestEntryOPTIONAL.from_list(
- ('OPTIONAL', 'test'))
- self.assertEqual(gemato.verify.verify_path(os.path.join(self.dir, e.path), e),
- (True, []))
-
def testNone(self):
self.assertEqual(gemato.verify.verify_path(os.path.join(self.dir, 'test'), None),
(True, []))
@@ -82,12 +76,6 @@ class DirectoryVerificationTest(unittest.TestCase):
self.assertEqual(gemato.verify.verify_path(self.dir, e),
(True, []))
- def testOPTIONAL(self):
- e = gemato.manifest.ManifestEntryOPTIONAL.from_list(
- ('OPTIONAL', os.path.basename(self.dir)))
- self.assertEqual(gemato.verify.verify_path(self.dir, e),
- (False, [('__exists__', False, True)]))
-
def testNone(self):
self.assertEqual(gemato.verify.verify_path(self.dir, None),
(False, [('__exists__', False, True)]))
@@ -121,12 +109,6 @@ class CharacterDeviceVerificationTest(unittest.TestCase):
self.assertEqual(gemato.verify.verify_path(self.path, e),
(True, []))
- def testOPTIONAL(self):
- e = gemato.manifest.ManifestEntryOPTIONAL.from_list(
- ('OPTIONAL', os.path.basename(self.path)))
- self.assertEqual(gemato.verify.verify_path(self.path, e),
- (False, [('__exists__', False, True)]))
-
def testNone(self):
self.assertEqual(gemato.verify.verify_path(self.path, None),
(False, [('__exists__', False, True)]))
@@ -166,12 +148,6 @@ class NamedPipeVerificationTest(unittest.TestCase):
self.assertEqual(gemato.verify.verify_path(self.path, e),
(True, []))
- def testOPTIONAL(self):
- e = gemato.manifest.ManifestEntryOPTIONAL.from_list(
- ('OPTIONAL', os.path.basename(self.path)))
- self.assertEqual(gemato.verify.verify_path(self.path, e),
- (False, [('__exists__', False, True)]))
-
def testNone(self):
self.assertEqual(gemato.verify.verify_path(self.path, None),
(False, [('__exists__', False, True)]))
@@ -214,12 +190,6 @@ class UNIXSocketVerificationTest(unittest.TestCase):
self.assertEqual(gemato.verify.verify_path(self.path, e),
(True, []))
- def testOPTIONAL(self):
- e = gemato.manifest.ManifestEntryOPTIONAL.from_list(
- ('OPTIONAL', os.path.basename(self.path)))
- self.assertEqual(gemato.verify.verify_path(self.path, e),
- (False, [('__exists__', False, True)]))
-
def testNone(self):
self.assertEqual(gemato.verify.verify_path(self.path, None),
(False, [('__exists__', False, True)]))
@@ -303,12 +273,6 @@ class EmptyFileVerificationTest(unittest.TestCase):
self.assertEqual(gemato.verify.verify_path(self.path, e),
(True, []))
- def testOPTIONAL(self):
- e = gemato.manifest.ManifestEntryOPTIONAL.from_list(
- ('OPTIONAL', os.path.basename(self.path)))
- self.assertEqual(gemato.verify.verify_path(self.path, e),
- (False, [('__exists__', False, True)]))
-
def testNone(self):
self.assertEqual(gemato.verify.verify_path(self.path, None),
(False, [('__exists__', False, True)]))
@@ -408,12 +372,6 @@ class EmptyFileVerificationTest(unittest.TestCase):
self.assertEqual(e.size, 0)
self.assertDictEqual(e.checksums, {})
- def test_update_OPTIONAL(self):
- e = gemato.manifest.ManifestEntryOPTIONAL(
- os.path.basename(self.path))
- self.assertRaises(AssertionError,
- gemato.verify.update_entry_for_path, self.path, e)
-
def test_update_IGNORE(self):
e = gemato.manifest.ManifestEntryIGNORE(
os.path.basename(self.path))
@@ -576,12 +534,6 @@ class NonEmptyFileVerificationTest(unittest.TestCase):
self.assertEqual(gemato.verify.verify_path(self.path, e),
(True, []))
- def testOPTIONAL(self):
- e = gemato.manifest.ManifestEntryOPTIONAL.from_list(
- ('OPTIONAL', os.path.basename(self.path)))
- self.assertEqual(gemato.verify.verify_path(self.path, e),
- (False, [('__exists__', False, True)]))
-
def testNone(self):
self.assertEqual(gemato.verify.verify_path(self.path, None),
(False, [('__exists__', False, True)]))
@@ -862,12 +814,6 @@ class ProcFileVerificationTest(unittest.TestCase):
self.assertEqual(gemato.verify.verify_path(self.path, e),
(True, []))
- def testOPTIONAL(self):
- e = gemato.manifest.ManifestEntryOPTIONAL.from_list(
- ('OPTIONAL', os.path.basename(self.path)))
- self.assertEqual(gemato.verify.verify_path(self.path, e),
- (False, [('__exists__', False, True)]))
-
def testNone(self):
self.assertEqual(gemato.verify.verify_path(self.path, None),
(False, [('__exists__', False, True)]))
@@ -978,22 +924,6 @@ class EntryCompatibilityVerificationTest(unittest.TestCase):
self.assertEqual(gemato.verify.verify_entry_compatibility(e1, e2),
(False, [('__type__', 'DATA', 'MISC')]))
- def test_incompatible_types_DATA_OPTIONAL(self):
- e1 = gemato.manifest.ManifestEntryDATA.from_list(
- ('DATA', 'test', '0', 'MD5', 'd41d8cd98f00b204e9800998ecf8427e'))
- e2 = gemato.manifest.ManifestEntryOPTIONAL.from_list(
- ('OPTIONAL', 'test'))
- self.assertEqual(gemato.verify.verify_entry_compatibility(e1, e2),
- (False, [('__type__', 'DATA', 'OPTIONAL')]))
-
- def test_incompatible_types_MISC_OPTIONAL(self):
- e1 = gemato.manifest.ManifestEntryMISC.from_list(
- ('MISC', 'test', '0', 'MD5', 'd41d8cd98f00b204e9800998ecf8427e'))
- e2 = gemato.manifest.ManifestEntryOPTIONAL.from_list(
- ('OPTIONAL', 'test'))
- self.assertEqual(gemato.verify.verify_entry_compatibility(e1, e2),
- (False, [('__type__', 'MISC', 'OPTIONAL')]))
-
def test_incompatible_types_DATA_IGNORE(self):
e1 = gemato.manifest.ManifestEntryDATA.from_list(
('DATA', 'test', '0', 'MD5', 'd41d8cd98f00b204e9800998ecf8427e'))