| 150 | } |
| 151 | |
| 152 | func TestCompileDevContainer(t *testing.T) { |
| 153 | t.Parallel() |
| 154 | t.Run("WithImage", func(t *testing.T) { |
| 155 | t.Parallel() |
| 156 | fs := memfs.New() |
| 157 | dc := &devcontainer.Spec{ |
| 158 | Image: "localhost:5000/envbuilder-test-ubuntu:latest", |
| 159 | } |
| 160 | params, err := dc.Compile(fs, "", workingDir, "", "", false, stubLookupEnv) |
| 161 | require.NoError(t, err) |
| 162 | require.Equal(t, filepath.Join(workingDir, "Dockerfile"), params.DockerfilePath) |
| 163 | require.Equal(t, workingDir, params.BuildContext) |
| 164 | }) |
| 165 | t.Run("WithBuild", func(t *testing.T) { |
| 166 | t.Parallel() |
| 167 | fs := memfs.New() |
| 168 | dc := &devcontainer.Spec{ |
| 169 | Build: devcontainer.BuildSpec{ |
| 170 | Dockerfile: "Dockerfile", |
| 171 | Context: ".", |
| 172 | Args: map[string]string{ |
| 173 | "ARG1": "value1", |
| 174 | "ARG2": "${localWorkspaceFolderBasename}", |
| 175 | }, |
| 176 | }, |
| 177 | } |
| 178 | dcDir := "/workspaces/coder/.devcontainer" |
| 179 | err := fs.MkdirAll(dcDir, 0o755) |
| 180 | require.NoError(t, err) |
| 181 | file, err := fs.OpenFile(filepath.Join(dcDir, "Dockerfile"), os.O_CREATE|os.O_WRONLY, 0o644) |
| 182 | require.NoError(t, err) |
| 183 | _, err = io.WriteString(file, "FROM localhost:5000/envbuilder-test-ubuntu:latest") |
| 184 | require.NoError(t, err) |
| 185 | _ = file.Close() |
| 186 | params, err := dc.Compile(fs, dcDir, workingDir, "", "/var/workspace", false, stubLookupEnv) |
| 187 | require.NoError(t, err) |
| 188 | require.Equal(t, "ARG1=value1", params.BuildArgs[0]) |
| 189 | require.Equal(t, "ARG2=workspace", params.BuildArgs[1]) |
| 190 | require.Equal(t, filepath.Join(dcDir, "Dockerfile"), params.DockerfilePath) |
| 191 | require.Equal(t, dcDir, params.BuildContext) |
| 192 | }) |
| 193 | } |
| 194 | |
| 195 | func TestImageFromDockerfile(t *testing.T) { |
| 196 | t.Parallel() |