Skip to content

Commit

Permalink
cl: export GetFileClassType
Browse files Browse the repository at this point in the history
  • Loading branch information
visualfc committed Apr 10, 2024
1 parent 570665d commit 37a089c
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 0 deletions.
50 changes: 50 additions & 0 deletions cl/builtin_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -314,6 +314,56 @@ func TestClassNameAndExt(t *testing.T) {
}
}

func TestFileClassType(t *testing.T) {
type testData struct {
isClass bool
isNormalGox bool
isProj bool
fileName string
classType string
isTest bool
found bool
}
tests := []*testData{
{false, false, false, "abc.gop", "", false, false},
{false, false, false, "abc_test.gop", "", true, false},

{true, true, false, "abc.gox", "abc", false, true},
{true, true, false, "Abc.gox", "Abc", false, true},
{true, true, false, "abc_demo.gox", "abc", false, true},

{true, true, false, "main.gox", "_main", false, true},
{true, true, false, "main_demo.gox", "_main", false, true},
{true, true, false, "main_test.gox", "case_main", true, true},

{true, true, false, "abc_xtest.gox", "abc", false, true},
{true, true, false, "abc_test.gox", "case_abc", true, true},
{true, true, false, "Abc_test.gox", "caseAbc", true, true},

{true, true, true, "abc_yap.gox", "abc", false, true},
{true, true, false, "abc_yap.gox", "abc", false, true},
{true, true, true, "main_yap.gox", "_main", false, true},
{true, true, false, "main_yap.gox", "_main", false, true},

{true, false, false, "abc_ytest.gox", "case_abc", true, true},
{true, false, false, "Abc_ytest.gox", "caseAbc", true, true},
{true, false, true, "abc_xtest.gox", "abc", false, true},
{true, false, true, "main_xtest.gox", "_main", false, true},
}
for _, test := range tests {
classType, isTest, found := GetFileClassType(&ast.File{IsClass: test.isClass, IsNormalGox: test.isNormalGox, IsProj: test.isProj}, test.fileName)
if found != test.found {
t.Fatalf("%v found classType want %v, got %v.", test.fileName, test.found, found)
}
if isTest != test.isTest {
t.Fatalf("%v check classType isTest want %v, got %v.", test.fileName, test.isTest, isTest)
}
if classType != test.classType {
t.Fatalf("%v getClassType want %v, got %v.", test.fileName, test.classType, classType)
}
}
}

func TestErrMultiStarRecv(t *testing.T) {
defer func() {
if e := recover(); e == nil {
Expand Down
22 changes: 22 additions & 0 deletions cl/classfile.go
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,28 @@ func isGoxTestFile(ext string) bool {
return strings.HasSuffix(ext, "test.gox")
}

// GetFileClassType get ast.File classType by filename.
func GetFileClassType(file *ast.File, filename string) (classType string, isTest bool, ok bool) {
if file.IsClass {
var ext string
classType, _, ext = ClassNameAndExt(filename)
ok = true
if file.IsNormalGox {
isTest = strings.HasSuffix(ext, "_test.gox")
} else if !file.IsProj {
isTest = strings.HasSuffix(ext, "test.gox")
}
if isTest {
classType = casePrefix + testNameSuffix(classType)
} else if classType == "main" {
classType = "_main"
}
} else if strings.HasSuffix(filename, "_test.gop") {
isTest = true
}
return
}

func loadClass(ctx *pkgCtx, pkg *gogen.Package, file string, f *ast.File, conf *Config) *gmxProject {
tname, clsfile, ext := ClassNameAndExt(file)
gt, ok := conf.LookupClass(ext)
Expand Down

0 comments on commit 37a089c

Please sign in to comment.