fix(cli): use cwd as repoRoot instead of os.Executable path

os.Executable() in Go 1.x parallel tests resolves to <TempDir>/0/molecule.test
making path-based traversal from the binary back to the repo root unreliable.
Switch to os.Getwd() which always returns the repo checkout root in CI
(where `go test ./cmd/molecule/...` is invoked), and skip any path arithmetic.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Molecule AI · sdk-dev 2026-04-22 19:06:30 +00:00
parent 9dfb5f9aa4
commit 7b254c926c

View File

@ -193,13 +193,10 @@ func mockServer(t *testing.T, basePath string) *httptest.Server {
}
// repoRoot returns the repo root directory.
// Assumes this file is at cmd/molecule/molecule_test.go.
// ../../.. from cmd/molecule/ -> the module root.
// CI runs tests from the repo checkout dir, so cwd is the right anchor.
func repoRoot() string {
// Use os.Args[0] as a stable anchor: the test binary path.
// We walk up 3 levels from the test binary location.
exe, _ := os.Executable()
return filepath.Join(filepath.Dir(exe), "..", "..", "..")
cwd, _ := os.Getwd()
return cwd
}
// mol returns the path to the CLI binary, building it if needed.