forked from mirror/gorm
fix logger path bug (#5836)
This commit is contained in:
parent
fb640cf7da
commit
871f1de6b9
|
@ -3,8 +3,8 @@ package utils
|
|||
import (
|
||||
"database/sql/driver"
|
||||
"fmt"
|
||||
"path/filepath"
|
||||
"reflect"
|
||||
"regexp"
|
||||
"runtime"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
@ -16,7 +16,18 @@ var gormSourceDir string
|
|||
func init() {
|
||||
_, file, _, _ := runtime.Caller(0)
|
||||
// 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
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue