| Index: pkg/polymer/test/run.sh
|
| diff --git a/pkg/polymer/test/run.sh b/pkg/polymer/test/run.sh
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..0d2b5696f6c4114d74222cfac7b28fce9bb46a36
|
| --- /dev/null
|
| +++ b/pkg/polymer/test/run.sh
|
| @@ -0,0 +1,134 @@
|
| +#!/bin/bash
|
| +# Copyright (c) 2012, 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.
|
| +
|
| +# Usage: call directly in the commandline as test/run.sh ensuring that you have
|
| +# both 'dart' and 'content_shell' in your path. Filter tests by passing a
|
| +# pattern as an argument to this script.
|
| +
|
| +# TODO(sigmund): replace with a real test runner
|
| +
|
| +# bail on error
|
| +set -e
|
| +
|
| +# print commands executed by this script
|
| +# set -x
|
| +
|
| +DIR=$( cd $( dirname "${BASH_SOURCE[0]}" ) && pwd )
|
| +export DART_FLAGS="--checked"
|
| +TEST_PATTERN=$1
|
| +
|
| +function fail {
|
| + return 1
|
| +}
|
| +
|
| +function show_diff {
|
| + diff -u -N $1 $2 | \
|
| + sed -e "s/^\(+.*\)/[32m\1[0m/" |\
|
| + sed -e "s/^\(-.*\)/[31m\1[0m/"
|
| + return 1
|
| +}
|
| +
|
| +function update {
|
| + read -p "Would you like to update the expectations? [y/N]: " answer
|
| + if [[ $answer == 'y' || $answer == 'Y' ]]; then
|
| + cp $2 $1
|
| + return 0
|
| + fi
|
| + return 1
|
| +}
|
| +
|
| +function pass {
|
| + echo -e "[32mOK[0m"
|
| +}
|
| +
|
| +function compare {
|
| + # use a standard diff, if they are not identical, format the diff nicely to
|
| + # see what's the error and prompt to see if they wish to update it. If they
|
| + # do, continue running more tests.
|
| + diff -q $1 $2 && pass || show_diff $1 $2 || update $1 $2
|
| +}
|
| +
|
| +if [[ ($TEST_PATTERN == "") ]]; then
|
| + # Note: dartanalyzer needs to be run from the root directory for proper path
|
| + # canonicalization.
|
| + pushd $DIR/.. > /dev/null
|
| +
|
| + echo Analyzing compiler for warnings or type errors
|
| + dartanalyzer --hints --fatal-warnings --fatal-type-errors bin/dwc.dart
|
| +
|
| + echo -e "\nAnalyzing runtime for warnings or type errors"
|
| + dartanalyzer --hints --fatal-warnings --fatal-type-errors lib/polymer.dart
|
| +
|
| + popd > /dev/null
|
| +fi
|
| +
|
| +function compare_all {
|
| +# TODO(jmesserly): bash and dart regexp might not be 100% the same. Ideally we
|
| +# could do all the heavy lifting in Dart code, and keep this script as a thin
|
| +# wrapper that sets `--enable-type-checks --enable-asserts`
|
| + for input in $DIR/../example/component/news/test/*_test.html \
|
| + $DIR/../../../samples/third_party/todomvc/test/*_test.html; do
|
| + if [[ ($TEST_PATTERN == "") || ($input =~ $TEST_PATTERN) ]]; then
|
| + FILENAME=`basename $input`
|
| + DIRNAME=`dirname $input`
|
| + if [[ `basename $DIRNAME` == 'input' ]]; then
|
| + DIRNAME=`dirname $DIRNAME`
|
| + fi
|
| + echo -e -n "Checking diff for $FILENAME "
|
| + DUMP="$DIRNAME/out/$FILENAME.txt"
|
| + EXPECTATION="$DIRNAME/expected/$FILENAME.txt"
|
| +
|
| + compare $EXPECTATION $DUMP
|
| + fi
|
| + done
|
| + echo -e "[31mSome tests failed[0m"
|
| + fail
|
| +}
|
| +
|
| +if [[ -e $DIR/data/input/example ]]; then
|
| + echo "WARNING: detected old data/input/example symlink."
|
| + echo "Removing it and rerunning pub install to fix broken example symlinks."
|
| + echo "See http://dartbug.com/9418 for more information."
|
| + echo "You should only see this message once."
|
| + if [[ -e $DIR/packages ]]; then
|
| + find . -name packages -type l | xargs rm
|
| + fi
|
| + rm $DIR/data/input/example
|
| + pushd $DIR/..
|
| + pub install
|
| + popd
|
| +fi
|
| +
|
| +# TODO(jmesserly): dart:io fails if we run the Dart scripts with an absolute
|
| +# path. So use pushd/popd to change the working directory.
|
| +if [[ ($TEST_PATTERN == "") ]]; then
|
| + pushd $DIR/.. > /dev/null
|
| + echo -e "\nTesting build.dart... "
|
| + dart $DART_FLAGS build.dart
|
| + # Run it the way the editor does. Hide stdout because it is in noisy machine
|
| + # format. Show stderr in case something breaks.
|
| + # NOTE: not using --checked because the editor doesn't use it, and to workaround
|
| + # http://dartbug.com/9637
|
| + dart build.dart --machine --clean > /dev/null
|
| + dart build.dart --machine --full > /dev/null
|
| + dart build.dart --machine --changed ../../samples/third_party/todomvc/web/index.html > /dev/null
|
| + popd > /dev/null
|
| +fi
|
| +
|
| +pushd $DIR > /dev/null
|
| +echo -e "\nRunning unit tests... "
|
| +dart $DART_FLAGS run_all.dart $@ || compare_all
|
| +popd > /dev/null
|
| +
|
| +# Run Dart analyzer to check that we're generating warning clean code.
|
| +# It's a bit slow, so only do this for TodoMVC and html5_utils tests.
|
| +OUT_PATTERN="$DIR/../../../third_party/samples/todomvc/test/out/test/*$TEST_PATTERN*_bootstrap.dart"
|
| +if [[ `ls $OUT_PATTERN 2>/dev/null` != "" ]]; then
|
| + echo -e "\nAnalyzing generated code for warnings or type errors."
|
| + ls $OUT_PATTERN 2>/dev/null | dartanalyzer --package-root=packages \
|
| + --fatal-warnings --fatal-type-errors -batch
|
| +fi
|
| +
|
| +echo -e "[32mAll tests pass[0m"
|
|
|