|  | #!/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 |