139 lines · 3.3 KB · Text
RawDownload
#!/bin/sh usage() {	[ "${1-}" ] && { to=2; >&$to printf "Error: %s\n" "$1"; } || to=1	>&$to echo "Usage: ${0##*/} [OPTIONS] test-file | test-dir"	>&$to echo "Run test-262 ES5 test file or directory (at the test262 dir)."	>&$to echo "  -s          Print source code of failed tests."	>&$to echo "  -p          Print every test name before running it"	>&$to echo "  -f          Display full paths and full stack trace when possible"	>&$to echo "  -l file.js  Load file.js after the harness and before the test (up to one)"	>&$to echo "  -m MUJS     MUJS is [path/to/]mujs binary to test"	>&$to echo "                Default is $(dirname "$0")/../build/release/mujs or mujs at \$PATH"	>&$to echo "  -b          Don't skip known bad (crashing/hanging) tests"	>&$to echo "  -B          Run only known bad tests"	exit $((to-1))} KNOWN_BAD="	--hang-with-sta.js:	S15.1.3.2_A2.5_T1.js	S15.1.3.1_A2.5_T1.js 	--Hang-(or-taking-more-than-few-seconds):	15.4.4.18-3-14.js	15.4.4.20-3-14.js	S15.4.4.10_A3_T2.js	S15.4.4.10_A3_T1.js	15.4.4.19-3-29.js	15.4.4.19-3-28.js	15.4.4.19-3-8.js	15.4.4.19-3-14.js	S15.4.4.8_A3_T3.js	15.4.4.22-3-9.js	15.4.4.22-3-7.js	15.4.4.22-3-25.js	15.4.4.22-3-14.js	15.4.4.21-3-14.js	15.4.4.15-3-28.js	15.4.4.15-3-14.js	15.4.4.15-3-7.js	15.4.4.15-3-25.js	15.4.4.15-3-9.js" SKIP_KNOWN=yes  # "yes": skip bad  "no": don't skip  "neg": run only badPRINT_ALL=EXTRA_ARGS=mujs= lopt= while getopts bBfhl:ps o; do	case $o in		h) usage ;;		b) SKIP_KNOWN=no ;;		B) SKIP_KNOWN=neg ;;		p) PRINT_ALL=yes ;;		s) EXTRA_ARGS="$EXTRA_ARGS -s" ;;		f) EXTRA_ARGS="$EXTRA_ARGS -f" ;;		l) [ "$OPTARG" ] && lopt=$OPTARG || usage "empty file for -l" ;;		m) mujs=$OPTARG;;		*) usage "unknown option -$o" ;;	esacdoneshift $((OPTIND-1))[ $# = 1 ] || usage "expecting one file/dir" BAD=if [ "$SKIP_KNOWN" != no ]; then	for b in $KNOWN_BAD; do		BAD="$BAD $b "	donefi find_root() {	ROOT=$1	n=0	while ! [ -e "$ROOT"/test/harness/sta.js ]; do		ROOT=$ROOT/..		n=$((n+1))		[ $n -lt 10 ] || usage "can't find test-suite root"	done} if [ -d "$1" ]; then	find_root "$1" 	if [ "$ROOT" = "$1" ]; then		FILES_CMD='find "$1/test/suite" -name "*.js" | sort -V'	else		FILES_CMD='find "$1" -name "*.js" | sort -V'	fielse	find_root "$(dirname "$1")"	FILES_CMD='printf "%s\n" "$1"'fi if ! [ "$mujs" ]; then	# try to use a recently built mujs rather than a global one	mujs=$(dirname "$0")/../build/release/mujs	[ -e "$mujs" ] || mujs=mujsfijsharness=$(dirname "$0")/test262-harness.js total=0skipped=0failed=0 eval "$FILES_CMD" | (	while IFS= read -r f && [ "$f" ]; do		total=$((total+1))		base=${f##*/} 		case $BAD in *" $base "*) bad=yes;; *) bad=no;; esac 		case $bad-$SKIP_KNOWN in		yes-yes)			skipped=$((skipped+1))			printf "[Skipping: $base]\n\n"			;;		no-neg)  # not known bad and running only bad - don't print anything			skipped=$((skipped+1))			;;		*)			[ "$PRINT_ALL" ] && echo "Testing: $f"			if ! "$mujs" -- "$jsharness" $EXTRA_ARGS ${lopt:+-l "$lopt"} "$ROOT" "$f" 2>&1; then				failed=$((failed+1))				echo			fi		esac	done 	if [ $total -gt 1 ]; then		printf "Total: $total\n"		printf "Pass:  %${#total}s\n" $((total - skipped - failed))		printf "Skip:  %${#total}s\n" $skipped		printf "Fail:  %${#total}s\n" $failed	fi 	[ "$failed" = 0 ])

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t