Skip to content

Testing

SuiteCountFrameworkCoverage
Unit tests786GoogleTestParser, executor, dirwalker
Property tests124RapidCheckFuzzing, invariants
Compatibility tests52GoogleTestApache behavior matching
Confconv tests55GoogleTestConfig converter
Total1,036
Terminal window
# All tests
ctest --test-dir build --output-on-failure -j$(nproc)
# Specific suite
ctest --test-dir build -R "unit_tests" --output-on-failure
ctest --test-dir build -R "property_tests" --output-on-failure
ctest --test-dir build -R "compat_tests" --output-on-failure
ctest --test-dir build -R "confconv_tests" --output-on-failure

Validates all 83 directive types are implemented across parser, printer, executor, dirwalker, free, and generator:

Terminal window
bash tests/check_consistency.sh
Terminal window
# Build parser fuzzer with libFuzzer
clang -g -O1 -fsanitize=fuzzer,address -I include \
-DHTACCESS_UNIT_TEST \
tests/fuzz/fuzz_parser.cpp \
src/htaccess_parser.c src/htaccess_directive.c src/htaccess_expires.c \
-lstdc++ -lm -o fuzz_parser
# Run for 5 minutes
mkdir -p fuzz_corpus && cp tests/fuzz/corpus/* fuzz_corpus/
timeout 300 ./fuzz_parser fuzz_corpus/ -max_len=4096 -timeout=5
Terminal window
# Docker-based OLS directive tests
docker build -t ols-e2e -f tests/e2e/Dockerfile .
docker run -d --name ols-e2e -p 8088:8088 ols-e2e
bash tests/e2e/test_directives.sh
# Integration tests (WordPress, Laravel, Nextcloud, Drupal)
docker compose -f integration-tests/docker-compose.yml up -d --build
bash integration-tests/apps/wordpress/verify.sh
  • PR gate (ci.yml): build, unit/property/compat tests, ASan/UBSan, Apache comparison, OLS E2E
  • Manual release gates: runtime image builds, heavy apps-matrix, and DO VPS validation are explicit workflows only
  • Release (release.yml): x86_64 platform builds, RPM packaging, and release asset uploads