dart-sdk/tools/presubmit.sh
2012-08-20 19:35:58 +00:00

159 lines
3.2 KiB
Bash
Executable file

#!/bin/bash
#
# Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.
#
# A quick check over a subset the tests in the runtime, compiler
# and client directories.
# Currently builds and checks:
# runtime - release mode
# compiler - debug mode (non-optimized)
# client - chromium debug mode
DO_OPTIMIZE=0
DO_DARTIUM=0
TESTS_FAILED=0
function usage {
echo "usage: $0 [ --help ] [ --optimize ] [ --dartium ] "
echo
echo "Runs a quick set of tests on runtime, client, and compiler dirs"
echo
echo " --optimize: Also run dartc and client tests in release mode"
echo " --dartium : Also run dartium/debug tests"
echo
}
# Compile the vm/runtime
# $1 directory to build in
# $2 arch
# $3 mode
function doBuild {
./tools/build.py --arch $1 --mode $2
if [ $? != 0 ] ; then
echo "Build of $1 - $2 failed"
exit 1
fi
}
# Execute a set of tests
# $1 directory to test in
# $2 arch
# $3 mode
# Returns the output from the subcommand
function doTest {
./tools/test.py --component $2 --mode $3
RESULT=$?
if [ ${RESULT} != 0 ] ; then
TESTS_FAILED=1
fi
return ${RESULT}
}
# Main
while [ ! -z "$1" ] ; do
case $1 in
"-h"|"-?"|"-help"|"--help")
usage
exit 1
;;
"--optimize")
DO_OPTIMIZE=1
;;
"--dartium")
DO_DARTIUM=1
;;
*)
echo "Unrecognized argument: $1"
usage
exit 1
;;
esac
shift
done
if [ ! -d compiler -o ! -d runtime -o ! -d tests ] ; then
echo "This doesn't look like the dart source tree."
echo "Change your directory to the dart trunk source"
exit 1
fi
echo
echo "--- Building release ---"
doBuild ia32 release
echo
echo "--- Building debug ---"
doBuild ia32 debug
echo
echo "=== Runtime tests === "
echo " Debug (Ctrl-C to skip this set of tests)"
doTest runtime vm debug
RUNTIME_RESULT=$?
if [ ${RUNTIME_RESULT} == 0 ] ; then
echo " Release (Ctrl-C to skip this set of tests)"
doTest runtime vm release
RUNTIME_RESULT=$?
fi
echo
echo "=== dartc tests ==="
echo " Debug mode (Ctrl-C to skip this set of tests)"
doTest compiler dartc debug
DARTC_RESULT=$?
if [ ${DO_OPTIMIZE} == 1 ] ; then
echo " Release mode (--optimize)"
doTest compiler dartc release
RESULT=$?
if [ ${RESULT} != 0 ] ; then
DARTC_RESULT=${RESULT}
fi
fi
echo
echo "=== Client tests ==="
echo " Chromium (Ctrl-C to skip this set of tests)"
doTest client chromium debug
CLIENT_RESULT=$?
if [ ${DO_OPTIMIZE} == 1 ] ; then
echo " Chromium Release mode (--optimize)"
doTest compiler chromium release
RESULT=$?
if [ ${RESULT} != 0 ] ; then
CLIENT_RESULT=${RESULT}
fi
fi
if [ ${DO_DARTIUM} == 1 ] ; then
echo " Dartium (Ctrl-C to skip this set of tests)"
doTest client dartium release
RESULT=$?
if [ ${RESULT} != 0 ] ; then
CLIENT_RESULT=${RESULT}
fi
fi
# Print summary of results
if [ ${RUNTIME_RESULT} != 0 ] ; then
echo "*** vm tests failed"
fi
if [ ${DARTC_RESULT} != 0 ] ; then
echo "*** dartc tests failed"
fi
if [ ${CLIENT_RESULT} != 0 ] ; then
echo "*** client tests failed"
fi
if [ ${TESTS_FAILED} == 0 ] ; then
echo "All presubmit tests passed!"
fi