Unit Tests
Pyro has builtin support for unit tests using the test
command:
$ pyro test --help Usage: pyro test [files] This command runs unit tests. Each input file is executed in a new VM instance. Arguments: [files] Files to test. Flags: -h, --help Print this help text and exit. -v, --verbose Show error output.
Specify a single file to test:
$ pyro test script.pyro
Specify multiple files to test:
$ pyro test *.pyro
Test Functions
For each input file specified, Pyro first executes the file, then runs any test functions it contains, i.e. functions whose name begins with $test_
. A test function passes if it executes without panicking.
You can use an assert
statement to make a test function panic if the test fails, e.g.
def $test_addition() { assert 1 + 2 == 3; }
The syntax is:
assert <expression>;
An assert
statement passes if its operand expression evaluates as truthy or fails if it evaluates as falsey.
(In Pyro, the values false
, null
, and err
are falsey; all other values are truthy.)
Note that test functions take no arguments.
Module-Level Tests
You don't need to use test functions for simple tests — you can put assert
statements at global-scope in a file, e.g.
assert "foo" + "bar" == "foobar";
The test
command will register the file as passing if it executes without panicking, or as failing if any of the assert
statements at global-scope fail.