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 &lt;exec&gt;
       * 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]

Reply via email to