fix windows32 issues, introduce a simplistic path.samefile for it, fix tests

--HG--
branch : trunk
This commit is contained in:
holger krekel 2009-10-29 20:10:05 +01:00
parent c02719f44c
commit 30710a9cd6
7 changed files with 30 additions and 16 deletions

View File

@ -300,6 +300,10 @@ newline will be removed from the end of each line. """
else: else:
res.sort() res.sort()
def samefile(self, other):
""" return True if other refers to the same stat object as self. """
return self.strpath == str(other)
class FNMatcher: class FNMatcher:
def __init__(self, pattern): def __init__(self, pattern):
self.pattern = pattern self.pattern = pattern

View File

@ -70,7 +70,7 @@ class PosixPath(common.PathBase):
def samefile(self, other): def samefile(self, other):
""" return True if other refers to the same stat object as self. """ """ return True if other refers to the same stat object as self. """
return py.std.os.path.samefile(str(self), str(other)) return py.error.checked_call(os.path.samefile, str(self), str(other))
def getuserid(user): def getuserid(user):
import pwd import pwd

View File

@ -1,6 +1,15 @@
import py
pytest_plugins = '_pytest doctest pytester'.split() pytest_plugins = '_pytest doctest pytester'.split()
rsyncdirs = ['conftest.py', 'py', 'doc', 'testing']
rsyncdirs = ['conftest.py', 'bin', 'py', 'doc', 'testing']
try:
import execnet
except ImportError:
pass
else:
rsyncdirs.append(str(py.path.local(execnet.__file__).dirpath()))
import py import py
def pytest_addoption(parser): def pytest_addoption(parser):

View File

@ -42,7 +42,7 @@ def test_unicode_encoding():
l = [] l = []
tw = py.io.TerminalWriter(l.append, encoding=encoding) tw = py.io.TerminalWriter(l.append, encoding=encoding)
tw.line(msg) tw.line(msg)
assert l[0] == msg.encode(encoding) assert l[0].strip() == msg.encode(encoding)
class BaseTests: class BaseTests:
def test_line(self): def test_line(self):

View File

@ -118,7 +118,7 @@ class TestLogConsumer:
def test_log_file(self): def test_log_file(self):
customlog = tempdir.join('log.out') customlog = tempdir.join('log.out')
py.log.setconsumer("default", open(str(customlog), 'w', buffering=1)) py.log.setconsumer("default", open(str(customlog), 'w', buffering=0))
py.log.Producer("default")("hello world #1") py.log.Producer("default")("hello world #1")
assert customlog.readlines() == ['[default] hello world #1\n'] assert customlog.readlines() == ['[default] hello world #1\n']

View File

@ -368,14 +368,19 @@ def test_homedir():
homedir = py.path.local._gethomedir() homedir = py.path.local._gethomedir()
assert homedir.check(dir=1) assert homedir.check(dir=1)
def test_samefile(tmpdir):
assert tmpdir.samefile(tmpdir)
p = tmpdir.ensure("hello")
assert p.samefile(p)
class TestWINLocalPath: class TestWINLocalPath:
pytestmark = py.test.mark.skipif("sys.platform != 'win32'") pytestmark = py.test.mark.skipif("sys.platform != 'win32'")
def test_owner_group_not_implemented(self): def test_owner_group_not_implemented(self, path1):
py.test.raises(NotImplementedError, "path1.stat().owner") py.test.raises(NotImplementedError, "path1.stat().owner")
py.test.raises(NotImplementedError, "path1.stat().group") py.test.raises(NotImplementedError, "path1.stat().group")
def test_chmod_simple_int(self): def test_chmod_simple_int(self, path1):
py.builtin.print_("path1 is", path1) py.builtin.print_("path1 is", path1)
mode = path1.stat().mode mode = path1.stat().mode
# Ensure that we actually change the mode to something different. # Ensure that we actually change the mode to something different.
@ -388,18 +393,18 @@ class TestWINLocalPath:
path1.chmod(mode) path1.chmod(mode)
assert path1.stat().mode == mode assert path1.stat().mode == mode
def test_path_comparison_lowercase_mixed(self): def test_path_comparison_lowercase_mixed(self, path1):
t1 = path1.join("a_path") t1 = path1.join("a_path")
t2 = path1.join("A_path") t2 = path1.join("A_path")
assert t1 == t1 assert t1 == t1
assert t1 == t2 assert t1 == t2
def test_relto_with_mixed_case(self): def test_relto_with_mixed_case(self, path1):
t1 = path1.join("a_path", "fiLe") t1 = path1.join("a_path", "fiLe")
t2 = path1.join("A_path") t2 = path1.join("A_path")
assert t1.relto(t2) == "fiLe" assert t1.relto(t2) == "fiLe"
def test_allow_unix_style_paths(self): def test_allow_unix_style_paths(self, path1):
t1 = path1.join('a_path') t1 = path1.join('a_path')
assert t1 == str(path1) + '\\a_path' assert t1 == str(path1) + '\\a_path'
t1 = path1.join('a_path/') t1 = path1.join('a_path/')
@ -407,7 +412,7 @@ class TestWINLocalPath:
t1 = path1.join('dir/a_path') t1 = path1.join('dir/a_path')
assert t1 == str(path1) + '\\dir\\a_path' assert t1 == str(path1) + '\\dir\\a_path'
def test_sysfind_in_currentdir(self): def test_sysfind_in_currentdir(self, path1):
cmd = py.path.local.sysfind('cmd') cmd = py.path.local.sysfind('cmd')
root = cmd.new(dirname='', basename='') # c:\ in most installations root = cmd.new(dirname='', basename='') # c:\ in most installations
old = root.chdir() old = root.chdir()
@ -420,11 +425,6 @@ class TestWINLocalPath:
class TestPOSIXLocalPath: class TestPOSIXLocalPath:
pytestmark = py.test.mark.skipif("sys.platform == 'win32'") pytestmark = py.test.mark.skipif("sys.platform == 'win32'")
def test_samefile(self, tmpdir):
assert tmpdir.samefile(tmpdir)
p = tmpdir.ensure("hello")
assert p.samefile(p)
def test_hardlink(self, tmpdir): def test_hardlink(self, tmpdir):
linkpath = tmpdir.join('test') linkpath = tmpdir.join('test')
filepath = tmpdir.join('file') filepath = tmpdir.join('file')

View File

@ -8,7 +8,8 @@ def checksubpackage(name):
keys = dir(obj) keys = dir(obj)
assert len(keys) > 0 assert len(keys) > 0
print (obj.__map__) print (obj.__map__)
assert getattr(obj, '__map__') == {} for name in obj.__map__:
assert hasattr(obj, name), (obj, name)
def test_dir(): def test_dir():
for name in dir(py): for name in dir(py):