Skip to content

Commit 00d1361

Browse files
committed
refactor(test): merge walk regression tests into detector_test.go
Convert grpcprotoc and gozero detector tests from external (_test) to internal package so unexported walk functions are accessible. Fold the separate detector_walk_test.go files into detector_test.go and remove the now-redundant files. Signed-off-by: spencercjh <spencercjh@gmail.com>
1 parent 2e09986 commit 00d1361

4 files changed

Lines changed: 104 additions & 123 deletions

File tree

internal/extractor/gozero/detector_test.go

Lines changed: 51 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
1-
// Package gozero_test tests the go-zero extractor implementation.
2-
package gozero_test
1+
// Package gozero tests the go-zero extractor implementation.
2+
package gozero
33

44
import (
55
"errors"
66
"os"
77
"path/filepath"
88
"testing"
9-
10-
"github.com/spencercjh/spec-forge/internal/extractor/gozero"
119
)
1210

1311
func TestNewDetector(t *testing.T) {
14-
d := gozero.NewDetector()
12+
d := NewDetector()
1513
if d == nil {
1614
t.Error("NewDetector() should not return nil")
1715
}
@@ -21,7 +19,7 @@ func TestDetector_Detect_NoGoMod(t *testing.T) {
2119
// Create temp dir without go.mod
2220
tmpDir := t.TempDir()
2321

24-
detector := gozero.NewDetector()
22+
detector := NewDetector()
2523
_, err := detector.Detect(tmpDir)
2624

2725
if err == nil {
@@ -56,14 +54,14 @@ require (
5654
t.Fatalf("Failed to create .api file: %v", err)
5755
}
5856

59-
detector := gozero.NewDetector()
57+
detector := NewDetector()
6058
info, err := detector.Detect(tmpDir)
6159
if err != nil {
6260
t.Fatalf("Detect failed: %v", err)
6361
}
6462

65-
if info.BuildTool != gozero.BuildToolGoModules {
66-
t.Errorf("BuildTool = %s, want %s", info.BuildTool, gozero.BuildToolGoModules)
63+
if info.BuildTool != BuildToolGoModules {
64+
t.Errorf("BuildTool = %s, want %s", info.BuildTool, BuildToolGoModules)
6765
}
6866

6967
if info.BuildFilePath != goModPath {
@@ -74,9 +72,9 @@ require (
7472
t.Fatal("FrameworkData should not be nil")
7573
}
7674

77-
goZeroInfo, ok := info.FrameworkData.(*gozero.Info)
75+
goZeroInfo, ok := info.FrameworkData.(*Info)
7876
if !ok {
79-
t.Fatal("FrameworkData should be *gozero.Info")
77+
t.Fatal("FrameworkData should be *Info")
8078
}
8179

8280
if goZeroInfo.ModuleName != "example.com/testproject" {
@@ -117,7 +115,7 @@ require github.com/zeromicro/go-zero v1.5.0
117115
t.Fatalf("Failed to create .api file: %v", err)
118116
}
119117

120-
detector := gozero.NewDetector()
118+
detector := NewDetector()
121119
info, err := detector.Detect(tmpDir)
122120
if err != nil {
123121
t.Fatalf("Detect failed: %v", err)
@@ -127,9 +125,9 @@ require github.com/zeromicro/go-zero v1.5.0
127125
t.Fatal("FrameworkData should not be nil")
128126
}
129127

130-
goZeroInfo, ok := info.FrameworkData.(*gozero.Info)
128+
goZeroInfo, ok := info.FrameworkData.(*Info)
131129
if !ok {
132-
t.Fatal("FrameworkData should be *gozero.Info")
130+
t.Fatal("FrameworkData should be *Info")
133131
}
134132

135133
if !goZeroInfo.HasGoZeroDeps {
@@ -158,14 +156,14 @@ require (
158156
t.Fatalf("Failed to create go.mod: %v", err)
159157
}
160158

161-
detector := gozero.NewDetector()
159+
detector := NewDetector()
162160
_, err := detector.Detect(tmpDir)
163161
if err == nil {
164162
t.Fatal("expected Detect to fail when no go-zero dependencies are present")
165163
}
166164

167-
if _, ok := errors.AsType[*gozero.ErrNotGoZeroProject](err); !ok {
168-
t.Errorf("expected error to be *gozero.ErrNotGoZeroProject, got: %T", err)
165+
if _, ok := errors.AsType[*ErrNotGoZeroProject](err); !ok {
166+
t.Errorf("expected error to be *ErrNotGoZeroProject, got: %T", err)
169167
}
170168
}
171169

@@ -200,7 +198,7 @@ require github.com/zeromicro/go-zero v1.6.0
200198
t.Fatalf("Failed to create .api file: %v", err)
201199
}
202200

203-
detector := gozero.NewDetector()
201+
detector := NewDetector()
204202
info, err := detector.Detect(tmpDir)
205203
if err != nil {
206204
t.Fatalf("Detect failed: %v", err)
@@ -210,9 +208,9 @@ require github.com/zeromicro/go-zero v1.6.0
210208
t.Fatal("FrameworkData should not be nil")
211209
}
212210

213-
goZeroInfo, ok := info.FrameworkData.(*gozero.Info)
211+
goZeroInfo, ok := info.FrameworkData.(*Info)
214212
if !ok {
215-
t.Fatal("FrameworkData should be *gozero.Info")
213+
t.Fatal("FrameworkData should be *Info")
216214
}
217215

218216
if len(goZeroInfo.APIFiles) != 2 {
@@ -252,7 +250,7 @@ require github.com/zeromicro/go-zero v1.6.0
252250
t.Fatalf("Failed to create vendor .api file: %v", err)
253251
}
254252

255-
detector := gozero.NewDetector()
253+
detector := NewDetector()
256254
info, err := detector.Detect(tmpDir)
257255
if err != nil {
258256
t.Fatalf("Detect failed: %v", err)
@@ -262,9 +260,9 @@ require github.com/zeromicro/go-zero v1.6.0
262260
t.Fatal("FrameworkData should not be nil")
263261
}
264262

265-
goZeroInfo, ok := info.FrameworkData.(*gozero.Info)
263+
goZeroInfo, ok := info.FrameworkData.(*Info)
266264
if !ok {
267-
t.Fatal("FrameworkData should be *gozero.Info")
265+
t.Fatal("FrameworkData should be *Info")
268266
}
269267

270268
// Should only find the main.api file, not the vendor one
@@ -309,7 +307,7 @@ require github.com/zeromicro/go-zero v1.6.0
309307
t.Fatalf("Failed to create hidden .api file: %v", err)
310308
}
311309

312-
detector := gozero.NewDetector()
310+
detector := NewDetector()
313311
info, err := detector.Detect(tmpDir)
314312
if err != nil {
315313
t.Fatalf("Detect failed: %v", err)
@@ -319,9 +317,9 @@ require github.com/zeromicro/go-zero v1.6.0
319317
t.Fatal("FrameworkData should not be nil")
320318
}
321319

322-
goZeroInfo, ok := info.FrameworkData.(*gozero.Info)
320+
goZeroInfo, ok := info.FrameworkData.(*Info)
323321
if !ok {
324-
t.Fatal("FrameworkData should be *gozero.Info")
322+
t.Fatal("FrameworkData should be *Info")
325323
}
326324

327325
// Should only find the main.api file, not the hidden one
@@ -331,7 +329,7 @@ require github.com/zeromicro/go-zero v1.6.0
331329
}
332330

333331
func TestDetector_Detect_InvalidPath(t *testing.T) {
334-
detector := gozero.NewDetector()
332+
detector := NewDetector()
335333
_, err := detector.Detect("/nonexistent/path/that/does/not/exist")
336334

337335
if err == nil {
@@ -350,13 +348,36 @@ func TestDetector_Detect_EmptyProject(t *testing.T) {
350348
t.Fatalf("Failed to create go.mod: %v", err)
351349
}
352350

353-
detector := gozero.NewDetector()
351+
detector := NewDetector()
354352
_, err := detector.Detect(tmpDir)
355353
if err == nil {
356354
t.Fatal("expected Detect to fail when no go-zero dependency is present")
357355
}
358356

359-
if _, ok := errors.AsType[*gozero.ErrNotGoZeroProject](err); !ok {
360-
t.Errorf("expected error to be *gozero.ErrNotGoZeroProject, got: %T", err)
357+
if _, ok := errors.AsType[*ErrNotGoZeroProject](err); !ok {
358+
t.Errorf("expected error to be *ErrNotGoZeroProject, got: %T", err)
359+
}
360+
}
361+
362+
func TestDetector_findAPIFiles_RelativeDotPath(t *testing.T) {
363+
dir := t.TempDir()
364+
365+
// Create an .api file in the project root
366+
os.WriteFile(filepath.Join(dir, "main.api"), []byte(`syntax = "v1"`), 0o644)
367+
368+
// Change to temp dir so "." resolves to it
369+
origDir, _ := os.Getwd()
370+
defer os.Chdir(origDir)
371+
if err := os.Chdir(dir); err != nil {
372+
t.Fatalf("failed to chdir: %v", err)
373+
}
374+
375+
d := NewDetector()
376+
files, err := d.findAPIFiles(".")
377+
if err != nil {
378+
t.Fatalf("unexpected error: %v", err)
379+
}
380+
if len(files) == 0 {
381+
t.Fatal("expected at least 1 .api file with relative \".\" path, got 0")
361382
}
362383
}

internal/extractor/gozero/detector_walk_test.go

Lines changed: 0 additions & 30 deletions
This file was deleted.

0 commit comments

Comments
 (0)