Toster

A simple-as-toast tester for C++ solutions to competitive programming exercises
Usage
```
Usage: toster [OPTIONS]
Arguments:
The name of the file containing the source code or the executable you want to test
Options:
-i, --in
Input directory [default: in]
--in-ext
Input file extension [default: .in]
-o, --out
Output directory [default: out]
--out-ext
Output file extension [default: .out]
--io
The input and output directory (sets both -i and -o at once)
-t, --timeout
The number of seconds after which a test or generation times out if the program does not return. WARNING: if you're using the sio2jail flag, this timeout will still work based on time measured directly by toster, not time measured by sio2jail [default: 5]
--compile-timeout
The number of seconds after which compilation times out if it doesn't finish [default: 10]
-c, --compile-command
The command used to compile the file. gets replaced with the path to the source code file, is the executable output location [default: "g++ -std=c++20 -O3 -static -o "]
-s, --sio2jail
Makes toster use sio2jail for measuring program runtime and memory use more accurately. By default limits memory use to 1 GiB. WARNING: enabling this flag can significantly slow down testing
-m, --memory-limit
Sets a memory limit (in KiB) for the executed program and enables the sio2jail flag. WARNING: enabling this flag can significantly slow down testing
-g, --generate
Makes toster generate output files in the output directory instead of comparing the program's output with the files in the output directory
-h, --help
Print help
-V, --version
Print version
```
Compiler
If you're using the sio2jail feature and want to make sure that your toster measurements are exactly identical to those of sio2 on a contest, you need to make sure that you're using the same compiler version as the one used in sio. The compiler used in the Polish Olympiad in Informatics as of XXXI OI is G++ 12.2 (as detailed here). If you want to install G++ 12.2, you can do so by building it from scratch (for example using this script, only changing the version). You can also download prebuilt G++ versions made by me from here:
- G++ 10.2
- G++ 12.2
License
Toster is licensed under the MIT Licence
Dependencies
This project uses sio2jail, a project available under the MIT licence