#!/usr/bin/env bash # WAL unit + integration + crash-fuzz gate. Throwaway HOME/dirs only. set -e HERE="$(cd "$(dirname "$0")" && pwd)" REL="$HERE/../../lang/runtime" # test_wal.c and test_failloud.c #include "el_runtime.c" directly, so el_runtime.c # is already IN the translation unit — link the SIBLINGS only, or every symbol in # it is defined twice. The siblings are still required: el_runtime.c calls into # all six engram TUs. (lang/runtime/SOURCES is the source of truth.) RTSIB="$("$HERE/../../scripts/el-runtime-sources.sh" "$REL" | grep -v '/el_runtime\.c$')" SSLFLAGS="" if command -v brew >/dev/null 2>&1 && O="$(brew --prefix openssl@3 2>/dev/null)"; then SSLFLAGS="-I$O/include -L$O/lib" fi cc -O2 -fbracket-depth=1024 -Wno-parentheses-equality -I"$REL" \ "$HERE/test_wal.c" $RTSIB $SSLFLAGS -lcurl -lssl -lcrypto -lpthread -lm -o /tmp/test_wal HOME=/tmp/engram-throwaway-home /tmp/test_wal # Fail-loud data-dir check (must exit 1 with a FATAL line): cat > /tmp/test_failloud.c <<'C' #include "el_runtime.c" int main(void){ unsetenv("ENGRAM_DATA_DIR"); unsetenv("HOME"); engram_resolve_data_dir(); printf("REACHED\n"); return 0; } C cc -O2 -fbracket-depth=1024 -Wno-parentheses-equality -I"$REL" /tmp/test_failloud.c $RTSIB $SSLFLAGS -lcurl -lssl -lcrypto -lpthread -lm -o /tmp/test_failloud if env -u HOME -u ENGRAM_DATA_DIR /tmp/test_failloud; then echo "FAIL: should have exited"; exit 1; else echo "[PASS] fail-loud exit on unresolvable HOME"; fi