Go's cross-platform story is genuinely good. Write code once, compile for any target, mostly just works. But "mostly" hides a couple of sharp edges that bit us while building TestSmith. Both bugs were invisible on macOS and Linux, only surfaced on Windows CI, and had the same root cause: assumptions about path separators and filesystem traversal boundaries.

Bug 1: The Detector Boundary Escape

TestSmith has five language drivers, each responsible for detecting whether a directory is a project of its type. The Python driver walks upward from the starting directory, looking for pyproject.toml or setup.py. The Go driver looks for go.mod. And so on.

The bug: every driver would happily walk past a .git directory belonging to a different project and claim files in an ancestor project.

Here's what happened in practice. Our example projects live at: