Author: dantran Date: Wed Dec 30 07:35:31 2009 New Revision: 894551 URL: http://svn.apache.org/viewvc?rev=894551&view=rev Log: Add test for MDEP-143
Modified: maven/shared/trunk/maven-dependency-analyzer/src/test/java/org/apache/maven/shared/dependency/analyzer/DefaultClassAnalyzerTest.java Modified: maven/shared/trunk/maven-dependency-analyzer/src/test/java/org/apache/maven/shared/dependency/analyzer/DefaultClassAnalyzerTest.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-analyzer/src/test/java/org/apache/maven/shared/dependency/analyzer/DefaultClassAnalyzerTest.java?rev=894551&r1=894550&r2=894551&view=diff ============================================================================== --- maven/shared/trunk/maven-dependency-analyzer/src/test/java/org/apache/maven/shared/dependency/analyzer/DefaultClassAnalyzerTest.java (original) +++ maven/shared/trunk/maven-dependency-analyzer/src/test/java/org/apache/maven/shared/dependency/analyzer/DefaultClassAnalyzerTest.java Wed Dec 30 07:35:31 2009 @@ -19,13 +19,18 @@ * under the License. */ +import java.io.ByteArrayOutputStream; import java.io.File; +import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.HashSet; import java.util.Set; import java.util.jar.JarOutputStream; +import org.codehaus.plexus.util.FileUtils; +import org.codehaus.plexus.util.IOUtil; + /** * Tests <code>DefaultClassAnalyzer</code>. * @@ -54,4 +59,38 @@ assertEquals( expectedClasses, actualClasses ); } + + public void testAnalyzeBadJar() throws IOException + { + //to reproduce MDEP-143 + File file = createJar(); + JarOutputStream out = new JarOutputStream( new FileOutputStream( file ) ); + writeEntry( out, "a/b/c.class", "class a.b.c" ); + writeEntry( out, "x/y/z.class", "class x.y.z" ); + out.close(); + + //corrupt the jar file by alter its contents + FileInputStream fis = new FileInputStream( file ); + ByteArrayOutputStream baos = new ByteArrayOutputStream( 100 ); + IOUtil.copy( fis, baos, 100 ); + fis.close(); + byte [] ba = baos.toByteArray(); + ba[50] = 1; + FileOutputStream fos = new FileOutputStream( file ); + IOUtil.copy( ba, fos, 100 ); + fos.close(); + + DefaultClassAnalyzer analyzer = new DefaultClassAnalyzer(); + + try + { + analyzer.analyze( file.toURI().toURL() ); + fail( "Exception expected" ); + } + catch ( IOException e ) + { + //ideally we need to inspect the exception for the desired message when MDEP-143 is fixed + } + + } }