Skip to content

Commit 78f0ff9

Browse files
committed
feat(jzero): fix gen with types.go
1 parent 759ec8a commit 78f0ff9

2 files changed

Lines changed: 82 additions & 5 deletions

File tree

cmd/jzero/internal/command/gen/genapi/types.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,9 @@ func (ja *JzeroApi) separateTypesGo(apiFiles []string, apiSpecMap map[string]*sp
2626
return err
2727
}
2828

29-
// 去重并生成默认 types.go
30-
if len(typesWithoutPackage) > 0 {
31-
if err := ja.generateDefaultTypesFile(typesWithoutPackage); err != nil {
32-
return err
33-
}
29+
// Always rewrite the default types.go so old generated content does not linger.
30+
if err := ja.generateDefaultTypesFile(typesWithoutPackage); err != nil {
31+
return err
3432
}
3533

3634
return nil
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
package genapi
2+
3+
import (
4+
"os"
5+
"path/filepath"
6+
"strings"
7+
"testing"
8+
9+
"github.com/zeromicro/go-zero/tools/goctl/api/spec"
10+
)
11+
12+
func TestSeparateTypesGoRewritesDefaultTypesFileWhenNoDefaultTypesRemain(t *testing.T) {
13+
tmpDir := t.TempDir()
14+
15+
oldWd, err := os.Getwd()
16+
if err != nil {
17+
t.Fatalf("Getwd() error = %v", err)
18+
}
19+
t.Cleanup(func() {
20+
_ = os.Chdir(oldWd)
21+
})
22+
23+
if err := os.Chdir(tmpDir); err != nil {
24+
t.Fatalf("Chdir() error = %v", err)
25+
}
26+
27+
if err := os.MkdirAll(filepath.Join("internal", "types"), 0o755); err != nil {
28+
t.Fatalf("MkdirAll() error = %v", err)
29+
}
30+
31+
oldContent := []byte(`package types
32+
33+
type OldType struct{}
34+
`)
35+
defaultTypesPath := filepath.Join("internal", "types", "types.go")
36+
if err := os.WriteFile(defaultTypesPath, oldContent, 0o644); err != nil {
37+
t.Fatalf("WriteFile() error = %v", err)
38+
}
39+
40+
apiSpecMap := map[string]*spec.ApiSpec{
41+
"desc/api/user.api": {
42+
Info: spec.Info{
43+
Properties: map[string]string{
44+
"go_package": "user",
45+
},
46+
},
47+
Types: []spec.Type{
48+
spec.DefineStruct{
49+
RawName: "UserReq",
50+
Members: []spec.Member{
51+
{
52+
Name: "Name",
53+
Type: spec.PrimitiveType{RawName: "string"},
54+
Tag: "`json:\"name\"`",
55+
},
56+
},
57+
},
58+
},
59+
},
60+
}
61+
62+
ja := &JzeroApi{}
63+
if err := ja.separateTypesGo([]string{"desc/api/user.api"}, apiSpecMap); err != nil {
64+
t.Fatalf("separateTypesGo() error = %v", err)
65+
}
66+
67+
data, err := os.ReadFile(defaultTypesPath)
68+
if err != nil {
69+
t.Fatalf("ReadFile() error = %v", err)
70+
}
71+
72+
got := string(data)
73+
if strings.Contains(got, "OldType") {
74+
t.Fatalf("separateTypesGo() should rewrite stale default types file, got:\n%s", got)
75+
}
76+
if !strings.Contains(got, "package types") {
77+
t.Fatalf("separateTypesGo() should keep default types package, got:\n%s", got)
78+
}
79+
}

0 commit comments

Comments
 (0)