diff options
-rw-r--r-- | gemato/recursiveloader.py | 16 | ||||
-rw-r--r-- | tests/test_recursiveloader.py | 19 |
2 files changed, 35 insertions, 0 deletions
diff --git a/gemato/recursiveloader.py b/gemato/recursiveloader.py index 4242c6f..5369271 100644 --- a/gemato/recursiveloader.py +++ b/gemato/recursiveloader.py @@ -255,6 +255,22 @@ class ManifestRecursiveLoader(object): return e return None + def set_timestamp(self, ts): + """ + Set Manifest timestamp to @ts. + + If the Manifest already contains a TIMESTAMP entry, it will + be updated. Otherwise, a new entry will be created. + """ + + e = self.find_timestamp() + if e is not None: + e.ts = ts + else: + m = self.loaded_manifests[self.top_level_manifest_filename] + e = gemato.manifest.ManifestEntryTIMESTAMP(ts) + m.entries.append(e) + def find_path_entry(self, path): """ Find a matching entry for path @path and return it. Returns diff --git a/tests/test_recursiveloader.py b/tests/test_recursiveloader.py index 40aeb2b..2835b7f 100644 --- a/tests/test_recursiveloader.py +++ b/tests/test_recursiveloader.py @@ -112,6 +112,17 @@ DATA test 0 MD5 d41d8cd98f00b204e9800998ecf8427e self.assertEqual(m.find_timestamp().ts, datetime.datetime(2017, 1, 1, 1, 1, 1)) + def test_set_timestamp(self): + m = gemato.recursiveloader.ManifestRecursiveLoader( + os.path.join(self.dir, 'Manifest')) + m.set_timestamp(datetime.datetime(2010, 7, 7, 7, 7, 7)) + self.assertEqual(m.find_timestamp().ts, + datetime.datetime(2010, 7, 7, 7, 7, 7)) + self.assertEqual( + len([x for x in m.loaded_manifests['Manifest'].entries + if x.tag == 'TIMESTAMP']), + 1) + def test_find_path_entry(self): m = gemato.recursiveloader.ManifestRecursiveLoader( os.path.join(self.dir, 'Manifest')) @@ -940,6 +951,14 @@ DATA test 0 MD5 d41d8cd98f00b204e9800998ecf8427e self.assertTrue(os.path.exists( os.path.join(self.dir, 'Manifest'))) + def test_set_timestamp(self): + m = gemato.recursiveloader.ManifestRecursiveLoader( + os.path.join(self.dir, 'Manifest')) + self.assertIsNone(m.find_timestamp()) + m.set_timestamp(datetime.datetime(2010, 7, 7, 7, 7, 7)) + self.assertEqual(m.find_timestamp().ts, + datetime.datetime(2010, 7, 7, 7, 7, 7)) + class DuplicateManifestFileEntryTest(TempDirTestCase): """ |