| package main |
| |
| import ( |
| "os" |
| "path/filepath" |
| "reflect" |
| "sort" |
| "strings" |
| "testing" |
| ) |
| |
| func getRepoTopDir(t *testing.T) string { |
| wd, err := os.Getwd() |
| if err != nil { |
| t.Fatal(err) |
| } |
| wd = filepath.Clean(wd) |
| suffix := "hack/integration-cli-on-swarm/host" |
| if !strings.HasSuffix(wd, suffix) { |
| t.Skipf("cwd seems strange (needs to have suffix %s): %v", suffix, wd) |
| } |
| return filepath.Clean(filepath.Join(wd, "../../..")) |
| } |
| |
| func TestEnumerateTests(t *testing.T) { |
| if testing.Short() { |
| t.Skip("skipping in short mode") |
| } |
| tests, err := enumerateTests(getRepoTopDir(t)) |
| if err != nil { |
| t.Fatal(err) |
| } |
| sort.Strings(tests) |
| t.Logf("enumerated %d test filter strings:", len(tests)) |
| for _, s := range tests { |
| t.Logf("- %q", s) |
| } |
| } |
| |
| func TestEnumerateTestsForBytes(t *testing.T) { |
| b := []byte(`package main |
| import ( |
| "github.com/go-check/check" |
| ) |
| |
| func (s *FooSuite) TestA(c *check.C) { |
| } |
| |
| func (s *FooSuite) TestAAA(c *check.C) { |
| } |
| |
| func (s *BarSuite) TestBar(c *check.C) { |
| } |
| |
| func (x *FooSuite) TestC(c *check.C) { |
| } |
| |
| func (*FooSuite) TestD(c *check.C) { |
| } |
| |
| // should not be counted |
| func (s *FooSuite) testE(c *check.C) { |
| } |
| |
| // counted, although we don't support ungofmt file |
| func (s *FooSuite) TestF (c *check.C){} |
| `) |
| expected := []string{ |
| "FooSuite.TestA$", |
| "FooSuite.TestAAA$", |
| "BarSuite.TestBar$", |
| "FooSuite.TestC$", |
| "FooSuite.TestD$", |
| "FooSuite.TestF$", |
| } |
| |
| actual, err := enumerateTestsForBytes(b) |
| if err != nil { |
| t.Fatal(err) |
| } |
| if !reflect.DeepEqual(expected, actual) { |
| t.Fatalf("expected %q, got %q", expected, actual) |
| } |
| } |