tahoe-lafs/allmydata/test/test_vdrive.py

70 lines
2.5 KiB
Python
Raw Normal View History

2006-12-04 04:11:26 +00:00
import os
from twisted.trial import unittest
from twisted.internet import defer
from allmydata import vdrive, filetable
class LocalDirNode(filetable.MutableDirectoryNode):
def callRemote(self, methname, *args, **kwargs):
def _call():
meth = getattr(self, methname)
return meth(*args, **kwargs)
return defer.maybeDeferred(_call)
class Traverse(unittest.TestCase):
def make_tree(self, basedir):
os.makedirs(basedir)
root = LocalDirNode(basedir)
self.d1 = d1 = root.add_directory("d1")
self.d2 = d2 = root.add_directory("d2")
root.add_file("a", "a")
root.add_file("b", "b")
d1.add_file("1.a", "1.a")
d1.add_file("1.b", "1.b")
d2.add_file("2.a", "2.a")
d2.add_file("2.b", "2.b")
return root
def test_one(self):
basedir = "test_vdrive/one"
root = self.make_tree(basedir)
v = vdrive.VDrive()
v.set_root(root)
d = v.get_dir("")
d.addCallback(lambda dir: self.failUnlessEqual(dir, root))
d.addCallback(lambda res: v.get_dir("/d1"))
def _check(dir):
self.failUnless(isinstance(dir, LocalDirNode))
self.failUnlessEqual(dir._basedir, self.d1._basedir)
d.addCallback(_check)
d.addCallback(lambda res: v.listdir(""))
d.addCallback(lambda files:
self.failUnlessEqual(sorted(files),
["a", "b", "d1", "d2"]))
d.addCallback(lambda res: v.listdir("/"))
d.addCallback(lambda files:
self.failUnlessEqual(sorted(files),
["a", "b", "d1", "d2"]))
d.addCallback(lambda res: v.listdir("d1"))
d.addCallback(lambda files:
self.failUnlessEqual(sorted(files),
["1.a", "1.b"]))
d.addCallback(lambda res: v.make_directory("", "d3"))
d.addCallback(lambda res: v.listdir(""))
d.addCallback(lambda files:
self.failUnlessEqual(sorted(files),
["a", "b", "d1", "d2", "d3"]))
d.addCallback(lambda res: v.make_directory("d2", "d2.1"))
d.addCallback(lambda res: v.listdir("/d2"))
d.addCallback(lambda files:
self.failUnlessEqual(sorted(files),
["2.a", "2.b", "d2.1"]))
return d