Fix two issues with codegen that cause it not to work with Go Modules.
1. When parsing the code files the package SrcRoot and ImportPath were
being joined which assumes the package is hosted inside a GOPATH src
directory. Using those two fields is unnecessary because a package also
knows what directory it lives in, which is in the Dir field. This change
switches to using the Dir field.
2. When checking the types in the source files the default importer is
being used. Unfortunately the default importer has not been updated to
work with Go Modules and it only looks in the GOPATH for imports.
Luckily the Go team were convinced to backport some logic from the newer
go/packages package to go/build, and we can make use of the go/build
importer which supports Go Modules. One downside of using the go/build
importer is it is said to be slow. For this size project though it's I
don't think it's a problem.
In the future codegen should be rewritten to use go/packages once it is
included in the stdlib. go/packages currently lives at
golang.org/x/tools/go/packages. Once it is in the stdlib I believe it
will replace go/build.
Both fixes are compatible with Go 1.13, Go 1.12, Go 1.11, Go 1.10.
I've also updated the TravisCI config to run go generate, and to add the
newer versions of Go to demonstrate that this works on all versions of
Go.
* Added NotSame test for the assert package
* Added NotSame test for the require package
* Included formatted variants of NotSame for both assert and require
When suite setup is long, the necessity to wait for all suite setups for testing one single method bothers a lot. Here's a little fix of that behavior.
Go tip contains following commmit, that inlines function with single
call bodies.
13baf4b2cd
`(*Call).On()` is the exact target for the improvement in Go repo. Due to
the inlining, assert.CallerInfo() can't not detect the file and line
number of the call to `(*Mock).On()` from `(*Call).On()`. Thus, the test
fails.
Adding the compiler directive `go:noinline` prevent this effect and make
mock package works with go tip as before.
What
===
Add `go.mod` and `go.sum`, using `Go 1.11`.
Why
===
Now that golang/go#24301 has been accepted, lets start using go.mod files
alongside Godep, and keep the two in sync.
Notes
===
There are no changes required to testify to support go.mod. The files were
generated by running `go build` and `go mod tidy.
Merging
===
This PR is intended to be merged after #659 which adds Go1.11 to the list of
supported builds.
The reason is that since the name of the license is not stated
explicitly and the license text differed very slightly I had to perform
a diff to ensure it actually is MIT licensed. Also GitHub does not
detect the license for this project currently (probably for the same
reason).
Changes:
* Remove the line 'Please consider promoting this project...' that is
not part of the MIT license
* Use the same formatting as choosealicense.com
* Explicitly state 'MIT License'
* Update the copyright year