An unfortunate discovery in Go today: when using
go test and running a testable example, the
-count flag is silently ignored – a confusing, underdocumented sharp edge for users. That is unless you specified the magic number
-count=1, in which case you get the normal test cache busting behavior.
You can find a caveat in help once you suspect the existence of this problem, but the only way to notice it’s happening is that your tests are running suspiciously fast at high
-count iterations. No error or warning is produced.
$ go help testflag ... -count n Run each test, benchmark, and fuzz seed n times (default 1). If -cpu is set, run n times for each GOMAXPROCS value. Examples are always run once. -count does not apply to fuzz tests matched by -fuzz.
This makes it hard to reproduce intermittent problems in an example test. As a workaround, I’m using a shell loop that runs the test until it returns a non-zero exit code:
while go test . -run Example_customInsertOpts -test.v -count=1; do :; done