summaryrefslogtreecommitdiff
path: root/obnam
diff options
context:
space:
mode:
authorLars Wirzenius <liw@gytha>2008-04-13 21:56:49 +0300
committerLars Wirzenius <liw@gytha>2008-04-13 21:56:49 +0300
commitb2b4b68d111ee60a34e003561c765beafce3b1d1 (patch)
tree959c55b2f082a35f33c7a3b571e98932f940c728 /obnam
parentc71013e0d6578522fa8a57acad183458f62d8701 (diff)
downloadobnam-b2b4b68d111ee60a34e003561c765beafce3b1d1.tar.gz
Look up files in a generation.
Diffstat (limited to 'obnam')
-rw-r--r--obnam/store.py11
-rw-r--r--obnam/storeTests.py34
2 files changed, 40 insertions, 5 deletions
diff --git a/obnam/store.py b/obnam/store.py
index 73e0458b..905e66f8 100644
--- a/obnam/store.py
+++ b/obnam/store.py
@@ -213,5 +213,16 @@ class Store:
in question. If not found, return None.
"""
+
+ dirname = os.path.dirname(pathname)
+ if dirname:
+ dir = self.lookup_dir(generation, dirname)
+ if dir:
+ basename = os.path.basename(pathname)
+ for id in dir.get_filegrouprefs():
+ fg = self.get_object(id)
+ file = fg.get_file(basename)
+ if file:
+ return file
return None
diff --git a/obnam/storeTests.py b/obnam/storeTests.py
index 2e3334a3..24113268 100644
--- a/obnam/storeTests.py
+++ b/obnam/storeTests.py
@@ -223,10 +223,10 @@ class StoreLookupTests(unittest.TestCase):
def create_data_dir(self):
dirname = tempfile.mkdtemp()
- file(os.path.join(dirname, "file"), "w").close()
+ file(os.path.join(dirname, "file1"), "w").close()
os.mkdir(os.path.join(dirname, "dir1"))
os.mkdir(os.path.join(dirname, "dir1", "dir2"))
- file(os.path.join(dirname, "dir1", "dir2", "file"), "w").close()
+ file(os.path.join(dirname, "dir1", "dir2", "file2"), "w").close()
return dirname
def create_context(self):
@@ -272,6 +272,30 @@ class StoreLookupTests(unittest.TestCase):
self.failUnlessEqual(self.store.lookup_dir(self.gen, "notexist"),
None)
- def testDoesNotFindNonExistentFile(self):
- self.failUnlessEqual(self.store.lookup_file(self.gen, "notexist"),
- None)
+ def testDoesNotFindNonExistentFileInSubDirectory(self):
+ pathname = os.path.join(self.dirbasename, "dir1", "notexist")
+ file = self.store.lookup_file(self.gen, pathname)
+ self.failUnlessEqual(file, None)
+
+ def testDoesNotFindNonExistentFileInSubSubDirectory(self):
+ pathname = os.path.join(self.dirbasename, "dir1", "dir2", "notexist")
+ file = self.store.lookup_file(self.gen, pathname)
+ self.failUnlessEqual(file, None)
+
+ def testDoesNotFindNonExistentFileInRoot(self):
+ pathname = os.path.join(self.dirbasename, "notexist")
+ file = self.store.lookup_file(self.gen, pathname)
+ self.failUnlessEqual(file, None)
+
+ def filename(self, file):
+ return file.first_string_by_kind(obnam.cmp.FILENAME)
+
+ def testFindsFileInRootDirectory(self):
+ pathname = os.path.join(self.dirbasename, "file1")
+ file = self.store.lookup_file(self.gen, pathname)
+ self.failUnlessEqual(self.filename(file), "file1")
+
+ def testFindsFileInSubDirectory(self):
+ pathname = os.path.join(self.dirbasename, "dir1", "dir2", "file2")
+ file = self.store.lookup_file(self.gen, pathname)
+ self.failUnlessEqual(self.filename(file), "file2")