gentests and cltest supports flags.txt (currently just -dbg used)

This commit is contained in:
Li Jie
2024-09-14 18:13:18 +08:00
parent d8838503b2
commit 8e3d76b7ea
2 changed files with 45 additions and 4 deletions

View File

@@ -21,6 +21,7 @@ import (
"os" "os"
"strings" "strings"
"github.com/goplus/llgo/cl"
"github.com/goplus/llgo/internal/llgen" "github.com/goplus/llgo/internal/llgen"
"github.com/goplus/llgo/ssa" "github.com/goplus/llgo/ssa"
"github.com/goplus/mod" "github.com/goplus/mod"
@@ -41,6 +42,20 @@ func main() {
llgenDir(dir+"/cl/_testdata", "") llgenDir(dir+"/cl/_testdata", "")
} }
func isDbgSymEnabled(flagsFile string) bool {
data, err := os.ReadFile(flagsFile)
if err != nil {
return false
}
toks := strings.Split(strings.Join(strings.Split(string(data), "\n"), " "), " ")
for _, tok := range toks {
if tok == "-dbg" {
return true
}
}
return false
}
func llgenDir(dir string, pkgPath ...string) { func llgenDir(dir string, pkgPath ...string) {
fis, err := os.ReadDir(dir) fis, err := os.ReadDir(dir)
check(err) check(err)
@@ -49,10 +64,17 @@ func llgenDir(dir string, pkgPath ...string) {
if !fi.IsDir() || strings.HasPrefix(name, "_") { if !fi.IsDir() || strings.HasPrefix(name, "_") {
continue continue
} }
func() {
testDir := dir + "/" + name testDir := dir + "/" + name
fmt.Fprintln(os.Stderr, "llgen", testDir) fmt.Fprintln(os.Stderr, "llgen", testDir)
os.Chdir(testDir) os.Chdir(testDir)
dbg := isDbgSymEnabled("flags.txt")
if dbg {
cl.EnableDebugSymbols()
}
defer cl.DisableDebugSymbols()
llgen.SmartDoFile("in.go", pkgPath...) llgen.SmartDoFile("in.go", pkgPath...)
}()
} }
} }

View File

@@ -107,6 +107,20 @@ func Pkg(t *testing.T, pkgPath, outFile string) {
} }
} }
func isDbgSymEnabled(flagsFile string) bool {
data, err := os.ReadFile(flagsFile)
if err != nil {
return false
}
toks := strings.Split(strings.Join(strings.Split(string(data), "\n"), " "), " ")
for _, tok := range toks {
if tok == "-dbg" {
return true
}
}
return false
}
func testFrom(t *testing.T, pkgDir, sel string, byLLGen bool) { func testFrom(t *testing.T, pkgDir, sel string, byLLGen bool) {
if sel != "" && !strings.Contains(pkgDir, sel) { if sel != "" && !strings.Contains(pkgDir, sel) {
return return
@@ -114,6 +128,11 @@ func testFrom(t *testing.T, pkgDir, sel string, byLLGen bool) {
log.Println("Parsing", pkgDir) log.Println("Parsing", pkgDir)
in := pkgDir + "/in.go" in := pkgDir + "/in.go"
out := pkgDir + "/out.ll" out := pkgDir + "/out.ll"
dbg := isDbgSymEnabled(pkgDir + "/flags.txt")
if dbg {
cl.EnableDebugSymbols()
}
defer cl.DisableDebugSymbols()
b, err := os.ReadFile(out) b, err := os.ReadFile(out)
if err != nil { if err != nil {
t.Fatal("ReadFile failed:", err) t.Fatal("ReadFile failed:", err)