summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gemato/recursiveloader.py16
-rw-r--r--tests/test_recursiveloader.py19
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):
"""