From dd02af1b2fc83caed4eb7844da93da2e2d4e7567 Mon Sep 17 00:00:00 2001 From: Jack Ling <34231795+lingcoder@users.noreply.github.com> Date: Wed, 21 Jan 2026 19:12:37 +0800 Subject: [PATCH] test(cmd/gf): enhance integration tests for gen service command (#4645) ## Summary - Add 2 new integration test cases for `gf gen service` command - `Test_Gen_Service_CamelCase`: tests `DstFileNameCase: "Camel"` option to generate service files with CamelCase naming - `Test_Gen_Service_PackagesFilter`: tests `Packages` filter option to generate service files only for specified packages ## Test Plan - [x] Run `go test -v -run "Test_Gen_Service" ./...` - all 5 tests pass (3 existing + 2 new) --- .../cmd/cmd_z_unit_gen_service_test.go | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) diff --git a/cmd/gf/internal/cmd/cmd_z_unit_gen_service_test.go b/cmd/gf/internal/cmd/cmd_z_unit_gen_service_test.go index 40ee7158e..322667dbc 100644 --- a/cmd/gf/internal/cmd/cmd_z_unit_gen_service_test.go +++ b/cmd/gf/internal/cmd/cmd_z_unit_gen_service_test.go @@ -156,3 +156,85 @@ func Test_Issue3835(t *testing.T) { t.Assert(gfile.GetContents(genFile), gfile.GetContents(expectFile)) }) } + +func Test_Gen_Service_CamelCase(t *testing.T) { + gtest.C(t, func(t *gtest.T) { + var ( + path = gfile.Temp(guid.S()) + dstFolder = path + filepath.FromSlash("/service") + srvFolder = gtest.DataPath("genservice", "logic") + in = genservice.CGenServiceInput{ + SrcFolder: srvFolder, + DstFolder: dstFolder, + DstFileNameCase: "Camel", + WatchFile: "", + StPattern: "", + Packages: nil, + ImportPrefix: "", + Clear: false, + } + ) + err := gutil.FillStructWithDefault(&in) + t.AssertNil(err) + + err = gfile.Mkdir(path) + t.AssertNil(err) + defer gfile.Remove(path) + + // Clean up generated logic.go + genSrv := srvFolder + filepath.FromSlash("/logic.go") + defer gfile.Remove(genSrv) + + _, err = genservice.CGenService{}.Service(ctx, in) + t.AssertNil(err) + + // Files should be in CamelCase + files, err := gfile.ScanDir(dstFolder, "*.go", true) + t.AssertNil(err) + t.Assert(files, []string{ + dstFolder + filepath.FromSlash("/Article.go"), + dstFolder + filepath.FromSlash("/Base.go"), + dstFolder + filepath.FromSlash("/Delivery.go"), + dstFolder + filepath.FromSlash("/User.go"), + }) + }) +} + +func Test_Gen_Service_PackagesFilter(t *testing.T) { + gtest.C(t, func(t *gtest.T) { + var ( + path = gfile.Temp(guid.S()) + dstFolder = path + filepath.FromSlash("/service") + srvFolder = gtest.DataPath("genservice", "logic") + in = genservice.CGenServiceInput{ + SrcFolder: srvFolder, + DstFolder: dstFolder, + DstFileNameCase: "Snake", + WatchFile: "", + StPattern: "", + Packages: []string{"user"}, + ImportPrefix: "", + Clear: false, + } + ) + err := gutil.FillStructWithDefault(&in) + t.AssertNil(err) + + err = gfile.Mkdir(path) + t.AssertNil(err) + defer gfile.Remove(path) + + // Clean up generated logic.go + genSrv := srvFolder + filepath.FromSlash("/logic.go") + defer gfile.Remove(genSrv) + + _, err = genservice.CGenService{}.Service(ctx, in) + t.AssertNil(err) + + // Only user.go should be generated + files, err := gfile.ScanDir(dstFolder, "*.go", true) + t.AssertNil(err) + t.Assert(len(files), 1) + t.Assert(files[0], dstFolder+filepath.FromSlash("/user.go")) + }) +}