bodewig 2003/11/21 04:39:31 Added: proposal/sandbox/dotnet build.xml proposal/sandbox/dotnet/src/etc/testcases dotnetexec.xml proposal/sandbox/dotnet/src/etc/testcases/src example.cs example2.cs proposal/sandbox/dotnet/src/main/org/apache/tools/ant/taskdefs/optional/dotnet DotNetExecTask.java antlib.xml proposal/sandbox/dotnet/src/testcases/org/apache/tools/ant/taskdefs/optional/dotnet DotNetExecTaskTest.java Log: A <dotnetexec> task Revision Changes Path 1.1 ant/proposal/sandbox/dotnet/build.xml Index: build.xml =================================================================== <project default="compile"> <target name="setup"> <property name="build" value="build"/> <property name="build.classes" value="${build}/classes"/> <property name="build.testclasses" value="${build}/test-classes"/> <property name="build.lib" value="${build}/lib"/> <property name="jarname" value="${build.lib}/dotnet.jar"/> <mkdir dir="${build.classes}"/> <mkdir dir="${build.testclasses}"/> <mkdir dir="${build.lib}"/> </target> <target name="compile" depends="setup"> <javac srcdir="src/main" destdir="${build.classes}" debug="true" /> </target> <target name="antlib" depends="compile"> <copy todir="${build.classes}"> <fileset dir="src/main" includes="**/antlib.xml"/> </copy> <jar destfile="${jarname}" basedir="${build.classes}" /> </target> <target name="setup-for-tests" depends="setup"> <ant antfile="../../../build.xml" target="test-jar" inheritall="false" /> </target> <target name="compile-tests" depends="setup-for-tests, antlib"> <javac srcdir="src/testcases" destdir="${build.testclasses}" debug="true" > <classpath> <pathelement location="${jarname}"/> <pathelement location="../../../build/lib/ant-testutil.jar"/> </classpath> </javac> </target> <target name="test" depends="compile-tests"> <junit printsummary="false" haltonfailure="false" failureproperty="tests.failed" > <classpath> <pathelement location="${jarname}"/> <pathelement location="../../../build/lib/ant-testutil.jar"/> <pathelement location="${build.testclasses}"/> </classpath> <batchtest> <fileset dir="src/testcases"/> </batchtest> <formatter type="plain" usefile="false"/> </junit> <fail if="tests.failed">At least one test has failed.</fail> </target> </project> 1.1 ant/proposal/sandbox/dotnet/src/etc/testcases/dotnetexec.xml Index: dotnetexec.xml =================================================================== <?xml version="1.0"?> <project name="dotnet" basedir="." default="testCSC" xmlns:dn="antlib:org.apache.tools.ant.taskdefs.optional.dotnet"> <property environment="env"/> <property name="build.dir" location="build"/> <property name="src.dir" location="src"/> <property name="out.csc" location="${src.dir}/out.cs"/> <property name="out.app" location="${build.dir}/out.exe"/> <property name="out.type" value="exe"/> <taskdef uri="antlib:org.apache.tools.ant.taskdefs.optional.dotnet" resource="org/apache/tools/ant/taskdefs/optional/dotnet/antlib.xml"> <classpath> <pathelement location="../../../build/lib/dotnet.jar"/> </classpath> </taskdef> <target name="probe_for_apps" > <condition property="csc.found"> <or> <available file="csc" filepath="${env.PATH}" /> <available file="csc.exe" filepath="${env.PATH}" /> <available file="csc.exe" filepath="${env.Path}" /> </or> </condition> <echo> csc.found=${csc.found}</echo> <!-- Mono C# compiler --> <condition property="mcs.found"> <available file="mcs" filepath="${env.PATH}" /> </condition> <echo> mcs.found=${mcs.found}</echo> <!-- any C# compiler --> <condition property="c#.found"> <or> <isset property="csc.found"/> <isset property="mcs.found"/> </or> </condition> </target> <target name="init" depends="probe_for_apps"> <mkdir dir="${build.dir}"/> <property name="testCSC.exe" location="${build.dir}/ExampleCsc.exe" /> </target> <target name="teardown"> <delete dir="${build.dir}"/> </target> <target name="validate_csc" depends="init"> <fail unless="c#.found">Needed C# compiler is missing</fail> </target> <target name="testCSC" depends="testCSC-Mono,testCSC-MS"> <available property="app.created" file="${testCSC.exe}"/> <fail unless="app.created">No app ${testCSC.exe} created</fail> <dn:dotnetexec executable="${testCSC.exe}" failonerror="true" /> <delete file="${testCSC.exe}"/> </target> <target name="testCSC-MS" depends="validate_csc" if="csc.found"> <csc destFile="${testCSC.exe}" targetType="exe" > </csc> </target> <target name="testCSC-Mono" depends="validate_csc" if="mcs.found"> <csc destFile="${testCSC.exe}" targetType="exe" executable="mcs" includedefaultreferences="true" > </csc> </target> </project> 1.1 ant/proposal/sandbox/dotnet/src/etc/testcases/src/example.cs Index: example.cs =================================================================== /* * The Apache Software License, Version 1.1 * * Copyright (c) 2001-2003 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "Ant" and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ using System; public class Example { public static void Main(String[] args) { Example2.echo(); } } 1.1 ant/proposal/sandbox/dotnet/src/etc/testcases/src/example2.cs Index: example2.cs =================================================================== /* * The Apache Software License, Version 1.1 * * Copyright (c) 2001-2003 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "Ant" and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ using System; /** * this is just here to create confusion */ public class Example2 { public int some_variable=3; public static void echo() { Console.WriteLine("hello, I look like Java, but I'm really .NET"); } } 1.1 ant/proposal/sandbox/dotnet/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/DotNetExecTask.java Index: DotNetExecTask.java =================================================================== /* * The Apache Software License, Version 1.1 * * Copyright (c) 2003 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "Ant" and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package org.apache.tools.ant.taskdefs.optional.dotnet; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.taskdefs.ExecTask; import org.apache.tools.ant.taskdefs.condition.Os; /** * Specialized <exec> that knows how to deal with Mono vs. Microsoft's * VM - and maybe Rotor at some point. */ public class DotNetExecTask extends ExecTask { /** * "Magic" VM argument for Microsoft's VM. */ private static final String MS_VM = "microsoft"; /** * The user supplied executable attribute. */ private String executable; /** * The .NET VM to use. * * <p>Defaults to Microsoft's on Windows and mono on any other * platform.</p> */ private String vm = Os.isFamily("windows") ? MS_VM : "mono"; /** * Empty Constructor. */ public DotNetExecTask() { super(); } /** * Set the name of the executable program. * @param value the name of the executable program */ public void setExecutable(String value) { this.executable = value; } /** * Set the name of the executable for the virtual machine or the * magic name "microsoft" which implies that we can invoke the * executable directly. * * @param value the name of the executable for the virtual machine */ public void setVm(String value) { this.vm = value; } /** * Do the work. * * @throws BuildException if executable is empty or <exec> * throws an exception. */ public void execute() throws BuildException { if (executable == null) { throw new BuildException("The executable attribute is required"); } setupCommandline(); super.execute(); } /** * If the inherited Commandline doesn't know about the executable * yet, set it and deal with the vm attribute. * * <p>The inherited Commandline may know the executable already if * this task instance is getting reused.</p> */ protected void setupCommandline() { if (cmdl.getExecutable() == null) { if (vm.equals(MS_VM)) { // can invoke executable directly super.setExecutable(executable); } else { super.setExecutable(vm); cmdl.createArgument(true) .setValue(resolveExecutable(executable)); } } } } 1.1 ant/proposal/sandbox/dotnet/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/antlib.xml Index: antlib.xml =================================================================== <antlib> <taskdef name="dotnetexec" classname="org.apache.tools.ant.taskdefs.optional.dotnet.DotNetExecTask" /> </antlib> 1.1 ant/proposal/sandbox/dotnet/src/testcases/org/apache/tools/ant/taskdefs/optional/dotnet/DotNetExecTaskTest.java Index: DotNetExecTaskTest.java =================================================================== /* * The Apache Software License, Version 1.1 * * Copyright (c) 2002-2003 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "Ant" and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package org.apache.tools.ant.taskdefs.optional.dotnet; import org.apache.tools.ant.BuildFileTest; /** * Tests the DotNetExecTask task, based off Ant's DotnetTest. * * @author steve loughran */ public class DotNetExecTaskTest extends BuildFileTest { /** * Description of the Field */ private final static String TASKDEFS_DIR = "src/etc/testcases/"; /** * Constructor * * @param name testname */ public DotNetExecTaskTest(String name) { super(name); } /** * The JUnit setup method */ public void setUp() { configureProject(TASKDEFS_DIR + "dotnetexec.xml"); } /** * The teardown method for JUnit */ public void tearDown() { executeTarget("teardown"); } /** * A unit test for JUnit */ public void testCSC() throws Exception { executeTarget("testCSC"); } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]