Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
69d14e0
refactor: initial rust rewrite from python
JustinMeimar Feb 22, 2026
fa6f5a3
refactor: apply rust idioms
JustinMeimar Feb 22, 2026
374a6a4
refactor: move scripts to rust src
JustinMeimar Mar 1, 2026
bcda87a
refactor: drive grading scripts from cli
JustinMeimar Mar 1, 2026
e438dd5
refactor: replace custom error type with sum type
JustinMeimar Mar 1, 2026
7035d77
clean: delete old python project
JustinMeimar Mar 1, 2026
21972e0
fix: cache compiled regex
JustinMeimar Mar 1, 2026
0e89602
refactor: idiomatic rust cleanup for ported code
JustinMeimar Mar 1, 2026
b78bf8a
refactor: unified csv-backed key system for grading scripts
JustinMeimar Mar 1, 2026
15a0f06
fix: ci for new testing
JustinMeimar Mar 1, 2026
9147ba1
refactor: more idiomatic rust patterns
JustinMeimar Mar 1, 2026
5e5fdf3
fix: indent test output by subpackage depth
JustinMeimar Mar 1, 2026
b4dff3a
feat: decouple memcheck mode from valgrind config
JustinMeimar Mar 1, 2026
6dbb89a
refactor: use path/pathbuf in util function signatures
JustinMeimar Mar 1, 2026
ab7dda8
refactor: extract script runner into src/script.rs
JustinMeimar Mar 1, 2026
cf552ad
refactor: migrate path fields from string to pathbuf
JustinMeimar Mar 1, 2026
7e79e75
refactor: rewrite toolchain runner as try_fold pipeline
JustinMeimar Mar 1, 2026
a31af62
refactor: simplify toolchain config json language
JustinMeimar Mar 1, 2026
d833a4d
feat: add serve mode http api for remote test execution
JustinMeimar Mar 1, 2026
2c3fa67
refactor: avoid input stream allocation in run_step
JustinMeimar Mar 2, 2026
2f2b9e1
feat: parallelize test execution within subpackages using rayon
JustinMeimar Mar 2, 2026
891db69
feat: add embedded html frontend for serve mode
JustinMeimar Mar 2, 2026
12bdde7
chore: update cargo.lock for rayon dependency
JustinMeimar Mar 2, 2026
d91828c
refactor: organize files
JustinMeimar Mar 2, 2026
ac888d5
fix: valgrind in ci & skipping when unavailable
JustinMeimar Mar 2, 2026
99f99dd
fix: some non-optinal flags which should be optional
JustinMeimar Mar 2, 2026
ffb9b46
fix: macos ci test
JustinMeimar Mar 2, 2026
6d35a30
refactor: imperative arg skipping for default mode replaced with try_…
JustinMeimar Mar 2, 2026
7350d06
refactor: use a proc-macro system for logging
JustinMeimar Mar 2, 2026
02c81f7
rename: TestHarness trait to SequentialTestHarness
JustinMeimar Mar 2, 2026
997dd70
refactor: derive json serialization for Step struct and display for
JustinMeimar Mar 2, 2026
71283ed
refactor: introduce Serde for RawConfig to remove manual parse_toolch…
JustinMeimar Mar 2, 2026
1517dca
refactor: imperative directive parsing with functional
JustinMeimar Mar 2, 2026
4f1dc82
fix: remove MainError hack around introduced F25 due to spec
JustinMeimar Mar 2, 2026
f376bd5
refactor: give magic args their own Enum
JustinMeimar Mar 2, 2026
9ce897d
feature: closes #19 log full failure path
JustinMeimar Mar 2, 2026
ae73cec
impl: more descript DragonError variants
JustinMeimar Mar 2, 2026
b82bd2c
update: README
JustinMeimar Mar 2, 2026
5d2cd92
feature: closes #18 adding directive to skip tests
JustinMeimar Mar 2, 2026
3161ba9
fix: flush stdout after each test for smooth view
JustinMeimar Mar 2, 2026
d9a99e4
fix: create itermediate files in tmp as to not clutter cwd
JustinMeimar Mar 2, 2026
9de348f
update: nix flake
JustinMeimar Mar 2, 2026
d71f56e
refactor: accumulate parsing errors directly, without storing in Conf…
JustinMeimar Mar 2, 2026
60025f0
fix: error prone coupling between solutionExe and config
JustinMeimar Mar 2, 2026
11a33e5
update: restore previous formatting for -vv, -s, and -t flags
JustinMeimar Mar 3, 2026
75f8db4
refactor: move grading back into src for better testing observability
JustinMeimar Jul 14, 2026
e74146b
tests for tournament grading
JustinMeimar Jul 27, 2026
2da9588
fmt + error macro
JustinMeimar Aug 4, 2026
8563643
serve: replace permissive CORS with allow-list
JustinMeimar Aug 13, 2026
5afe33b
serve: drop executable paths from /api/info response
JustinMeimar Aug 13, 2026
dcfc656
serve: cap request body at 1 MiB
JustinMeimar Aug 13, 2026
51826d1
serve: ignore directives parsed from submitted source
JustinMeimar Aug 13, 2026
ac0a47d
runner: drain child stdio on threads with a per-stream byte cap
JustinMeimar Aug 13, 2026
1d0d182
runner: kill child process group on timeout
JustinMeimar Aug 13, 2026
af6a057
runner: preserve valgrind diagnostics, move leak sentinel to 217
JustinMeimar Aug 13, 2026
d975f46
serve: return startup errors instead of panicking
JustinMeimar Aug 13, 2026
6a21819
tournament: slugify toolchain and defender ids used in filenames
JustinMeimar Aug 13, 2026
3ec1080
testfile+runner: stop masking infra errors as skip/pass
JustinMeimar Aug 13, 2026
f5e44ef
testfile+runner: tighten directive and error-kind matching
JustinMeimar Aug 13, 2026
44b66fb
harness: fix perf row shift and tournament identity check
JustinMeimar Aug 13, 2026
040bcab
harness: enforce fast-fail and reject invalid package filter globs
JustinMeimar Aug 13, 2026
32f882d
harness: propagate memcheck failures and fix UTF-8 slice panic
JustinMeimar Aug 13, 2026
51168aa
runner: validate timeouts, reject empty toolchains, fail loud on tmp …
JustinMeimar Aug 13, 2026
2ef8a7c
grading: validate inputs and reject unknown solution IDs
JustinMeimar Aug 13, 2026
14fec1a
runner+config: env composition, path resolution, symlink cycles, log …
JustinMeimar Aug 13, 2026
8c631fd
organize: move misc functions out of main.rs
JustinMeimar Aug 22, 2026
9e5f039
tournament: include attacker id in per-defender feedback files
JustinMeimar Aug 22, 2026
053ef1d
cli: remove unused --verify flag
JustinMeimar Aug 22, 2026
78944c6
cli: match --package glob against top-level package name
JustinMeimar Aug 22, 2026
8dc4284
fmt + comment clean
JustinMeimar Aug 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 19 additions & 16 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,25 +8,28 @@ jobs:
os: [ubuntu-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v2
uses: actions/setup-python@v5
with:
python-version: '3.10'

- name: Install dependencies
run: |
pip install .

- name: run config tests
run: pytest tests/test_config.py
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable

- name: Install valgrind (Linux only)
if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install -y valgrind

- name: run runner tests
run: pytest tests/test_runner.py
- name: Cache cargo
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-${{ hashFiles('Cargo.lock') }}

- name: run grade tests
run: pytest tests/test_grader.py

- name: run runtime tests
run: pytest tests/test_runtime.py
- name: Run tests
run: ./tests/run_tests.sh
Loading
Loading