[Python-checkins] commit of r41507 - in python/trunk/Lib: test xml/dom
andrew.kuchling@python.org
andrew.kuchling at python.org
Tue Nov 22 20:03:21 CET 2005
Author: andrew.kuchling
Date: Tue Nov 22 20:03:16 2005
New Revision: 41507
Modified:
python/trunk/Lib/test/test_minidom.py
python/trunk/Lib/xml/dom/minidom.py
Log:
[Patch #1094164] replaceChild(x,x) ends up removing x of the tree. Add fix from Felix Rabe and a test case
Modified: python/trunk/Lib/test/test_minidom.py
==============================================================================
--- python/trunk/Lib/test/test_minidom.py (original)
+++ python/trunk/Lib/test/test_minidom.py Tue Nov 22 20:03:16 2005
@@ -1127,6 +1127,17 @@
checkWholeText(text, "cabd")
checkWholeText(text2, "cabd")
+def testPatch1094164 ():
+ doc = parseString("<doc><e/></doc>")
+ elem = doc.documentElement
+ e = elem.firstChild
+ confirm(e.parentNode is elem, "Before replaceChild()")
+ # Check that replacing a child with itself leaves the tree unchanged
+ elem.replaceChild(e, e)
+ confirm(e.parentNode is elem, "After replaceChild()")
+
+
+
def testReplaceWholeText():
def setup():
doc = parseString("<doc>a<e/>d</doc>")
Modified: python/trunk/Lib/xml/dom/minidom.py
==============================================================================
--- python/trunk/Lib/xml/dom/minidom.py (original)
+++ python/trunk/Lib/xml/dom/minidom.py Tue Nov 22 20:03:16 2005
@@ -135,10 +135,10 @@
if newChild.nodeType not in self._child_node_types:
raise xml.dom.HierarchyRequestErr(
"%s cannot be child of %s" % (repr(newChild), repr(self)))
- if newChild.parentNode is not None:
- newChild.parentNode.removeChild(newChild)
if newChild is oldChild:
return
+ if newChild.parentNode is not None:
+ newChild.parentNode.removeChild(newChild)
try:
index = self.childNodes.index(oldChild)
except ValueError:
More information about the Python-checkins
mailing list