diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/files/ant/test-build.xml | 149 | ||||
-rw-r--r-- | test/files/ant/test.check | 15 | ||||
-rw-r--r-- | test/files/ant/test.scala | 6 | ||||
-rwxr-xr-x | test/scalatest | 24 |
4 files changed, 193 insertions, 1 deletions
diff --git a/test/files/ant/test-build.xml b/test/files/ant/test-build.xml new file mode 100644 index 0000000000..3e43678144 --- /dev/null +++ b/test/files/ant/test-build.xml @@ -0,0 +1,149 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- $Id: $ --> + +<project name="test" default="build" basedir="."> + + <!-- Prevents system classpath from being used --> + <property name="build.sysclasspath" value="ignore"/> + +<!-- =========================================================================== +PROPERTIES +============================================================================ --> + + <property name="source.dir" value="${basedir}"/> + + <property file="./build.properties"/> + + <condition property="quick.binary"> + <equals arg1="${binary}" arg2="quick"/> + </condition> + <condition property="latest.binary"> + <equals arg1="${binary}" arg2="latest"/> + </condition> + <condition property="installed.binary"> + <equals arg1="${binary}" arg2="installed"/> + </condition> + + <fail message="Property 'binary' must be set to either 'quick', 'lastest' or 'installed'."> + <condition><not><or> + <isset property="quick.binary"/> + <isset property="latest.binary"/> + <isset property="installed.binary"/> + </or></not></condition> + </fail> + <echo level="verbose" message="binary=${binary}"/> + + <property name="build.dir" value="${java.io.tmpdir}/classes-${user.name}"/> + +<!-- =========================================================================== +INITIALISATION +============================================================================ --> + + <target name="quick.init" if="quick.binary"> + <property name="quick.dir" value="../../../build/quick"/> + <available file="${quick.dir}" property="quick.present"/> + <fail + message="Quick build could not be found." + unless="quick.present" + /> + <property name="scala.dir" value="${quick.dir}"/> + <property name="scala-library.lib" value="${scala.dir}/lib/library/"/> + <property name="scala-compiler.lib" value="${scala.dir}/lib/compiler/"/> + <property name="fjbg.lib" value="${scala.dir}/lib/fjbg.jar"/> + </target> + + <target name="latest.init" if="latest.binary"> + <property name="latest.dir" value="../../../dists/latest"/> + <available file="${latest.dir}" property="latest.present"/> + <fail + message="Latest build could not be found." + unless="latest.present" + /> + <property name="scala.dir" value="${latest.dir}"/> + <property name="scala-library.lib" value="${scala.dir}/lib/scala-library.jar"/> + <property name="scala-compiler.lib" value="${scala.dir}/lib/scala-compiler.jar"/> + <property name="fjbg.lib" value=""/> + </target> + + <target name="installed.init" if="installed.binary"> + <property name="installed.dir" value="/home/linuxsoft/apps/scala/share/scala"/> + <available file="${installed.dir}" property="installed.present"/> + <fail + message="Installed distribution could not be found." + unless="installed.present" + /> + <property name="scala.dir" value="${installed.dir}"/> + <property name="scala-library.lib" value="${scala.dir}/lib/scala-library.jar"/> + <property name="scala-compiler.lib" value="${scala.dir}/lib/scala-compiler.jar"/> + <property name="fjbg.lib" value=""/> + </target> + + <target name="init" depends="quick.init, latest.init, installed.init"> + <echo level="verbose" message="scala.dir=${scala.dir}"/> + <fail message="Scala library '${scala-library.lib}' is not available"> + <condition><not><and> + <available classname="scala.Predef" + classpath="${scala-library.lib}"/> + <available classname="scala.List" + classpath="${scala-library.lib}"/> + <available classname="scala.runtime.ObjectRef" + classpath="${scala-library.lib}"/> + </and></not></condition> + </fail> + <fail message="Scala library '${scala-compiler.lib}' is not available"> + <condition><not><and> + <available classname="scala.tools.nsc.Main" + classpath="${scala-compiler.lib}"/> + <available classname="scala.tools.util.StringOps" + classpath="${scala-compiler.lib}"/> + </and></not></condition> + </fail> + <path id="scala.classpath"> + <pathelement location="${scala-library.lib}"/> + <pathelement location="${scala-compiler.lib}"/> + <pathelement location="${fjbg.lib}"/> <!-- only present for 'quick' --> + </path> + <taskdef resource="scala/tools/ant/antlib.xml"> + <classpath> + <path refid="scala.classpath"/> + </classpath> + </taskdef> + <path id="build.classpath"> + <!--<pathelement location="${scala-actors.lib}"/>--> + <pathelement location="${scala-library.lib}"/> + <pathelement location="${build.dir}"/> + </path> + </target> + +<!-- =========================================================================== +BUILD +============================================================================ --> + + <target name="build" depends="init"> + <echo level="verbose" message="ouput.dir=${build.dir}"/> + <mkdir dir="${build.dir}"/> + <scalac + srcdir="${source.dir}" + includes="**/*.scala" + destdir="${build.dir}" + classpathref="build.classpath" + /> + </target> + +<!-- =========================================================================== +CLEAN +============================================================================ --> + + <macrodef name="remove"> + <attribute name="dir"/> + <sequential> + <delete dir="@{dir}" includeemptydirs="yes" quiet="yes" failonerror="no"/> + </sequential> + </macrodef> + + <target name="clean"> + <remove dir="${build.dir}"/> + </target> + +</project> + diff --git a/test/files/ant/test.check b/test/files/ant/test.check new file mode 100644 index 0000000000..1c8d4552b5 --- /dev/null +++ b/test/files/ant/test.check @@ -0,0 +1,15 @@ +Buildfile: /home/michelou/projects/scala-installer/dependencies/scala/test/files/ant/test-build.xml + +quick.init: + +latest.init: + +installed.init: + +init: + +build: + [scalac] Compiling 1 source file to /tmp/classes-michelou + +BUILD SUCCESSFUL +Total time: 3 seconds diff --git a/test/files/ant/test.scala b/test/files/ant/test.scala new file mode 100644 index 0000000000..47131daac6 --- /dev/null +++ b/test/files/ant/test.scala @@ -0,0 +1,6 @@ +package test + +object Main { + def main(args: Array[String]): Unit = + Console.println(args.toList) +} diff --git a/test/scalatest b/test/scalatest index e8290df57e..2382905705 100755 --- a/test/scalatest +++ b/test/scalatest @@ -151,6 +151,7 @@ test_print_help() { echo "--neg next files test a compilation failure"; echo "--msil next files test the .NET backend"; echo "--script next files test Scala embedded in scripts"; + echo "--ant next files test the Ant tasks"; echo "--quick use the 'quick' build instead of distribution"; echo '--installed use the installed programs on $PATH' echo "--no-run run no test, use results of last run"; @@ -276,6 +277,18 @@ test_run_script() { PATH="$BIN_DIR:$PATH" "$srcbase.scala" `cat $argsfile` } +# Tests the Scala Ant task +test_run_ant() { + if [ "$BIN_DIR" = "" ]; then BINARY=installed + elif [ "$BIN_DIR" = "$QUICK" ]; then BINARY=quick + else BINARY=latest + fi; + testname=`basename "$srcbase"`; + buildfile=`get_os_filename "$srcdir/$testname-build.xml"`; + rm -rf "$dstbase".obj && + $ANT -f "$buildfile" -Dbinary "$BINARY" -D=output.dir "$os_dstbase".obj && + rm -rf "$dstbase".obj; +} # Checks the specified test. test_check_test() { @@ -393,9 +406,11 @@ test_check_all() { test_check_kind "Testing compiler (on files whose compilation should fail)" \ "neg" $FILES_NEG; test_check_kind "Testing .NET backend" \ - "msil" $FILES_MSIL; + "msil" $FILES_MSIL; test_check_kind "Testing Scala embedded in script files" \ "script" $FILES_SCRIPT; + test_check_kind "Testing Scala Ant tasks" \ + "ant" $FILES_ANT; } @@ -422,6 +437,7 @@ test_add_file() { neg ) FILES_NEG="$FILES_NEG $1"; return;; msil ) FILES_MSIL="$FILES_MSIL $1"; return;; script ) FILES_SCRIPT="$FILES_SCRIPT $1"; return;; + ant ) FILES_ANT="$FILES_ANT $1"; return;; * ) abort "unknown test type \`$TEST_TYPE'";; esac; case "$1" in @@ -508,6 +524,7 @@ FILES_NEG=""; FILES_MSIL=""; FILES_SCRIPT=""; FILES_DIS=""; +FILES_ANT=""; QUICK="$PREFIX/build/quick/bin" QUICK_LIB="$PREFIX/build/quick/lib/library" @@ -552,6 +569,7 @@ while [ $# -gt 0 ]; do --neg ) TEST_TYPE="neg"; shift 1;; --msil ) TEST_TYPE="msil"; shift 1;; --script ) TEST_TYPE="script"; shift 1;; + --ant ) TEST_TYPE="ant"; shift 1;; --quick ) BIN_DIR="$QUICK/"; SCALA_LIB=$QUICK_LIB; shift 1;; --installed ) BIN_DIR=""; shift 1;; --no-run ) NORUN="true"; shift 1;; @@ -612,11 +630,15 @@ if [ "$TEST_ALL" = "true" ]; then case "$TEST_TYPE" in auto | script ) FILES_SCRIPT="$FILES_SCRIPT $SRCDIR/script";; esac; + case "$TEST_TYPE" in + ant ) FILES_ANT="$FILES_ANT $SRCDIR/ant";; + esac; fi; SCALA="${BIN_DIR}scala"; SCALAC="${BIN_DIR}scalac -encoding iso-8859-1"; SCALAP="scalap"; +ANT="ant"; if [ -n "$OBJDIR" ]; then if [ -d "$OBJDIR" ] || mkdir -p "$OBJDIR"; then |