summaryrefslogtreecommitdiff
path: root/tests.py
diff options
context:
space:
mode:
authorChristian Heimes <christian@python.org>2017-01-28 10:32:59 +0100
committerChristian Heimes <christian@python.org>2017-01-28 14:51:01 +0100
commitcf41a00e935342ae5266aaea117578c92d48f216 (patch)
treebe7edabd30d41cfd66d58e852032331c9ee37c2b /tests.py
parentccea2c389541afebf60219845879fb4a87f6146b (diff)
downloaddefusedxml-git-cf41a00e935342ae5266aaea117578c92d48f216.tar.gz
Drop Python 2.6, 3.1 to 3.3 support
Diffstat (limited to 'tests.py')
-rw-r--r--tests.py78
1 files changed, 19 insertions, 59 deletions
diff --git a/tests.py b/tests.py
index 7c63ea2..b297200 100644
--- a/tests.py
+++ b/tests.py
@@ -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")