Commit 3aa1997b by willmcgugan

Fleshing out the test suite. Also changed fs.mkdir to fs.makedir, for sake of consistancy...

parent f24a6884
......@@ -37,6 +37,9 @@ error_msgs = {
"NO_DIR" : "Directory does not exist: %(path)s",
"NO_FILE" : "No such file: %(path)s",
"NO_RESOURCE" : "No path to: %(path)s",
# SystemError
"OS_ERROR" : "Non specific OS error: %(path)s",
}
error_codes = error_msgs.keys()
......@@ -83,6 +86,9 @@ class ResourceLockedError(FSError):
class ResourceNotFoundError(FSError):
pass
class SystemError(FSError):
pass
class NullFile(object):
......@@ -283,7 +289,7 @@ class FS(object):
def listdir(self, path="./", wildcard=None, full=False, absolute=False, hidden=False, dirs_only=False, files_only=False):
raise UnsupportedError("UNSUPPORTED")
def mkdir(self, path, mode=0777, recursive=False):
def makedir(self, path, mode=0777, recursive=False):
raise UnsupportedError("UNSUPPORTED")
def remove(self, path):
......@@ -456,8 +462,8 @@ class SubFS(FS):
return paths
def mkdir(self, path, mode=0777, recursive=False):
return self.parent.mkdir(self._delegate(path), mode=mode, recursive=False)
def makedir(self, path, mode=0777, recursive=False):
return self.parent.makedir(self._delegate(path), mode=mode, recursive=False)
def remove(self, path):
return self.parent.remove(self._delegate(path))
......@@ -484,7 +490,7 @@ def validatefs(fs):
"isfile",
"ishidden",
"listdir",
"mkdir",
"makedir",
"remove",
"removedir",
"getinfo",
......
......@@ -186,7 +186,7 @@ class MemoryFS(FS):
def exists(self, path):
return self._get_dir_entry(path) is not None
def mkdir(self, dirname, mode=0777, recursive=False, allow_recreate=False):
def makedir(self, dirname, mode=0777, recursive=False, allow_recreate=False):
fullpath = dirname
dirpath, dirname = pathsplit(dirname)
......@@ -340,9 +340,9 @@ class MemoryFS(FS):
def main():
mem_fs = MemoryFS()
mem_fs.mkdir('test/test2', recursive=True)
mem_fs.mkdir('test/A', recursive=True)
mem_fs.mkdir('test/A/B', recursive=True)
mem_fs.makedir('test/test2', recursive=True)
mem_fs.makedir('test/A', recursive=True)
mem_fs.makedir('test/A/B', recursive=True)
......
......@@ -327,7 +327,7 @@ class MountFS(FS):
# return paths
#
# def mount(self, name, path, fs):
# self.mem_fs.mkdir(path, recursive=True)
# self.mem_fs.makedir(path, recursive=True)
# mount_filename = pathjoin(path, '.mount')
# mount = self.mem_fs.open(mount_filename, 'w')
# mount.name = name
......@@ -338,7 +338,7 @@ class MountFS(FS):
if __name__ == "__main__":
fs1 = MemoryFS()
fs1.mkdir("Memroot/B/C/D", recursive=True)
fs1.makedir("Memroot/B/C/D", recursive=True)
fs1.open("test.txt", 'w').write("Hello, World!")
#print_fs(fs1)
......
......@@ -140,9 +140,9 @@ if __name__ == "__main__":
import memoryfs
mem_fs = memoryfs.MemoryFS()
mem_fs.mkdir('projects/test2', recursive=True)
mem_fs.mkdir('projects/A', recursive=True)
mem_fs.mkdir('projects/A/B', recursive=True)
mem_fs.makedir('projects/test2', recursive=True)
mem_fs.makedir('projects/A', recursive=True)
mem_fs.makedir('projects/A/B', recursive=True)
mem_fs.open("projects/test2/readme.txt", 'w').write("Hello, World!")
......
......@@ -53,14 +53,19 @@ class OSFS(FS):
return self._listdir_helper(path, paths, wildcard, full, absolute, hidden, dirs_only, files_only)
def mkdir(self, path, mode=0777, recursive=False):
def makedir(self, path, mode=0777, recursive=False):
sys_path = self.getsyspath(path)
try:
if recursive:
os.makedirs(sys_path, mode)
else:
os.makedir(sys_path, mode)
try:
os.mkdir(sys_path, mode)
except OSError, e:
raise FSError("NO_DIR", sys_path)
except OSError, e:
raise FSError("OS_ERROR", sys_path, details=e)
def remove(self, path):
sys_path = self.getsyspath(path)
......@@ -75,12 +80,12 @@ class OSFS(FS):
if recursive:
try:
os.rmdir(sys_path)
os.removedirs(sys_path)
except OSError, e:
raise OperationFailedError("REMOVEDIR_FAILED", path, details=e)
else:
try:
os.removedirs(sys_path)
os.rmdir(sys_path)
except OSError, e:
raise OperationFailedError("REMOVEDIR_FAILED", path, details=e)
......@@ -131,6 +136,7 @@ class OSFS(FS):
return stats.st_size
if __name__ == "__main__":
osfs = OSFS("~/projects")
......
......@@ -93,6 +93,74 @@ class TestHelpers(unittest.TestCase):
for path, result in tests:
self.assertEqual(fs.pathsplit(path), result)
import tempfile
import osfs
import os
class TestFS(unittest.TestCase):
def setUp(self):
self.temp_dir = tempfile.mkdtemp("fstest")
self.fs = osfs.OSFS(self.temp_dir)
print "Temp dir is", self.temp_dir
def tearDown(self):
assert "fstest" in self.temp_dir
for root, dirs, files in os.walk(self.temp_dir, topdown=False):
for f in files:
os.remove(os.path.join(root, f))
for d in dirs:
os.rmdir(os.path.join(root, d))
os.removedirs(self.temp_dir)
def check(self, p):
return os.path.exists(os.path.join(self.temp_dir, p))
def test_makedir(self):
check = self.check
self.fs.makedir("a")
self.assert_(check("a"))
self.assertRaises(fs.FSError, self.fs.makedir, "a/b/c")
self.fs.makedir("a/b/c", recursive=True)
self.assert_(check("a/b/c"))
self.fs.makedir("foo/bar/baz", recursive=True)
self.assert_(check("foo/bar/baz"))
self.fs.makedir("a/b/child")
self.assert_(check("a/b/child"))
def test_removedir(self):
check = self.check
self.fs.makedir("a")
self.assert_(check("a"))
self.fs.removedir("a")
self.assert_(not check("a"))
self.fs.makedir("a/b/c/d", recursive=True)
self.assertRaises(fs.FSError, self.fs.removedir, "a/b")
self.fs.removedir("a/b/c/d")
self.assert_(not check("a/b/c/d"))
self.fs.removedir("a/b/c")
self.assert_(not check("a/b/c"))
self.fs.removedir("a/b")
self.assert_(not check("a/b"))
self.fs.makedir("foo/bar/baz", recursive=True)
self.fs.removedir("foo/bar/baz", recursive=True)
self.assert_(not check("foo/bar/baz"))
self.assert_(not check("foo/bar"))
self.assert_(not check("foo"))
if __name__ == "__main__":
#t = TestFS()
#t.setUp()
#t.tearDown()
import nose
nose.run()
\ No newline at end of file
nose.main()
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment