#!/usr/bin/env 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