MCPcopy Create free account
hub / github.com/coder/envbuilder / TestExtract

Function TestExtract

devcontainer/features/features_test.go:16–72  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

14var emptyRemoteOpts []remote.Option
15
16func TestExtract(t *testing.T) {
17 t.Parallel()
18 t.Run("MissingMediaType", func(t *testing.T) {
19 t.Parallel()
20 registry := registrytest.New(t)
21 ref := registrytest.WriteContainer(t, registry, emptyRemoteOpts, "coder/test:latest", "some/type", nil)
22 fs := memfs.New()
23 _, err := features.Extract(fs, "", "/", ref)
24 require.ErrorContains(t, err, "no tar layer found")
25 })
26 t.Run("MissingInstallScript", func(t *testing.T) {
27 t.Parallel()
28 registry := registrytest.New(t)
29 ref := registrytest.WriteContainer(t, registry, emptyRemoteOpts, "coder/test:latest", features.TarLayerMediaType, map[string]any{
30 "devcontainer-feature.json": "{}",
31 })
32 fs := memfs.New()
33 _, err := features.Extract(fs, "", "/", ref)
34 require.ErrorContains(t, err, "install.sh")
35 })
36 t.Run("MissingFeatureFile", func(t *testing.T) {
37 t.Parallel()
38 registry := registrytest.New(t)
39 ref := registrytest.WriteContainer(t, registry, emptyRemoteOpts, "coder/test:latest", features.TarLayerMediaType, map[string]any{
40 "install.sh": "hey",
41 })
42 fs := memfs.New()
43 _, err := features.Extract(fs, "", "/", ref)
44 require.ErrorContains(t, err, "devcontainer-feature.json")
45 })
46 t.Run("MissingFeatureProperties", func(t *testing.T) {
47 t.Parallel()
48 registry := registrytest.New(t)
49 ref := registrytest.WriteContainer(t, registry, emptyRemoteOpts, "coder/test:latest", features.TarLayerMediaType, map[string]any{
50 "install.sh": "hey",
51 "devcontainer-feature.json": features.Spec{},
52 })
53 fs := memfs.New()
54 _, err := features.Extract(fs, "", "/", ref)
55 require.ErrorContains(t, err, "id is required")
56 })
57 t.Run("Success", func(t *testing.T) {
58 t.Parallel()
59 registry := registrytest.New(t)
60 ref := registrytest.WriteContainer(t, registry, emptyRemoteOpts, "coder/test:latest", features.TarLayerMediaType, map[string]any{
61 "install.sh": "hey",
62 "devcontainer-feature.json": features.Spec{
63 ID: "go",
64 Version: "1.0.0",
65 Name: "Go",
66 },
67 })
68 fs := memfs.New()
69 _, err := features.Extract(fs, "", "/", ref)
70 require.NoError(t, err)
71 })
72}
73

Callers

nothing calls this directly

Calls 3

NewFunction · 0.92
WriteContainerFunction · 0.92
ExtractFunction · 0.92

Tested by

no test coverage detected