commit 25690e1f1782291823e2b0814c950348f6827d9c
Author: Michael Simacek <msimacek(a)redhat.com>
Date: Thu Jan 16 16:49:20 2014 +0100
[test] Add tests for pom paths specification
Note: it tests features that are not implemented/broken at the moment.
test/data/pom_editor/example_common.xml | 37 +++
test/data/pom_editor/example_intermediate.xml | 26 +++
test/data/pom_editor/example_parent.xml | 26 +++
test/data/pom_editor/example_parent_profile.xml | 29 +++
test/data/pom_editor/example_schemas.xml | 67 ++++++
test/data/pom_editor/intermediate_pom.xml | 26 +++
test/data/pom_editor/minimal_pom.xml | 13 +
test/data/pom_editor/minimal_pom_nons.xml | 13 +
test/data/pom_editor/simple_pom.xml | 37 +++
.../want/example_common_removed_commons_io.xml | 27 +++
.../want/example_common_removed_junit.xml | 37 +++
.../example_intermediate_removed_commons_io.xml | 20 ++
.../want/example_schemas_removed_junit.xml | 60 +++++
.../pom_editor/want/minimal_add_dep_mgmt_scope.xml | 22 ++
.../data/pom_editor/want/minimal_add_dep_scope.xml | 20 ++
.../want/minimal_add_plugin_resource.xml | 22 ++
.../pom_editor/want/minimal_removed_parent.xml | 9 +
.../pom_editor/want/simple_removed_commons_io.xml | 22 ++
.../data/pom_editor/want/simple_removed_parent.xml | 32 +++
test/pom_editor_paths_test.py | 238 ++++++++++++++++++++
test/test_common.py | 25 ++-
test/test_rpmbuild.py | 31 ++--
22 files changed, 823 insertions(+), 16 deletions(-)
---
diff --git a/test/data/pom_editor/example_common.xml
b/test/data/pom_editor/example_common.xml
new file mode 100644
index 0000000..d223355
--- /dev/null
+++ b/test/data/pom_editor/example_common.xml
@@ -0,0 +1,37 @@
+<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">
+ <parent>
+ <groupId>com.example</groupId>
+ <artifactId>parent</artifactId>
+ <version>17</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>com.example</groupId>
+ <artifactId>common</artifactId>
+ <version>2.6</version>
+ <name>Example common</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>1.2</version>
+ </dependency>
+ <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.3</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-ioX</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>1.2</version>
+ </dependency>
+ </dependencies>
+
+</project>
diff --git a/test/data/pom_editor/example_intermediate.xml
b/test/data/pom_editor/example_intermediate.xml
new file mode 100644
index 0000000..aa33c5a
--- /dev/null
+++ b/test/data/pom_editor/example_intermediate.xml
@@ -0,0 +1,26 @@
+<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">
+ <parent>
+ <groupId>com.example</groupId>
+ <artifactId>parent</artifactId>
+ <version>17</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>com.example</groupId>
+ <artifactId>intermediate</artifactId>
+ <version>2.6</version>
+ <name>Intermediate</name>
+ <modules>
+ <module>
+ schemas
+ </module>
+ </modules>
+
+ <dependencies>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>1.2</version>
+ </dependency>
+ </dependencies>
+
+</project>
diff --git a/test/data/pom_editor/example_parent.xml
b/test/data/pom_editor/example_parent.xml
new file mode 100644
index 0000000..dff1bc8
--- /dev/null
+++ b/test/data/pom_editor/example_parent.xml
@@ -0,0 +1,26 @@
+<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">
+ <parent>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-parent</artifactId>
+ <version>17</version>
+ </parent>
+ <modules>
+ <module>intermediate</module>
+ <module>common</module>
+ </modules>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>com.example</groupId>
+ <artifactId>parent</artifactId>
+ <version>2.6</version>
+ <name>Example parent</name>
+
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>exec-maven-plugin</artifactId>
+ <version>4.0</version>
+ </plugin>
+ </plugins>
+
+
+</project>
diff --git a/test/data/pom_editor/example_parent_profile.xml
b/test/data/pom_editor/example_parent_profile.xml
new file mode 100644
index 0000000..cd5c62e
--- /dev/null
+++ b/test/data/pom_editor/example_parent_profile.xml
@@ -0,0 +1,29 @@
+<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">
+ <parent>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-parent</artifactId>
+ <version>17</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>com.example</groupId>
+ <artifactId>parent</artifactId>
+ <version>2.6</version>
+ <name>Example parent</name>
+
+ <profile>
+ <name>release</name>
+ <modules>
+ <module>intermediate</module>
+ <module>common</module>
+ </modules>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>exec-maven-plugin</artifactId>
+ <version>4.0</version>
+ </plugin>
+ </plugins>
+ </profile>
+
+
+</project>
diff --git a/test/data/pom_editor/example_schemas.xml
b/test/data/pom_editor/example_schemas.xml
new file mode 100644
index 0000000..e8aee7d
--- /dev/null
+++ b/test/data/pom_editor/example_schemas.xml
@@ -0,0 +1,67 @@
+<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">
+ <parent>
+ <groupId>com.example</groupId>
+ <artifactId>intermediate</artifactId>
+ <version>1.4</version>
+ <relativePath>../intermediate</relativePath>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>com.example</groupId>
+ <artifactId>schemas</artifactId>
+ <version>3.1.M0</version>
+ <name>Example Schemas</name>
+ <packaging>jar</packaging>
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>artifact-jar</id>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>test-jar</id>
+ <goals>
+ <goal>test-jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <archive>
+
<manifestFile>target/classes/META-INF/MANIFEST.MF</manifestFile>
+ </archive>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <extensions>true</extensions>
+ <executions>
+ <execution>
+ <id>bundle-manifest</id>
+ <phase>process-classes</phase>
+ <goals>
+ <goal>manifest</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+
+ </build>
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+</project>
diff --git a/test/data/pom_editor/intermediate_pom.xml
b/test/data/pom_editor/intermediate_pom.xml
new file mode 100644
index 0000000..aa33c5a
--- /dev/null
+++ b/test/data/pom_editor/intermediate_pom.xml
@@ -0,0 +1,26 @@
+<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">
+ <parent>
+ <groupId>com.example</groupId>
+ <artifactId>parent</artifactId>
+ <version>17</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>com.example</groupId>
+ <artifactId>intermediate</artifactId>
+ <version>2.6</version>
+ <name>Intermediate</name>
+ <modules>
+ <module>
+ schemas
+ </module>
+ </modules>
+
+ <dependencies>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>1.2</version>
+ </dependency>
+ </dependencies>
+
+</project>
diff --git a/test/data/pom_editor/minimal_pom.xml b/test/data/pom_editor/minimal_pom.xml
new file mode 100644
index 0000000..8708515
--- /dev/null
+++ b/test/data/pom_editor/minimal_pom.xml
@@ -0,0 +1,13 @@
+<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">
+ <parent>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-parent</artifactId>
+ <version>17</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>2.6</version>
+ <name>Commons Lang</name>
+
+</project>
diff --git a/test/data/pom_editor/minimal_pom_nons.xml
b/test/data/pom_editor/minimal_pom_nons.xml
new file mode 100644
index 0000000..f47bef3
--- /dev/null
+++ b/test/data/pom_editor/minimal_pom_nons.xml
@@ -0,0 +1,13 @@
+<project>
+ <parent>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-parent</artifactId>
+ <version>17</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>2.6</version>
+ <name>Commons Lang</name>
+
+</project>
diff --git a/test/data/pom_editor/simple_pom.xml b/test/data/pom_editor/simple_pom.xml
new file mode 100644
index 0000000..8a9851d
--- /dev/null
+++ b/test/data/pom_editor/simple_pom.xml
@@ -0,0 +1,37 @@
+<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">
+ <parent>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-parent</artifactId>
+ <version>17</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>2.6</version>
+ <name>Commons Lang</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>1.2</version>
+ </dependency>
+ <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.3</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-ioX</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>1.2</version>
+ </dependency>
+ </dependencies>
+
+</project>
diff --git a/test/data/pom_editor/want/example_common_removed_commons_io.xml
b/test/data/pom_editor/want/example_common_removed_commons_io.xml
new file mode 100644
index 0000000..fc74358
--- /dev/null
+++ b/test/data/pom_editor/want/example_common_removed_commons_io.xml
@@ -0,0 +1,27 @@
+<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">
+ <parent>
+ <groupId>com.example</groupId>
+ <artifactId>parent</artifactId>
+ <version>17</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>com.example</groupId>
+ <artifactId>common</artifactId>
+ <version>2.6</version>
+ <name>Example common</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>commons-ioX</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>1.2</version>
+ </dependency>
+ </dependencies>
+
+</project>
diff --git a/test/data/pom_editor/want/example_common_removed_junit.xml
b/test/data/pom_editor/want/example_common_removed_junit.xml
new file mode 100644
index 0000000..d223355
--- /dev/null
+++ b/test/data/pom_editor/want/example_common_removed_junit.xml
@@ -0,0 +1,37 @@
+<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">
+ <parent>
+ <groupId>com.example</groupId>
+ <artifactId>parent</artifactId>
+ <version>17</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>com.example</groupId>
+ <artifactId>common</artifactId>
+ <version>2.6</version>
+ <name>Example common</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>1.2</version>
+ </dependency>
+ <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.3</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-ioX</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>1.2</version>
+ </dependency>
+ </dependencies>
+
+</project>
diff --git a/test/data/pom_editor/want/example_intermediate_removed_commons_io.xml
b/test/data/pom_editor/want/example_intermediate_removed_commons_io.xml
new file mode 100644
index 0000000..218cb5a
--- /dev/null
+++ b/test/data/pom_editor/want/example_intermediate_removed_commons_io.xml
@@ -0,0 +1,20 @@
+<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">
+ <parent>
+ <groupId>com.example</groupId>
+ <artifactId>parent</artifactId>
+ <version>17</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>com.example</groupId>
+ <artifactId>intermediate</artifactId>
+ <version>2.6</version>
+ <name>Intermediate</name>
+ <modules>
+ <module>
+ schemas
+ </module>
+ </modules>
+
+ <dependencies/>
+
+</project>
diff --git a/test/data/pom_editor/want/example_schemas_removed_junit.xml
b/test/data/pom_editor/want/example_schemas_removed_junit.xml
new file mode 100644
index 0000000..055450a
--- /dev/null
+++ b/test/data/pom_editor/want/example_schemas_removed_junit.xml
@@ -0,0 +1,60 @@
+<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">
+ <parent>
+ <groupId>com.example</groupId>
+ <artifactId>intermediate</artifactId>
+ <version>1.4</version>
+ <relativePath>../intermediate</relativePath>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>com.example</groupId>
+ <artifactId>schemas</artifactId>
+ <version>3.1.M0</version>
+ <name>Example Schemas</name>
+ <packaging>jar</packaging>
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>artifact-jar</id>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>test-jar</id>
+ <goals>
+ <goal>test-jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <archive>
+
<manifestFile>target/classes/META-INF/MANIFEST.MF</manifestFile>
+ </archive>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <extensions>true</extensions>
+ <executions>
+ <execution>
+ <id>bundle-manifest</id>
+ <phase>process-classes</phase>
+ <goals>
+ <goal>manifest</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+
+ </build>
+ <dependencies/>
+</project>
diff --git a/test/data/pom_editor/want/minimal_add_dep_mgmt_scope.xml
b/test/data/pom_editor/want/minimal_add_dep_mgmt_scope.xml
new file mode 100644
index 0000000..02a5827
--- /dev/null
+++ b/test/data/pom_editor/want/minimal_add_dep_mgmt_scope.xml
@@ -0,0 +1,22 @@
+<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">
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.uimaj</groupId>
+ <artifactId>uimaj-core</artifactId>
+ <version>any</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+ <parent>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-parent</artifactId>
+ <version>17</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>2.6</version>
+ <name>Commons Lang</name>
+</project>
diff --git a/test/data/pom_editor/want/minimal_add_dep_scope.xml
b/test/data/pom_editor/want/minimal_add_dep_scope.xml
new file mode 100644
index 0000000..621c984
--- /dev/null
+++ b/test/data/pom_editor/want/minimal_add_dep_scope.xml
@@ -0,0 +1,20 @@
+<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">
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.uimaj</groupId>
+ <artifactId>uimaj-core</artifactId>
+ <version>any</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ <parent>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-parent</artifactId>
+ <version>17</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>2.6</version>
+ <name>Commons Lang</name>
+</project>
diff --git a/test/data/pom_editor/want/minimal_add_plugin_resource.xml
b/test/data/pom_editor/want/minimal_add_plugin_resource.xml
new file mode 100644
index 0000000..45a9276
--- /dev/null
+++ b/test/data/pom_editor/want/minimal_add_plugin_resource.xml
@@ -0,0 +1,22 @@
+<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">
+ <parent>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-parent</artifactId>
+ <version>17</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>2.6</version>
+ <name>Commons Lang</name>
+
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-remote-resources-plugin</artifactId>
+ <version>any</version>
+ <goal>generate-resources</goal>
+ </plugin>
+ </plugins>
+
+</project>
diff --git a/test/data/pom_editor/want/minimal_removed_parent.xml
b/test/data/pom_editor/want/minimal_removed_parent.xml
new file mode 100644
index 0000000..e1045f8
--- /dev/null
+++ b/test/data/pom_editor/want/minimal_removed_parent.xml
@@ -0,0 +1,9 @@
+<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">
+ <!-- parent POM reference removed by maintainer -->
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>2.6</version>
+ <name>Commons Lang</name>
+
+</project>
diff --git a/test/data/pom_editor/want/simple_removed_commons_io.xml
b/test/data/pom_editor/want/simple_removed_commons_io.xml
new file mode 100644
index 0000000..a36129f
--- /dev/null
+++ b/test/data/pom_editor/want/simple_removed_commons_io.xml
@@ -0,0 +1,22 @@
+<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">
+ <parent>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-parent</artifactId>
+ <version>17</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>2.6</version>
+ <name>Commons Lang</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+</project>
diff --git a/test/data/pom_editor/want/simple_removed_parent.xml
b/test/data/pom_editor/want/simple_removed_parent.xml
new file mode 100644
index 0000000..774007a
--- /dev/null
+++ b/test/data/pom_editor/want/simple_removed_parent.xml
@@ -0,0 +1,32 @@
+<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>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>2.6</version>
+ <name>Commons Lang</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>1.2</version>
+ </dependency>
+ <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.3</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-ioX</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>1.2</version>
+ </dependency>
+ </dependencies>
+
+</project>
diff --git a/test/pom_editor_paths_test.py b/test/pom_editor_paths_test.py
new file mode 100644
index 0000000..d04c040
--- /dev/null
+++ b/test/pom_editor_paths_test.py
@@ -0,0 +1,238 @@
+from os import path
+from test_rpmbuild import Package
+from test_common import DIRPATH, WorkdirTestCase
+from xml_compare import compare_xml_files
+
+DATADIR = path.join(DIRPATH, 'data', 'pom_editor')
+
+def exec_pom_macro(line, poms_tree, want_tree=None):
+ """
+ Parameters:
+ line::
+ A line of spec code injected to %prep
+ poms_tree::
+ dictionary that maps subpackage directory paths to input poms
+ want_tree::
+ dictionary that maps subpackage directory paths to wanted poms
+ (in want directory)
+ It creates a directory structure corresponding to keys in poms_tree and
+ copies pom files into it. Then it executes prep and compares altered poms
+ to wanted ones from want_tree (if not specified in want_tree it is assumed
+ to remain unchanged and is compared with the original pom). Returns tuple
+ of rpmbuild's return value, stderr and report of differences in xml files.
+ """
+ pack = Package('test')
+ pack.append_to_prep(line)
+ for destpath, sourcepath in poms_tree.iteritems():
+ pack.add_source(path.join(DATADIR, sourcepath), path.join(destpath,
'pom.xml'))
+ _, stderr, return_value = pack.run_prep()
+ reports = []
+ if return_value == 0:
+ for filepath, pom in poms_tree.iteritems():
+ if want_tree and filepath in want_tree:
+ expected_pom = path.join('want', want_tree[filepath])
+ else:
+ expected_pom = pom
+ expected_pom = path.join(DATADIR, expected_pom)
+ actual_pom = path.join(pack.buildpath, filepath, 'pom.xml')
+ reports.append(compare_xml_files(actual_pom, expected_pom))
+ return return_value, stderr, '\n'.join(reports).strip()
+
+class TestPomPath(WorkdirTestCase):
+ def test_sanity(self):
+ return_value, stderr, report = exec_pom_macro('', {
+ 'submodule': 'minimal_pom.xml'})
+ self.assertEqual(0, return_value, stderr)
+ self.assertEqual('', report, report)
+
+ def test_default_nonexistent(self):
+ return_value, stderr, _ = exec_pom_macro('%pom_remove_parent', {})
+ self.assertIn("Couldn't locate POM file", stderr)
+ self.assertNotEqual(0, return_value)
+
+ def test_submodule_nonexistent(self):
+ return_value, stderr, _ = exec_pom_macro('%pom_remove_parent submodule',
{})
+ self.assertIn("Couldn't locate POM file", stderr)
+ self.assertNotEqual(0, return_value)
+
+ def test_default(self):
+ return_value, stderr, report = exec_pom_macro('%pom_remove_parent',
+ poms_tree={'': 'minimal_pom.xml'},
+ want_tree={'': 'minimal_removed_parent.xml'})
+ self.assertEqual(0, return_value, stderr)
+ self.assertEqual('', report, report)
+
+ def test_explicit(self):
+ return_value, stderr, report = exec_pom_macro('%pom_remove_parent
pom.xml',
+ poms_tree={'': 'minimal_pom.xml'},
+ want_tree={'': 'minimal_removed_parent.xml'})
+ self.assertEqual(0, return_value, stderr)
+ self.assertEqual('', report, report)
+
+ def test_submodule_default(self):
+ return_value, stderr, report = exec_pom_macro('%pom_remove_parent
submodule',
+ poms_tree={'submodule': 'minimal_pom.xml'},
+ want_tree={'submodule': 'minimal_removed_parent.xml'})
+ self.assertEqual(0, return_value, stderr)
+ self.assertEqual('', report, report)
+
+ def test_submodule_explicit(self):
+ return_value, stderr, report = exec_pom_macro('%pom_remove_parent
submodule',
+ poms_tree={'submodule': 'minimal_pom.xml'},
+ want_tree={'submodule': 'minimal_removed_parent.xml'})
+ self.assertEqual(0, return_value, stderr)
+ self.assertEqual('', report, report)
+
+ def test_submodule_more_levels(self):
+ return_value, stderr, report = exec_pom_macro('%pom_remove_parent
submodule/something',
+ poms_tree={'submodule/something': 'minimal_pom.xml'},
+ want_tree={'submodule/something':
'minimal_removed_parent.xml'})
+ self.assertEqual(0, return_value, stderr)
+ self.assertEqual('', report, report)
+
+class TestMorePoms(WorkdirTestCase):
+ def test_submodules_default(self):
+ return_value, stderr, report = exec_pom_macro('%pom_remove_parent submodule1
submodule2',
+ poms_tree={'submodule1': 'minimal_pom.xml',
+ 'submodule2': 'simple_pom.xml'},
+ want_tree={'submodule1': 'minimal_removed_parent.xml',
+ 'submodule2': 'simple_removed_parent.xml'})
+ self.assertEqual(0, return_value, stderr)
+ self.assertEqual('', report, report)
+
+ def test_submodules_different_levels(self):
+ return_value, stderr, report = exec_pom_macro('%pom_remove_parent .
submodule2',
+ poms_tree={'submodule1': 'minimal_pom.xml',
+ 'submodule2': 'simple_pom.xml',
+ '': 'minimal_pom.xml'},
+ want_tree={'submodule2': 'simple_removed_parent.xml',
+ '': 'minimal_removed_parent.xml'})
+ self.assertEqual(0, return_value, stderr)
+ self.assertEqual('', report, report)
+
+ def test_many_submodules(self):
+ poms = ['submodule{0}'.format(i) for i in range(10)]
+ command = '%pom_remove_parent ' + ' '.join(poms)
+ poms_tree = {'untouched': 'minimal_pom.xml'}
+ want_tree = {}
+ for pom in poms:
+ poms_tree[pom] = 'simple_pom.xml'
+ want_tree[pom] = 'simple_removed_parent.xml'
+ return_value, stderr, report = exec_pom_macro(command, poms_tree, want_tree)
+ self.assertEqual(0, return_value, stderr)
+ self.assertEqual('', report, report)
+
+ def test_submodules_partial_match(self):
+ return_value, stderr, _ = exec_pom_macro(\
+ '%pom_remove_dep :commons-io submodule1 submodule2',
+ poms_tree={'submodule1': 'minimal_pom.xml',
+ 'submodule2': 'simple_pom.xml'})
+ self.assertIn("Error", stderr)
+ self.assertIn("not found", stderr)
+ self.assertNotEqual(0, return_value)
+
+ def test_submodules_partial_match_force(self):
+ return_value, stderr, report = exec_pom_macro(\
+ '%pom_remove_dep -f :commons-io submodule1 submodule2',
+ poms_tree={'submodule1': 'minimal_pom.xml',
+ 'submodule2': 'simple_pom.xml'},
+ want_tree={'submodule2':
'simple_removed_commons_io.xml'})
+ self.assertEqual(0, return_value, stderr)
+ self.assertEqual('', report, report)
+
+class TestRecursive(WorkdirTestCase):
+ example_tree = {
+ '': 'example_parent.xml',
+ 'common': 'example_common.xml',
+ 'intermediate': 'example_intermediate.xml',
+ 'intermediate/schemas': 'example_schemas.xml'}
+
+ def test_default_recursive1(self):
+ return_value, stderr, report = exec_pom_macro('%pom_remove_dep -r
:commons-io',
+ poms_tree=self.example_tree,
+ want_tree={'intermediate':
'example_intermediate_removed_commons_io.xml',
+ 'common': 'example_common_removed_commons_io.xml'})
+ self.assertEqual(0, return_value, stderr)
+ self.assertEqual('', report, report)
+
+ def test_default_recursive2(self):
+ return_value, stderr, report = exec_pom_macro('%pom_remove_dep -r
:junit',
+ poms_tree=self.example_tree,
+ want_tree={'intermediate/schemas':
'example_schemas_removed_junit.xml',
+ 'common': 'example_common_removed_junit.xml'})
+ self.assertEqual(0, return_value, stderr)
+ self.assertEqual('', report, report)
+
+ def test_default_recursive_profile(self):
+ poms_tree = dict(self.example_tree)
+ poms_tree[''] = 'example_parent_profile.xml'
+ return_value, stderr, report = exec_pom_macro('%pom_remove_dep -r
:commons-io',
+ poms_tree=poms_tree,
+ want_tree={'intermediate':
'example_intermediate_removed_commons_io.xml',
+ 'common': 'example_common_removed_commons_io.xml'})
+ self.assertEqual(0, return_value, stderr)
+ self.assertEqual('', report, report)
+
+ def test_recursive_no_match(self):
+ return_value, stderr, _ = exec_pom_macro('%pom_remove_dep -r :junit',
+ poms_tree=self.example_tree)
+ self.assertIn("Error", stderr)
+ self.assertIn("not fount", stderr)
+ self.assertNotEqual(0, return_value)
+
+
+class TestAttributeRecognition(WorkdirTestCase):
+ def test_default_extra_xml(self):
+ return_value, stderr, report = exec_pom_macro('\
+ %pom_add_dep org.apache.uimaj:uimaj-core
"<scope>test</scope>"',
+ poms_tree={'': 'minimal_pom.xml'},
+ want_tree={'': 'minimal_add_dep_scope.xml'})
+ self.assertEqual(0, return_value, stderr)
+ self.assertEqual('', report, report)
+
+ def test_explicit_extra_xml(self):
+ return_value, stderr, report = exec_pom_macro('\
+ %pom_add_dep org.apache.uimaj:uimaj-core pom.xml
"<scope>test</scope>"',
+ poms_tree={'': 'minimal_pom.xml'},
+ want_tree={'': 'minimal_add_dep_scope.xml'})
+ self.assertEqual(0, return_value, stderr)
+ self.assertEqual('', report, report)
+
+ def test_submodule_extra_xml(self):
+ return_value, stderr, report = exec_pom_macro('\
+ %pom_add_dep org.apache.uimaj:uimaj-core submodule
"<scope>test</scope>"',
+ poms_tree={'submodule': 'minimal_pom.xml'},
+ want_tree={'submodule': 'minimal_add_dep_scope.xml'})
+ self.assertEqual(0, return_value, stderr)
+ self.assertEqual('', report, report)
+
+ def test_submodules_extra_xml(self):
+ return_value, stderr, report = exec_pom_macro(\
+ '%pom_add_dep org.apache.uimaj:uimaj-core submodule1 submodule2
"<scope>test</scope>"',
+ poms_tree={'submodule1': 'minimal_pom.xml',
+ 'submodule2': 'minimal_pom.xml'},
+ want_tree={'submodule1': 'minimal_add_dep_scope.xml',
+ 'submodule2': 'minimal_add_dep_scope.xml'})
+ self.assertEqual(0, return_value, stderr)
+ self.assertEqual('', report, report)
+
+ def test_dep_mgmt_extra_xml(self):
+ return_value, stderr, report = exec_pom_macro(\
+ '%pom_add_dep_mgmt org.apache.uimaj:uimaj-core submodule1 submodule2
"<scope>test</scope>"',
+ poms_tree={'submodule1': 'minimal_pom.xml',
+ 'submodule2': 'minimal_pom.xml'},
+ want_tree={'submodule1':
'minimal_add_dep_mgmt_scope.xml',
+ 'submodule2': 'minimal_add_dep_mgmt_scope.xml'})
+ self.assertEqual(0, return_value, stderr)
+ self.assertEqual('', report, report)
+
+ def test_plugin_extra_xml(self):
+ return_value, stderr, report = exec_pom_macro(\
+ '%pom_add_plugin org.apache.maven:maven-remote-resources-plugin \
+ submodule1 submodule2
"<goal>generate-resources</goal>"',
+ poms_tree={'submodule1': 'minimal_pom.xml',
+ 'submodule2': 'minimal_pom.xml'},
+ want_tree={'submodule1':
'minimal_add_plugin_resource.xml',
+ 'submodule2': 'minimal_add_plugin_resource.xml'})
+ self.assertEqual(0, return_value, stderr)
+ self.assertEqual('', report, report)
diff --git a/test/test_common.py b/test/test_common.py
index b9f694c..c8a8075 100644
--- a/test/test_common.py
+++ b/test/test_common.py
@@ -1,8 +1,9 @@
import os
+import re
import shutil
-import sys
import subprocess
-import re
+import sys
+import unittest
DIRPATH = os.path.dirname(os.path.realpath(__file__))
PYTHONPATH = os.path.join(DIRPATH, '../python')
@@ -140,3 +141,23 @@ def mvn_artifact(pom, jar=None):
fun(self, stdout, stderr, return_value)
return test_decorated
return test_decorator
+
+class WorkdirTestCase(unittest.TestCase):
+ olddir = os.getcwd()
+ WORKDIR = '.workdir'
+
+ def setUp(self):
+ self.olddir = os.getcwd()
+ try:
+ shutil.rmtree(self.WORKDIR)
+ except OSError:
+ pass
+ os.mkdir(self.WORKDIR)
+ os.chdir(self.WORKDIR)
+
+ def tearDown(self):
+ try:
+ shutil.rmtree(self.WORKDIR)
+ except OSError:
+ pass
+ os.chdir(self.olddir)
diff --git a/test/test_rpmbuild.py b/test/test_rpmbuild.py
index 11c833e..14a45e1 100644
--- a/test/test_rpmbuild.py
+++ b/test/test_rpmbuild.py
@@ -19,7 +19,7 @@ class Package(object):
"""
def __init__(self, name):
self.__name = name
- self.__sources = {}
+ self.__sources = []
self.__begin = ''
self.__prep = ''
self.__build = ''
@@ -46,7 +46,7 @@ class Package(object):
sourcepath = os.path.join(DIRPATH, sourcepath)
if not newname:
newname = os.path.basename(sourcepath)
- self.__sources[sourcepath] = newname
+ self.__sources.append((sourcepath, newname))
def prepend(self, to_prepend):
"""Prepends given string to spec file"""
@@ -70,9 +70,9 @@ class Package(object):
return self.__invoke_rpmbuild(['-bp'] + (args or []))
def run_build(self, args=None):
- """Runs rpmbuild -bb (stop after build phase) with current
settings."""
+ """Runs rpmbuild -bc (stop after build phase) with current
settings."""
self.__prepare_all()
- return self.__invoke_rpmbuild(['-bb'] + (args or []))
+ return self.__invoke_rpmbuild(['-bc'] + (args or []))
def run_install(self, args=None):
"""Runs rpmbuild -bi (stop after install) with current
settings."""
@@ -113,10 +113,7 @@ class Package(object):
pass
_prepare_macros()
self.__prepare_spec()
- try:
- self.__prepare_sources()
- except IOError:
- pass
+ self.__prepare_sources()
def __prepare_spec(self):
header = self.__begin + dedent("""
@@ -127,8 +124,9 @@ class Package(object):
License: GPL
URL:
www.example.com
""".format(name=self.__name))
- for index, filename in enumerate(self.__sources.values() or []):
- header += 'Source{index}: {filename}\n'.format(filename=filename,
+ for index, (_, filename) in enumerate(self.__sources):
+ filename = os.path.basename(filename)
+ header += 'Source{index}:
{filename}{index}\n'.format(filename=filename,
index=index)
header += dedent("""\
@@ -142,8 +140,12 @@ class Package(object):
mkdir %{name}-%{version}
cd %{name}-%{version}
""")
- for i in range(len(self.__sources)):
- prep_section += 'cp -p %SOURCE{index} .\n'.format(index=i)
+ for index, (_, filename) in enumerate(self.__sources):
+ directory = os.path.dirname(filename)
+ prep_section += 'mkdir -p ./{d}\n'.format(d=directory)
+ prep_section += 'cp -p %SOURCE{index}
./{d}/{f}\n'.format(index=index,
+ d=directory, f=os.path.basename(filename))
+
prep_section += self.__prep
build_section = dedent("""\
@@ -168,8 +170,9 @@ class Package(object):
def __prepare_sources(self):
destpath = os.path.join('rpmbuild', 'SOURCES')
- for sourcepath, targetname in self.__sources.iteritems():
- shutil.copy(sourcepath, os.path.join(destpath, targetname))
+ for index, (sourcepath, targetname) in enumerate(self.__sources):
+ target = os.path.join(destpath, os.path.basename(targetname))
+ shutil.copy(sourcepath, '{0}{1}'.format(target, index))
def _prepare_macros():
etcpath = os.path.join(DIRPATH, '..', 'etc')