blob: 3c658294a2904d8219a119ba162694315b444a3e [file] [log] [blame]
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.util.jar.*;
import java.util.regex.*;
import org.codehaus.plexus.util.*;
try
{
File build;
File mavenBuild;
File mavenBuildProperties;
// Webapp project
build = new File( basedir, "build.xml" );
if ( build.isDirectory() || !build.exists() )
{
System.err.println( "The file '" + build.getAbsolutePath() + "' is a directory or doesn't exist." );
return false;
}
mavenBuild = new File( basedir, "maven-build.xml" );
if ( mavenBuild.isDirectory() || !mavenBuild.exists() )
{
System.err.println( "The file '" + mavenBuild.getAbsolutePath() + "' is a directory or doesn't exist." );
return false;
}
String xml = FileUtils.fileRead( mavenBuild, "UTF-8" );
Matcher m0 = Pattern.compile( "<copy\\s+file\\s*=\\s*\\Q\"${maven.repo.local}/log4j/log4j/1.2.14/log4j-1.2.14.jar\"\\E"
+ "\\s*todir\\s*=\\s*\\Q\"${maven.build.dir}/${maven.build.finalName}/WEB-INF/lib\"\\E" ).matcher( xml );
System.out.println( "Checking for existence of <copy> from ${maven.repo.local} for WAR libs" );
if ( !m0.find() )
{
System.err.println( "FAILED!\n" + xml );
return false;
}
mavenBuildProperties = new File( basedir, "maven-build.properties" );
if ( mavenBuildProperties.isDirectory() || !mavenBuildProperties.exists() )
{
System.err.println( "The file '" + mavenBuildProperties.getAbsolutePath() + "' is a directory or doesn't exist." );
return false;
}
warFile = new File( basedir, "target/ant-webapp-test.war" );
System.out.println( "Checking for existence of WAR file: " + warFile );
if ( !warFile.isFile() )
{
System.err.println( "FAILED!" );
return false;
}
JarFile war = new JarFile( warFile );
String[] expected = {
"index.jsp",
"WEB-INF/web.xml",
"WEB-INF/test.txt",
"WEB-INF/classes/test.properties",
"WEB-INF/classes/org/MyClass.class",
"WEB-INF/lib/log4j-1.2.14.jar",
"WEB-INF/lib/maven-model-2.0.6.jar",
"WEB-INF/lib/plexus-utils-1.4.1.jar",
};
for ( String entry : expected )
{
System.out.println( "Checking for existence of WAR file entry: " + entry );
if ( war.getEntry( entry ) == null )
{
System.err.println( "FAILED!" );
return false;
}
System.out.println( "Checking for uniqueness of WAR file entry: " + entry );
int count = 0;
for ( Enumeration en = war.entries(); en.hasMoreElements(); )
{
JarEntry je = (JarEntry) en.nextElement();
if ( entry.equals( je.getName() ) )
{
count++;
}
}
if ( count != 1 )
{
System.err.println( "FAILED! " + count );
return false;
}
}
String[] unexpected = {
"org/MyClass.class",
};
for ( String entry : unexpected )
{
System.out.println( "Checking for absence of WAR file entry: " + entry );
if ( war.getEntry( entry ) != null )
{
System.err.println( "FAILED!" );
return false;
}
}
war.close();
}
catch( Throwable t )
{
t.printStackTrace();
return false;
}
return true;