fix logger path bug (#5836)

This commit is contained in:
kvii 2022-11-05 11:52:08 +08:00 committed by GitHub
parent fb640cf7da
commit 871f1de6b9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 79 additions and 2 deletions

View File

@ -3,8 +3,8 @@ package utils
import ( import (
"database/sql/driver" "database/sql/driver"
"fmt" "fmt"
"path/filepath"
"reflect" "reflect"
"regexp"
"runtime" "runtime"
"strconv" "strconv"
"strings" "strings"
@ -16,7 +16,18 @@ var gormSourceDir string
func init() { func init() {
_, file, _, _ := runtime.Caller(0) _, file, _, _ := runtime.Caller(0)
// compatible solution to get gorm source directory with various operating systems // compatible solution to get gorm source directory with various operating systems
gormSourceDir = regexp.MustCompile(`gorm.utils.utils\.go`).ReplaceAllString(file, "") gormSourceDir = sourceDir(file)
}
func sourceDir(file string) string {
dir := filepath.Dir(file)
dir = filepath.Dir(dir)
s := filepath.Dir(dir)
if filepath.Base(s) != "gorm.io" {
s = dir
}
return s + string(filepath.Separator)
} }
// FileWithLineNum return the file name and line number of the current file // FileWithLineNum return the file name and line number of the current file

33
utils/utils_unix_test.go Normal file
View File

@ -0,0 +1,33 @@
package utils
import "testing"
func TestSourceDir(t *testing.T) {
cases := []struct {
file string
want string
}{
{
file: "/Users/name/go/pkg/mod/gorm.io/gorm@v1.2.3/utils/utils.go",
want: "/Users/name/go/pkg/mod/gorm.io/",
},
{
file: "/go/work/proj/gorm/utils/utils.go",
want: "/go/work/proj/gorm/",
},
{
file: "/go/work/proj/gorm_alias/utils/utils.go",
want: "/go/work/proj/gorm_alias/",
},
{
file: "/go/work/proj/my.gorm.io/gorm@v1.2.3/utils/utils.go",
want: "/go/work/proj/my.gorm.io/gorm@v1.2.3/",
},
}
for _, c := range cases {
s := sourceDir(c.file)
if s != c.want {
t.Fatalf("%s: expected %s, got %s", c.file, c.want, s)
}
}
}

View File

@ -0,0 +1,33 @@
package utils
import "testing"
func TestSourceDir(t *testing.T) {
cases := []struct {
file string
want string
}{
{
file: `C:\Users\name\go\pkg\mod\gorm.io\gorm@v1.20.8\utils\utils.go`,
want: `C:\Users\name\go\pkg\mod\gorm.io`,
},
{
file: `C:\go\work\proj\gorm\utils\utils.go`,
want: `C:\go\work\proj\gorm`,
},
{
file: `C:\go\work\proj\gorm_alias\utils\utils.go`,
want: `C:\go\work\proj\gorm_alias`,
},
{
file: `C:\go\work\proj\my.gorm.io\gorm\utils\utils.go`,
want: `C:\go\work\proj\my.gorm.io\gorm`,
},
}
for _, c := range cases {
s := sourceDir(c.file)
if s != c.want {
t.Fatalf("%s: expected %s, got %s", c.file, c.want, s)
}
}
}