blob: d6049ae52e9b92ac95bcd085a7794eddf17312aa [file] [log] [blame]
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)
}
}