init:
This commit is contained in:
49
example/c-sum/README.md
Normal file
49
example/c-sum/README.md
Normal file
@@ -0,0 +1,49 @@
|
||||
# c-sum — cross-platform C example
|
||||
|
||||
Minimal example: a C program that reads `N` then `N` integers and prints their
|
||||
sum. Tested with `judge` across **gcc / clang / MSVC** on **Linux / Windows**,
|
||||
with optional **valgrind** and **sanitizer** runs.
|
||||
|
||||
## Files
|
||||
|
||||
- `solution.c` — student-facing solution (could be what the student submits)
|
||||
- `sum.jdg` — judge test suite
|
||||
- `.gitea/workflows/judge.yml` — Gitea CI matrix
|
||||
|
||||
## Run locally
|
||||
|
||||
```sh
|
||||
# Linux / macOS
|
||||
CC=gcc judge sum.jdg .
|
||||
CC=clang judge sum.jdg .
|
||||
|
||||
# With valgrind
|
||||
judge sum.jdg . --wrapper="valgrind --error-exitcode=99 --leak-check=full -q"
|
||||
|
||||
# With ASan+UBSan build
|
||||
CC=clang CFLAGS="-O1 -g -fsanitize=address,undefined" judge sum.jdg .
|
||||
```
|
||||
|
||||
On Windows (inside an MSVC dev cmd shell), `build_windows` kicks in and
|
||||
produces `solution.exe`, which the runner auto-detects.
|
||||
|
||||
## Notes about the `.jdg`
|
||||
|
||||
- `normalize_crlf = true` — Windows `printf` emits `\r\n`; we strip `\r` before
|
||||
matching so the same expected outputs work on both platforms.
|
||||
- `trim_trailing_ws = true` — forgives trailing spaces a student's output might
|
||||
pick up (rare but annoying to debug).
|
||||
- `binary = "solution"` — the runner tries `solution` first, then
|
||||
`solution.exe` on Windows automatically.
|
||||
- Per-group `scoring = all_or_none` on `stress` gives weight only if every
|
||||
stress test passes.
|
||||
|
||||
## Adapting the Gitea workflow
|
||||
|
||||
- `runs-on: ${{ matrix.toolchain.system }}-Runner` assumes you have
|
||||
self-hosted Gitea runners labelled `Linux-Runner` / `Windows-Runner` (same
|
||||
naming as your existing `fixed_floating` pipeline).
|
||||
- `secrets.VAR_TOKEN` is only needed when pulling a student repo from a
|
||||
private org.
|
||||
- The summary job shells `grep` over the JSON; swap to `jq` if available on
|
||||
your runners.
|
||||
Reference in New Issue
Block a user