diff options
author | Lars Wirzenius <liw@gytha> | 2008-04-13 21:56:49 +0300 |
---|---|---|
committer | Lars Wirzenius <liw@gytha> | 2008-04-13 21:56:49 +0300 |
commit | b2b4b68d111ee60a34e003561c765beafce3b1d1 (patch) | |
tree | 959c55b2f082a35f33c7a3b571e98932f940c728 /obnam | |
parent | c71013e0d6578522fa8a57acad183458f62d8701 (diff) | |
download | obnam-b2b4b68d111ee60a34e003561c765beafce3b1d1.tar.gz |
Look up files in a generation.
Diffstat (limited to 'obnam')
-rw-r--r-- | obnam/store.py | 11 | ||||
-rw-r--r-- | obnam/storeTests.py | 34 |
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") |