Author: mcconnell Date: Sun May 23 09:57:36 2004 New Revision: 20260 Added: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/TestTask.java Modified: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/antlib.xml avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/HomeTask.java avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/PrepareTask.java avalon/trunk/tools/project/src/test/projects/gizmo/build.xml avalon/trunk/tools/project/src/test/projects/gizmo/src/test/org/apache/avalon/gizmo/test/GizmoTestCase.java Log:
Modified: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/antlib.xml ============================================================================== --- avalon/trunk/tools/project/src/main/org/apache/avalon/tools/antlib.xml (original) +++ avalon/trunk/tools/project/src/main/org/apache/avalon/tools/antlib.xml Sun May 23 09:57:36 2004 @@ -5,5 +5,6 @@ <taskdef name="prepare" classname="org.apache.avalon.tools.tasks.PrepareTask"/> <taskdef name="javac" classname="org.apache.avalon.tools.tasks.JavacTask"/> <taskdef name="jar" classname="org.apache.avalon.tools.tasks.JarTask"/> + <taskdef name="test" classname="org.apache.avalon.tools.tasks.TestTask"/> <taskdef name="install" classname="org.apache.avalon.tools.tasks.InstallTask"/> </antlib> Modified: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/HomeTask.java ============================================================================== --- avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/HomeTask.java (original) +++ avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/HomeTask.java Sun May 23 09:57:36 2004 @@ -75,19 +75,4 @@ mkdir.init(); mkdir.execute(); } - - protected void delete( File file ) - { - delete( file, true ); - } - - protected void delete( File file, boolean verbose ) - { - Delete delete = (Delete) getProject().createTask( "delete" ); - delete.setFile( file ); - delete.setVerbose( verbose ); - delete.setQuiet( true ); - delete.init(); - delete.execute(); - } } Modified: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/PrepareTask.java ============================================================================== --- avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/PrepareTask.java (original) +++ avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/PrepareTask.java Sun May 23 09:57:36 2004 @@ -43,8 +43,13 @@ public static String TARGET = "target"; public static String TARGET_SRC = TARGET + "/src"; public static String TARGET_SRC_MAIN = TARGET_SRC + "/main"; + public static String TARGET_SRC_TEST = TARGET_SRC + "/test"; + public static final String SRC_KEY = "avalon.src"; public static final String TARGET_KEY = "avalon.target"; + public static final String TARGET_SRC_KEY = "avalon.target.src"; + public static final String TARGET_SRC_MAIN_KEY = "avalon.target.src.main"; + public static final String TARGET_SRC_TEST_KEY = "avalon.target.src.test"; public static File getTargetDirectory( Project project ) { @@ -54,10 +59,11 @@ public void init() throws BuildException { - setProjectProperty( "avalon.src", SRC ); - setProjectProperty( "avalon.target", TARGET ); - setProjectProperty( "avalon.target.src", TARGET_SRC ); - setProjectProperty( "avalon.target.src.main", TARGET_SRC_MAIN ); + setProjectProperty( SRC_KEY, SRC ); + setProjectProperty( TARGET_KEY, TARGET ); + setProjectProperty( TARGET_SRC_KEY, TARGET_SRC ); + setProjectProperty( TARGET_SRC_MAIN_KEY, TARGET_SRC_MAIN ); + setProjectProperty( TARGET_SRC_TEST_KEY, TARGET_SRC_TEST ); } public void execute() throws BuildException Added: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/TestTask.java ============================================================================== --- (empty file) +++ avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/TestTask.java Sun May 23 09:57:36 2004 @@ -0,0 +1,241 @@ +/* + * Copyright 2004 Apache Software Foundation + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. + * + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.avalon.tools.tasks; + +import java.io.File; +import java.io.IOException; + +import org.apache.tools.ant.Task; +import org.apache.tools.ant.Project; +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.taskdefs.Copy; +import org.apache.tools.ant.taskdefs.Javac; +import org.apache.tools.ant.taskdefs.optional.junit.FormatterElement; +import org.apache.tools.ant.taskdefs.optional.junit.JUnitTask; +import org.apache.tools.ant.types.Environment; +import org.apache.tools.ant.types.FileSet; +import org.apache.tools.ant.types.Path; + +import org.apache.avalon.tools.home.Home; +import org.apache.avalon.tools.project.Definition; + +/** + * Load a goal. + * + * @author <a href="mailto:dev@avalon.apache.org">Avalon Development Team</a> + * @version $Revision: 1.2 $ $Date: 2004/03/17 10:30:09 $ + */ +public class TestTask extends HomeTask +{ + public static final String TEST_KEY = "avalon.target.test"; + public static final String TEST_VALUE = + PrepareTask.TARGET + "/test"; + + public static final String TEST_CLASSES_KEY = "avalon.target.test.classes"; + public static final String TEST_CLASSES_VALUE = + TEST_VALUE + "/classes"; + + public static final String TEST_ENV_KEY = "avalon.target.test.env"; + public static final String TEST_ENV_VALUE = + TEST_VALUE + "/env"; + + public static final String TEST_TMP_KEY = "avalon.target.test.temp"; + public static final String TEST_TMP_VALUE = + TEST_VALUE + "/temp"; + + public static final String DEBUG_KEY = "test.compile.debug"; + public static final boolean DEBUG_FLAG = true; + + public static final String FORK_KEY = "test.compile.fork"; + public static final boolean FORK_FLAG = false; + + public static File getTargetSrcTestDirectory( Project project ) + { + String src = project.getProperty( PrepareTask.TARGET_SRC_TEST_KEY ); + return new File( project.getBaseDir(), src ); + } + + public static File getTargetTestClassesDirectory( Project project ) + { + String classes = project.getProperty( TEST_CLASSES_KEY ); + return new File( project.getBaseDir(), classes ); + } + + public static File getTargetTestEnvDirectory( Project project ) + { + String env = project.getProperty( TEST_ENV_KEY ); + return new File( project.getBaseDir(), env ); + } + + public static File getTargetTestTempDirectory( Project project ) + { + String temp = project.getProperty( TEST_TMP_KEY ); + return new File( project.getBaseDir(), temp ); + } + + public void init() throws BuildException + { + super.init(); + setProjectProperty( TEST_CLASSES_KEY, TEST_CLASSES_VALUE ); + setProjectProperty( TEST_ENV_KEY, TEST_ENV_VALUE ); + setProjectProperty( TEST_TMP_KEY, TEST_TMP_VALUE ); + setProjectProperty( DEBUG_KEY, "" + DEBUG_FLAG ); + setProjectProperty( FORK_KEY, "" + FORK_FLAG ); + } + + public void execute() throws BuildException + { + File src = getTargetSrcTestDirectory(); + if( src.exists() ) + { + File classes = getTargetTestClassesDirectory(); + if( !classes.exists() ) + { + log( "creating target test classes directory" ); + createDirectory( classes ); + } + + Path classpath = + getHome().getRepository().createPath( + getProject(), getDefinition() ); + + // + // add the project jar to the classpath for the compilation + // of the test classes and compile the test classes into the + // target/test-classes directory + // + + File jar = JarTask.getJarFile( getProject(), getDefinition() ); + classpath.createPathElement().setLocation( jar ); + compile( src, classes, classpath ); + classpath.createPathElement().setLocation( classes ); + test( classpath ); + } + } + + private void compile( File sources, File classes, Path classpath ) + { + File basedir = getProject().getBaseDir(); + Javac javac = (Javac) getProject().createTask( "javac" ); + Path src = javac.createSrc(); + Path.PathElement element = src.createPathElement(); + element.setLocation( sources ); + javac.setDestdir( classes ); + javac.setDebug( getDebugProperty() ); + javac.setFork( getForkProperty() ); + javac.setClasspath( classpath ); + javac.init(); + javac.execute(); + } + + private void test( Path classpath ) + { + FileSet fileset = new FileSet(); + fileset.setDir( getTargetSrcTestDirectory() ); + fileset.createInclude().setName( "**/*TestCase.java" ); + fileset.createExclude().setName( "**/Abstract*.java" ); + + File base = getTargetTestTempDirectory(); + createDirectory( base ); + JUnitTask junit = (JUnitTask) getProject().createTask( "junit" ); + junit.setFork( getForkProperty() ); + + JUnitTask.SummaryAttribute summary = new JUnitTask.SummaryAttribute(); + summary.setValue( "on" ); + junit.setPrintsummary( summary ); + junit.setHaltonfailure( true ); + junit.setHaltonerror( true ); + junit.setErrorProperty( "test-errors" ); + junit.setFailureProperty( "test-failures" ); + if( FORK_FLAG ) + { + junit.setFork( true ); + junit.setDir( base ); + } + junit.setShowOutput( true ); + junit.setTempdir( base ); + junit.setReloading( true ); + junit.setFiltertrace( true ); + junit.createClasspath().add( classpath ); + junit.createBatchTest().addFileSet( fileset ); + + FormatterElement plainFormatter = new FormatterElement(); + FormatterElement.TypeAttribute plain = new FormatterElement.TypeAttribute(); + plain.setValue( "plain" ); + plainFormatter.setType( plain ); + junit.addFormatter( plainFormatter ); + + FormatterElement xmlFormatter = new FormatterElement(); + FormatterElement.TypeAttribute xml = new FormatterElement.TypeAttribute(); + xml.setValue( "xml" ); + xmlFormatter.setType( xml ); + junit.addFormatter( xmlFormatter ); + + Environment.Variable basedir = new Environment.Variable(); + basedir.setKey( "basedir" ); + basedir.setValue( getTargetTestEnvDirectory().toString() ); + + junit.addSysproperty( basedir ); + + junit.init(); + junit.execute(); + } + + private File getTargetSrcTestDirectory() + { + return getTargetSrcTestDirectory( getProject() ); + } + + private File getTargetTestClassesDirectory() + { + return getTargetTestClassesDirectory( getProject() ); + } + + private File getTargetTestEnvDirectory() + { + return getTargetTestEnvDirectory( getProject() ); + } + + private File getTargetTestTempDirectory() + { + return getTargetTestTempDirectory( getProject() ); + } + + private boolean getDebugProperty() + { + return getBooleanProperty( DEBUG_KEY, DEBUG_FLAG ); + } + + private boolean getForkProperty() + { + return getBooleanProperty( FORK_KEY, FORK_FLAG ); + } + + private boolean getBooleanProperty( String key, boolean fallback ) + { + String value = getProject().getProperty( key ); + if( null == value ) + { + return fallback; + } + else + { + return getProject().toBoolean( value ); + } + } +} Modified: avalon/trunk/tools/project/src/test/projects/gizmo/build.xml ============================================================================== --- avalon/trunk/tools/project/src/test/projects/gizmo/build.xml (original) +++ avalon/trunk/tools/project/src/test/projects/gizmo/build.xml Sun May 23 09:57:36 2004 @@ -1,17 +1,13 @@ -<project name="gizmo" default="install" basedir="." +<project name="gizmo" default="" basedir="." xmlns:x="antlib:org.apache.avalon.tools"> <x:project index="../../index.xml"/> - <target name="build"> - <x:prepare/> - <x:javac/> - <x:jar/> - </target> - - <target name="install" depends="build"> - <x:install/> - </target> + <x:prepare/> + <x:javac/> + <x:jar/> + <x:test/> + <x:install/> </project> Modified: avalon/trunk/tools/project/src/test/projects/gizmo/src/test/org/apache/avalon/gizmo/test/GizmoTestCase.java ============================================================================== --- avalon/trunk/tools/project/src/test/projects/gizmo/src/test/org/apache/avalon/gizmo/test/GizmoTestCase.java (original) +++ avalon/trunk/tools/project/src/test/projects/gizmo/src/test/org/apache/avalon/gizmo/test/GizmoTestCase.java Sun May 23 09:57:36 2004 @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.avalon.composition.data.test; +package org.apache.avalon.gizmo.test; import junit.framework.TestCase; import org.apache.avalon.gizmo.Gizmo; --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]