From 311ed144f89d47437587d3ca759d8d23e85a1f99 Mon Sep 17 00:00:00 2001 From: Brian Warner Date: Mon, 17 Sep 2007 01:09:47 -0700 Subject: [PATCH] uri.py: improve test coverage a bit --- src/allmydata/test/test_uri.py | 36 ++++++++++++++++++++++++++++++++++ src/allmydata/uri.py | 2 +- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/src/allmydata/test/test_uri.py b/src/allmydata/test/test_uri.py index 18a322ed..e4bd4b24 100644 --- a/src/allmydata/test/test_uri.py +++ b/src/allmydata/test/test_uri.py @@ -37,6 +37,19 @@ class Literal(unittest.TestCase): data = "This contains \x00 and URI:LIT: and \n, oh my." return self._help_test(data) +class Compare(unittest.TestCase): + def test_compare(self): + lit1 = uri.LiteralFileURI("some data") + fileURI = 'URI:CHK:f3mf6az85wpcai8ma4qayfmxuc:nnw518w5hu3t5oohwtp7ah9n81z9rfg6c1ywk33ia3m64o67nsgo:3:10:345834' + chk1 = uri.CHKFileURI().init_from_string(fileURI) + chk2 = uri.CHKFileURI().init_from_string(fileURI) + self.failIfEqual(lit1, chk1) + self.failUnlessEqual(chk1, chk2) + self.failIfEqual(chk1, "not actually a URI") + # these should be hashable too + s = set([lit1, chk1, chk2]) + self.failUnlessEqual(len(s), 2) # since chk1==chk2 + class CHKFile(unittest.TestCase): def test_pack(self): key = "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f" @@ -81,6 +94,24 @@ class CHKFile(unittest.TestCase): self.failUnless(u2.is_readonly()) self.failIf(u2.is_mutable()) + def test_pack_badly(self): + key = "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f" + storage_index = hashutil.storage_index_chk_hash(key) + uri_extension_hash = hashutil.uri_extension_hash("stuff") + needed_shares = 25 + total_shares = 100 + size = 1234 + self.failUnlessRaises(TypeError, + uri.CHKFileURI, + key=key, + uri_extension_hash=uri_extension_hash, + needed_shares=needed_shares, + total_shares=total_shares, + size=size, + + bogus_extra_argument="reject me", + ) + class Extension(unittest.TestCase): def test_pack(self): data = {"stuff": "value", @@ -138,6 +169,11 @@ class Dirnode(unittest.TestCase): self.failIf(IFileURI.providedBy(u4)) self.failUnless(IDirnodeURI.providedBy(u4)) +class Invalid(unittest.TestCase): + def test_create_invalid(self): + not_uri = "I am not a URI" + self.failUnlessRaises(TypeError, uri.from_string, not_uri) + class Constraint(unittest.TestCase): def test_constraint(self): diff --git a/src/allmydata/uri.py b/src/allmydata/uri.py index 72aece89..a035c951 100644 --- a/src/allmydata/uri.py +++ b/src/allmydata/uri.py @@ -202,7 +202,7 @@ def from_string(s): elif s.startswith("URI:DIR-RO:"): return ReadOnlyDirnodeURI().init_from_string(s) else: - raise RuntimeError("unknown URI type: %s.." % s[:10]) + raise TypeError("unknown URI type: %s.." % s[:10]) registerAdapter(from_string, str, IURI) -- 2.45.2