go: path/filepath: TestIssue29372 fails on windows-arm builder
Since 44cf595a7efcd3d7048c745d1d1531696bcb5941 windows-arm builder fails with
https://build.golang.org/log/c00262fb40118e6917815b61ce7e1643b702bdc3
--- FAIL: TestIssue29372 (0.02s)
path_test.go:1398: test#0: want "The system cannot find the path specified.", got %!q(<nil>)
FAIL
FAIL path/filepath 26.728s
I don’t see how TestIssue29372 can fail this way. @jordanrh1 please help to debug this.
We can skip the test on windows-arm, but I would like to understand what is wrong here first.
Thank you.
Alex
About this issue
- Original URL
- State: closed
- Created 5 years ago
- Reactions: 1
- Comments: 15 (11 by maintainers)
Commits related to this issue
- path/filepath: skip TestIssue29372 on windows, if /tmp has symilinks TestIssue29372 is broken on windows when temporary directory has symlink in its path. Adjust the test to use filepath.EvalSymlink... — committed to golang/go by alexbrainman 5 years ago
- os: make Readlink work with symlinks with target like \??\Volume{ABCD}\ windows-arm TMP directory live inside such link (see https://github.com/golang/go/issues/29746#issuecomment-456526811 for detai... — committed to golang/go by alexbrainman 5 years ago
It is worth noting that none of this is ARM-specific. It is showing up on the ARM builder because %tmp% is a path that contains a volume mount point.
C:\Data\Users\administrator\AppData\Local\Temp\issue29372940456735.C:\Datais actually a volume mount point.walkSymlinks()tests to see ifC:\Datais a symlink, it finds that it is, andReadlinkreturnsVolume{ae420040-0000-0000-0000-008200000000}.walkSymlinksthen tries toLstatthis path, butLstatfails because the path name is missing the required\\?\prefix. The path must look like\\?\Volume{ae420040-0000-0000-0000-008200000000}.walkSymlinksthen returns an error, which causesevalSymlinksto callevalSymlinksUsingGetFinalPathNameByHandle, which succeeds.EvalSymlinksto fail withENOTDIR, butEvalSymlinkssucceeded, the test fails.I’m looking into
Readlinkto see if the returned value should be prefixed with\\?\.