(self, clone_document)
| 954 | self.check_clone_pi(1, "testClonePIDeep") |
| 955 | |
| 956 | def check_clone_node_entity(self, clone_document): |
| 957 | # bpo-35052: Test user data handler in cloneNode() on a document with |
| 958 | # an entity |
| 959 | document = xml.dom.minidom.parseString(""" |
| 960 | <?xml version="1.0" ?> |
| 961 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" |
| 962 | "http://www.w3.org/TR/html4/strict.dtd" |
| 963 | [ <!ENTITY smile "☺"> ] |
| 964 | > |
| 965 | <doc>Don't let entities make you frown ⌣</doc> |
| 966 | """.strip()) |
| 967 | |
| 968 | class Handler: |
| 969 | def handle(self, operation, key, data, src, dst): |
| 970 | self.operation = operation |
| 971 | self.key = key |
| 972 | self.data = data |
| 973 | self.src = src |
| 974 | self.dst = dst |
| 975 | |
| 976 | handler = Handler() |
| 977 | doctype = document.doctype |
| 978 | entity = doctype.entities['smile'] |
| 979 | entity.setUserData("key", "data", handler) |
| 980 | |
| 981 | if clone_document: |
| 982 | # clone Document |
| 983 | clone = document.cloneNode(deep=True) |
| 984 | |
| 985 | self.assertEqual(clone.documentElement.firstChild.wholeText, |
| 986 | "Don't let entities make you frown ☺") |
| 987 | operation = xml.dom.UserDataHandler.NODE_IMPORTED |
| 988 | dst = clone.doctype.entities['smile'] |
| 989 | else: |
| 990 | # clone DocumentType |
| 991 | with support.swap_attr(doctype, 'ownerDocument', None): |
| 992 | clone = doctype.cloneNode(deep=True) |
| 993 | |
| 994 | operation = xml.dom.UserDataHandler.NODE_CLONED |
| 995 | dst = clone.entities['smile'] |
| 996 | |
| 997 | self.assertEqual(handler.operation, operation) |
| 998 | self.assertEqual(handler.key, "key") |
| 999 | self.assertEqual(handler.data, "data") |
| 1000 | self.assertIs(handler.src, entity) |
| 1001 | self.assertIs(handler.dst, dst) |
| 1002 | |
| 1003 | def testCloneNodeEntity(self): |
| 1004 | self.check_clone_node_entity(False) |
no test coverage detected