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