diff options
author | Christian Heimes <christian@python.org> | 2017-01-28 10:32:59 +0100 |
---|---|---|
committer | Christian Heimes <christian@python.org> | 2017-01-28 14:51:01 +0100 |
commit | cf41a00e935342ae5266aaea117578c92d48f216 (patch) | |
tree | be7edabd30d41cfd66d58e852032331c9ee37c2b /tests.py | |
parent | ccea2c389541afebf60219845879fb4a87f6146b (diff) | |
download | defusedxml-git-cf41a00e935342ae5266aaea117578c92d48f216.tar.gz |
Drop Python 2.6, 3.1 to 3.3 support
Diffstat (limited to 'tests.py')
-rw-r--r-- | tests.py | 78 |
1 files changed, 19 insertions, 59 deletions
@@ -13,7 +13,7 @@ from defusedxml import cElementTree, ElementTree, minidom, pulldom, sax, xmlrpc from defusedxml import defuse_stdlib from defusedxml import (DefusedXmlException, DTDForbidden, EntitiesForbidden, ExternalReferenceForbidden, NotSupportedError) -from defusedxml.common import PY3, PY26, PY31 +from defusedxml.common import PY3 try: @@ -39,39 +39,6 @@ os.environ["http_proxy"] = "http://127.0.9.1:9" os.environ["https_proxy"] = os.environ["http_proxy"] os.environ["ftp_proxy"] = os.environ["http_proxy"] -if PY26 or PY31: - class _AssertRaisesContext(object): - def __init__(self, expected, test_case, expected_regexp=None): - self.expected = expected - self.failureException = test_case.failureException - self.expected_regexp = expected_regexp - - def __enter__(self): - return self - - def __exit__(self, exc_type, exc_value, tb): - if exc_type is None: - try: - exc_name = self.expected.__name__ - except AttributeError: - exc_name = str(self.expected) - raise self.failureException( - "{0} not raised".format(exc_name)) - if not issubclass(exc_type, self.expected): - # let unexpected exceptions pass through - return False - self.exception = exc_value # store for later retrieval - if self.expected_regexp is None: - return True - - expected_regexp = self.expected_regexp - if isinstance(expected_regexp, basestring): - expected_regexp = re.compile(expected_regexp) - if not expected_regexp.search(str(exc_value)): - raise self.failureException('"%s" does not match "%s"' % - (expected_regexp.pattern, str(exc_value))) - return True - class DefusedTestCase(unittest.TestCase): @@ -90,21 +57,6 @@ class DefusedTestCase(unittest.TestCase): xml_bomb2 = os.path.join(HERE, "xmltestdata", "xmlbomb2.xml") xml_cyclic = os.path.join(HERE, "xmltestdata", "cyclic.xml") - if PY26 or PY31: - # old Python versions don't have these useful test methods - def assertRaises(self, excClass, callableObj=None, *args, **kwargs): - context = _AssertRaisesContext(excClass, self) - if callableObj is None: - return context - with context: - callableObj(*args, **kwargs) - - def assertIn(self, member, container, msg=None): - if member not in container: - standardMsg = '%s not found in %s' % (repr(member), - repr(container)) - self.fail(self._formatMessage(msg, standardMsg)) - def get_content(self, xmlfile): mode = "rb" if self.content_binary else "r" with io.open(xmlfile, mode) as f: @@ -302,10 +254,6 @@ class TestDefusedSax(BaseTests): return result.getvalue() def test_exceptions(self): - if PY26: - # Python 2.6 unittest doesn't support with self.assertRaises() - return - with self.assertRaises(EntitiesForbidden) as ctx: self.parse(self.xml_bomb) msg = "EntitiesForbidden(name='a', system_id=None, public_id=None)" @@ -334,11 +282,17 @@ class TestDefusedLxml(BaseTests): content_binary = True def parse(self, xmlfile, **kwargs): - tree = self.module.parse(xmlfile, **kwargs) + try: + tree = self.module.parse(xmlfile, **kwargs) + except XMLSyntaxError: + self.skipTest("lxml detects entityt reference loop") return self.module.tostring(tree) def parseString(self, xmlstring, **kwargs): - tree = self.module.fromstring(xmlstring, **kwargs) + try: + tree = self.module.fromstring(xmlstring, **kwargs) + except XMLSyntaxError: + self.skipTest("lxml detects entityt reference loop") return self.module.tostring(tree) if not LXML3: @@ -355,8 +309,11 @@ class TestDefusedLxml(BaseTests): pass def test_restricted_element1(self): - tree = self.module.parse(self.xml_bomb, forbid_dtd=False, - forbid_entities=False) + try: + tree = self.module.parse(self.xml_bomb, forbid_dtd=False, + forbid_entities=False) + except XMLSyntaxError: + self.skipTest("lxml detects entityt reference loop") root = tree.getroot() self.assertEqual(root.text, None) @@ -370,8 +327,11 @@ class TestDefusedLxml(BaseTests): self.assertEqual(root.getnext(), None) def test_restricted_element2(self): - tree = self.module.parse(self.xml_bomb2, forbid_dtd=False, - forbid_entities=False) + try: + tree = self.module.parse(self.xml_bomb2, forbid_dtd=False, + forbid_entities=False) + except XMLSyntaxError: + self.skipTest("lxml detects entityt reference loop") root = tree.getroot() bomb, tag = root self.assertEqual(root.text, "text") |