# Testing signals — krahets/hello-algo

> Canonical page: https://codevetter.com/unpack/hello-algo/testing-signals

# Testing signals — krahets/hello-algo

Scanned commit 28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9 (2026-08-18). Generated by codevetter codevetter 1.12.0 on 2026-09-22.

Testing is 'does it compile and run' rather than assertion-based verification. Each language has either a run-all harness (Python test_all.py, JS test_all.js), native test drivers used as print harnesses (Go _test.go, ctest), or compile-only checks (Rust cargo build, TypeScript tsc --noEmit, Java javac, C/C++ cmake builds). There are no unit-test assertions on algorithm outputs, no docs/link checking, no site-build CI, and no coverage tooling. Coverage gaps: zig and pythontutor have no workflow at all, and zh-hant/ja/ru code trees are outside every workflow's path filter.
- codes/python/test_all.py is the Python 'test suite': it subprocess-executes every chapter_*/*.py and fails only on non-zero exit codes — no assertion of output content, so crashes are caught but wrong results are not. — [codes/python/test_all.py#L8-33](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/python/test_all.py#L8-L33)
- The Python workflow additionally enforces formatting: 'pip install black' then 'black <code-dir>' runs black over the whole directory (applying rewrites, which CI then leaves uncommitted but fails on parse errors). — [.github/workflows/python.yml#L37-43](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/.github/workflows/python.yml#L37-L43)
- codes/javascript/test_all.js is the JS harness: Deno expandGlob over chapter_*/*.js spawning 'node' per file via Deno.Command — also exit-code-only validation. — [codes/javascript/test_all.js](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/javascript/test_all.js) [.github/workflows/javascript.yml#L30-33](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/.github/workflows/javascript.yml#L30-L33)
- Go 'tests' are print-only drivers: e.g. pkg/list_node_test.go's TestListNode builds a linked list and calls PrintLinkedList with no assertions; chapter _test.go files like array_test.go are labeled 'Driver Code' and only fmt.Println results. — [codes/go/pkg/list_node_test.go](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/go/pkg/list_node_test.go) [codes/go/chapter_array_and_linkedlist/array_test.go#L16-40](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/go/chapter_array_and_linkedlist/array_test.go#L16-L40)
- Rust CI is compile-only: rust.yml runs 'cargo build' and 'cargo build --release' — no 'cargo test' and no bin execution — while using the nightly toolchain via brndnmtthws/rust-action-rustup. — [.github/workflows/rust.yml](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/.github/workflows/rust.yml)
- TypeScript CI is type-check-only: npm run check → tsc with noEmit over chapter_*/*.ts; nothing is executed. — [codes/typescript/package.json](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/typescript/package.json) [codes/typescript/tsconfig.json](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/typescript/tsconfig.json) [.github/workflows/typescript.yml](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/.github/workflows/typescript.yml)
- Java CI compiles everything with 'javac -d <dir>/build <dir>/**/*.java' on JDK 11 and 17 — no execution — and is pinned to the retired ubuntu-20.04 runner with actions/setup-java@v3. — [.github/workflows/java.yml](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/.github/workflows/java.yml)
- C and C++ CI builds with CMake across gcc/clang/cl on ubuntu+windows and runs 'ctest' — but the CMakeLists only register executables (add_executable), so ctest success effectively means 'built and ran without crashing'. — [.github/workflows/c.yml#L60-85](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/.github/workflows/c.yml#L60-L85) [codes/c/chapter_array_and_linkedlist/CMakeLists.txt](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/c/chapter_array_and_linkedlist/CMakeLists.txt) [.github/workflows/cpp.yml#L66-81](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/.github/workflows/cpp.yml#L66-L81)
- Path filters limit each workflow to codes/<lang>/ and en/codes/<lang>/ — changes to zh-hant/codes, ja/codes or ru/codes trigger no CI at all, and docs-only changes never exercise the code. — [.github/workflows/python.yml#L9-16](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/.github/workflows/python.yml#L9-L16) [.github/workflows/typescript.yml](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/.github/workflows/typescript.yml) [.github/workflows/go.yml](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/.github/workflows/go.yml)
- zig (codes/zig, ~59 files with build.zig) and pythontutor have no workflow — no .github/workflows/zig.yml exists — so the zig corpus is completely unverified in CI. — [codes/zig/build.zig](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/zig/build.zig) [.github/workflows/typescript.yml](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/.github/workflows/typescript.yml)
- There is no CI job that runs 'mkdocs build' — the docs site, nav integrity, overrides templates and locale INHERIT configs are only exercised by the Docker image build, which itself is not run by any workflow. — [.github/workflows/python.yml](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/.github/workflows/python.yml) [Dockerfile#L18](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/Dockerfile#L18)
- Non-determinism is inherent: samples use randomness (random_access picks random.randint indices, Rust uses rand::thread_rng, Go rand.Intn), which is one reason the harnesses check exit codes rather than golden output. (inferred) — [codes/python/chapter_array_and_linkedlist/array.py#L10-16](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/python/chapter_array_and_linkedlist/array.py#L10-L16) [codes/rust/chapter_array_and_linkedlist/array.rs#L10-15](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/rust/chapter_array_and_linkedlist/array.rs#L10-L15) [codes/go/chapter_array_and_linkedlist/array.go#L10-17](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/go/chapter_array_and_linkedlist/array.go#L10-L17)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
