Use testing.MainStart to support test packages that implement
TestMain for initial setup and teardown.
Change-Id: I7330a8e922448063f291f7b5b2eed31d274248bd
f.Scope.Objects is a map, so iteration order isn't defined. To fix this,
lets just sort the testcase list so that it's always consistent.
There are still some paths in the built go files, but this improves
repeatability using the same paths.
Test: Build twice, compare generated test.go files.
Change-Id: Ie3fc896f54314fee0e0e9ddc3a9e06ad2f72a78d
matchString was implemented separately on older go versions since they
didn't want a build dependency on the regex package from the testing
package.
Starting in Go 1.8, this is implemented using a internal package to
break the dependency, but until we require that everywhere, just copy
the regex implementation like the old `go test` did. I'm not sure we'll
be able to use the internal package in the future anyways.
Change-Id: Ief37542640026f9d73a75fd802f2691af50e2511
Go 1.6 fixed a bug where compiling with the -pack flag allowed non-main
packages to link.
https://github.com/golang/go/issues/13468
This change uses package main for choosestage and gotestmain.
Users that want to enable this option can use the '-t' option to
bootstrap.bash when passing '-r'. Builders that want to enable this can
set the RUN_TESTS environment variable in their bootstrap.bash.
The gotestmain tools is needed to write the main functions for the test
binaries, since 'go test' doesn't work well in this environment.
Change-Id: Iec5c2b5c9c3f5e3ba0ac8677fb88f5e963f9bd3f