A simple-as-toast tester for C++ solutions to competitive programming exercises
Usage: toster [OPTIONS] <FILENAME>
Arguments:
<FILENAME> The name of the file containing the source code or the executable you want to test
Options:
-i, --in <IN>
Input directory [default: in]
--in-ext <IN_EXT>
Input file extension [default: .in]
-o, --out <OUT>
Output directory [default: out]
--out-ext <OUT_EXT>
Output file extension [default: .out]
--io <IO>
The input and output directory (sets both -i and -o at once)
-c, --checker <CHECKER>
The C++ source code or executable of a checker program that verifies if the tested program's output is correct instead of comparing it with given output files
The checker must use the following protocol:
- The checker receives the contents of the input file and the output of the tested program on stdin, separated by a single "\n" character
- The checker outputs "C" if the output is correct, or "I <OPTIONAL_DATA>" if the output is incorrect. The optional data can include any information useful for understanding why the output is wrong and will be shown when errors are displayed
-t, --timeout <TIMEOUT>
The number of seconds after which a test or generation (or checker if you're using the --checker flag) 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 <COMPILE_TIMEOUT>
The number of seconds after which compilation times out if it doesn't finish [default: 10]
--compile-command <COMPILE_COMMAND>
The command used to compile the file. <IN> gets replaced with the path to the source code file, <OUT> is the executable output location [default: "g++ -std=c++20 -O3 -static <IN> -o <OUT>"]
-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 <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
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:
Toster is licensed under the MIT Licence
Toster uses sio2jail, a project available under the MIT licence