Skip to content

Commit 7a52a9c

Browse files
authored
fix: flake in template pull (#6317)
1 parent f6a8c36 commit 7a52a9c

File tree

2 files changed

+28
-15
lines changed

2 files changed

+28
-15
lines changed

cli/templatepull_test.go

+26-15
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@ package cli_test
33
import (
44
"bytes"
55
"context"
6-
"io"
6+
"crypto/sha256"
7+
"encoding/hex"
78
"os"
89
"path/filepath"
910
"testing"
1011

1112
"github.com/codeclysm/extract"
1213
"github.com/google/uuid"
13-
"github.com/ory/dockertest/v3/docker/pkg/archive"
1414
"github.com/stretchr/testify/require"
1515

1616
"github.com/coder/coder/cli/clitest"
@@ -20,6 +20,26 @@ import (
2020
"github.com/coder/coder/pty/ptytest"
2121
)
2222

23+
// dirSum calculates a checksum of the files in a directory.
24+
func dirSum(t *testing.T, dir string) string {
25+
ents, err := os.ReadDir(dir)
26+
require.NoError(t, err)
27+
sum := sha256.New()
28+
for _, e := range ents {
29+
path := filepath.Join(dir, e.Name())
30+
31+
stat, err := os.Stat(path)
32+
require.NoError(t, err)
33+
34+
byt, err := os.ReadFile(
35+
path,
36+
)
37+
require.NoError(t, err, "mode: %+v", stat.Mode())
38+
_, _ = sum.Write(byt)
39+
}
40+
return hex.EncodeToString(sum.Sum(nil))
41+
}
42+
2343
func TestTemplatePull(t *testing.T) {
2444
t.Parallel()
2545

@@ -73,7 +93,6 @@ func TestTemplatePull(t *testing.T) {
7393
// and writes it to the correct directory.
7494
t.Run("ToDir", func(t *testing.T) {
7595
t.Parallel()
76-
t.Skip("FLAKE: @ammario to fix imminently")
7796

7897
client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
7998
user := coderdtest.CreateFirstUser(t, client)
@@ -120,18 +139,10 @@ func TestTemplatePull(t *testing.T) {
120139

121140
require.NoError(t, <-errChan)
122141

123-
expectedTarRd, err := archive.Tar(expectedDest, archive.Uncompressed)
124-
require.NoError(t, err)
125-
expectedTar, err := io.ReadAll(expectedTarRd)
126-
require.NoError(t, err)
127-
128-
actualTarRd, err := archive.Tar(actualDest, archive.Uncompressed)
129-
require.NoError(t, err)
130-
131-
actualTar, err := io.ReadAll(actualTarRd)
132-
require.NoError(t, err)
133-
134-
require.True(t, bytes.Equal(expectedTar, actualTar), "tar files differ")
142+
require.Equal(t,
143+
dirSum(t, expectedDest),
144+
dirSum(t, actualDest),
145+
)
135146
})
136147

137148
// FolderConflict tests that 'templates pull' fails when a folder with has

provisioner/echo/serve.go

+2
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,7 @@ func Tar(responses *Responses) ([]byte, error) {
225225
err = writer.WriteHeader(&tar.Header{
226226
Name: fmt.Sprintf("%d.provision.apply.protobuf", index),
227227
Size: int64(len(data)),
228+
Mode: 0o644,
228229
})
229230
if err != nil {
230231
return nil, err
@@ -242,6 +243,7 @@ func Tar(responses *Responses) ([]byte, error) {
242243
err = writer.WriteHeader(&tar.Header{
243244
Name: fmt.Sprintf("%d.provision.plan.protobuf", index),
244245
Size: int64(len(data)),
246+
Mode: 0o644,
245247
})
246248
if err != nil {
247249
return nil, err

0 commit comments

Comments
 (0)