import py |
|
class TestPOSIXLocalPath: |
|
disabled = py.std.sys.platform == 'win32' |
|
def setup_class(cls): |
cls.root = py.test.ensuretemp(cls.__name__) |
|
def setup_method(self, method): |
name = method.im_func.func_name |
self.tmpdir = self.root.ensure(name, dir=1) |
|
def test_hardlink(self): |
tmpdir = self.tmpdir |
linkpath = tmpdir.join('test') |
filepath = tmpdir.join('file') |
filepath.write("Hello") |
nlink = filepath.stat().st_nlink |
linkpath.mklinkto(filepath) |
assert filepath.stat().st_nlink == nlink + 1 |
|
def test_symlink_are_identical(self): |
tmpdir = self.tmpdir |
filepath = tmpdir.join('file') |
filepath.write("Hello") |
linkpath = tmpdir.join('test') |
linkpath.mksymlinkto(filepath) |
assert linkpath.readlink() == str(filepath) |
|
def test_symlink_isfile(self): |
tmpdir = self.tmpdir |
linkpath = tmpdir.join('test') |
filepath = tmpdir.join('file') |
filepath.write("") |
linkpath.mksymlinkto(filepath) |
assert linkpath.check(file=1) |
assert not linkpath.check(link=0, file=1) |
|
def test_symlink_relative(self): |
tmpdir = self.tmpdir |
linkpath = tmpdir.join('test') |
filepath = tmpdir.join('file') |
filepath.write("Hello") |
linkpath.mksymlinkto(filepath, absolute=False) |
assert linkpath.readlink() == "file" |
assert filepath.read() == linkpath.read() |
|
def test_symlink_not_existing(self): |
tmpdir = self.tmpdir |
linkpath = tmpdir.join('testnotexisting') |
assert not linkpath.check(link=1) |
assert linkpath.check(link=0) |
|
def test_relto_with_root(self): |
y = self.root.join('x').relto(py.path.local('/')) |
assert y[0] == str(self.root)[1] |
|
def test_visit_recursive_symlink(self): |
tmpdir = self.tmpdir |
linkpath = tmpdir.join('test') |
linkpath.mksymlinkto(tmpdir) |
visitor = tmpdir.visit(None, lambda x: x.check(link=0)) |
assert list(visitor) == [linkpath] |
|
def test_symlink_isdir(self): |
tmpdir = self.tmpdir |
linkpath = tmpdir.join('test') |
linkpath.mksymlinkto(tmpdir) |
assert linkpath.check(dir=1) |
assert not linkpath.check(link=0, dir=1) |
|
def test_symlink_remove(self): |
tmpdir = self.tmpdir.realpath() |
linkpath = tmpdir.join('test') |
linkpath.mksymlinkto(linkpath) |
assert linkpath.check(link=1) |
linkpath.remove() |
assert not linkpath.check() |
|
def test_realpath_file(self): |
tmpdir = self.tmpdir |
linkpath = tmpdir.join('test') |
filepath = tmpdir.join('file') |
filepath.write("") |
linkpath.mksymlinkto(filepath) |
realpath = linkpath.realpath() |
assert realpath.basename == 'file' |
|
def test_owner(self): |
from pwd import getpwuid |
from grp import getgrgid |
stat = self.root.stat() |
assert stat.path == self.root |
|
uid = stat.st_uid |
gid = stat.st_gid |
owner = getpwuid(uid)[0] |
group = getgrgid(gid)[0] |
|
assert uid == stat.uid |
assert owner == stat.owner |
assert gid == stat.gid |
assert group == stat.group |
|
def XXXtest_atime(self): |
|
|
|
import time |
path = self.root.join('samplefile') |
atime = path.atime() |
time.sleep(1) |
path.read(1) |
assert path.atime() != atime |
|
def test_commondir(self): |
|
|
p1 = self.root.join('something') |
p2 = self.root.join('otherthing') |
assert p1.common(p2) == self.root |
assert p2.common(p1) == self.root |
|
def test_commondir_nocommon(self): |
|
|
p1 = self.root.join('something') |
p2 = py.path.local(self.root.sep+'blabla') |
assert p1.common(p2) == '/' |
|
def test_join_to_root(self): |
root = self.root.parts()[0] |
assert len(str(root)) == 1 |
assert str(root.join('a')) == '/a' |
|
def test_join_root_to_root_with_no_abs(self): |
nroot = self.root.join('/') |
assert str(self.root) == str(nroot) |
assert self.root == nroot |
|
def test_chmod_simple_int(self): |
print "self.root is", self.root |
mode = self.root.mode() |
self.root.chmod(mode/2) |
try: |
assert self.root.mode() != mode |
finally: |
self.root.chmod(mode) |
assert self.root.mode() == mode |
|
def test_chmod_rec_int(self): |
|
print "self.root is", self.root |
recfilter = lambda x: x.check(dotfile=0, link=0) |
oldmodes = {} |
for x in self.root.visit(rec=recfilter): |
oldmodes[x] = x.mode() |
self.root.chmod(0772, rec=recfilter) |
try: |
for x in self.root.visit(rec=recfilter): |
assert x.mode() & 0777 == 0772 |
finally: |
for x,y in oldmodes.items(): |
x.chmod(y) |
|
def test_chown_identity(self): |
owner = self.root.owner() |
group = self.root.group() |
self.root.chown(owner, group) |
|
def test_chown_dangling_link(self): |
owner = self.root.owner() |
group = self.root.group() |
x = self.root.join('hello') |
x.mksymlinkto('qlwkejqwlek') |
try: |
self.root.chown(owner, group, rec=1) |
finally: |
x.remove(rec=0) |
|
def test_chown_identity_rec_mayfail(self): |
owner = self.root.owner() |
group = self.root.group() |
self.root.chown(owner, group) |
|