Skip to content

Commit d97bf20

Browse files
committed
internal test for findDevcontainersJSON
1 parent 4352446 commit d97bf20

File tree

1 file changed

+154
-0
lines changed

1 file changed

+154
-0
lines changed

envbuilder_internal_test.go

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
package envbuilder
2+
3+
import (
4+
"testing"
5+
6+
"github.com/go-git/go-billy/v5/memfs"
7+
"github.com/stretchr/testify/assert"
8+
"github.com/stretchr/testify/require"
9+
)
10+
11+
func TestFindDevcontainerJSON(t *testing.T) {
12+
t.Parallel()
13+
14+
t.Run("empty filesystem", func(t *testing.T) {
15+
t.Parallel()
16+
17+
// given
18+
fs := memfs.New()
19+
20+
// when
21+
_, _, err := findDevcontainerJSON(Options{
22+
Filesystem: fs,
23+
WorkspaceFolder: "/workspace",
24+
})
25+
26+
// then
27+
require.Error(t, err)
28+
})
29+
30+
t.Run("devcontainers.json is missing", func(t *testing.T) {
31+
t.Parallel()
32+
33+
// given
34+
fs := memfs.New()
35+
err := fs.MkdirAll("/workspace/.devcontainer", 0600)
36+
require.NoError(t, err)
37+
38+
// when
39+
_, _, err = findDevcontainerJSON(Options{
40+
Filesystem: fs,
41+
WorkspaceFolder: "/workspace",
42+
})
43+
44+
// then
45+
require.Error(t, err)
46+
})
47+
48+
t.Run("default configuration", func(t *testing.T) {
49+
t.Parallel()
50+
51+
// given
52+
fs := memfs.New()
53+
err := fs.MkdirAll("/workspace/.devcontainer", 0600)
54+
require.NoError(t, err)
55+
fs.Create("/workspace/.devcontainer/devcontainer.json")
56+
57+
// when
58+
devcontainerPath, devcontainerDir, err := findDevcontainerJSON(Options{
59+
Filesystem: fs,
60+
WorkspaceFolder: "/workspace",
61+
})
62+
63+
// then
64+
require.NoError(t, err)
65+
assert.Equal(t, "/workspace/.devcontainer/devcontainer.json", devcontainerPath)
66+
assert.Equal(t, "/workspace/.devcontainer", devcontainerDir)
67+
})
68+
69+
t.Run("overridden .devcontainer directory", func(t *testing.T) {
70+
t.Parallel()
71+
72+
// given
73+
fs := memfs.New()
74+
err := fs.MkdirAll("/workspace/experimental-devcontainer", 0600)
75+
require.NoError(t, err)
76+
fs.Create("/workspace/experimental-devcontainer/devcontainer.json")
77+
78+
// when
79+
devcontainerPath, devcontainerDir, err := findDevcontainerJSON(Options{
80+
Filesystem: fs,
81+
WorkspaceFolder: "/workspace",
82+
DevcontainerDir: "experimental-devcontainer",
83+
})
84+
85+
// then
86+
require.NoError(t, err)
87+
assert.Equal(t, "/workspace/experimental-devcontainer/devcontainer.json", devcontainerPath)
88+
assert.Equal(t, "/workspace/experimental-devcontainer", devcontainerDir)
89+
})
90+
91+
t.Run("overridden devcontainer.json path", func(t *testing.T) {
92+
t.Parallel()
93+
94+
// given
95+
fs := memfs.New()
96+
err := fs.MkdirAll("/workspace/.devcontainer", 0600)
97+
require.NoError(t, err)
98+
fs.Create("/workspace/.devcontainer/experimental.json")
99+
100+
// when
101+
devcontainerPath, devcontainerDir, err := findDevcontainerJSON(Options{
102+
Filesystem: fs,
103+
WorkspaceFolder: "/workspace",
104+
DevcontainerJSONPath: "experimental.json",
105+
})
106+
107+
// then
108+
require.NoError(t, err)
109+
assert.Equal(t, "/workspace/.devcontainer/experimental.json", devcontainerPath)
110+
assert.Equal(t, "/workspace/.devcontainer", devcontainerDir)
111+
})
112+
113+
t.Run("devcontainer.json in workspace root", func(t *testing.T) {
114+
t.Parallel()
115+
116+
// given
117+
fs := memfs.New()
118+
err := fs.MkdirAll("/workspace", 0600)
119+
require.NoError(t, err)
120+
fs.Create("/workspace/devcontainer.json")
121+
122+
// when
123+
devcontainerPath, devcontainerDir, err := findDevcontainerJSON(Options{
124+
Filesystem: fs,
125+
WorkspaceFolder: "/workspace",
126+
})
127+
128+
// then
129+
require.NoError(t, err)
130+
assert.Equal(t, "/workspace/devcontainer.json", devcontainerPath)
131+
assert.Equal(t, "/workspace", devcontainerDir)
132+
})
133+
134+
t.Run("devcontainer.json in subfolder of .devcontainer", func(t *testing.T) {
135+
t.Parallel()
136+
137+
// given
138+
fs := memfs.New()
139+
err := fs.MkdirAll("/workspace/.devcontainer/sample", 0600)
140+
require.NoError(t, err)
141+
fs.Create("/workspace/.devcontainer/sample/devcontainer.json")
142+
143+
// when
144+
devcontainerPath, devcontainerDir, err := findDevcontainerJSON(Options{
145+
Filesystem: fs,
146+
WorkspaceFolder: "/workspace",
147+
})
148+
149+
// then
150+
require.NoError(t, err)
151+
assert.Equal(t, "/workspace/.devcontainer/sample/devcontainer.json", devcontainerPath)
152+
assert.Equal(t, "/workspace/.devcontainer/sample", devcontainerDir)
153+
})
154+
}

0 commit comments

Comments
 (0)