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) } }