mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2024-12-30 01:38:55 +00:00
Tests pass on Python 2 and 3.
This commit is contained in:
parent
388f27d206
commit
0e15712e34
@ -202,24 +202,24 @@ class CHKFile(testutil.ReallyEqualMixin, unittest.TestCase):
|
|||||||
|
|
||||||
class Extension(testutil.ReallyEqualMixin, unittest.TestCase):
|
class Extension(testutil.ReallyEqualMixin, unittest.TestCase):
|
||||||
def test_pack(self):
|
def test_pack(self):
|
||||||
data = {"stuff": b"value",
|
data = {b"stuff": b"value",
|
||||||
"size": 12,
|
b"size": 12,
|
||||||
"needed_shares": 3,
|
b"needed_shares": 3,
|
||||||
"big_hash": hashutil.tagged_hash(b"foo", b"bar"),
|
b"big_hash": hashutil.tagged_hash(b"foo", b"bar"),
|
||||||
}
|
}
|
||||||
ext = uri.pack_extension(data)
|
ext = uri.pack_extension(data)
|
||||||
d = uri.unpack_extension(ext)
|
d = uri.unpack_extension(ext)
|
||||||
self.failUnlessReallyEqual(d["stuff"], b"value")
|
self.failUnlessReallyEqual(d[b"stuff"], b"value")
|
||||||
self.failUnlessReallyEqual(d["size"], 12)
|
self.failUnlessReallyEqual(d[b"size"], 12)
|
||||||
self.failUnlessReallyEqual(d["big_hash"], hashutil.tagged_hash(b"foo", b"bar"))
|
self.failUnlessReallyEqual(d[b"big_hash"], hashutil.tagged_hash(b"foo", b"bar"))
|
||||||
|
|
||||||
readable = uri.unpack_extension_readable(ext)
|
readable = uri.unpack_extension_readable(ext)
|
||||||
self.failUnlessReallyEqual(readable["needed_shares"], 3)
|
self.failUnlessReallyEqual(readable[b"needed_shares"], 3)
|
||||||
self.failUnlessReallyEqual(readable["stuff"], b"value")
|
self.failUnlessReallyEqual(readable[b"stuff"], b"value")
|
||||||
self.failUnlessReallyEqual(readable["size"], 12)
|
self.failUnlessReallyEqual(readable[b"size"], 12)
|
||||||
self.failUnlessReallyEqual(readable["big_hash"],
|
self.failUnlessReallyEqual(readable[b"big_hash"],
|
||||||
base32.b2a(hashutil.tagged_hash(b"foo", b"bar")))
|
base32.b2a(hashutil.tagged_hash(b"foo", b"bar")))
|
||||||
self.failUnlessReallyEqual(readable["UEB_hash"],
|
self.failUnlessReallyEqual(readable[b"UEB_hash"],
|
||||||
base32.b2a(hashutil.uri_extension_hash(ext)))
|
base32.b2a(hashutil.uri_extension_hash(ext)))
|
||||||
|
|
||||||
class Unknown(testutil.ReallyEqualMixin, unittest.TestCase):
|
class Unknown(testutil.ReallyEqualMixin, unittest.TestCase):
|
||||||
@ -254,7 +254,7 @@ class Unknown(testutil.ReallyEqualMixin, unittest.TestCase):
|
|||||||
|
|
||||||
class Constraint(testutil.ReallyEqualMixin, unittest.TestCase):
|
class Constraint(testutil.ReallyEqualMixin, unittest.TestCase):
|
||||||
def test_constraint(self):
|
def test_constraint(self):
|
||||||
bad = "http://127.0.0.1:3456/uri/URI%3ADIR2%3Agh3l5rbvnv2333mrfvalmjfr4i%3Alz6l7u3z3b7g37s4zkdmfpx5ly4ib4m6thrpbusi6ys62qtc6mma/"
|
bad = b"http://127.0.0.1:3456/uri/URI%3ADIR2%3Agh3l5rbvnv2333mrfvalmjfr4i%3Alz6l7u3z3b7g37s4zkdmfpx5ly4ib4m6thrpbusi6ys62qtc6mma/"
|
||||||
self.failUnlessRaises(uri.BadURIError, uri.DirectoryURI.init_from_string, bad)
|
self.failUnlessRaises(uri.BadURIError, uri.DirectoryURI.init_from_string, bad)
|
||||||
fileURI = b'URI:CHK:gh3l5rbvnv2333mrfvalmjfr4i:lz6l7u3z3b7g37s4zkdmfpx5ly4ib4m6thrpbusi6ys62qtc6mma:3:10:345834'
|
fileURI = b'URI:CHK:gh3l5rbvnv2333mrfvalmjfr4i:lz6l7u3z3b7g37s4zkdmfpx5ly4ib4m6thrpbusi6ys62qtc6mma:3:10:345834'
|
||||||
uri.CHKFileURI.init_from_string(fileURI)
|
uri.CHKFileURI.init_from_string(fileURI)
|
||||||
|
@ -167,7 +167,7 @@ class LiteralFileURI(_BaseURI):
|
|||||||
|
|
||||||
def __init__(self, data=None):
|
def __init__(self, data=None):
|
||||||
if data is not None:
|
if data is not None:
|
||||||
assert isinstance(data, str)
|
assert isinstance(data, bytes)
|
||||||
self.data = data
|
self.data = data
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@ -222,8 +222,8 @@ class WriteableSSKFileURI(_BaseURI):
|
|||||||
return cls(base32.a2b(mo.group(1)), base32.a2b(mo.group(2)))
|
return cls(base32.a2b(mo.group(1)), base32.a2b(mo.group(2)))
|
||||||
|
|
||||||
def to_string(self):
|
def to_string(self):
|
||||||
assert isinstance(self.writekey, str)
|
assert isinstance(self.writekey, bytes)
|
||||||
assert isinstance(self.fingerprint, str)
|
assert isinstance(self.fingerprint, bytes)
|
||||||
return b'URI:SSK:%s:%s' % (base32.b2a(self.writekey),
|
return b'URI:SSK:%s:%s' % (base32.b2a(self.writekey),
|
||||||
base32.b2a(self.fingerprint))
|
base32.b2a(self.fingerprint))
|
||||||
|
|
||||||
@ -269,8 +269,8 @@ class ReadonlySSKFileURI(_BaseURI):
|
|||||||
return cls(base32.a2b(mo.group(1)), base32.a2b(mo.group(2)))
|
return cls(base32.a2b(mo.group(1)), base32.a2b(mo.group(2)))
|
||||||
|
|
||||||
def to_string(self):
|
def to_string(self):
|
||||||
assert isinstance(self.readkey, str)
|
assert isinstance(self.readkey, bytes)
|
||||||
assert isinstance(self.fingerprint, str)
|
assert isinstance(self.fingerprint, bytes)
|
||||||
return b'URI:SSK-RO:%s:%s' % (base32.b2a(self.readkey),
|
return b'URI:SSK-RO:%s:%s' % (base32.b2a(self.readkey),
|
||||||
base32.b2a(self.fingerprint))
|
base32.b2a(self.fingerprint))
|
||||||
|
|
||||||
@ -315,8 +315,8 @@ class SSKVerifierURI(_BaseURI):
|
|||||||
return cls(si_a2b(mo.group(1)), base32.a2b(mo.group(2)))
|
return cls(si_a2b(mo.group(1)), base32.a2b(mo.group(2)))
|
||||||
|
|
||||||
def to_string(self):
|
def to_string(self):
|
||||||
assert isinstance(self.storage_index, str)
|
assert isinstance(self.storage_index, bytes)
|
||||||
assert isinstance(self.fingerprint, str)
|
assert isinstance(self.fingerprint, bytes)
|
||||||
return b'URI:SSK-Verifier:%s:%s' % (si_b2a(self.storage_index),
|
return b'URI:SSK-Verifier:%s:%s' % (si_b2a(self.storage_index),
|
||||||
base32.b2a(self.fingerprint))
|
base32.b2a(self.fingerprint))
|
||||||
|
|
||||||
@ -354,8 +354,8 @@ class WriteableMDMFFileURI(_BaseURI):
|
|||||||
return cls(base32.a2b(mo.group(1)), base32.a2b(mo.group(2)))
|
return cls(base32.a2b(mo.group(1)), base32.a2b(mo.group(2)))
|
||||||
|
|
||||||
def to_string(self):
|
def to_string(self):
|
||||||
assert isinstance(self.writekey, str)
|
assert isinstance(self.writekey, bytes)
|
||||||
assert isinstance(self.fingerprint, str)
|
assert isinstance(self.fingerprint, bytes)
|
||||||
ret = b'URI:MDMF:%s:%s' % (base32.b2a(self.writekey),
|
ret = b'URI:MDMF:%s:%s' % (base32.b2a(self.writekey),
|
||||||
base32.b2a(self.fingerprint))
|
base32.b2a(self.fingerprint))
|
||||||
return ret
|
return ret
|
||||||
@ -403,8 +403,8 @@ class ReadonlyMDMFFileURI(_BaseURI):
|
|||||||
return cls(base32.a2b(mo.group(1)), base32.a2b(mo.group(2)))
|
return cls(base32.a2b(mo.group(1)), base32.a2b(mo.group(2)))
|
||||||
|
|
||||||
def to_string(self):
|
def to_string(self):
|
||||||
assert isinstance(self.readkey, str)
|
assert isinstance(self.readkey, bytes)
|
||||||
assert isinstance(self.fingerprint, str)
|
assert isinstance(self.fingerprint, bytes)
|
||||||
ret = b'URI:MDMF-RO:%s:%s' % (base32.b2a(self.readkey),
|
ret = b'URI:MDMF-RO:%s:%s' % (base32.b2a(self.readkey),
|
||||||
base32.b2a(self.fingerprint))
|
base32.b2a(self.fingerprint))
|
||||||
return ret
|
return ret
|
||||||
@ -450,8 +450,8 @@ class MDMFVerifierURI(_BaseURI):
|
|||||||
return cls(si_a2b(mo.group(1)), base32.a2b(mo.group(2)))
|
return cls(si_a2b(mo.group(1)), base32.a2b(mo.group(2)))
|
||||||
|
|
||||||
def to_string(self):
|
def to_string(self):
|
||||||
assert isinstance(self.storage_index, str)
|
assert isinstance(self.storage_index, bytes)
|
||||||
assert isinstance(self.fingerprint, str)
|
assert isinstance(self.fingerprint, bytes)
|
||||||
ret = b'URI:MDMF-Verifier:%s:%s' % (si_b2a(self.storage_index),
|
ret = b'URI:MDMF-Verifier:%s:%s' % (si_b2a(self.storage_index),
|
||||||
base32.b2a(self.fingerprint))
|
base32.b2a(self.fingerprint))
|
||||||
return ret
|
return ret
|
||||||
@ -907,14 +907,14 @@ def unpack_extension(data):
|
|||||||
data = data[colon+1:]
|
data = data[colon+1:]
|
||||||
|
|
||||||
value = data[:length]
|
value = data[:length]
|
||||||
assert data[length] == b','
|
assert data[length:length+1] == b','
|
||||||
data = data[length+1:]
|
data = data[length+1:]
|
||||||
|
|
||||||
d[key.decode("utf-8")] = value
|
d[key] = value
|
||||||
|
|
||||||
# convert certain things to numbers
|
# convert certain things to numbers
|
||||||
for intkey in ('size', 'segment_size', 'num_segments',
|
for intkey in (b'size', b'segment_size', b'num_segments',
|
||||||
'needed_shares', 'total_shares'):
|
b'needed_shares', b'total_shares'):
|
||||||
if intkey in d:
|
if intkey in d:
|
||||||
d[intkey] = int(d[intkey])
|
d[intkey] = int(d[intkey])
|
||||||
return d
|
return d
|
||||||
@ -922,10 +922,9 @@ def unpack_extension(data):
|
|||||||
|
|
||||||
def unpack_extension_readable(data):
|
def unpack_extension_readable(data):
|
||||||
unpacked = unpack_extension(data)
|
unpacked = unpack_extension(data)
|
||||||
unpacked["UEB_hash"] = hashutil.uri_extension_hash(data)
|
unpacked[b"UEB_hash"] = hashutil.uri_extension_hash(data)
|
||||||
for k in sorted(unpacked.keys()):
|
for k in sorted(unpacked.keys()):
|
||||||
k = k.decode("utf-8")
|
if b'hash' in k:
|
||||||
if 'hash' in k:
|
|
||||||
unpacked[k] = base32.b2a(unpacked[k])
|
unpacked[k] = base32.b2a(unpacked[k])
|
||||||
return unpacked
|
return unpacked
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user