For this we need to create a classes directory inside a temporary directory and inside of this a "inittest" directory. When the test has been finished all temporary directories will be removed together with the files underneath these directories.
In this temporary directory we copy over the ccl.jar file to classes/ccl9.26/lib/ccl.jar. We also need to be able to alter the classpath so that this jar file is the first item in the classpath init uses.
The output we expect from Init.getApplicationPath() is the path to the temporary file (.../classes/ccl9.26/). The question is what input we have to provide for this test.
private void _testGetApplicationPath( String sRCSHeader_ ) throws IOException { String sTempDir = FileUtil.createTempDir(); String sAppDir = FileUtil.concatPath( sTempDir , "classes" + File.separator + "ccl9.26" ); String sTempJar = FileUtil.concatPath( sAppDir , "lib" ); FileUtil.md( sTempJar ); // locate and copy ccl.jar String sOrigJar = _init.getApplicationPath(); sOrigJar = FileUtil.concatPath( sOrigJar , "lib" + File.separator + "ccl.jar" ); sTempJar = sTempJar + File.separator + "inittest.jar"; FileUtil.copy( sOrigJar, sTempJar ); // alter classpath temporarily String sOrigClasspath = System.getProperty( "java.class.path" ); String sTempClasspath = sTempJar + File.pathSeparator + sOrigClasspath; System.setProperty( "java.class.path", sTempClasspath ); // create new Init object Init init = new Init( this, null, sRCSHeader_ ); assert( init.getApplicationName().equals( "InitTest" ) , "Application name should be 'Inittest' but is '" + init.getApplicationName() + "'!" ); assert( FileUtil.equalsPath( init.getApplicationPath() , sAppDir ) , "Application path should be '" + sAppDir + "' but is '" + init.getApplicationPath() + "'!" ); System.setProperty( "java.class.path", sOrigClasspath ); FileUtil.deleteRecursively( sTempDir ); }
ccl.util.test.InitTest: | ../src/ccl/util/test/InitTest.java |
Clemens' Java Page: | http://www.kclee.com/clemens/java/ |
Clemens' Home Page: | http://www.kclee.com/clemens/ |