diff options
-rwxr-xr-x | bin/scalanstest | 680 |
1 files changed, 0 insertions, 680 deletions
diff --git a/bin/scalanstest b/bin/scalanstest deleted file mode 100755 index c8645e4e62..0000000000 --- a/bin/scalanstest +++ /dev/null @@ -1,680 +0,0 @@ -#!/bin/sh -############################################################################## -# __ # -# ________ ___ / / ___ Scala Tools Launch Script # -# / __/ __// _ | / / / _ | (c) 2002-2005, LAMP/EPFL # -# __\ \/ /__/ __ |/ /__/ __ | # -# /____/\___/_/ |_/____/_/ | | # -# |/ # -############################################################################## - -# $Id$ - -############################################################################## -# Configuration - -# The configure function contains all the configurable variables of -# this script. Each of these variables may be overridden by defining -# an environment variable with the same but where the "default_" has -# been replaced by "SCALA_". For example, to start scalaint with a big -# initial heap size, one may run the following command: -# -# env SCALA_SCALA_ARGS=-Xms1024m scalaint". -# -# These variables must use the Unix form for paths and path lists -# (i.e. use '/' as file separator and ':' as path separator). There -# are two exceptions: JAVA_ARGS and SCALA_ARGS which must use the -# paltform-specific form. -# -# The following environment variables are also read by this script: -# -# - SCALA_CLASSPATH: if defined, it is used as the default classpath -# by all Scala tools. -# -# - CLASSPATH: if defined and SCALA_CLASSPATH is undefined, it is used -# as the default classpath by all Scala tools. -# -# - SCALA_SOURCEPATH: if defined, it is used as the default sourcepath -# by all Scala tools. -# -# - SCALA_BOOTCLASSPATH: if defined, it is used as the default -# bootclasspath by all Scala tools. -# -# - SCALA_EXTDIRS: if defined, it is used as the default extdirs by -# all Scala tools. -# -# These variables must use the platform-specific form for paths and -# path lists. - -configure() { - - # Location of the Scala library sources. - default_LIBRARY_SOURCES="$PREFIX/sources"; - - # Location of the Scala library. - default_LIBRARY_CLASSES="$PREFIX/build/nslib"; - - # Location of the Scala tools library. - default_TOOLS_CLASSES="$PREFIX/build/nslib"; - - # Location of the FJBG library. - default_FJBG_CLASSES="/home/linuxsoft/apps/fjbg/jars/fjbg.jar"; - - # Location of the MSIL library. - default_MSIL_CLASSES="/home/linuxsoft/apps/msil/msil.jar"; - - # Command to start the Java VM. - default_JAVA_CMD="java"; - - # Additional arguments to pass to the Java VM. - default_JAVA_ARGS="-enableassertions"; - - # Command to start the Scala VM. - default_SCALA_CMD="$PREFIX/bin/ns"; - - # Additional arguments to pass to the Scala VM. - default_SCALA_ARGS="-enableassertions"; - - # Command to start subprocesses. This is mainly for debugging - # purposes. For example, one may display the Java command that is - # started by "scala", by running "env SCALA_EXEC=echo scala". - default_EXEC="exec"; - -} - -############################################################################## -# Error functions - -# Prints a warning message on stderr. -warning() { - echo "$0: warning:" "$@" 1>&2; -} - -# Prints an error message on stderr. -error() { - echo "$0:" "$@" 1>&2; -} - -# Prints an error message on stderr and exits with a non-zero status. -abort() { - error "$@"; - exit 1; -} - -############################################################################## -# Printing functions - -# Initializes the printf functions -printf_initialization() { - case "$1" in - many ) - printf_font_outline="printf \\033[1;39m"; - printf_font_success="printf \\033[1;32m"; - printf_font_failure="printf \\033[1;31m"; - printf_font_warning="printf \\033[1;33m"; - printf_font_default="printf \\033[0;39m"; - ;; - some ) - printf_font_outline="printf \\033[1m"; - printf_font_success="printf \\033[0m"; - printf_font_failure="printf \\033[1m"; - printf_font_warning="printf \\033[1m"; - printf_font_default="printf \\033[0m"; - ;; - none ) - printf_font_outline=""; - printf_font_success=""; - printf_font_failure=""; - printf_font_warning=""; - printf_font_default=""; - ;; - * ) - abort "unknown color mode \`$1'"; - ;; - esac; -} - -# Prints formated text in outline font. -printf_outline() { - $printf_font_outline; - printf "$@"; - $printf_font_default; -} - -# Prints formated text in success font. -printf_success() { - $printf_font_success; - printf "$@"; - $printf_font_default; -} - -# Prints formated text in failure font. -printf_failure() { - $printf_font_failure; - printf "$@"; - $printf_font_default; -} - -# Prints formated text in warning font. -printf_warning() { - $printf_font_warning; - printf "$@"; - $printf_font_default; -} - -############################################################################## -# File name and path list conversion functions - -# Prints the OS-specific form of the specified Unix form file name. -get_os_filename() { - [ $# = 1 ] || abort "internal error"; - case "$UNAME" in - CYGWIN* ) cygpath --windows "$1";; - * ) echo "$@";; - esac; -} - -# Prints the Unix form of the specified OS-specific form file name. -get_unix_filename() { - [ $# = 1 ] || abort "internal error"; - case "$UNAME" in - CYGWIN* ) cygpath --unix "$1";; - * ) echo "$@";; - esac; -} - -# Prints the OS-specific form of the specified Unix form path list. -get_os_pathlist() { - [ $# = 1 ] || abort "internal error"; - case "$UNAME" in - CYGWIN* ) cygpath --window --path "$1";; - * ) echo "$@";; - esac; -} - -# Prints the Unix form of the specified OS-specific form path list. -get_unix_pathlist() { - [ $# = 1 ] || abort "internal error"; - case "$UNAME" in - CYGWIN* ) cygpath --unix --path "$1";; - * ) echo "$@";; - esac; -} - -############################################################################## -# Implementation of scalatest - -# Prints the scalatest usage. -test_print_usage() { - [ $# = 0 ] || abort "internal error"; - echo "Usage: $0 [OPTION]..." -} - -# Prints the scalatest help. -test_print_help() { - [ $# = 0 ] || abort "internal error"; - test_print_usage; - echo ""; - echo "--auto use filenames to select the test to run"; - echo "--run next files test the interpreter and all backends"; - echo "--jvm next files test the JVM backend"; -# echo "--int next files test the interpreter"; -# echo "--shl next files test the interpreter shell"; -# echo "--dis next files test the disassembler"; - echo "--pos next files test a compilation success"; - echo "--neg next files test a compilation failure"; - echo "--msil next files test the .NET backend"; - echo "--no-run run no test, use results of last run"; - echo "--show-log show output of failed tests"; - echo "--show-diff show differences between actual and expected output"; - echo "--failed test only files that failed last time"; - echo "--errors=<int> specify the number of expected errors"; - echo "--flags=<flags> specify flags to pass on to the executable"; - echo "--color=USAGE control the color usage (USAGE=none|some|many)"; - echo "--objdir=<dir> specify where to place generated files"; - echo "--help, -? display this help and exit"; - echo "--version output version information and exit"; -} - -# Prints the scalatest version. -test_print_version() { - [ $# = 0 ] || abort "internal error"; - echo "$SCRIPT "'$Revision$'; -} - -# Prints the name of the specified test file. -test_print_testing() { - [ $# = 1 ] || abort "internal error"; - printf_outline "testing: "; - case "$1" in - "$TESTROOT"* ) - printf "%-60s " "[...]`expr "$1" : "$TESTROOT\(.*\)"`"; - return 0; - ;; - esac; - printf "%-60s " "$1"; -} - -# Prints a test success notification. -test_print_success() { - [ $# = 0 ] || abort "internal error"; - printf "["; - printf_success " OK "; - printf "]\\n"; -} - -# Prints a test failure notification. -test_print_failure() { - [ $# = 0 ] || abort "internal error"; - printf "["; - printf_failure "FAILED"; - printf "]\\n"; -} - - -# Tests a compilation success. -test_run_pos() { - rm -rf "$dstbase".obj && - mkdir -p "$dstbase".obj && - $SOCOS -d "$os_dstbase".obj "$@" "$os_srcbase".scala && - rm -rf "$dstbase".obj; -} - -# Tests a compilation failure. -test_run_neg() { - rm -rf "$dstbase".obj && - mkdir -p "$dstbase".obj && - ( cd "$srcdir" && $SOCOS -d "$os_dstbase".obj "$@" "$testname".scala; ); - status=$?; - rm -rf "$dstbase".obj; - if [ "$status" = 0 ]; then return 1; else return 0; fi; -} - -# Tests the JVM backend. -test_run_jvm() { - rm -rf "$dstbase".obj && - mkdir -p "$dstbase".obj && - $SOCOS -d "$os_dstbase".obj "$@" "$os_srcbase".scala && - $SCALA -classpath "$os_dstbase".obj Test "jvm" && - rm -rf "$dstbase".obj; -} - -# Tests the interpreter. -test_run_int() { - $SURUS "$@" "$os_srcbase".scala -- Test "int"; -} - -# Tests the interpreter shell. -test_run_shl() { - cat "$os_srcbase".scala | $SURUS -interactive -nologo "$@"; -} - -# Test the disassemblers. -test_run_dis() { - argsfile="$srcbase".args; - if [ ! -f "$argsfile" ]; then - argsfile=/dev/null; - fi; - rm -rf "$dstbase".obj && - mkdir -p "$dstbase".obj && - $SOCOS -d "$os_dstbase".obj "$@" "$os_srcbase".scala && - $SCALAP -classpath "$os_dstbase".obj `cat "$argsfile"` && - rm -rf "$dstbase".obj; -} - -# Tests the .NET backend. -test_run_msil() { - assemblies=`get_os_pathlist "/home/linuxsoft/apps/msil"`; - rm -f "$dstbase".il && - rm -f "$dstbase".EXE && - $SOCOS -nowarn -target:msil -o "$os_dstbase" -r $assemblies "$@" \ - "$os_srcbase".scala && - case "$UNAME" in - CYGWIN* ) - ilasm /qui /nol /out="$os_dstbase".EXE "$os_dstbase".il \ - > /dev/null && -# peverify /il "$os_dstbase".EXE > /dev/null && - "$dstbase".EXE "msil";; - * ) - ilasm /output:"$os_dstbase".EXE "$os_dstbase".il \ - > /dev/null && - mono "$dstbase".EXE "msil";; - esac && - rm -f "$dstbase".EXE && - rm -f "$dstbase".il; -} - -# Checks the specified test. -test_check_test() { - [ $# = 1 ] || abort "internal error"; - testfile="$1"; shift 1; - # compute test name - testname=`basename "$testfile" .scala`; - - # compute source and destination directories (absolute paths) - srcdir=`dirname "$testfile"`; - srcdir=`cd "$srcdir"; pwd`; - dstdir="$OBJDIR""$srcdir"; - - # compute source and destination base names - srcbase="$srcdir"/"$testname"; - dstbase="$dstdir"/"$testname"-$kind; - os_srcbase=`get_os_filename "$srcbase"`; - os_dstbase=`get_os_filename "$dstbase"`; - - # compute flags file - flagsfile="$srcbase".flags; - if [ ! -f "$flagsfile" ]; then - flagsfile=/dev/null; - fi; - - # compute check file - checkfile="$srcbase"-$kind.check; - if [ ! -f "$checkfile" ]; then - checkfile="$srcbase".check; - fi; - if [ ! -f "$checkfile" ]; then - checkfile=/dev/null; - fi; - - # compute log file - logfile="$dstbase".log; - - # if we are testing only failed tests, skip successful tests - if [ "$FAILED" = "true" -a ! -f "$logfile" ]; then - return 0; - fi; - - # if that's the first file of the section print section header - if [ -n "$header" ]; then - printf_outline "$header\\n"; - unset header; - fi; - - # print tested file - test_print_testing "$testfile"; - - # run test - if [ "$NORUN" = "true" ]; then - [ ! -f "$logfile" ]; - else - rm -f "$logfile"; - { [ -d "$dstdir" ] || mkdir -p "$dstdir"; } && - ( test_run_$kind `cat "$flagsfile"` $FLAGS 1> "$logfile" 2>&1; ) && - $DIFF "$logfile" "$checkfile" 1> /dev/null 2>&1 && - rm -f "$logfile"; - fi; - - # print result - if [ "$?" = 0 ]; then - SUCCESS_COUNT=`echo "$SUCCESS_COUNT+1" | bc`; - test_print_success; - else - FAILURE_COUNT=`echo "$FAILURE_COUNT+1" | bc`; - test_print_failure; - if [ ! -f "$logfile" ]; then - logfile=/dev/null; - fi; - if [ "$SHOWLOG" = "true" ]; then - cat "$logfile"; - fi; - if [ "$SHOWDIFF" = "true" ]; then - $DIFF "$logfile" "$checkfile"; - fi; - fi; -} - -# Checks the specified file -test_check_file() { - [ $# = 1 ] || abort "internal error"; - file="$1"; shift 1; - for testfile in "" `find "$file" -name "*.obj" -prune -o -name "*.scala" -a -type f -print`; do - [ -z "$testfile" ] && continue; - test_check_test "$testfile"; - done; -} - -# Checks all files of the specified kind. -test_check_kind() { - [ $# -ge 2 ] || abort "internal error"; - header="$1"; shift 1; - kind="$1"; shift 1; - for file in "" "$@"; do - [ -z "$file" ] && continue; - test_check_file "$file"; - done - if [ -z "$header" ]; then - echo ""; - fi; -} - -# Checks everything. -test_check_all() { - [ $# = 0 ] || abort "internal error"; - test_check_kind "Testing JVM backend" \ - "jvm" $FILES_RUN $FILES_JVM; -# test_check_kind "Testing interpreter shell" \ -# "shl" $FILES_SHL; -# test_check_kind "Testing disassembler" \ -# "dis" $FILES_DIS; - test_check_kind "Testing compiler (on files whose compilation should succeed)" \ - "pos" $FILES_POS; - test_check_kind "Testing compiler (on files whose compilation should fail)" \ - "neg" $FILES_NEG; - test_check_kind "Testing .NET backend" \ - "msil" $FILES_MSIL; -# test_check_kind "Testing interpreter" \ -# "int" $FILES_RUN $FILES_INT; -} - - -# Adds a new file to the appropriate file list(s). -test_add_file() { - [ $# = 1 ] || abort "internal error"; - case "$1" in - *.scala ) - if [ ! \( -d "$1" -o -f "$1" \) ]; then - abort "don't know what to do with '$1'"; - fi;; - * ) - if [ ! -d "$1" ]; then - abort "don't know what to do with '$1'"; - fi;; - esac; - TEST_ALL="false"; - case "$TEST_TYPE" in - auto ) ;; - run ) FILES_RUN="$FILES_RUN $1"; return;; - jvm ) FILES_JVM="$FILES_JVM $1"; return;; -# int ) FILES_INT="$FILES_INT $1"; return;; -# shl ) FILES_SHL="$FILES_SHL $1"; return;; -# dis ) FILES_DIS="$FILES_DIS $1"; return;; - pos ) FILES_POS="$FILES_POS $1"; return;; - neg ) FILES_NEG="$FILES_NEG $1"; return;; - msil ) FILES_MSIL="$FILES_MSIL $1"; return;; - * ) abort "unknown test type \`$TEST_TYPE'";; - esac; - case "$1" in - run | */run | */run/* | run/* ) FILES_RUN="$FILES_RUN $1";; - jvm | */jvm | */jvm/* | jvm/* ) FILES_JVM="$FILES_JVM $1";; -# int | */int | */int/* | int/* ) FILES_INT="$FILES_INT $1";; -# shl | */shl | */shl/* | shl/* ) FILES_SHL="$FILES_SHL $1";; -# dis | */dis | */dis/* | dis/* ) FILES_DIS="$FILES_DIS $1";; - pos | */pos | */pos/* | pos/* ) FILES_POS="$FILES_POS $1";; - neg | */neg | */neg/* | neg/* ) FILES_NEG="$FILES_NEG $1";; - msil | */msil | */msil/* | msil/* ) FILES_MSIL="$FILES_MSIL $1";; - * ) abort "don't known what to do with \`$1'";; - esac; -} - -# Implements "scalatest ...". -test_main() { - NORUN="false"; - SHOWLOG="false"; - SHOWDIFF="false"; - FAILED="false"; - ERRORS=0; - SUCCESS_COUNT=0; - FAILURE_COUNT=0; - TESTROOT="$PREFIX/test-nsc/files"; - SRCDIR="$PREFIX/test-nsc/files"; - OBJDIR=""""; - - TEST_ALL="true"; - TEST_TYPE="auto"; - FILES_RUN=""; - FILES_JVM=""; -# FILES_INT=""; -# FILES_SHL=""; -# FILES_DIS=""; - FILES_POS=""; - FILES_NEG=""; - FILES_MSIL=""; - - SCALA="$PREFIX/bin/ns"; - SOCOS="$PREFIX/bin/nsc"; - SURUS="$PREFIX/bin/scalarun"; - SCALAP="$PREFIX/bin/nsp"; - DIFF="diff"; - - case `uname` in - CYGWIN* ) - DIFF="diff --text --strip-trailing-cr"; - ;; - esac; - - while [ $# -gt 0 ]; do - case "$1" in - --auto ) TEST_TYPE="auto"; shift 1;; - --run ) TEST_TYPE="run"; shift 1;; - --jvm ) TEST_TYPE="jvm"; shift 1;; -# --int ) TEST_TYPE="int"; shift 1;; -# --shl ) TEST_TYPE="shl"; shift 1;; -# --dis ) TEST_TYPE="dis"; shift 1;; - --pos ) TEST_TYPE="pos"; shift 1;; - --neg ) TEST_TYPE="neg"; shift 1;; - --msil ) TEST_TYPE="msil"; shift 1;; - --no-run ) NORUN="true"; shift 1;; - --show-log ) SHOWLOG="true"; shift 1;; - --show-diff ) SHOWDIFF="true"; shift 1;; - --failed ) FAILED="true"; shift 1;; - --errors= ) abort "illegal empty argument for option --errors";; - --errors=* ) ERRORS=`expr "$1" : "--errors=\([0-9]*\)$"`;shift 1;; - --flags= ) abort "illegal empty argument for option --flags";; - --flags=* ) FLAGS=`expr "$1" : "--flags=\(.*\)"`; shift 1;; - --color= ) abort "illegal empty argument for option --color";; - --color=* ) COLOR=`expr "$1" : "--color=\(.*\)"`; shift 1;; - --objdir=* ) OBJDIR=`expr "$1" : "--objdir=\(.*\)"`; shift 1;; - --help| -? ) test_print_help; exit 0;; - --version ) test_print_version; exit 0;; - -* ) abort "unknown option $1";; - * ) test_add_file "$1"; shift 1;; - esac; - done; - - if [ -z "$ERRORS" ]; then - abort "illegal non-numerical argument for option --errors"; - fi; - - if [ -z "$COLOR" -a -n "$EMACS" ]; then - COLOR="none"; - fi; - printf_initialization "${COLOR:-many}"; - - if [ "$TEST_ALL" = "true" ]; then - case "$TEST_TYPE" in - run ) FILES_RUN="$FILES_RUN $SRCDIR/run";; - esac; - case "$TEST_TYPE" in - auto | jvm ) FILES_JVM="$FILES_JVM $SRCDIR/run $SRCDIR/jvm";; - esac; -# case "$TEST_TYPE" in -# auto | int ) FILES_INT="$FILES_INT $SRCDIR/run";; -# esac; -# case "$TEST_TYPE" in -# auto | shl ) FILES_SHL="$FILES_SHL $SRCDIR/shl";; -# esac; -# case "$TEST_TYPE" in -# auto | dis ) FILES_DIS="$FILES_DIS $SRCDIR/dis";; -# esac; - case "$TEST_TYPE" in - auto | pos ) FILES_POS="$FILES_POS $SRCDIR/pos";; - esac; - case "$TEST_TYPE" in - auto | neg ) FILES_NEG="$FILES_NEG $SRCDIR/neg";; - esac; - case "$TEST_TYPE" in - msil ) FILES_MSIL="$FILES_MSIL $SRCDIR/run";; - esac; - fi; - - SCALA_SCALA_ARGS="-Xmx512M $SCALA_SCALA_ARGS"; - export SCALA_SCALA_ARGS; - - if [ -n "$OBJDIR" ]; then - if [ -d "$OBJDIR" ] || mkdir -p "$OBJDIR"; then - OBJDIR=`cd "$OBJDIR"; pwd`; - else - abort "could not create directory '$OBJDIR'"; - fi - fi - - printf_outline "Source directory is: $SRCDIR\\n\\n"; - - test_check_all; - - if [ $FAILURE_COUNT -eq 0 ]; then - printf_success "All tests were successful\\n"; - elif [ $FAILURE_COUNT -eq 1 ]; then - printf_failure "There was 1 test that failed\\n"; - else - printf_failure "There were $FAILURE_COUNT tests that failed\\n"; - fi; - - if [ $FAILURE_COUNT -eq "$ERRORS" ]; then - exit 0; - else - exit 1; - fi; -} - -############################################################################## -# Definition of UNAME, SOURCE, SCRIPT and PREFIX - -unset SCRIPT; -UNAME=`uname`; -SOURCE=$0; -SCRIPT=`basename "$SOURCE"`; -while [ -h "$SOURCE" ]; do - SCRIPT=`basename "$SOURCE"`; - LOOKUP=`ls -ld "$SOURCE"`; - TARGET=`expr "$LOOKUP" : '.*-> \(.*\)$'`; - if expr "${TARGET:-.}/" : '/.*/$' > /dev/null; then - SOURCE=${TARGET:-.}; - else - SOURCE=`dirname "$SOURCE"`/${TARGET:-.}; - fi; -done; -PREFIX=`dirname "$SOURCE"`/..; -prefix=$PREFIX; -PREFIX=`cd "$PREFIX"; pwd`; - -############################################################################## -# Test of invocation method - -if [ -z "$SCRIPT" ]; then - abort "Illegal direct invocation; invoke me through a symbolic link."; -fi; - -############################################################################## -# Configuration and invocation of $SCRIPT - -configure; - -case "$SCRIPT" in - nst* ) test_main "$@";; - scalanstest* ) test_main "$@";; - * ) abort "Don't know what to do for $SCRIPT.";; -esac; - -############################################################################## |