| // +build ignore |
| |
| package a |
| |
| // This test exercises the synthesis of testmain packages for tests. |
| // The test framework doesn't directly let us perform negative |
| // assertions (i.e. that TestingQuux isn't called, or that its |
| // parameter's PTS is empty) so this test is rather roundabout. |
| |
| import "testing" |
| |
| func log(f func(*testing.T)) { |
| // The PTS of f is the set of called tests. TestingQuux is not present. |
| print(f) // @pointsto main.Test | main.TestFoo |
| } |
| |
| func Test(t *testing.T) { |
| // Don't assert @pointsto(t) since its label contains a fragile line number. |
| log(Test) |
| } |
| |
| func TestFoo(t *testing.T) { |
| // Don't assert @pointsto(t) since its label contains a fragile line number. |
| log(TestFoo) |
| } |
| |
| func TestingQuux(t *testing.T) { |
| // We can't assert @pointsto(t) since this is dead code. |
| log(TestingQuux) |
| } |
| |
| func BenchmarkFoo(b *testing.B) { |
| } |
| |
| func ExampleBar() { |
| } |
| |
| // Excludes TestingQuux. |
| // @calls testing.tRunner -> main.Test |
| // @calls testing.tRunner -> main.TestFoo |
| // @calls testing.runExample -> main.ExampleBar |
| // @calls (*testing.B).runN -> main.BenchmarkFoo |