import java.io.*;
import java.util.jar.*;

try
{
    File f = new File( basedir, "target/massembly-375-1-test.jar" );

    System.out.println( "Examining assembly file: " + f );
    System.out.flush();

    if ( !f.isFile() )
    {
        System.out.println( "Target file: " + f + " doesn't exist!" );
        System.out.flush();
        return false;
    }

    JarFile jf = new JarFile( f );

    JarEntry je = jf.getEntry( "/test.txt" );
    if ( je != null )
    {
        System.out.println( "Entry: /test.txt should NOT exist." );
        System.out.flush();
        return false;
    }

    je = jf.getEntry( "test.txt" );
    if ( je == null )
    {
        System.out.println( "Entry: test.txt SHOULD exist." );
        System.out.flush();
        return false;
    }

    System.out.println( "VERIFICATION PASSED." );
    System.out.flush();
    return true;
}
catch ( Throwable t )
{
    t.printStackTrace( System.out );
    System.out.flush();
    return false;
}
