Commit d6ec7a9d by willmcgugan

Work in progress

parent e0dd1077
......@@ -83,9 +83,25 @@ def pathsplit(path):
return tuple(split)
def getroot(path):
"""Returns the root directory of a path.
path -- A path
>>> getroot('foo/bar/baz')
'foo/bar'
"""
return pathsplit(path)[0]
def getresourcename(path):
"""Returns the resource references by a path.
path -- A path
>>> getresourcename('foo/bar/baz')
'baz'
"""
return pathsplit(path)[1]
def resolvepath(path):
......@@ -127,8 +143,15 @@ def makeabsolute(path):
return '/'+path
return path
def issamedir(path1, path2):
dirname1, name1 = pathsplit(path1)
dirname2, name2 = pathsplit(path2)
return dirname1 == dirname2
"""Return true if two paths reference a resource in the same directory.
path1 -- First path
path2 -- Second path
>>> issamedir("foo/bar/baz.txt", "foo/bar/spam.txt")
True
>>> issamedir("foo/bar/baz/txt", "spam/eggs/spam.txt")
False
"""
return pathsplit(path1)[0] == pathsplit(path2)[0]
#!/usr/bin/env python
import fs
from os import path
class Path(unicode):
def __repr__(self):
return "Path(%s)" % unicode.__repr__(self)
def __add__(self, path):
return self.__class__(unicode.__add__(self, path))
def __radd__(self, path):
return self.__class__(path.__add__(self))
def join(self, *paths):
return self.__class__(fs.pathjoin(self, *paths))
def _get_ext(self):
return path.splitext(self)[-1]
ext = property(_get_ext, None, "Retrieve the extension")
def _get_head(self):
head, tail = path.split(self)
return self.__class__(head)
head = property(_get_head, None, "Retrieve the head of the path")
def _get_tail(self):
head, tail = path.split(self)
return self.__class__(tail)
tail = property(_get_tail, None, "Retrieve the head of the path")
def splitall(self):
return [p for p in self.split('/') if p]
def replace(self, s1, s2):
return self.__class__(unicode.replace(self, s1, s2))
def __getitem__(self, slice):
return self.__class__(unicode.__getitem__(self, slice))
def __div__(self, pth):
return self.join(pth)
__truediv__ = __div__
if __name__ == "__main__":
p1 = Path("a/b")
p2 = p1.join("c/d.txt")
print repr(p1.replace('a', 'HAI!'))
print repr(p1[0])
print repr(p1 + p2)
print p1 / "d/e/f"
print p2
print p2.ext
print p2.head
print p2.tail
print p2
print p2.splitall()
#!/usr/bin/env python
from osfs import OSFS
import tempfile
from shutil import rmtree
class TempFS(OSFS):
"""Create a Filesystem in a tempory directory (with tempfile.mkdtemp),
and removes it when the TempFS object is cleaned up."""
def __init__(self):
self._temp_dir = tempfile.mkdtemp("fstest")
OSFS.__init__(self, self._temp_dir)
def _cleanup(self):
if self._temp_dir:
rmtree(self._temp_dir)
self._temp_dir = ""
def __del__(self):
self._cleanup()
......@@ -454,6 +454,20 @@ class TestMountFS(TestOSFS):
def check(self, p):
return self.mount_fs.exists(os.path.join("mounted/memfs", makerelative(p)))
import tempfs
class TestTempFS(TestOSFS):
def setUp(self):
self.fs = tempfs.TempFS()
def tearDown(self):
td = self.fs._temp_dir
del self.fs
self.assert_(not os.path.exists(td))
def check(self, p):
td = self.fs._temp_dir
return os.path.exists(os.path.join(td, makerelative(p)))
if __name__ == "__main__":
#t = TestFS()
......
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