summaryrefslogtreecommitdiff
path: root/tests/test_recursiveloader.py
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2017-10-31 23:11:22 +0100
committerMichał Górny <mgorny@gentoo.org>2017-10-31 23:11:22 +0100
commit6a06f68531498bc373269184ac03a4e8170d0222 (patch)
treef809e80f8766bee58f22bc05bdf7b1b3e587957c /tests/test_recursiveloader.py
parent9d1a634c7d3a3dee94f25853351543ebcceccd05 (diff)
downloadgemato-6a06f68531498bc373269184ac03a4e8170d0222.tar.gz
recursiveloader: Fix adding sub-Manifests to higher level Manifest
Diffstat (limited to 'tests/test_recursiveloader.py')
-rw-r--r--tests/test_recursiveloader.py51
1 files changed, 51 insertions, 0 deletions
diff --git a/tests/test_recursiveloader.py b/tests/test_recursiveloader.py
index c3263db..ddff0b1 100644
--- a/tests/test_recursiveloader.py
+++ b/tests/test_recursiveloader.py
@@ -2597,3 +2597,54 @@ MANIFEST z/Manifest 0 MD5 d41d8cd98f00b204e9800998ecf8427e
m.update_entries_for_directory('', hashes=['SHA256', 'SHA512'])
m.save_manifests()
m.assert_directory_verifies()
+
+
+class AddingToMultipleManifestsTest(TempDirTestCase):
+ """
+ Check that we are handling a directory containing multiple Manifests
+ correctly, and that we can cleanly add an additional 'Manifest' file
+ in it.
+ """
+
+ DIRS = ['a', 'b']
+ FILES = {
+ 'Manifest': u'''
+MANIFEST a/Manifest.a 47 MD5 89b9c1e9e5a063ee60b91b632c84c7c8
+MANIFEST a/Manifest.b 47 MD5 1b1504046a2023ed75a2a89aed7c52f4
+''',
+ 'a/Manifest.a': u'''
+DATA a 0 MD5 d41d8cd98f00b204e9800998ecf8427e
+''',
+ 'a/Manifest.b': u'''
+DATA b 0 MD5 d41d8cd98f00b204e9800998ecf8427e
+''',
+ 'a/Manifest': u'''
+DATA c 0 MD5 d41d8cd98f00b204e9800998ecf8427e
+''',
+ 'a/a': u'',
+ 'a/b': u'',
+ 'a/c': u'',
+ 'b/test': u'',
+ }
+
+ def test_update_entries_for_directory(self):
+ m = gemato.recursiveloader.ManifestRecursiveLoader(
+ os.path.join(self.dir, 'Manifest'))
+ m.update_entries_for_directory('', hashes=['SHA256', 'SHA512'])
+ m.save_manifests()
+ self.assertListEqual(sorted(m.loaded_manifests),
+ ['Manifest', 'a/Manifest', 'a/Manifest.a',
+ 'a/Manifest.b'])
+ self.assertListEqual(sorted(
+ e.path for e in m.loaded_manifests['Manifest'].entries),
+ ['a/Manifest', 'a/Manifest.a', 'a/Manifest.b', 'b/test'])
+ self.assertListEqual(sorted(
+ e.path for e in m.loaded_manifests['a/Manifest.a'].entries),
+ ['a'])
+ self.assertListEqual(sorted(
+ e.path for e in m.loaded_manifests['a/Manifest.b'].entries),
+ ['b'])
+ self.assertListEqual(sorted(
+ e.path for e in m.loaded_manifests['a/Manifest'].entries),
+ ['c'])
+ m.assert_directory_verifies()