`make conformance` (Makefile target added in PR #53) runs `ln -sfn $(CURDIR) ../conformance/repos/sendspin-go` to pin the harness at the local checkout. On Git Bash / MSYS2, that call silently creates a directory junction instead of a real symlink unless `MSYS=winsymlinks:native` is set in the environment. When that happens:
- The "symlink" shows up as `drwx` in `ls -la`, not `lrwx`.
- Subsequent operations traverse it as a directory, pinned to whatever state it was in when the junction was created.
- The harness builds the adapter against the wrong (stale) sendspin-go state.
- Results are misleading: scenarios fail against an old tree even though the working copy is on a newer branch.
Hit this twice in two days during the PR #18/#19 and #58 work. The second time it masked the validation of a fix that turned out to be correct.
Fix directions (not picking one)
- Check the symlink type in the Makefile target (`test -L ../conformance/repos/sendspin-go || error`) and fail early with a clear message.
- Set `MSYS=winsymlinks:native` inside the target so it always creates real symlinks on Git Bash.
- Or sniff the environment and warn if the user hasn't set it.
Any of the three is fine. The goal is that a silent fallback becomes a loud failure with a clear message pointing at the MSYS env var.
Related
`make conformance` (Makefile target added in PR #53) runs `ln -sfn $(CURDIR) ../conformance/repos/sendspin-go` to pin the harness at the local checkout. On Git Bash / MSYS2, that call silently creates a directory junction instead of a real symlink unless `MSYS=winsymlinks:native` is set in the environment. When that happens:
Hit this twice in two days during the PR #18/#19 and #58 work. The second time it masked the validation of a fix that turned out to be correct.
Fix directions (not picking one)
Any of the three is fine. The goal is that a silent fallback becomes a loud failure with a clear message pointing at the MSYS env var.
Related