test(runner): make example suite checkout-location independent
Diagnostics embed the absolute source path, but normalize() only scrubbed hex addresses, so expected snapshots baked in the canonical checkout path (/Users/agra/projects/sx/...). The suite only passed when run from that exact directory; from a git worktree all 44 path-printing diagnostics mismatched. Collapse any absolute `.../examples/` or `.../issues/` prefix to the repo- relative form. The rule runs through normalize(), which is applied identically to both expected and actual output, so it can only reconcile path noise — it cannot desync an otherwise-matching pair. No snapshots regenerated. Suite now reports 350 passed / 0 failed from a worktree as well as the canonical tree.
This commit is contained in:
@@ -31,8 +31,16 @@ if [[ "${1:-}" == "--update" ]]; then
|
|||||||
UPDATE=1
|
UPDATE=1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Normalize stdout/stderr for snapshot diffing. Applied identically to both
|
||||||
|
# expected and actual, so it can only reconcile location/host noise — never
|
||||||
|
# desync an otherwise-matching pair. The path rule collapses any absolute
|
||||||
|
# `.../examples/` or `.../issues/` prefix (diagnostics embed the source path)
|
||||||
|
# down to the repo-relative form, so snapshots are checkout-location independent
|
||||||
|
# (canonical tree vs. a git worktree).
|
||||||
normalize() {
|
normalize() {
|
||||||
sed 's/0x[0-9a-f]\{4,\}/0xADDR/g'
|
sed -E \
|
||||||
|
-e 's/0x[0-9a-f]{4,}/0xADDR/g' \
|
||||||
|
-e 's#(/[^[:space:]]*)?/(examples|issues)/#\2/#g'
|
||||||
}
|
}
|
||||||
|
|
||||||
# Normalize `sx ir` output for snapshot diffing (host-specific noise + LLVM
|
# Normalize `sx ir` output for snapshot diffing (host-specific noise + LLVM
|
||||||
|
|||||||
Reference in New Issue
Block a user