gentests and cltest supports flags.txt (currently just -dbg used)
This commit is contained in:
@@ -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
|
||||||
}
|
}
|
||||||
testDir := dir + "/" + name
|
func() {
|
||||||
fmt.Fprintln(os.Stderr, "llgen", testDir)
|
testDir := dir + "/" + name
|
||||||
os.Chdir(testDir)
|
fmt.Fprintln(os.Stderr, "llgen", testDir)
|
||||||
llgen.SmartDoFile("in.go", pkgPath...)
|
os.Chdir(testDir)
|
||||||
|
dbg := isDbgSymEnabled("flags.txt")
|
||||||
|
if dbg {
|
||||||
|
cl.EnableDebugSymbols()
|
||||||
|
}
|
||||||
|
defer cl.DisableDebugSymbols()
|
||||||
|
llgen.SmartDoFile("in.go", pkgPath...)
|
||||||
|
}()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user