fix FileWithLineNum func and add gormSourceDir unit test

This commit is contained in:
daheige 2021-05-31 21:16:52 +08:00
parent 3f2a3be940
commit b2742c2b18
2 changed files with 20 additions and 2 deletions

View File

@ -3,6 +3,7 @@ package utils
import ( import (
"database/sql/driver" "database/sql/driver"
"fmt" "fmt"
"path/filepath"
"reflect" "reflect"
"runtime" "runtime"
"strconv" "strconv"
@ -14,17 +15,22 @@ var gormSourceDir string
func init() { func init() {
_, file, _, _ := runtime.Caller(0) _, file, _, _ := runtime.Caller(0)
gormSourceDir = strings.Replace(file, `utils.utils.go`, "", -1) // Here is the directory to get the gorm source code. Here, the filepath.Dir mode is enough,
// and the filepath is compatible with various operating systems
gormSourceDir = filepath.Dir(filepath.Dir(file))
} }
// FileWithLineNum return the file name and line number of the current file
func FileWithLineNum() string { func FileWithLineNum() string {
for i := 2; i < 15; i++ { for i := 1; i < 15; i++ {
_, file, line, ok := runtime.Caller(i) _, file, line, ok := runtime.Caller(i)
// fmt.Println("file:", file, " line: ", line, "ok: ", ok)
if ok && (!strings.HasPrefix(file, gormSourceDir) || strings.HasSuffix(file, "_test.go")) { if ok && (!strings.HasPrefix(file, gormSourceDir) || strings.HasSuffix(file, "_test.go")) {
return file + ":" + strconv.FormatInt(int64(line), 10) return file + ":" + strconv.FormatInt(int64(line), 10)
} }
} }
return "" return ""
} }

12
utils_filenum_test.go Normal file
View File

@ -0,0 +1,12 @@
package gorm
import (
"log"
"testing"
"gorm.io/gorm/utils"
)
func TestFileWithLineNum(t *testing.T) {
log.Println("FileWithLineNum: ", utils.FileWithLineNum())
}