Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit4719d24

Browse files
authored
chore(testutil): extract testutil.CreateZip and testutil.CreateTar helpers (#15540)
Extracts `testutil.CreateTar` and `testutil.CreateZip` test helpers.
1 parentf9d6698 commit4719d24

File tree

6 files changed

+89
-116
lines changed

6 files changed

+89
-116
lines changed

‎provisioner/terraform/parse_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"github.com/stretchr/testify/require"
1010

1111
"github.com/coder/coder/v2/provisionersdk/proto"
12+
"github.com/coder/coder/v2/testutil"
1213
)
1314

1415
funcTestParse(t*testing.T) {
@@ -380,7 +381,7 @@ func TestParse(t *testing.T) {
380381
t.Parallel()
381382

382383
session:=configure(ctx,t,api,&proto.Config{
383-
TemplateSourceArchive:makeTar(t,testCase.Files),
384+
TemplateSourceArchive:testutil.CreateTar(t,testCase.Files),
384385
})
385386

386387
err:=session.Send(&proto.Request{Type:&proto.Request_Parse{Parse:&proto.ParseRequest{}}})

‎provisioner/terraform/provision_test.go

Lines changed: 8 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
package terraform_test
44

55
import (
6-
"archive/tar"
7-
"bytes"
86
"context"
97
"encoding/json"
108
"errors"
@@ -28,6 +26,7 @@ import (
2826
"github.com/coder/coder/v2/provisioner/terraform"
2927
"github.com/coder/coder/v2/provisionersdk"
3028
"github.com/coder/coder/v2/provisionersdk/proto"
29+
"github.com/coder/coder/v2/testutil"
3130
)
3231

3332
typeprovisionerServeOptionsstruct {
@@ -78,39 +77,6 @@ func setupProvisioner(t *testing.T, opts *provisionerServeOptions) (context.Cont
7877
returnctx,api
7978
}
8079

81-
funcmakeTar(t*testing.T,filesmap[string]string) []byte {
82-
t.Helper()
83-
varbuffer bytes.Buffer
84-
writer:=tar.NewWriter(&buffer)
85-
86-
addedDirs:=make(map[string]bool)
87-
forname,content:=rangefiles {
88-
// Add parent directories if they don't exist
89-
dir:=filepath.Dir(name)
90-
ifdir!="."&&!addedDirs[dir] {
91-
err:=writer.WriteHeader(&tar.Header{
92-
Name:dir+"/",// Directory names must end with /
93-
Mode:0o755,
94-
Typeflag:tar.TypeDir,
95-
})
96-
require.NoError(t,err)
97-
addedDirs[dir]=true
98-
}
99-
100-
err:=writer.WriteHeader(&tar.Header{
101-
Name:name,
102-
Size:int64(len(content)),
103-
Mode:0o644,
104-
})
105-
require.NoError(t,err)
106-
_,err=writer.Write([]byte(content))
107-
require.NoError(t,err)
108-
}
109-
err:=writer.Flush()
110-
require.NoError(t,err)
111-
returnbuffer.Bytes()
112-
}
113-
11480
funcconfigure(ctx context.Context,t*testing.T,client proto.DRPCProvisionerClient,config*proto.Config) proto.DRPCProvisioner_SessionClient {
11581
t.Helper()
11682
sess,err:=client.Session(ctx)
@@ -200,7 +166,7 @@ func TestProvision_Cancel(t *testing.T) {
200166
binaryPath:binPath,
201167
})
202168
sess:=configure(ctx,t,api,&proto.Config{
203-
TemplateSourceArchive:makeTar(t,nil),
169+
TemplateSourceArchive:testutil.CreateTar(t,nil),
204170
})
205171

206172
err=sendPlan(sess,proto.WorkspaceTransition_START)
@@ -271,7 +237,7 @@ func TestProvision_CancelTimeout(t *testing.T) {
271237
})
272238

273239
sess:=configure(ctx,t,api,&proto.Config{
274-
TemplateSourceArchive:makeTar(t,nil),
240+
TemplateSourceArchive:testutil.CreateTar(t,nil),
275241
})
276242

277243
// provisioner requires plan before apply, so test cancel with plan.
@@ -360,7 +326,7 @@ func TestProvision_TextFileBusy(t *testing.T) {
360326
})
361327

362328
sess:=configure(ctx,t,api,&proto.Config{
363-
TemplateSourceArchive:makeTar(t,nil),
329+
TemplateSourceArchive:testutil.CreateTar(t,nil),
364330
})
365331

366332
err=sendPlan(sess,proto.WorkspaceTransition_START)
@@ -811,7 +777,7 @@ func TestProvision(t *testing.T) {
811777

812778
ctx,api:=setupProvisioner(t,nil)
813779
sess:=configure(ctx,t,api,&proto.Config{
814-
TemplateSourceArchive:makeTar(t,testCase.Files),
780+
TemplateSourceArchive:testutil.CreateTar(t,testCase.Files),
815781
})
816782

817783
planRequest:=&proto.Request{Type:&proto.Request_Plan{Plan:&proto.PlanRequest{
@@ -925,7 +891,7 @@ func TestProvision_ExtraEnv(t *testing.T) {
925891

926892
ctx,api:=setupProvisioner(t,nil)
927893
sess:=configure(ctx,t,api,&proto.Config{
928-
TemplateSourceArchive:makeTar(t,map[string]string{"main.tf":`resource "null_resource" "A" {}`}),
894+
TemplateSourceArchive:testutil.CreateTar(t,map[string]string{"main.tf":`resource "null_resource" "A" {}`}),
929895
})
930896

931897
err:=sendPlan(sess,proto.WorkspaceTransition_START)
@@ -975,7 +941,7 @@ func TestProvision_SafeEnv(t *testing.T) {
975941

976942
ctx,api:=setupProvisioner(t,nil)
977943
sess:=configure(ctx,t,api,&proto.Config{
978-
TemplateSourceArchive:makeTar(t,map[string]string{"main.tf":echoResource}),
944+
TemplateSourceArchive:testutil.CreateTar(t,map[string]string{"main.tf":echoResource}),
979945
})
980946

981947
err:=sendPlan(sess,proto.WorkspaceTransition_START)
@@ -997,7 +963,7 @@ func TestProvision_MalformedModules(t *testing.T) {
997963

998964
ctx,api:=setupProvisioner(t,nil)
999965
sess:=configure(ctx,t,api,&proto.Config{
1000-
TemplateSourceArchive:makeTar(t,map[string]string{
966+
TemplateSourceArchive:testutil.CreateTar(t,map[string]string{
1001967
"main.tf":`module "hello" { source = "./module" }`,
1002968
"module/module.tf":`resource "null_`,
1003969
}),

‎provisioner/terraform/tfparse/tfparse_test.go

Lines changed: 4 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package tfparse_test
22

33
import (
4-
"archive/tar"
5-
"bytes"
64
"context"
75
"io"
86
"log"
@@ -11,7 +9,6 @@ import (
119
"cdr.dev/slog"
1210
"cdr.dev/slog/sloggers/sloghuman"
1311
"cdr.dev/slog/sloggers/slogtest"
14-
"github.com/coder/coder/v2/archive"
1512
"github.com/coder/coder/v2/provisioner/terraform/tfparse"
1613
"github.com/coder/coder/v2/testutil"
1714

@@ -363,7 +360,7 @@ func Test_WorkspaceTagDefaultsFromFile(t *testing.T) {
363360
t.Run(tc.name+"/tar",func(t*testing.T) {
364361
t.Parallel()
365362
ctx:=testutil.Context(t,testutil.WaitShort)
366-
tar:=createTar(t,tc.files)
363+
tar:=testutil.CreateTar(t,tc.files)
367364
logger:=slogtest.Make(t,nil).Leveled(slog.LevelDebug)
368365
tmpDir:=t.TempDir()
369366
tfparse.WriteArchive(tar,"application/x-tar",tmpDir)
@@ -381,7 +378,7 @@ func Test_WorkspaceTagDefaultsFromFile(t *testing.T) {
381378
t.Run(tc.name+"/zip",func(t*testing.T) {
382379
t.Parallel()
383380
ctx:=testutil.Context(t,testutil.WaitShort)
384-
zip:=createZip(t,tc.files)
381+
zip:=testutil.CreateZip(t,tc.files)
385382
logger:=slogtest.Make(t,nil).Leveled(slog.LevelDebug)
386383
tmpDir:=t.TempDir()
387384
tfparse.WriteArchive(zip,"application/zip",tmpDir)
@@ -399,36 +396,6 @@ func Test_WorkspaceTagDefaultsFromFile(t *testing.T) {
399396
}
400397
}
401398

402-
funccreateTar(t testing.TB,filesmap[string]string) []byte {
403-
varbuffer bytes.Buffer
404-
writer:=tar.NewWriter(&buffer)
405-
forpath,content:=rangefiles {
406-
err:=writer.WriteHeader(&tar.Header{
407-
Name:path,
408-
Size:int64(len(content)),
409-
Uid:65534,// nobody
410-
Gid:65534,// nogroup
411-
Mode:0o666,// -rw-rw-rw-
412-
})
413-
require.NoError(t,err)
414-
415-
_,err=writer.Write([]byte(content))
416-
require.NoError(t,err)
417-
}
418-
419-
err:=writer.Flush()
420-
require.NoError(t,err)
421-
returnbuffer.Bytes()
422-
}
423-
424-
funccreateZip(t testing.TB,filesmap[string]string) []byte {
425-
ta:=createTar(t,files)
426-
tr:=tar.NewReader(bytes.NewReader(ta))
427-
za,err:=archive.CreateZipFromTar(tr,int64(len(ta)))
428-
require.NoError(t,err)
429-
returnza
430-
}
431-
432399
// Last run results:
433400
// goos: linux
434401
// goarch: amd64
@@ -460,8 +427,8 @@ func BenchmarkWorkspaceTagDefaultsFromFile(b *testing.B) {
460427
}
461428
}`,
462429
}
463-
tarFile:=createTar(b,files)
464-
zipFile:=createZip(b,files)
430+
tarFile:=testutil.CreateTar(b,files)
431+
zipFile:=testutil.CreateZip(b,files)
465432
logger:=discardLogger(b)
466433
b.ResetTimer()
467434
b.Run("Tar",func(b*testing.B) {

‎provisioner/terraform/timings_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ func TestTimingsFromProvision(t *testing.T) {
3434
binaryPath:fakeBin,
3535
})
3636
sess:=configure(ctx,t,api,&proto.Config{
37-
TemplateSourceArchive:makeTar(t,nil),
37+
TemplateSourceArchive:testutil.CreateTar(t,nil),
3838
})
3939

4040
ctx,cancel:=context.WithTimeout(ctx,testutil.WaitLong)

‎provisionerd/provisionerd_test.go

Lines changed: 13 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package provisionerd_test
22

33
import (
4-
"archive/tar"
5-
"bytes"
64
"context"
75
"fmt"
86
"io"
@@ -97,7 +95,7 @@ func TestProvisionerd(t *testing.T) {
9795
err:=stream.Send(&proto.AcquiredJob{
9896
JobId:"test",
9997
Provisioner:"someprovisioner",
100-
TemplateSourceArchive:createTar(t,map[string]string{
98+
TemplateSourceArchive:testutil.CreateTar(t,map[string]string{
10199
"test.txt":"content",
102100
}),
103101
Type:&proto.AcquiredJob_TemplateImport_{
@@ -150,7 +148,7 @@ func TestProvisionerd(t *testing.T) {
150148
acq=newAcquireOne(t,&proto.AcquiredJob{
151149
JobId:"test",
152150
Provisioner:"someprovisioner",
153-
TemplateSourceArchive:createTar(t,map[string]string{
151+
TemplateSourceArchive:testutil.CreateTar(t,map[string]string{
154152
"../../../etc/passwd":"content",
155153
}),
156154
Type:&proto.AcquiredJob_TemplateImport_{
@@ -194,7 +192,7 @@ func TestProvisionerd(t *testing.T) {
194192
err:=stream.Send(&proto.AcquiredJob{
195193
JobId:"test",
196194
Provisioner:"someprovisioner",
197-
TemplateSourceArchive:createTar(t,map[string]string{
195+
TemplateSourceArchive:testutil.CreateTar(t,map[string]string{
198196
"test.txt":"content",
199197
}),
200198
Type:&proto.AcquiredJob_TemplateImport_{
@@ -243,7 +241,7 @@ func TestProvisionerd(t *testing.T) {
243241
acq=newAcquireOne(t,&proto.AcquiredJob{
244242
JobId:"test",
245243
Provisioner:"someprovisioner",
246-
TemplateSourceArchive:createTar(t,map[string]string{
244+
TemplateSourceArchive:testutil.CreateTar(t,map[string]string{
247245
"test.txt":"content",
248246
provisionersdk.ReadmeFile:"# A cool template 😎\n",
249247
}),
@@ -325,7 +323,7 @@ func TestProvisionerd(t *testing.T) {
325323
acq=newAcquireOne(t,&proto.AcquiredJob{
326324
JobId:"test",
327325
Provisioner:"someprovisioner",
328-
TemplateSourceArchive:createTar(t,map[string]string{
326+
TemplateSourceArchive:testutil.CreateTar(t,map[string]string{
329327
"test.txt":"content",
330328
}),
331329
Type:&proto.AcquiredJob_TemplateDryRun_{
@@ -396,7 +394,7 @@ func TestProvisionerd(t *testing.T) {
396394
acq=newAcquireOne(t,&proto.AcquiredJob{
397395
JobId:"test",
398396
Provisioner:"someprovisioner",
399-
TemplateSourceArchive:createTar(t,map[string]string{
397+
TemplateSourceArchive:testutil.CreateTar(t,map[string]string{
400398
"test.txt":"content",
401399
}),
402400
Type:&proto.AcquiredJob_WorkspaceBuild_{
@@ -459,7 +457,7 @@ func TestProvisionerd(t *testing.T) {
459457
acq=newAcquireOne(t,&proto.AcquiredJob{
460458
JobId:"test",
461459
Provisioner:"someprovisioner",
462-
TemplateSourceArchive:createTar(t,map[string]string{
460+
TemplateSourceArchive:testutil.CreateTar(t,map[string]string{
463461
"test.txt":"content",
464462
}),
465463
Type:&proto.AcquiredJob_WorkspaceBuild_{
@@ -549,7 +547,7 @@ func TestProvisionerd(t *testing.T) {
549547
acq=newAcquireOne(t,&proto.AcquiredJob{
550548
JobId:"test",
551549
Provisioner:"someprovisioner",
552-
TemplateSourceArchive:createTar(t,map[string]string{
550+
TemplateSourceArchive:testutil.CreateTar(t,map[string]string{
553551
"test.txt":"content",
554552
}),
555553
Type:&proto.AcquiredJob_WorkspaceBuild_{
@@ -645,7 +643,7 @@ func TestProvisionerd(t *testing.T) {
645643
err:=stream.Send(&proto.AcquiredJob{
646644
JobId:"test",
647645
Provisioner:"someprovisioner",
648-
TemplateSourceArchive:createTar(t,map[string]string{
646+
TemplateSourceArchive:testutil.CreateTar(t,map[string]string{
649647
"test.txt":"content",
650648
}),
651649
Type:&proto.AcquiredJob_WorkspaceBuild_{
@@ -725,7 +723,7 @@ func TestProvisionerd(t *testing.T) {
725723
err:=stream.Send(&proto.AcquiredJob{
726724
JobId:"test",
727725
Provisioner:"someprovisioner",
728-
TemplateSourceArchive:createTar(t,map[string]string{
726+
TemplateSourceArchive:testutil.CreateTar(t,map[string]string{
729727
"test.txt":"content",
730728
}),
731729
Type:&proto.AcquiredJob_WorkspaceBuild_{
@@ -819,7 +817,7 @@ func TestProvisionerd(t *testing.T) {
819817
job:=&proto.AcquiredJob{
820818
JobId:"test",
821819
Provisioner:"someprovisioner",
822-
TemplateSourceArchive:createTar(t,map[string]string{
820+
TemplateSourceArchive:testutil.CreateTar(t,map[string]string{
823821
"test.txt":"content",
824822
}),
825823
Type:&proto.AcquiredJob_WorkspaceBuild_{
@@ -916,7 +914,7 @@ func TestProvisionerd(t *testing.T) {
916914
job:=&proto.AcquiredJob{
917915
JobId:"test",
918916
Provisioner:"someprovisioner",
919-
TemplateSourceArchive:createTar(t,map[string]string{
917+
TemplateSourceArchive:testutil.CreateTar(t,map[string]string{
920918
"test.txt":"content",
921919
}),
922920
Type:&proto.AcquiredJob_WorkspaceBuild_{
@@ -1010,7 +1008,7 @@ func TestProvisionerd(t *testing.T) {
10101008
err:=stream.Send(&proto.AcquiredJob{
10111009
JobId:"test",
10121010
Provisioner:"someprovisioner",
1013-
TemplateSourceArchive:createTar(t,map[string]string{
1011+
TemplateSourceArchive:testutil.CreateTar(t,map[string]string{
10141012
"test.txt":"content",
10151013
}),
10161014
Type:&proto.AcquiredJob_WorkspaceBuild_{
@@ -1078,26 +1076,6 @@ func TestProvisionerd(t *testing.T) {
10781076
})
10791077
}
10801078

1081-
// Creates an in-memory tar of the files provided.
1082-
funccreateTar(t*testing.T,filesmap[string]string) []byte {
1083-
varbuffer bytes.Buffer
1084-
writer:=tar.NewWriter(&buffer)
1085-
forpath,content:=rangefiles {
1086-
err:=writer.WriteHeader(&tar.Header{
1087-
Name:path,
1088-
Size:int64(len(content)),
1089-
})
1090-
require.NoError(t,err)
1091-
1092-
_,err=writer.Write([]byte(content))
1093-
require.NoError(t,err)
1094-
}
1095-
1096-
err:=writer.Flush()
1097-
require.NoError(t,err)
1098-
returnbuffer.Bytes()
1099-
}
1100-
11011079
// Creates a provisionerd implementation with the provided dialer and provisioners.
11021080
funccreateProvisionerd(t*testing.T,dialer provisionerd.Dialer,connector provisionerd.LocalProvisioners)*provisionerd.Server {
11031081
server:=provisionerd.New(dialer,&provisionerd.Options{

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp