make # build
make test # run regression suiteRequires:
- C99 compiler (GCC or Clang)
- OpenSSL development headers
- PowerShell 7 (
pwsh) on Windows, Linux, or macOS
# Windows
pwsh tests/run_regression.ps1
# Linux
pwsh tests/run_regression.ps1
# macOS
pwsh tests/run_regression.ps1The regression suite is the single source of truth for all testing.
# Via make (recommended — auto-detects PowerShell)
make test
# Direct invocation
pwsh tests/run_regression.ps1 # all paths, all tests
pwsh tests/run_regression.ps1 -Verbose # show all output
pwsh tests/run_regression.ps1 -StopOnFailure # stop on first failure
pwsh tests/run_regression.ps1 -InterpreterOnly # qs only
pwsh tests/run_regression.ps1 -VMOnly # qs vm only
pwsh tests/run_regression.ps1 -QVMOnly # qs build+run only
pwsh tests/run_regression.ps1 -Path tests/ # specific folder
pwsh tests/run_regression.ps1 -Path tests/test_final.qs # single fileEvery test runs on all three execution paths (qs, qs vm, qvm) and outputs are compared.
Two allowlists special-case tests (matched by base file name):
tests/expected_failures.txt— tests whose non-zero exit is the correct behavior (negative tests). An unexpected zero exit is reported as a failure.tests/nondeterministic_tests.txt— tests whose output depends on an external service (live network, third-party server, ...). They are still run and reported, but never count toward the suite's pass/fail result.
src/quanto.c— amalgamation entry point (don't edit directly)src/parts/— individual modules (edit these)stdlib/— standard library modulesexamples/— language examplestests/— regression test suitetests/run_regression.ps1— canonical test runner
- Create a feature branch
- Write a failing regression test
- Implement the fix or feature
- Run
make test(orpwsh tests/run_regression.ps1) - Submit a Pull Request
- C99 standard
- 4-space indentation in C source
- No trailing whitespace
- LF line endings
- Checkout main
- Pull the latest changes
- Create a feature branch
- Implement your change
- Run the regression suite
- Push the branch
- Open a Pull Request
- Merge after review