diff options
author | Michał Górny <mgorny@gentoo.org> | 2017-11-01 16:31:35 +0100 |
---|---|---|
committer | Michał Górny <mgorny@gentoo.org> | 2017-11-01 16:31:35 +0100 |
commit | c3391d185af458b65c668c9902f596f35bf93bff (patch) | |
tree | 3ed50d9564fa9781ef42b7e4fc0e1dd1e40cb009 | |
parent | d0733ecf55f76c4700eb116439c4fd635936f956 (diff) | |
download | gemato-c3391d185af458b65c668c9902f596f35bf93bff.tar.gz |
recursiveloader: Support creating sub-Manifest
-rw-r--r-- | gemato/recursiveloader.py | 15 | ||||
-rw-r--r-- | tests/test_recursiveloader.py | 13 |
2 files changed, 27 insertions, 1 deletions
diff --git a/gemato/recursiveloader.py b/gemato/recursiveloader.py index 65dd424..a52f333 100644 --- a/gemato/recursiveloader.py +++ b/gemato/recursiveloader.py @@ -519,7 +519,9 @@ class ManifestRecursiveLoader(object): self.updated_manifests -= set(gemato.compression .get_potential_compressed_names('Manifest')) # at this point, the list should be empty - assert not self.updated_manifests + assert not self.updated_manifests, ( + "Unlinked but updated Manifests: {}".format( + self.updated_manifests)) def update_entry_for_path(self, path, new_entry_type='DATA', hashes=None): @@ -931,3 +933,14 @@ class ManifestRecursiveLoader(object): self.loaded_manifests[mpath].entries.remove(fe) self.updated_manifests.add(mpath) + + def create_manifest(self, path): + """ + Create a new empty sub-Manifest instance at relative path @path. + The file will not be written until save_manifests(). No MANIFEST + entry for the file will be created. + + Returns the new ManifestFile instance. + """ + + return self.load_manifest(path, allow_create=True) diff --git a/tests/test_recursiveloader.py b/tests/test_recursiveloader.py index 366522a..c115763 100644 --- a/tests/test_recursiveloader.py +++ b/tests/test_recursiveloader.py @@ -2649,6 +2649,19 @@ MANIFEST z/Manifest 0 MD5 d41d8cd98f00b204e9800998ecf8427e m.save_manifests() m.assert_directory_verifies() + def test_create_manifest(self): + m = gemato.recursiveloader.ManifestRecursiveLoader( + os.path.join(self.dir, 'Manifest')) + self.assertIsNotNone(m.create_manifest('a/y/Manifest')) + self.assertFalse(os.path.exists(os.path.join( + self.dir, 'a/y/Manifest'))) + m.loaded_manifests['Manifest'].entries.append( + gemato.manifest.ManifestEntryMANIFEST( + 'a/y/Manifest', 0, {})) + m.save_manifests() + self.assertTrue(os.path.exists(os.path.join( + self.dir, 'a/y/Manifest'))) + class AddingToMultipleManifestsTest(TempDirTestCase): """ |