Home | History | Annotate | Download | only in test
      1 # xml.etree test for cElementTree
      2 
      3 from test import test_support
      4 from test.test_support import precisionbigmemtest, _2G
      5 import unittest
      6 
      7 cET = test_support.import_module('xml.etree.cElementTree')
      8 
      9 
     10 # cElementTree specific tests
     11 
     12 def sanity():
     13     """
     14     Import sanity.
     15 
     16     >>> from xml.etree import cElementTree
     17     """
     18 
     19 
     20 class MiscTests(unittest.TestCase):
     21     # Issue #8651.
     22     @precisionbigmemtest(size=_2G + 100, memuse=1)
     23     def test_length_overflow(self, size):
     24         if size < _2G + 100:
     25             self.skipTest("not enough free memory, need at least 2 GB")
     26         data = b'x' * size
     27         parser = cET.XMLParser()
     28         try:
     29             self.assertRaises(OverflowError, parser.feed, data)
     30         finally:
     31             data = None
     32 
     33 
     34 def test_main():
     35     from test import test_xml_etree, test_xml_etree_c
     36 
     37     # Run the tests specific to the C implementation
     38     test_support.run_doctest(test_xml_etree_c, verbosity=True)
     39 
     40     # Assign the C implementation before running the doctests
     41     # Patch the __name__, to prevent confusion with the pure Python test
     42     pyET = test_xml_etree.ET
     43     py__name__ = test_xml_etree.__name__
     44     test_xml_etree.ET = cET
     45     if __name__ != '__main__':
     46         test_xml_etree.__name__ = __name__
     47     try:
     48         # Run the same test suite as xml.etree.ElementTree
     49         test_xml_etree.test_main(module_name='xml.etree.cElementTree')
     50     finally:
     51         test_xml_etree.ET = pyET
     52         test_xml_etree.__name__ = py__name__
     53 
     54 if __name__ == '__main__':
     55     test_main()
     56