diff --git a/Base/usr/share/man/man1/js.md b/Base/usr/share/man/man1/js.md index 1680e42f1d..2c47cb7733 100644 --- a/Base/usr/share/man/man1/js.md +++ b/Base/usr/share/man/man1/js.md @@ -17,11 +17,15 @@ single lines) of code from standard input, evaluates them in one shared interpreter context, and prints back their results. This mode is useful for quickly experimenting with LibJS. +Run `help()` in REPL mode to see its available built-in functions. + ## Options * `-A`, `--dump-ast`: Dump the Abstract Syntax Tree after parsing the program. * `-l`, `--print-last-result`: Print the result of the last statement executed. * `-g`, `--gc-on-every-allocation`: Run garbage collection on every allocation. +* `-s`, `--syntax-highlight`: Enable live syntax highlighting in the REPL +* `-t`, `--test-mode`: Run the interpreter with added functionality for the test harness ## Examples @@ -36,10 +40,33 @@ And here's an example of an interactive REPL session: ```js $ js > function log_sum(a, b) { -. console.log(a + b) -. } -[object ScriptFunction] +> console.log(a + b) +> } +undefined > log_sum(35, 42) 77 undefined ``` + +## Test mode + +In test mode, the `load()` function is added to the global object and can be used +to load further test utility functions defined in `LibJS/Tests/test-common.js`. + +Typically a test will look like this: + +```js +load("test-common.js"); + +try { + // test feature + console.log("PASS"); +} catch (e) { + console.log("FAIL: " + e); +} +``` + +Available functions in `test-common.js`: + +* `assert(expression)`: Throws an `AssertionError` if condition does not evaluate to a truthy value +* `assertNotReached()`: Throws an `AssertionError`, use to ensure certain code paths are never reached