forked from coder/coder
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexamples_test.go
More file actions
56 lines (48 loc) · 1.58 KB
/
examples_test.go
File metadata and controls
56 lines (48 loc) · 1.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package examples_test
import (
"archive/tar"
"bytes"
"errors"
"io"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/coder/coder/v2/examples"
)
func TestTemplate(t *testing.T) {
t.Parallel()
list, err := examples.List()
require.NoError(t, err, "error listing examples, run \"make gen\" to ensure examples are up to date")
require.NotEmpty(t, list)
for _, eg := range list {
eg := eg
t.Run(eg.ID, func(t *testing.T) {
t.Parallel()
assert.NotEmpty(t, eg.ID, "example ID should not be empty")
assert.NotEmpty(t, eg.URL, "example URL should not be empty")
assert.NotEmpty(t, eg.Name, "example name should not be empty")
assert.NotEmpty(t, eg.Description, "example description should not be empty")
assert.NotEmpty(t, eg.Markdown, "example markdown should not be empty")
assert.NotNil(t, eg.Tags, "example tags should not be nil, should be empty array if no tags")
_, err := examples.Archive(eg.ID)
assert.NoError(t, err, "error archiving example")
})
}
}
func TestSubdirs(t *testing.T) {
t.Parallel()
tarData, err := examples.Archive("docker")
require.NoError(t, err)
tarReader := tar.NewReader(bytes.NewReader(tarData))
entryPaths := make(map[byte][]string)
for {
header, err := tarReader.Next()
if errors.Is(err, io.EOF) {
break
}
require.NoError(t, err)
entryPaths[header.Typeflag] = append(entryPaths[header.Typeflag], header.Name)
}
require.Subset(t, entryPaths[tar.TypeDir], []string{"build"})
require.Subset(t, entryPaths[tar.TypeReg], []string{"README.md", "main.tf", "build/Dockerfile"})
}