You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Here is an example build failure when run from some other package:
$ go test pathing
# pathing
../pathing/pathing_test.go:13: undefined: name
FAIL pathing [build failed]
The way go test failures are reported makes it difficult for tooling that processes compilation/test output (emacs electric compilation buffers) to locate the reported file. The errors that come from the build phase are relative paths; the ones coming from test are filenames-only.
Test failures should include path to the file-under-test.
The text was updated successfully, but these errors were encountered:
ianlancetaylor
changed the title
test failures and compile failures use different file:lineno pathing
testing: test errors do not include full path name
Jul 22, 2017
I think that ship has sailed. I don't see how to do that without breaking lots of people. Also, the reason the compiler errors can do that is that the go command arranges to get the entire path and then rewrites the printed absolute paths to be relative to the current directory.
Unlike the compiler, test binaries are frequently run separate from the go command, so this trick does not work. Test binaries are also copied to other machines and so on. Users also expect the current output, because that's what has been there for a long time. For all these reasons I think we can't change this. Sorry.
Please answer these questions before submitting your issue. Thanks!
What version of Go are you using (
go version
)?What operating system and processor architecture are you using (
go env
)?What did you do?
Create
src/pathing/pathing_test.go
with the content:What did you expect to see?
When there is a compilation error (name is not defined):
When there is a test failure (uncomment the
name
declaration):What did you see instead?
When there is a test failure:
Notice that test failures are always the filename with no pathing. This appears to come from the
decorate
function: https://github.com/golang/go/blob/release-branch.go1.8/src/testing/testing.go#L303Test-time build failures contain more context when run outside the package directory. They are always an accurate relative path to the file-under-test. This appears to come from
LineHist.LineString
https://github.com/golang/go/blob/release-branch.go1.8/src/cmd/internal/obj/line.go#L218Here is an example build failure when run from some other package:
The way
go test
failures are reported makes it difficult for tooling that processes compilation/test output (emacs electric compilation buffers) to locate the reported file. The errors that come from the build phase are relative paths; the ones coming from test are filenames-only.Test failures should include path to the file-under-test.
The text was updated successfully, but these errors were encountered: