This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to annotated tag japicmp-base-0.0.1 in repository https://gitbox.apache.org/repos/asf/commons-vfs.git
commit d13515164e61c02b6b0a9a63313eaa9536fc4d8d Author: siom79 <martin.m...@googlemail.com> AuthorDate: Mon Sep 30 22:20:16 2013 +0200 added testbase module and three submodules to test the comparison of jar archives --- README.md | 3 +- japicmp-testbase/japicmp-test-v1/pom.xml | 13 ++++ .../src/main/java/japicmp/test/Removed.java | 4 ++ japicmp-testbase/japicmp-test-v2/pom.xml | 13 ++++ .../src/main/java/japicmp/test/Added.java | 4 ++ japicmp-testbase/japicmp-test/pom.xml | 71 ++++++++++++++++++++++ .../src/test/java/japicmp/test/BasicTest.java | 40 ++++++++++++ japicmp-testbase/pom.xml | 20 ++++++ japicmp/src/main/java/japicmp/JApiCmp.java | 5 +- .../output/stdout/StdoutOutputGenerator.java | 2 +- .../java/japicmp/util/StringArrayEnumeration.java | 4 +- pom.xml | 1 + 12 files changed, 174 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 339b18e..58f16a9 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,9 @@ japicmp is a tool to compare two versions of a jar archive: java -jar japicmp-0.0.1-SNAPSHOT.jar -n new-version.jar -o old-version.jar -It can also be used as a library to integration its functionality in some other kind of software: +It can also be used as a library to integrate its functionality in some other kind of software: + JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(); List<JApiClass> jApiClasses = jarArchiveComparator.compare(oldArchive, newArchive); ##Motivation## diff --git a/japicmp-testbase/japicmp-test-v1/pom.xml b/japicmp-testbase/japicmp-test-v1/pom.xml new file mode 100644 index 0000000..20911a2 --- /dev/null +++ b/japicmp-testbase/japicmp-test-v1/pom.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<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/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>japicmp</groupId> + <artifactId>japicmp-testbase</artifactId> + <version>0.0.1-SNAPSHOT</version> + </parent> + + <artifactId>japicmp-test-v1</artifactId> +</project> \ No newline at end of file diff --git a/japicmp-testbase/japicmp-test-v1/src/main/java/japicmp/test/Removed.java b/japicmp-testbase/japicmp-test-v1/src/main/java/japicmp/test/Removed.java new file mode 100644 index 0000000..6ddead3 --- /dev/null +++ b/japicmp-testbase/japicmp-test-v1/src/main/java/japicmp/test/Removed.java @@ -0,0 +1,4 @@ +package japicmp.test; + +public class Removed { +} diff --git a/japicmp-testbase/japicmp-test-v2/pom.xml b/japicmp-testbase/japicmp-test-v2/pom.xml new file mode 100644 index 0000000..2174ec5 --- /dev/null +++ b/japicmp-testbase/japicmp-test-v2/pom.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<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/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>japicmp</groupId> + <artifactId>japicmp-testbase</artifactId> + <version>0.0.1-SNAPSHOT</version> + </parent> + + <artifactId>japicmp-test-v2</artifactId> +</project> \ No newline at end of file diff --git a/japicmp-testbase/japicmp-test-v2/src/main/java/japicmp/test/Added.java b/japicmp-testbase/japicmp-test-v2/src/main/java/japicmp/test/Added.java new file mode 100644 index 0000000..7c0398c --- /dev/null +++ b/japicmp-testbase/japicmp-test-v2/src/main/java/japicmp/test/Added.java @@ -0,0 +1,4 @@ +package japicmp.test; + +public class Added { +} diff --git a/japicmp-testbase/japicmp-test/pom.xml b/japicmp-testbase/japicmp-test/pom.xml new file mode 100644 index 0000000..11d5a81 --- /dev/null +++ b/japicmp-testbase/japicmp-test/pom.xml @@ -0,0 +1,71 @@ +<?xml version="1.0" encoding="UTF-8"?> +<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/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>japicmp</groupId> + <artifactId>japicmp-testbase</artifactId> + <version>0.0.1-SNAPSHOT</version> + </parent> + + <artifactId>japicmp-test</artifactId> + + <dependencies> + <dependency> + <groupId>japicmp</groupId> + <artifactId>japicmp</artifactId> + <version>${project.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>japicmp</groupId> + <artifactId>japicmp-test-v1</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>japicmp</groupId> + <artifactId>japicmp-test-v2</artifactId> + <version>${project.version}</version> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-dependency-plugin</artifactId> + <version>2.8</version> + <executions> + <execution> + <id>copy</id> + <phase>process-test-resources</phase> + <goals> + <goal>copy</goal> + </goals> + <configuration> + <artifactItems> + <artifactItem> + <groupId>japicmp</groupId> + <artifactId>japicmp-test-v1</artifactId> + <version>${project.version}</version> + <overWrite>true</overWrite> + <outputDirectory>${project.build.directory}</outputDirectory> + <destFileName>japicmp-test-v1.jar</destFileName> + </artifactItem> + <artifactItem> + <groupId>japicmp</groupId> + <artifactId>japicmp-test-v2</artifactId> + <version>${project.version}</version> + <overWrite>true</overWrite> + <outputDirectory>${project.build.directory}</outputDirectory> + <destFileName>japicmp-test-v2.jar</destFileName> + </artifactItem> + </artifactItems> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project> \ No newline at end of file diff --git a/japicmp-testbase/japicmp-test/src/test/java/japicmp/test/BasicTest.java b/japicmp-testbase/japicmp-test/src/test/java/japicmp/test/BasicTest.java new file mode 100644 index 0000000..005dbe5 --- /dev/null +++ b/japicmp-testbase/japicmp-test/src/test/java/japicmp/test/BasicTest.java @@ -0,0 +1,40 @@ +package japicmp.test; + +import japicmp.cmp.JarArchiveComparator; +import japicmp.model.JApiChangeStatus; +import japicmp.model.JApiClass; +import org.junit.Test; + +import java.io.File; +import java.util.List; + +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.notNullValue; +import static org.junit.Assert.assertThat; + +public class BasicTest { + + @Test + public void test() { + JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(); + List<JApiClass> jApiClasses = jarArchiveComparator.compare(getArchive("japicmp-test-v1.jar"), getArchive("japicmp-test-v2.jar")); + assertThat(jApiClasses.size(), is(2)); + assertThat(getJApiClass(jApiClasses, Removed.class.getName()), is(notNullValue())); + assertThat(getJApiClass(jApiClasses, Added.class.getName()), is(notNullValue())); + assertThat(getJApiClass(jApiClasses, Removed.class.getName()).getChangeStatus(), is(JApiChangeStatus.REMOVED)); + assertThat(getJApiClass(jApiClasses, Added.class.getName()).getChangeStatus(), is(JApiChangeStatus.NEW)); + } + + private File getArchive(String filename) { + return new File("target" + File.separator + filename); + } + + private JApiClass getJApiClass(List<JApiClass> jApiClasses, String fqn) { + for (JApiClass jApiClass : jApiClasses) { + if (jApiClass.getFullyQualifiedName().equals(fqn)) { + return jApiClass; + } + } + throw new IllegalArgumentException("No class found with name " + fqn + "."); + } +} diff --git a/japicmp-testbase/pom.xml b/japicmp-testbase/pom.xml new file mode 100644 index 0000000..b540cc7 --- /dev/null +++ b/japicmp-testbase/pom.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<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/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>japicmp</groupId> + <artifactId>japicmp-base</artifactId> + <version>0.0.1-SNAPSHOT</version> + </parent> + + <artifactId>japicmp-testbase</artifactId> + <packaging>pom</packaging> + + <modules> + <module>japicmp-test-v1</module> + <module>japicmp-test-v2</module> + <module>japicmp-test</module> + </modules> +</project> \ No newline at end of file diff --git a/japicmp/src/main/java/japicmp/JApiCmp.java b/japicmp/src/main/java/japicmp/JApiCmp.java index 70c861f..51496ab 100644 --- a/japicmp/src/main/java/japicmp/JApiCmp.java +++ b/japicmp/src/main/java/japicmp/JApiCmp.java @@ -35,10 +35,9 @@ public class JApiCmp { } private static Options parseCliOptions(String[] args) { - Options options = new Options(); try { CliParser cliParser = new CliParser(); - options = cliParser.parse(args); + return cliParser.parse(args); } catch (IllegalArgumentException e) { System.err.println(e.getMessage()); System.exit(-1); @@ -46,7 +45,7 @@ public class JApiCmp { System.err.println("Failed to parse command line options: " + e.getMessage()); System.exit(-1); } - return options; + return new Options(); } private static void verifyFilesExist(File oldArchive, File newArchive) { diff --git a/japicmp/src/main/java/japicmp/output/stdout/StdoutOutputGenerator.java b/japicmp/src/main/java/japicmp/output/stdout/StdoutOutputGenerator.java index cead423..e379095 100644 --- a/japicmp/src/main/java/japicmp/output/stdout/StdoutOutputGenerator.java +++ b/japicmp/src/main/java/japicmp/output/stdout/StdoutOutputGenerator.java @@ -17,7 +17,7 @@ public class StdoutOutputGenerator { OutputTransformer.removeUnchanged(jApiClasses); } StringBuilder sb = new StringBuilder(); - sb.append(String.format("Comparing %s with %s:\n", oldArchive.getAbsolutePath(), newArchive.getAbsolutePath())); + sb.append(String.format("Comparing %s with %s:%n", oldArchive.getAbsolutePath(), newArchive.getAbsolutePath())); for (JApiClass jApiClass : jApiClasses) { processClass(sb, jApiClass); processMethods(sb, jApiClass); diff --git a/japicmp/src/main/java/japicmp/util/StringArrayEnumeration.java b/japicmp/src/main/java/japicmp/util/StringArrayEnumeration.java index 82c7eb6..050f26c 100644 --- a/japicmp/src/main/java/japicmp/util/StringArrayEnumeration.java +++ b/japicmp/src/main/java/japicmp/util/StringArrayEnumeration.java @@ -1,5 +1,6 @@ package japicmp.util; +import java.util.Arrays; import java.util.Enumeration; import java.util.NoSuchElementException; @@ -8,7 +9,8 @@ public class StringArrayEnumeration implements Enumeration<String> { private int pos = 0; public StringArrayEnumeration(String[] array) { - this.array = array; + this.array = new String[array.length]; + System.arraycopy(array, 0, this.array, 0, array.length); } @Override diff --git a/pom.xml b/pom.xml index 701eb8e..3778e4e 100644 --- a/pom.xml +++ b/pom.xml @@ -17,6 +17,7 @@ <modules> <module>japicmp</module> + <module>japicmp-testbase</module> </modules> <dependencies>