diff -r 000000000000 -r b1a7da25b547 bin/checkintest.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bin/checkintest.sh Wed Apr 27 01:36:41 2016 +0800 @@ -0,0 +1,266 @@ +#!/bin/bash +# +# Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +#best pass rate at test 262 known +TEST262_PASS_AT_LEAST=435 + +RUN_TEST="true" +RUN_TEST262="true" +RUN_NODE="true" +KEEP_OUTPUT="true" +CLEAN_AND_BUILD_NASHORN="true" + +#the stable node version to sync against +NODE_LAST_STABLE=v0.6.18 + +#parse args +for arg in $* +do + if [ $arg = "--no-test" ]; then + RUN_TEST="false" + echo "**** WARNING - you have disabled 'ant test', which is a minimum checkin requirement..." + elif [ $arg = "--no-262" ]; then + RUN_TEST262="false" + elif [ $arg = "--no-node" ]; then + RUN_NODE="false" + elif [ $arg = "--no-build" ]; then + CLEAN_AND_BUILD_NASHORN="false" + elif [ $arg = "--no-logs" ]; then + KEEP_OUTPUT="false" + fi +done + +function lastpart() { + arr=$(echo $1 | tr "/" "\n") + for x in $arr + do + _last=$x + done + echo $_last +} + +function check_installed() { + which $1 >/dev/null + if [ $? -ne 0 ]; then + echo "Error $1 not installed: $?" + exit 2 + fi +} + +check_installed hg +check_installed git +check_installed mv +check_installed git + +PWD=$(pwd); + +while [ -z $NASHORN_ROOT ] +do + if [ -e $PWD/.hg ]; then + NASHORN_ROOT=${PWD} + break + fi + PWD=$(dirname ${PWD}) +done + +echo "Nashorn root detected at ${NASHORN_ROOT}" + +COMMON_ROOT=$(dirname $NASHORN_ROOT) +echo "Common root is ${COMMON_ROOT}" + +echo "Running checkintest..." + +ABSOLUTE_NASHORN_HOME=$COMMON_ROOT/$(lastpart $NASHORN_ROOT) + +if [ $CLEAN_AND_BUILD_NASHORN != "false" ]; then + echo "Cleaning and building nashorn at $ABSOLUTE_NASHORN_HOME/nashorn..." + $(cd $ABSOLUTE_NASHORN_HOME/nashorn; ant clean >/dev/null 2>/dev/null) + $(cd $ABSOLUTE_NASHORN_HOME/nashorn; ant jar >/dev/null 2>/dev/null) + echo "Done." +fi + +function failure_check() { + while read line + do + LINE=$(echo $line | grep "Tests run") + if [ "${LINE}" != "" ]; then + RESULT=$(echo $line | grep "Failures: 0" | grep "Errors: 0") + if [ "${RESULT}" == "" ]; then + TESTNAME=$2 + echo "There were errors in ${TESTNAME} : ${LINE}" + exit 1 + fi + fi + done < $1 +} + +function test() { + TEST_OUTPUT=$ABSOLUTE_NASHORN_HOME/$(mktemp tmp.XXXXX) + echo "Running 'ant test' on nashorn from ${ABSOLUTE_NASHORN_HOME}/nashorn..." + $(cd $ABSOLUTE_NASHORN_HOME/nashorn; ant test >$TEST_OUTPUT) + echo "Done." + + failure_check $TEST_OUTPUT + + echo "**** SUCCESS: 'ant test' successful" + + if [ $KEEP_OUTPUT == "true" ]; then + cp $TEST_OUTPUT ./checkintest.test.log + rm -fr $TEST_OUTPUT + fi +} + +if [ $RUN_TEST != "false" ]; then + test; +fi + +function test262() { + + echo "Running 'ant test262parallel' on nashorn from ${ABSOLUTE_NASHORN_HOME}/nashorn..." + TEST262_OUTPUT=$ABSOLUTE_NASHORN_HOME/$(mktemp tmp.XXXXX) + + echo "Looking for ${ABSOLUTE_NASHORN_HOME}/test/test262..." + + if [ ! -e $ABSOLUTE_NASHORN_HOME/nashorn/test/test262 ]; then + echo "test262 is missing... looking in $COMMON_ROOT..." + if [ ! -e $COMMON_ROOT/test262 ]; then + echo "... not there either... cloning from repo..." + hg clone http://hg.ecmascript.org/tests/test262 $COMMON_ROOT/test262 >/dev/null 2>/dev/null + echo "Done." + fi + echo "Adding soft link ${COMMON_ROOT}/test262 -> ${ABSOLUTE_NASHORN_HOME}/test/test262..." + ln -s $COMMON_ROOT/test262 $ABSOLUTE_NASHORN_HOME/nashorn/test/test262 + echo "Done." + fi + + echo "Ensuring test262 is up to date..." + $(cd $ABSOLUTE_NASHORN_HOME/nashorn/test/test262; hg pull -u >/dev/null 2>/dev/null) + echo "Done." + + echo "Running test262..." + $(cd $ABSOLUTE_NASHORN_HOME/nashorn; ant test262parallel > $TEST262_OUTPUT) + + FAILED=$(cat $TEST262_OUTPUT|grep "Tests run:"| cut -d ' ' -f 15 |tr -cd '"[[:digit:]]') + if [ $FAILED -gt $TEST262_PASS_AT_LEAST ]; then + echo "FAILURE: There are ${FAILED} failures in test262 and can be no more than ${TEST262_PASS_AT_LEAST}" + cp $TEST262_OUTPUT ./checkintest.test262.log + echo "See ./checkintest.test262.log" + echo "Terminating due to error" + exit 1 + elif [ $FAILED -lt $TEST262_PASS_AT_LEAST ]; then + echo "There seem to have been fixes to 262. ${FAILED} < ${TEST262_PASS_AT_LEAST}. Please update limit in bin/checkintest.sh" + fi + + echo "**** SUCCESS: Test262 passed with no more than ${TEST262_PASS_AT_LEAST} failures." + + if [ $KEEP_OUTPUT == "true" ]; then + cp $TEST262_OUTPUT ./checkintest.test262.log + rm -fr $TEST262_OUTPUT + fi +} + +if [ $RUN_TEST262 != "false" ]; then + test262; +fi; + +function testnode() { + TESTNODEJAR_OUTPUT=$ABSOLUTE_NASHORN_HOME/$(mktemp tmp.XXXXX) + + echo "Running node tests..." +#replace node jar properties nashorn with this nashorn + + NODEJAR_PROPERTIES=~/nodejar.properties + + NODE_HOME=$(cat $NODEJAR_PROPERTIES | grep ^node.home | cut -f2 -d=) + NASHORN_HOME=$(cat $NODEJAR_PROPERTIES | grep ^nashorn.home | cut -f2 -d=) + + ABSOLUTE_NODE_HOME=$COMMON_ROOT/$(lastpart $NODE_HOME) + + echo "Writing nodejar.properties..." + + cat > $NODEJAR_PROPERTIES << EOF +node.home=../node +nashorn.home=../$(lastpart $NASHORN_ROOT) +EOF + echo "Done." + echo "Checking node home ${ABSOLUTE_NODE_HOME}..." + + if [ ! -e $ABSOLUTE_NODE_HOME ]; then + echo "Node base dir not found. Cloning node..." + $(cd $COMMON_ROOT; git clone https://github.com/joyent/node.git $(lastpart $NODE_HOME) >/dev/null 2>/dev/null) + echo "Done." + echo "Updating to last stable version ${NODE_LAST_STABLE}..." + $(cd $ABSOLUTE_NODE_HOME; git checkout $NODE_LAST_STABLE >/dev/null 2>/dev/null) + echo "Done." + echo "Running configure..." + $(cd $ABSOLUTE_NODE_HOME; ./configure >/dev/null 2>/dev/null) + echo "Done." + fi + + echo "Ensuring node is built..." +#make sure node is built + $(cd $ABSOLUTE_NODE_HOME; make >/dev/null 2>/dev/null) + echo "Done." + + NODEJAR_HOME=$COMMON_ROOT/nodejar + + if [ ! -e $NODEJAR_HOME ]; then + echo "No node jar home found. cloning from depot..." + $(cd $COMMON_ROOT; hg clone https://hg.kenai.com/hg/nodejs~source nodejar >/dev/null 2>/dev/null) + $(cd $COMMON_ROOT/nodejar; ant >/dev/null) + echo "Done." + echo "Copying node files..." + $(cd $COMMON_ROOT/nodejar; ant copy-node-files >/dev/null 2>/dev/null) + echo "Patching node files..." + $(cd $COMMON_ROOT/nodejar; ant patch-node-files >/dev/null 2>/dev/null) + echo "Done." + fi + + echo "Ensuring node.jar is up to date from source depot..." + $(cd $COMMON_ROOT/nodejar; hg pull -u >/dev/null 2>/dev/null) + echo "Done." + + echo "Installing nashorn..." + $(cd $COMMON_ROOT/nodejar; ant >/dev/null) + echo "Done." + + echo "Running node.jar test..." + $(cd $COMMON_ROOT/nodejar; mvn clean verify >$TESTNODEJAR_OUTPUT) + echo "Done." + + failure_check $TESTNODEJAR_OUTPUT + + echo "**** SUCCESS: Node test successful." + + if [ $KEEP_OUTPUT == "true" ]; then + rm -fr $TESTNODEJAR_OUTPUT + cp $TESTNODEJAR_OUTPUT ./checkintest.nodejar.log + fi +} + +if [ $RUN_NODE != "false" ]; then + testnode; +fi; + +echo "Finished"