mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-02-22 10:20:59 +00:00
More tests pass on Python 3.
This commit is contained in:
parent
62e6c0d9ac
commit
3d42030e01
@ -1,6 +1,6 @@
|
||||
from past.builtins import unicode
|
||||
import six
|
||||
import heapq, traceback, array, stat, struct
|
||||
from types import NoneType
|
||||
from stat import S_IFREG, S_IFDIR
|
||||
from time import time, strftime, localtime
|
||||
|
||||
@ -267,7 +267,7 @@ def _attrs_to_metadata(attrs):
|
||||
|
||||
|
||||
def _direntry_for(filenode_or_parent, childname, filenode=None):
|
||||
precondition(isinstance(childname, (unicode, NoneType)), childname=childname)
|
||||
precondition(isinstance(childname, (unicode, type(None))), childname=childname)
|
||||
|
||||
if childname is None:
|
||||
filenode_or_parent = filenode
|
||||
@ -1838,25 +1838,25 @@ class SFTPUserHandler(ConchUser, PrefixingLogMixin):
|
||||
def _path_from_string(self, pathstring):
|
||||
if noisy: self.log("CONVERT %r" % (pathstring,), level=NOISY)
|
||||
|
||||
_assert(isinstance(pathstring, str), pathstring=pathstring)
|
||||
_assert(isinstance(pathstring, bytes), pathstring=pathstring)
|
||||
|
||||
# The home directory is the root directory.
|
||||
pathstring = pathstring.strip("/")
|
||||
if pathstring == "" or pathstring == ".":
|
||||
pathstring = pathstring.strip(b"/")
|
||||
if pathstring == b"" or pathstring == b".":
|
||||
path_utf8 = []
|
||||
else:
|
||||
path_utf8 = pathstring.split("/")
|
||||
path_utf8 = pathstring.split(b"/")
|
||||
|
||||
# <http://tools.ietf.org/html/draft-ietf-secsh-filexfer-02#section-6.2>
|
||||
# "Servers SHOULD interpret a path name component ".." as referring to
|
||||
# the parent directory, and "." as referring to the current directory."
|
||||
path = []
|
||||
for p_utf8 in path_utf8:
|
||||
if p_utf8 == "..":
|
||||
if p_utf8 == b"..":
|
||||
# ignore excess .. components at the root
|
||||
if len(path) > 0:
|
||||
path = path[:-1]
|
||||
elif p_utf8 != ".":
|
||||
elif p_utf8 != b".":
|
||||
try:
|
||||
p = p_utf8.decode('utf-8', 'strict')
|
||||
except UnicodeError:
|
||||
|
@ -76,7 +76,7 @@ class Handler(GridTestMixin, ShouldFailMixin, ReallyEqualMixin, unittest.TestCas
|
||||
return d
|
||||
|
||||
def _set_up_tree(self):
|
||||
u = publish.MutableData("mutable file contents")
|
||||
u = publish.MutableData(b"mutable file contents")
|
||||
d = self.client.create_mutable_file(u)
|
||||
d.addCallback(lambda node: self.root.set_node(u"mutable", node))
|
||||
def _created_mutable(n):
|
||||
@ -154,55 +154,55 @@ class Handler(GridTestMixin, ShouldFailMixin, ReallyEqualMixin, unittest.TestCas
|
||||
version = self.handler.gotVersion(3, {})
|
||||
self.failUnless(isinstance(version, dict))
|
||||
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string(""), [])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string("/"), [])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string("."), [])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string("//"), [])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string("/."), [])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string("/./"), [])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string("foo"), [u"foo"])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string("/foo"), [u"foo"])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string("foo/"), [u"foo"])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string("/foo/"), [u"foo"])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string("foo/bar"), [u"foo", u"bar"])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string("/foo/bar"), [u"foo", u"bar"])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string("foo/bar//"), [u"foo", u"bar"])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string("/foo/bar//"), [u"foo", u"bar"])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string("foo/./bar"), [u"foo", u"bar"])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string("./foo/./bar"), [u"foo", u"bar"])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string("foo/../bar"), [u"bar"])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string("/foo/../bar"), [u"bar"])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string("../bar"), [u"bar"])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string("/../bar"), [u"bar"])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string(b""), [])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string(b"/"), [])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string(b"."), [])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string(b"//"), [])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string(b"/."), [])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string(b"/./"), [])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string(b"foo"), [u"foo"])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string(b"/foo"), [u"foo"])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string(b"foo/"), [u"foo"])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string(b"/foo/"), [u"foo"])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string(b"foo/bar"), [u"foo", u"bar"])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string(b"/foo/bar"), [u"foo", u"bar"])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string(b"foo/bar//"), [u"foo", u"bar"])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string(b"/foo/bar//"), [u"foo", u"bar"])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string(b"foo/./bar"), [u"foo", u"bar"])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string(b"./foo/./bar"), [u"foo", u"bar"])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string(b"foo/../bar"), [u"bar"])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string(b"/foo/../bar"), [u"bar"])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string(b"../bar"), [u"bar"])
|
||||
self.failUnlessReallyEqual(self.handler._path_from_string(b"/../bar"), [u"bar"])
|
||||
|
||||
self.failUnlessReallyEqual(self.handler.realPath(""), "/")
|
||||
self.failUnlessReallyEqual(self.handler.realPath("/"), "/")
|
||||
self.failUnlessReallyEqual(self.handler.realPath("."), "/")
|
||||
self.failUnlessReallyEqual(self.handler.realPath("//"), "/")
|
||||
self.failUnlessReallyEqual(self.handler.realPath("/."), "/")
|
||||
self.failUnlessReallyEqual(self.handler.realPath("/./"), "/")
|
||||
self.failUnlessReallyEqual(self.handler.realPath("foo"), "/foo")
|
||||
self.failUnlessReallyEqual(self.handler.realPath("/foo"), "/foo")
|
||||
self.failUnlessReallyEqual(self.handler.realPath("foo/"), "/foo")
|
||||
self.failUnlessReallyEqual(self.handler.realPath("/foo/"), "/foo")
|
||||
self.failUnlessReallyEqual(self.handler.realPath("foo/bar"), "/foo/bar")
|
||||
self.failUnlessReallyEqual(self.handler.realPath("/foo/bar"), "/foo/bar")
|
||||
self.failUnlessReallyEqual(self.handler.realPath("foo/bar//"), "/foo/bar")
|
||||
self.failUnlessReallyEqual(self.handler.realPath("/foo/bar//"), "/foo/bar")
|
||||
self.failUnlessReallyEqual(self.handler.realPath("foo/./bar"), "/foo/bar")
|
||||
self.failUnlessReallyEqual(self.handler.realPath("./foo/./bar"), "/foo/bar")
|
||||
self.failUnlessReallyEqual(self.handler.realPath("foo/../bar"), "/bar")
|
||||
self.failUnlessReallyEqual(self.handler.realPath("/foo/../bar"), "/bar")
|
||||
self.failUnlessReallyEqual(self.handler.realPath("../bar"), "/bar")
|
||||
self.failUnlessReallyEqual(self.handler.realPath("/../bar"), "/bar")
|
||||
self.failUnlessReallyEqual(self.handler.realPath(b""), b"/")
|
||||
self.failUnlessReallyEqual(self.handler.realPath(b"/"), b"/")
|
||||
self.failUnlessReallyEqual(self.handler.realPath(b"."), b"/")
|
||||
self.failUnlessReallyEqual(self.handler.realPath(b"//"), b"/")
|
||||
self.failUnlessReallyEqual(self.handler.realPath(b"/."), b"/")
|
||||
self.failUnlessReallyEqual(self.handler.realPath(b"/./"), b"/")
|
||||
self.failUnlessReallyEqual(self.handler.realPath(b"foo"), b"/foo")
|
||||
self.failUnlessReallyEqual(self.handler.realPath(b"/foo"), b"/foo")
|
||||
self.failUnlessReallyEqual(self.handler.realPath(b"foo/"), b"/foo")
|
||||
self.failUnlessReallyEqual(self.handler.realPath(b"/foo/"), b"/foo")
|
||||
self.failUnlessReallyEqual(self.handler.realPath(b"foo/bar"), b"/foo/bar")
|
||||
self.failUnlessReallyEqual(self.handler.realPath(b"/foo/bar"), b"/foo/bar")
|
||||
self.failUnlessReallyEqual(self.handler.realPath(b"foo/bar//"), b"/foo/bar")
|
||||
self.failUnlessReallyEqual(self.handler.realPath(b"/foo/bar//"), b"/foo/bar")
|
||||
self.failUnlessReallyEqual(self.handler.realPath(b"foo/./bar"), b"/foo/bar")
|
||||
self.failUnlessReallyEqual(self.handler.realPath(b"./foo/./bar"), b"/foo/bar")
|
||||
self.failUnlessReallyEqual(self.handler.realPath(b"foo/../bar"), b"/bar")
|
||||
self.failUnlessReallyEqual(self.handler.realPath(b"/foo/../bar"), b"/bar")
|
||||
self.failUnlessReallyEqual(self.handler.realPath(b"../bar"), b"/bar")
|
||||
self.failUnlessReallyEqual(self.handler.realPath(b"/../bar"), b"/bar")
|
||||
d.addCallback(_check)
|
||||
|
||||
d.addCallback(lambda ign:
|
||||
self.shouldFailWithSFTPError(sftp.FX_NO_SUCH_FILE, "_path_from_string invalid UTF-8",
|
||||
self.handler._path_from_string, "\xFF"))
|
||||
self.handler._path_from_string, b"\xFF"))
|
||||
d.addCallback(lambda ign:
|
||||
self.shouldFailWithSFTPError(sftp.FX_NO_SUCH_FILE, "realPath invalid UTF-8",
|
||||
self.handler.realPath, "\xFF"))
|
||||
self.handler.realPath, b"\xFF"))
|
||||
|
||||
return d
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user