Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Go build error: no non-test Go files in <dir>

Getting an error when trying to run go build ./... from my $GOPATH/src .

no non-test Go files in <dir>

The error is correct there are no test files in <dir> but why is that causing a compile error? Is it a bug?

like image 715
Clintm Avatar asked Oct 23 '17 21:10

Clintm


2 Answers

Calling it a bug… the build shouldn't fail if the tests compile. Filed here: https://github.com/golang/go/issues/22409

The bug I filed was a duplicate of https://github.com/golang/go/issues/8279 looks like it was broken in 1.3.

like image 198
Clintm Avatar answered Nov 10 '22 20:11

Clintm


I don't think this is a bug, unless you see somewhere in the docs that contradicts this behaviour you should probably close the issue you've created.

Tests in go normally live in the package they are testing. You have made a new package with package main at the top (invalid if you also have main elsewhere), and then have included no go source files in that tests/main package (invalid as package has no go source files apart from tests, which the compiler complains about explicitly).

Possible solutions for you (assuming this isn't just a hypothetical question):

  • Move tests for main to test_main.go (this is what readers will expect)
  • Add doc.go file to your tests pkg and call it package tests in both files

The reason for putting tests in the same package is to ensure they have access to the entire package, if you want to split them to another package you'll find you have to test as an external user of the pkg - this may be painful. Main is also a special case as well as you don't normally import it.

like image 2
Kenny Grant Avatar answered Nov 10 '22 18:11

Kenny Grant