Skip to content

Commit bd4db1d

Browse files
committed
add gen dir
1 parent 76873a2 commit bd4db1d

File tree

3 files changed

+92
-0
lines changed

3 files changed

+92
-0
lines changed

gen/gen_gotest.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package gen
2+
3+

gen/gen_test.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package gen
2+
3+
import (
4+
"fmt"
5+
"github.com/sjqzhang/gmock/util"
6+
"testing"
7+
)
8+
9+
func TestGen(t *testing.T) {
10+
11+
12+
a,_:=util.ParseWithPattern("func\\s+\\(\\w+\\s+(?P<Struct>[\\w\\*]+)\\)\\s(?P<Name>[\\w]+)\\(",`func (d *DSNValues) GetInt(paramName string, defaultValue int) int {`)
13+
14+
tpl:=`
15+
func Test{{.Struct}}{{.Name}}(t *testing.T) {
16+
Reset()
17+
var req req
18+
reqJson:="{}"
19+
err := json.Unmarshal([]byte(reqJson), &req)
20+
if err!=nil {
21+
t.Fail()
22+
}
23+
24+
resp := ctrls.{{.Struct}}Ctrl.{{.Name}}(ctx, &req)
25+
dtoResp := resp.(*dto.ResponseDto)
26+
assert.Equal(t, infra.ReturnCode(0), dtoResp.Retcode)
27+
28+
}
29+
`
30+
fmt.Println(util.Render(tpl,a))
31+
}

util/util.go

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package util
22

33
import (
4+
"bytes"
45
"fmt"
56
"github.com/sjqzhang/goutil"
7+
"html/template"
68
"log"
79
"net"
810
"net/url"
911
"os"
12+
"path/filepath"
1013
"reflect"
1114
"regexp"
1215
"runtime"
@@ -99,6 +102,61 @@ func Parse(dsn string) (*DSN, error) {
99102
return &d, nil
100103
}
101104

105+
// use go template to render string with map or list of map
106+
func Render(tpl string, data interface{}) (string, error) {
107+
t, err := template.New("tpl").Parse(tpl)
108+
if err != nil {
109+
return "", err
110+
}
111+
buf := new(bytes.Buffer)
112+
err = t.Execute(buf, data)
113+
if err != nil {
114+
return "", err
115+
}
116+
return buf.String(), nil
117+
}
118+
119+
120+
// parse string use regexp pattern with group and return map
121+
func ParseWithPattern(pattern, str string) (map[string]string, error) {
122+
reg,err := regexp.Compile(pattern)
123+
if err != nil {
124+
return nil, err
125+
}
126+
m := reg.FindStringSubmatch(str)
127+
if len(m) == 0 {
128+
return nil, fmt.Errorf("not match")
129+
}
130+
result := make(map[string]string)
131+
for i, name := range reg.SubexpNames() {
132+
if i != 0 && name != "" {
133+
result[name] = m[i]
134+
}
135+
}
136+
return result, nil
137+
}
138+
139+
140+
141+
142+
// get all files by suffix in a directory
143+
func GetFilesBySuffix(dir, suffix string) ([]string, error) {
144+
files := make([]string, 0)
145+
err := filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
146+
if err != nil {
147+
return err
148+
}
149+
if !info.IsDir() && strings.HasSuffix(path, suffix) {
150+
files = append(files, path)
151+
}
152+
return nil
153+
})
154+
if err != nil {
155+
return nil, err
156+
}
157+
return files, nil
158+
}
159+
102160

103161
func CollectFieldNames(t reflect.Type,m map[string]struct{},prefix string) {
104162
// Return if not struct or pointer to struct.

0 commit comments

Comments
 (0)