JavaScript Tests - add automation helper scripts, no bug, not part of the build

This commit is contained in:
bclary@bclary.com 2007-05-10 21:11:39 -07:00
parent afd0626a7d
commit 32ada4368a
4 changed files with 357 additions and 0 deletions

129
js/tests/config.sh Executable file
View File

@ -0,0 +1,129 @@
# -*- Mode: Shell-script; tab-width: 4; indent-tabs-mode: nil; -*-
#
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# The contents of this file are subject to the Mozilla Public License Version
# 1.1 (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
# http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
# for the specific language governing rights and limitations under the
# License.
#
# The Original Code is Mozilla Communicator client code, released
# March 31, 1998.
#
# The Initial Developer of the Original Code is
# Netscape Communications Corporation.
# Portions created by the Initial Developer are Copyright (C) 1998-1999
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# Alternatively, the contents of this file may be used under the terms of
# either of the GNU General Public License Version 2 or later (the "GPL"),
# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK *****
# This file was adapted from mozilla/js/src/config.mk
# Set os+release dependent make variables
OS_ARCH="`uname -s | sed /\ /s//_/`"
# Attempt to differentiate between SunOS 5.4 and x86 5.4
OS_CPUARCH=`uname -m`
if [[ "$OS_CPUARCH" == "i86pc" ]]; then
OS_RELEASE="`uname -r`_$OS_CPUARCH"
elif [[ "$OS_ARCH" == "AIX" ]]; then
OS_RELEASE="`uname -v`.`uname -r`"
else
OS_RELEASE="`uname -r`"
fi
if [[ "$OS_ARCH" == "IRIX64" ]]; then
OS_ARCH="IRIX"
fi
# Handle output from win32 unames other than Netscape's version
if echo "Windows_95 Windows_98 CYGWIN_95-4.0 CYGWIN_98-4.10" | grep -iq "$OS_ARCH"; then
OS_ARCH="WIN95"
fi
if [[ "$OS_ARCH" == "WIN95" ]]; then
OS_ARCH="WINNT"
OS_RELEASE="4.0"
fi
if [[ "$OS_ARCH" == "Windows_NT" ]]; then
OS_ARCH="WINNT"
OS_MINOR_RELEASE="`uname -v`"
if [[ "$OS_MINOR_RELEASE" == "00" ]]; then
OS_MINOR_RELEASE=0
fi
OS_RELEASE="$OS_RELEASE.$OS_MINOR_RELEASE"
fi
if echo "$OS_ARCH" | grep -iq CYGWIN_NT; then
OS_RELEASE="`echo $OS_ARCH|sed 's/CYGWIN_NT-//'`"
OS_ARCH="WINNT"
fi
if [[ "$OS_ARCH" == "CYGWIN32_NT" ]]; then
OS_ARCH="WINNT"
fi
# Virtually all Linux versions are identical.
# Any distinctions are handled in linux.h
case "$OS_ARCH" in
"Linux")
OS_CONFIG="Linux_All"
;;
"dgux")
OS_CONFIG="dgux"
;;
"Darwin")
OS_CONFIG="Darwin"
;;
*)
OS_CONFIG="$OS_ARCH$OS_OBJTYPE$OS_RELEASE"
;;
esac
case "$buildtype" in
"opt")
OBJDIR_TAG="_OPT"
;;
"debug")
OBJDIR_TAG="_DBG"
;;
*)
error "Unknown build type $buildtype"
esac
# Name of the binary code directories
if [[ -z "$OBJDIR_TAG" ]]; then
true
elif [[ -n "$BUILD_IDG" ]]; then
JS_OBJDIR="$OS_CONFIG$OBJDIR_TAG.OBJD"
else
JS_OBJDIR="$OS_CONFIG$OBJDIR_TAG.OBJ"
fi

91
js/tests/test-browser.sh Executable file
View File

@ -0,0 +1,91 @@
#!/usr/local/bin/bash
# -*- Mode: Shell-script; tab-width: 4; indent-tabs-mode: nil; -*-
TEST_DIR=${TEST_DIR:-/work/mozilla/mozilla.com/test.mozilla.com/www}
TEST_BIN=${TEST_BIN:-$TEST_DIR/bin}
source ${TEST_BIN}/library.sh
TEST_JSEACH_TIMEOUT=${TEST_JSEACH_TIMEOUT:-240}
TEST_JSEACH_PAGE_TIMEOUT=${TEST_JSEACH_PAGE_TIMEOUT:-240}
#
# options processing
#
options="p:b:x:N:d:"
usage()
{
cat <<EOF
usage: $SCRIPT -p product -b branch -x executablepath -N profilename
variable description
=============== ============================================================
-p product required. firefox|thunderbird
-b branch required. 1.8.0|1.8.1|1.9.0
-x executablepath required. directory-tree containing executable 'product'
-N profilename required. profile name
-d datafiles optional. one or more filenames of files containing
environment variable definitions to be included.
note that the environment variables should have the same
names as in the "variable" column.
if an argument contains more than one value, it must be quoted.
EOF
exit 2
}
unset product branch profilename executablepath datafiles
while getopts $options optname ;
do
case $optname in
p) product=$OPTARG;;
b) branch=$OPTARG;;
N) profilename=$OPTARG;;
x) executablepath=$OPTARG;;
d) datafiles=$OPTARG;;
esac
done
# include environment variables
if [[ -n "$datafiles" ]]; then
for datafile in $datafiles; do
source $datafile
done
fi
if [[ -z "$product" || -z "$branch" || -z "$executablepath" || -z "$profilename" ]]; then
usage
fi
make
executable=`get_executable $product $branch $executablepath`
case "$branch" in
1.8.0)
list=1.8.0-list.txt
;;
1.8.1)
list=1.8.1-list.txt
;;
1.9.0)
list=1.9.0-list.txt
;;
esac
cat "$list" | while read url; do
edit-talkback.sh -p "$product" -b "$branch" -x "$executablepath" -i "$url"
time timed_run $TEST_JSEACH_TIMEOUT "$url" \
"$executable" -P "$profilename" \
-spider -start -quit \
-uri "$url" \
-depth 0 -timeout "$TEST_JSEACH_PAGE_TIMEOUT" \
-hook "http://$TEST_HTTP/tests/mozilla.org/js/userhookeach.js";
done

80
js/tests/test-shell.sh Executable file
View File

@ -0,0 +1,80 @@
#!/usr/local/bin/bash
# -*- Mode: Shell-script; tab-width: 4; indent-tabs-mode: nil; -*-
TEST_DIR=${TEST_DIR:-/work/mozilla/mozilla.com/test.mozilla.com/www}
TEST_BIN=${TEST_BIN:-$TEST_DIR/bin}
source ${TEST_BIN}/library.sh
TEST_JSSHELL_TIMEOUT=${TEST_JSSHELL_TIMEOUT:-240}
#
# options processing
#
options="b:s:T:d:"
usage()
{
cat <<EOF
usage: $SCRIPT -b branch -s sourcepath -T buildtype [-d datafiles]
variable description
=============== ===========================================================
-p product required. js
-b branch required. 1.8.0|1.8.1|1.9.0
-s sourcepath required. path to js shell source directory mozilla/js/src
-T buildtype required. one of opt debug
-d datafiles optional. one or more filenames of files containing
environment variable definitions to be included.
EOF
exit 2
}
while getopts $options optname ;
do
case $optname in
b) branch=$OPTARG;;
s) sourcepath=$OPTARG;;
T) buildtype=$OPTARG;;
d) datafiles=$OPTARG;;
esac
done
# include environment variables
if [[ -n "$datafiles" ]]; then
for datafile in $datafiles; do
source $datafile
done
fi
if [[ -z "$branch" || -z "$sourcepath" || -z "$buildtype" ]]; then
usage
fi
. config.sh
executable="$sourcepath/$JS_OBJDIR/js$EXE_EXT"
case "$branch" in
1.8.0)
included="ecma ecma_2 ecma_3 js1_1 js1_2 js1_3 js1_4 js1_5 js1_6 e4x"
;;
1.8.1)
included="ecma ecma_2 ecma_3 js1_1 js1_2 js1_3 js1_4 js1_5 js1_6 js1_7 e4x"
;;
1.9.0)
included="ecma ecma_2 ecma_3 js1_1 js1_2 js1_3 js1_4 js1_5 js1_6 js1_7 js1_8 e4x"
;;
esac
TEST_HTML_LOG="${TEST_DIR}/results/mozilla.org/js/${TEST_DATE},js,$branch,$buildtype,$OSID,${MACHINE},$TEST_ID-shell.html"
time perl jsDriver.pl \
-l $included \
-L excluded-n.tests \
-s $executable -e sm$buildtype \
-o '-S 524288' \
-K \
-T $TEST_JSSHELL_TIMEOUT \
-f $TEST_HTML_LOG \
-Q

57
js/tests/test.sh Executable file
View File

@ -0,0 +1,57 @@
#!/usr/local/bin/bash
# -*- Mode: Shell-script; tab-width: 4; indent-tabs-mode: nil; -*-
TEST_DIR=${TEST_DIR:-/work/mozilla/mozilla.com/test.mozilla.com/www}
TEST_BIN=${TEST_BIN:-$TEST_DIR/bin}
source ${TEST_BIN}/library.sh
#
# options processing
#
options=":d:"
usage()
{
cat <<EOF
usage: $SCRIPT -d datafiles
This script is used to dispatch to either test-browser.sh
for browser based JavaScript tests or test-shell.js for
shell based JavaScript tests. It ignores all input arguments
except -d datafiles which it uses to pass data to the
appropriate script.
variable description
=============== ============================================================
-d datafiles optional. one or more filenames of files containing
environment variable definitions to be included.
if an argument contains more than one value, it must be quoted.
EOF
exit 2
}
unset datafiles
while getopts $options optname ;
do
case $optname in
d) datafiles=$OPTARG;;
esac
done
if [[ -z "$datafiles" ]]; then
usage
fi
for data in $datafiles; do
source $data
done
case "$product" in
firefox) testscript=./test-browser.sh;;
js) testscript=./test-shell.sh;;
*) echo "unknown product [$product]"
exit 2
;;
esac
$testscript -d "$datafiles"