Image build running and testing BAPCtools. https://github.com/RagnarGrootKoerkamp/BAPCtools
9.8K
BAPCtools is a tool for creating and developing problems following the CLICS (DOMjudge/Kattis) problem format specified here.
The aim of this tool is to run all necessary compilation, validation, and testing commands while working on an ICPC-style problem. Ideally one should never have to manually run any compilation or testing command themselves.
I'm interested to know who's using this, so feel free to inform me (e.g. via an issue) if so ;) The current state is relatively stable, but things do change from time to time since I'm not aware of usage outside of BAPC yet.
For now the only way to use this is to clone the repository and install the required dependencies manually. (If you know how to make Debian and/or Arch packages, feel free to help out.)
pip install pyyaml or the python[3]-yaml Arch Linux package.pip install colorama or the python[3]-colorama Arch Linux package.argcomplete library for command line argument completion. Install via
python[3]-argcomplete.
Note that actually using argcomplete is optional, but recommended.
Detailed instructions are here.
TL;DR: Put eval "$(register-python-argcomplete[3] tools.py)" in your .bashrc or .zshrc.
Optional dependencies, required for some subcommands:
pip install ruamel.yaml or the python[3]-ruamel-yaml Arch Linux package.
generators.yaml.pdflatex command, provided by texlive-bin on Arch Linux and
potentially some specific LaTeX packages (like tikz) provided by
texlive-extra.
These are only needed for building pdf files, not for run and validate and such.After cloning the repository, symlink bin/tools.py to somewhere in your $PATH. E.g., if ~/bin/ is in your $PATH, you can do:
% ln -s ~/git/BAPCtools/bin/tools.py ~/bin/bt
For Windows, you'll need the following in your
path:
Python for Python 3g++ to compile C++javac and java to compile and run java.Resource limits (memory limit/hard cpu time limit) are also not supported.
BAPCtools makes use of symlinks for building programs. By default users are not allowed to create symlinks on Windows. This can be fixed by enabling Developer Mode on Windows (Only works for Windows 10, version 1703 or newer).
(TODO: Copy instead of symlink files when symlinking is not allowed.)
BAPCtools can be run either from a problem directory or a contest directory. This
is automatically detected by searching for the problem.yaml file.
The most common commands and options to use on an existing repository are:
bt run [-v] [submissions [submissions ...]] [testcases [testcases ...]]bt test <submission> [--interactive | --samples | [testcases [testcases ...]]]bt generate [-v] [--jobs JOBS]bt validate [-v] [--remove | --move-to DIR] [testcases [testcases ...]]bt pdf [-v]The list of all available commands and options is at doc/commands.md#synopsis, and more information regarding the implementation is at doc/implementation_notes.md.
bt run [-v] [submissions [submissions ...]] [testcases [testcases ...]]Without arguments, the run command runs all submissions against all testcases.
Specify one or more submissions and one or more testcases to only run the given submissions against the given testcases.
okjjkjjk
Before running the given submissions, this command first makes sure that all generated testcases are up to date (in case generators/generators.yaml was found).

By default, bt run only prints one summary line per submission, and one additional line for each testcase with an unexpected result. Use -v to print one line per testcase instead.

bt test <submission> [--samples | [testcases [testcases ...]]]Use the test command to run a single submission on some testcases. The submission stdout and stderr are printed to the terminal instead of verified as an answer file.
Use --samples to run on the samples, or pass a list of testcases or directories containing testcases. Use --interactive/-i to run in interactive mode, where console input is forwarded to the submission.
This rebuilds and reruns the program until either control-C or control-D is pressed. It's also possible to supply the test case on the command line directly using e.g. < /path/to/file.in or <<< "10 20".

bt generate [-v] [--jobs JOBS]Use the generate command to generate the testcases specified in generators/generators.yaml. See doc/generators.md for the specification of generators.yaml and see doc/commands.md#generate for the full list of arguents.
Use -j 0 to disable running multiple jobs in parallel (the default is 4).

bt validate [-v] [--remove | --move-to DIR] [testcases [testcases ...]]Validate all the .in and .ans for all (given) testcases. It runs all validators from input_validators and output_validators.
Validators can be one of
checktestdata executable in your $PATH).You can use --remove to delete all failing testcases or --move <dir> to move
them to a separate directory.

bt pdf [-v]Use this command to compile the problem.pdf from the problem_statement/problem.en.tex LaTeX statement.
problem.pdf is written to the problem directory itself.
This can also be used to create the contest pdf by running it from the contest directory.
Content type
Image
Digest
sha256:1b561d73f…
Size
2.6 GB
Last updated
4 months ago
docker pull ragnargrootkoerkamp/bapctools