diff options
author | Lars Wirzenius <liw@liw.fi> | 2015-05-16 19:02:04 +0300 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2015-05-16 19:07:48 +0300 |
commit | 8009e62bedf764941019a85f40ccac92ed038e57 (patch) | |
tree | 0a8cb876f047e7ea5f69bf91f4baf513e540382a | |
parent | 959622b90e8140346789d1d90c0b8a78309bce39 (diff) | |
download | obnam-8009e62bedf764941019a85f40ccac92ed038e57.tar.gz |
Add BagStore.has_bag
-rw-r--r-- | obnamlib/bag_store.py | 8 | ||||
-rw-r--r-- | obnamlib/bag_store_tests.py | 9 |
2 files changed, 17 insertions, 0 deletions
diff --git a/obnamlib/bag_store.py b/obnamlib/bag_store.py index e95d385d..abe33baf 100644 --- a/obnamlib/bag_store.py +++ b/obnamlib/bag_store.py @@ -52,6 +52,14 @@ class BagStore(object): serialised = self._fs.cat(filename) return deserialise_bag(serialised) + def has_bag(self, bag_id): + filename = self._make_bag_filename(bag_id) + try: + st = self._fs.lstat(filename) + except (IOError, OSError) as e: # pragma: no cover + return False + return st.st_size > 0 + def get_bag_ids(self): for pathname, st in self._fs.scan_tree(self._dirname): if self._is_bag_filename(pathname): diff --git a/obnamlib/bag_store_tests.py b/obnamlib/bag_store_tests.py index ff9afbe0..ef06fe87 100644 --- a/obnamlib/bag_store_tests.py +++ b/obnamlib/bag_store_tests.py @@ -59,6 +59,15 @@ class BagStoreTests(unittest.TestCase): store.set_location(self.fs, 'empty') self.assertEqual(list(store.get_bag_ids()), []) + def test_has_a_put_bag(self): + self.store.put_bag(self.bag) + self.assertTrue(self.store.has_bag(self.bag.get_id())) + + def test_does_not_have_a_removed_bag(self): + self.store.put_bag(self.bag) + self.store.remove_bag(self.bag.get_id()) + self.assertFalse(self.store.has_bag(self.bag.get_id())) + def test_lists_bag_that_has_been_put(self): self.store.put_bag(self.bag) self.assertEqual(list(self.store.get_bag_ids()), [self.bag.get_id()]) |