Skip to content

make conformance fails silently on Windows if symlink degrades to directory junction #59

@chrisuthe

Description

@chrisuthe

`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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions