More tests pass on Python 3.

This commit is contained in:
Itamar Turner-Trauring 2021-01-04 11:21:26 -05:00
parent 62e6c0d9ac
commit 3d42030e01
2 changed files with 51 additions and 51 deletions

View File

@ -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:

View File

@ -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