Files
Toy/tests
Kayne Ruse 2f9489d5fd Fixed a 'malformed assignment' issue, read more
I've also added some support for compiler errors in general, but these
will get expanded on later.

I've also quickly added a valgrind option to the tests and found a few
leaks. I'll deal with these later.

Summary of changes:

* Clarified the lifetime of the bytecode in memory
* Erroneous routines exit without compiling
* Empty VMs don't run
* Added a check for malformed assignments
* Renamed "routine" to "module" within the VM
* VM no longer tries to free the bytecode - must be done manually
* Started experimenting with valgrind, not yet ready
2024-11-16 21:02:37 +11:00
..
2024-11-03 12:10:39 +11:00
2024-11-12 22:04:07 +11:00
2024-11-12 22:04:07 +11:00

Test Instructions

To run these tests, execute the following commands from the repo's root:

make tests
make test-cases
make test-integrations

Alternatively, to run these tests under GDB, execute the following commands from the repo's root:

make tests-gdb
make test-cases-gdb
make test-integrations-gdb

Remember that make clean will remove the build artifacts after testing, and make tests and make-tests-gdb automatically invoke make clean before they begin.

Benchmarks

For testing and comparing different potential solutions. This may be left in an incomplete state, so it might not work out of the box.

Cases

For testing individual pieces of the source code in isolation. These are essentially the unit tests.

Integrations

This compiles the source and repl files into a library and executable, then runs each *.toy file through the repl to ensure the Toy code works in practice. These are essentially integration tests.

Mustfails

These have situations which will raise errors of some kind, to ensure that common user errors are handled gracefully. This is not yet implemented.

Standalone

These are one-file programs that are not intended to test the source directly. Instead, these can cover a number of situations, such as the exact behavior of GitHub's workflow runners, or to generate repetitive code predictably, etc.