commit 5eb4ce06d058d7eb62eee71f2ff219beaa11ac74 Author: Michael Simacek msimacek@redhat.com Date: Wed Jan 29 10:28:37 2014 +0100
[pom_editor] fix regression - replacing non-element nodes
java-utils/pom_editor.py | 16 +++-- test/data/pom_macros/pom_xpath_remove_generic.xml | 68 ++++++++++++++++++++ .../pom_macros/pom_xpath_remove_generic.xml-want | 30 +++++++++ test/pom_macros_test.py | 7 ++ 4 files changed, 115 insertions(+), 6 deletions(-) --- diff --git a/java-utils/pom_editor.py b/java-utils/pom_editor.py index 5b715f4..ac2443a 100644 --- a/java-utils/pom_editor.py +++ b/java-utils/pom_editor.py @@ -142,12 +142,16 @@ class Pom(object): def replace_xml(self, replaced, content): content = self.subtree_from_string(content) parent = replaced.getparent() - idx = parent.index(replaced) - items = len(content) - del parent[idx] - for i, element in enumerate(content): - parent.insert(idx + i, element) - self.reformat(parent, parent[idx: idx + items]) + parent.text = content.text + if not isinstance(replaced, etree._Element): + parent.extend(content) + else: + idx = parent.index(replaced) + items = len(content) + del parent[idx] + for i, element in enumerate(content): + parent.insert(idx + i, element) + self.reformat(parent, parent[idx: idx + items])
def replace_xml_content(self, parent, content): content = self.subtree_from_string(content) diff --git a/test/data/pom_macros/pom_xpath_remove_generic.xml b/test/data/pom_macros/pom_xpath_remove_generic.xml new file mode 100644 index 0000000..48a1ef0 --- /dev/null +++ b/test/data/pom_macros/pom_xpath_remove_generic.xml @@ -0,0 +1,68 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-parent</artifactId> + <version>2.6</version> + <name>Commons Lang</name> + + <prerequisities> + <maven>3.0</maven> + <maven-old>2.0</maven-old> + </prerequisities> + + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>3.8.1</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + <version>1.2</version> + </dependency> + </dependencies> + + <modules> + <module>jetty-util</module> + <module>jetty-jmx</module> + <module>jetty-io</module> + <module>jetty-http</module> + <module>jetty-websocket</module> + <module>jetty-continuation</module> + <module>jetty-server</module> + <module>jetty-client</module> + <module>jetty-xml</module> + <module>jetty-security</module> + <module>jetty-jaspi</module> + <module>jetty-servlet</module> + <module>jetty-webapp</module> + <module>jetty-servlets</module> + <module>jetty-deploy</module> + <module>jetty-ajp</module> + <module>jetty-jndi</module> + <module>jetty-annotations</module> + <module>jetty-plus</module> + <module>jetty-rewrite</module> + <module>jetty-policy</module> + <module>jetty-monitor</module> + <module>jetty-start</module> + <module>jetty-nested</module> + <module>jetty-overlay-deployer</module> + <module>jetty-osgi</module> + <module>jetty-nosql</module> + <module>jetty-http-spi</module> + <module>jetty-jsp</module> + <module>jetty-distribution</module> + <module>test-continuation</module> + <!--module>test-continuation-jetty6</module--> + <module>test-jetty-servlet</module> + <module>test-jetty-webapp</module> + <module>test-jetty-nested</module> + <module>example-jetty-embedded</module> + <module>example-async-rest</module> + <module>tests</module> + </modules> + +</project> diff --git a/test/data/pom_macros/pom_xpath_remove_generic.xml-want b/test/data/pom_macros/pom_xpath_remove_generic.xml-want new file mode 100644 index 0000000..47f637d --- /dev/null +++ b/test/data/pom_macros/pom_xpath_remove_generic.xml-want @@ -0,0 +1,30 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-parent</artifactId> + <version>2.6</version> + <name>Commons Lang</name> + + <prerequisities> + <maven>3.0</maven> + <maven-old>2.0</maven-old> + </prerequisities> + + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>3.8.1</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + <version>1.2</version> + </dependency> + </dependencies> + + <modules> + </modules> + +</project> diff --git a/test/pom_macros_test.py b/test/pom_macros_test.py index 8b44f09..8b1d8ea 100644 --- a/test/pom_macros_test.py +++ b/test/pom_macros_test.py @@ -321,6 +321,13 @@ class PomMacrosTest(unittest.TestCase): report, res = check_result(pom_path) self.assertEqual(res, True, report)
+ @exec_macro("pom_xpath_remove 'pom:modules/node()'", "pom_xpath_remove_generic.xml") + def test_xpath_remove_generic(self, stdin, stderr, returncode, pom_path): + self.assertEqual(returncode, 0, stderr) + + report, res = check_result(pom_path) + self.assertEqual(res, True, report) + @exec_macro("pom_xpath_remove \ "pom:dependency[pom:artifactId[text()='m-m']]"", "pom_xpath_remove2.xml")
java-sig-commits@lists.fedoraproject.org