Skip to content

Commit 0137126

Browse files
authored
Fix toolregistrytest by using fake (#5627)
* Add mock for pipedservice Signed-off-by: Yoshiki Fujikane <[email protected]> * Implement NewTestToolRegistry with fake Signed-off-by: Yoshiki Fujikane <[email protected]> * Use NewTestToolRegistry Signed-off-by: Yoshiki Fujikane <[email protected]> * Remove NewToolRegistry Signed-off-by: Yoshiki Fujikane <[email protected]> --------- Signed-off-by: Yoshiki Fujikane <[email protected]>
1 parent a252de8 commit 0137126

File tree

6 files changed

+50
-91
lines changed

6 files changed

+50
-91
lines changed

pkg/app/pipedv1/plugin/kubernetes/deployment/sync_test.go

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,7 @@ func TestDeploymentService_executeK8sSyncStage(t *testing.T) {
7474
}
7575

7676
// initialize tool registry
77-
testRegistry, err := toolregistrytest.NewToolRegistry(t)
78-
require.NoError(t, err)
77+
testRegistry := toolregistrytest.NewTestToolRegistry(t)
7978

8079
// initialize plugin config and dynamic client for assertions with envtest
8180
pluginCfg, dynamicClient := setupTestPluginConfigAndDynamicClient(t)
@@ -151,8 +150,7 @@ func TestDeploymentService_executeK8sSyncStage_withInputNamespace(t *testing.T)
151150
}
152151

153152
// initialize tool registry
154-
testRegistry, err := toolregistrytest.NewToolRegistry(t)
155-
require.NoError(t, err)
153+
testRegistry := toolregistrytest.NewTestToolRegistry(t)
156154

157155
// initialize plugin config and dynamic client for assertions with envtest
158156
pluginCfg, dynamicClient := setupTestPluginConfigAndDynamicClient(t)
@@ -187,8 +185,7 @@ func TestDeploymentService_executeK8sSyncStage_withPrune(t *testing.T) {
187185
ctx := context.Background()
188186

189187
// initialize tool registry
190-
testRegistry, err := toolregistrytest.NewToolRegistry(t)
191-
require.NoError(t, err)
188+
testRegistry := toolregistrytest.NewTestToolRegistry(t)
192189

193190
// initialize plugin config and dynamic client for assertions with envtest
194191
pluginCfg, dynamicClient := setupTestPluginConfigAndDynamicClient(t)
@@ -309,8 +306,7 @@ func TestDeploymentService_executeK8sSyncStage_withPrune_changesNamespace(t *tes
309306
ctx := context.Background()
310307

311308
// initialize tool registry
312-
testRegistry, err := toolregistrytest.NewToolRegistry(t)
313-
require.NoError(t, err)
309+
testRegistry := toolregistrytest.NewTestToolRegistry(t)
314310

315311
// initialize plugin config and dynamic client for assertions with envtest
316312
pluginCfg, dynamicClient := setupTestPluginConfigAndDynamicClient(t)
@@ -447,8 +443,7 @@ func TestDeploymentService_executeK8sSyncStage_withPrune_clusterScoped(t *testin
447443
ctx := context.Background()
448444

449445
// initialize tool registry
450-
testRegistry, err := toolregistrytest.NewToolRegistry(t)
451-
require.NoError(t, err)
446+
testRegistry := toolregistrytest.NewTestToolRegistry(t)
452447

453448
// initialize plugin config and dynamic client for assertions with envtest
454449
pluginCfg, dynamicClient := setupTestPluginConfigAndDynamicClient(t)

pkg/app/pipedv1/plugin/kubernetes/provider/helm_test.go

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,7 @@ func TestTemplateLocalChart(t *testing.T) {
3737
chartPath = "testchart"
3838
)
3939

40-
c, err := toolregistrytest.NewToolRegistry(t)
41-
require.NoError(t, err)
42-
t.Cleanup(func() { c.Close() })
40+
c := toolregistrytest.NewTestToolRegistry(t)
4341

4442
r := toolregistry.NewRegistry(c)
4543
helmPath, err := r.Helm(ctx, "3.16.1")
@@ -65,9 +63,7 @@ func TestTemplateLocalChart_WithNamespace(t *testing.T) {
6563
namespace = "testnamespace"
6664
)
6765

68-
c, err := toolregistrytest.NewToolRegistry(t)
69-
require.NoError(t, err)
70-
t.Cleanup(func() { c.Close() })
66+
c := toolregistrytest.NewTestToolRegistry(t)
7167

7268
r := toolregistry.NewRegistry(c)
7369
helmPath, err := r.Helm(ctx, "3.16.1")

pkg/app/pipedv1/plugin/kubernetes/provider/kustomize_test.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,9 @@ func TestKustomizeTemplate(t *testing.T) {
3535
appDir = "testdata/testkustomize"
3636
)
3737

38-
c, err := toolregistrytest.NewToolRegistry(t)
39-
require.NoError(t, err)
40-
38+
c := toolregistrytest.NewTestToolRegistry(t)
4139
r := toolregistry.NewRegistry(c)
4240

43-
t.Cleanup(func() { c.Close() })
44-
4541
kustomizePath, err := r.Kustomize(context.Background(), "5.4.3")
4642
require.NoError(t, err)
4743
require.NotEmpty(t, kustomizePath)

pkg/app/pipedv1/plugin/kubernetes/provider/loader_test.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -319,9 +319,7 @@ invalid yaml content
319319
}
320320

321321
func TestLoader_templateHelmChart(t *testing.T) {
322-
c, err := toolregistrytest.NewToolRegistry(t)
323-
require.NoError(t, err)
324-
t.Cleanup(func() { c.Close() })
322+
c := toolregistrytest.NewTestToolRegistry(t)
325323

326324
loader := &Loader{
327325
toolRegistry: toolregistry.NewRegistry(c),

pkg/app/pipedv1/plugin/kubernetes/toolregistry/registry_test.go

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,10 @@ import (
2929
func TestRegistry_Kubectl(t *testing.T) {
3030
t.Parallel()
3131

32-
c, err := toolregistrytest.NewToolRegistry(t)
33-
require.NoError(t, err)
32+
c := toolregistrytest.NewTestToolRegistry(t)
3433

3534
r := NewRegistry(c)
3635

37-
t.Cleanup(func() { c.Close() })
38-
3936
p, err := r.Kubectl(context.Background(), "1.30.2")
4037
require.NoError(t, err)
4138
require.NotEmpty(t, p)
@@ -51,13 +48,10 @@ func TestRegistry_Kubectl(t *testing.T) {
5148
func TestRegistry_Kustomize(t *testing.T) {
5249
t.Parallel()
5350

54-
c, err := toolregistrytest.NewToolRegistry(t)
55-
require.NoError(t, err)
51+
c := toolregistrytest.NewTestToolRegistry(t)
5652

5753
r := NewRegistry(c)
5854

59-
t.Cleanup(func() { c.Close() })
60-
6155
p, err := r.Kustomize(context.Background(), "5.4.3")
6256
require.NoError(t, err)
6357
require.NotEmpty(t, p)
@@ -73,13 +67,10 @@ func TestRegistry_Kustomize(t *testing.T) {
7367
func TestRegistry_Helm(t *testing.T) {
7468
t.Parallel()
7569

76-
c, err := toolregistrytest.NewToolRegistry(t)
77-
require.NoError(t, err)
70+
c := toolregistrytest.NewTestToolRegistry(t)
7871

7972
r := NewRegistry(c)
8073

81-
t.Cleanup(func() { c.Close() })
82-
8374
p, err := r.Helm(context.Background(), "3.16.1")
8475
require.NoError(t, err)
8576
require.NotEmpty(t, p)

pkg/plugin/toolregistry/toolregistrytest/toolregistrytest.go

Lines changed: 38 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@ import (
2222
"runtime"
2323
"testing"
2424
"text/template"
25+
26+
"google.golang.org/grpc"
27+
28+
"github.com/pipe-cd/pipecd/pkg/plugin/pipedservice"
29+
"github.com/pipe-cd/pipecd/pkg/plugin/toolregistry"
2530
)
2631

2732
type ToolRegistry struct {
@@ -38,97 +43,75 @@ type templateValues struct {
3843
Os string
3944
}
4045

41-
func NewToolRegistry(t *testing.T) (*ToolRegistry, error) {
42-
tmpDir, err := os.MkdirTemp("", "tool-registry-test")
43-
if err != nil {
44-
return nil, err
45-
}
46-
return &ToolRegistry{
47-
testingT: t,
48-
tmpDir: tmpDir,
49-
}, nil
50-
}
51-
52-
func (r *ToolRegistry) newTmpDir() (string, error) {
53-
return os.MkdirTemp(r.tmpDir, "")
46+
type fakeClient struct {
47+
pipedservice.PluginServiceClient
48+
testingT *testing.T
49+
tmpDir string
5450
}
5551

56-
func (r *ToolRegistry) binDir() (string, error) {
57-
target := r.tmpDir + "/bin"
52+
func (c *fakeClient) binDir() (string, error) {
53+
target := c.tmpDir + "/bin"
5854
if err := os.MkdirAll(target, 0o755); err != nil {
5955
return "", err
6056
}
6157
return target, nil
6258
}
6359

64-
func (r *ToolRegistry) outPath() (string, error) {
65-
target, err := r.newTmpDir()
66-
if err != nil {
67-
return "", err
68-
}
69-
return target + "/out", nil
60+
func (c *fakeClient) outPath() string {
61+
return c.tmpDir + "/out"
7062
}
7163

72-
func (r *ToolRegistry) InstallTool(ctx context.Context, name, version, script string) (path string, err error) {
73-
outPath, err := r.outPath()
74-
if err != nil {
75-
return "", err
76-
}
77-
78-
tmpDir, err := r.newTmpDir()
79-
if err != nil {
80-
return "", err
81-
}
64+
func (c *fakeClient) InstallTool(ctx context.Context, in *pipedservice.InstallToolRequest, opts ...grpc.CallOption) (*pipedservice.InstallToolResponse, error) {
65+
outPath := c.outPath()
8266

83-
binDir, err := r.binDir()
67+
binDir, err := c.binDir()
8468
if err != nil {
85-
return "", err
69+
return nil, err
8670
}
8771

88-
t, err := template.New("install script").Parse(script)
72+
t, err := template.New("install script").Parse(in.GetInstallScript())
8973
if err != nil {
90-
return "", err
74+
return nil, err
9175
}
9276

9377
vars := templateValues{
94-
Name: name,
95-
Version: version,
78+
Name: in.GetName(),
79+
Version: in.GetVersion(),
9680
OutPath: outPath,
97-
TmpDir: tmpDir,
81+
TmpDir: c.testingT.TempDir(),
9882
Arch: runtime.GOARCH,
9983
Os: runtime.GOOS,
10084
}
10185
var buf bytes.Buffer
10286
if err := t.Execute(&buf, vars); err != nil {
103-
return "", err
87+
return nil, err
10488
}
10589

10690
cmd := exec.CommandContext(ctx, "/bin/sh", "-c", buf.String())
10791
if out, err := cmd.CombinedOutput(); err != nil {
108-
r.testingT.Log(string(out))
109-
return "", err
92+
c.testingT.Log(string(out))
93+
return nil, err
11094
}
11195

11296
if err := os.Chmod(outPath, 0o755); err != nil {
113-
return "", err
97+
return nil, err
11498
}
11599

116-
target := binDir + "/" + name + "-" + version
100+
target := binDir + "/" + in.GetName() + "-" + in.GetVersion()
117101
if out, err := exec.CommandContext(ctx, "/bin/sh", "-c", "mv "+outPath+" "+target).CombinedOutput(); err != nil {
118-
r.testingT.Log(string(out))
119-
return "", err
120-
}
121-
122-
if err := os.RemoveAll(tmpDir); err != nil {
123-
return "", err
102+
c.testingT.Log(string(out))
103+
return nil, err
124104
}
125105

126-
return target, nil
106+
return &pipedservice.InstallToolResponse{
107+
InstalledPath: target,
108+
}, nil
127109
}
128110

129-
func (r *ToolRegistry) Close() error {
130-
if err := os.RemoveAll(r.tmpDir); err != nil {
131-
return err
132-
}
133-
return nil
111+
// NewTestToolRegistry returns a new instance of ToolRegistry for testing purpose.
112+
func NewTestToolRegistry(t *testing.T) *toolregistry.ToolRegistry {
113+
return toolregistry.NewToolRegistry(&fakeClient{
114+
testingT: t,
115+
tmpDir: t.TempDir(),
116+
})
134117
}

0 commit comments

Comments
 (0)