Source code

Revision control

Other Tools

JS Trace Test Suite
This is a test suite for testing the SpiderMonkey JIT. All tests are run in the JS shell
with tracing enabled (-j).
Python 2.7. This is already a standard requirement for building our tree.
Basic usage:
python <path-to-js-shell>
The progress bar shows [#tests passed, #tests failed, #tests run] at the left.
If all tests pass, the output is 'PASSED ALL'. The test suite can be interrupted
at any time with Ctrl+C and partial results will be printed.
To run only the basic tests, not including the slow tests:
python <path-to-js-shell> basic
For more options:
python -h
Simply create a JS file under the 'tests/' directory. Most tests should go in
All tests are run with 'lib/prologue.js' included first on the command line. The
command line also creates a global variable 'libdir' that is set to the path
of the 'lib' directory. To include a file 'foo.js' from the lib directory in a
test case:
load(libdir + 'foo.js')
The first line of a test case can contain a special comment controlling how the
test is run. For example:
// |jit-test| allow-oom; --no-threads
The general format in EBNF is:
metaline ::= cookie { item ";" }
cookie ::= "|jit-test|"
item ::= flag | attribute
flag ::= "slow" | "allow-oom" | "valgrind" | "tz-pacific" | "debug" |
"--" switch
attribute ::= name ":" value
name ::= "error" | "exitstatus"
value ::= <string>
switch ::= <string>
The metaline may appear anywhere in the first line of the file: this allows it
to be placed inside any kind of comment.
The meaning of the items:
slow Test runs slowly. Do not run if the --no-slow option is given.
allow-oom If the test runs out of memory, it counts as passing.
valgrind Run test under valgrind.
tz-pacific Always run test with the Pacific time zone (TZ=PST8PDT).
error The test should be considered to pass iff it throws the
given JS exception.
exitstatus The test should exit with the given status value (an integer).
debug Run js with -d, whether --jitflags says to or not
--SWITCH Pass --SWITCH through to js