Skip to content

Commit e8c0115

Browse files
authored
Merge pull request moby#5098 from daghack/env-lint-test
dockerfile: Add integration test for ARG with empty value and default
2 parents 7950fa4 + a8b267f commit e8c0115

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

frontend/dockerfile/dockerfile_test.go

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,7 @@ var allTests = integration.TestFuncs(
192192
testFrontendDeduplicateSources,
193193
testDuplicateLayersProvenance,
194194
testSourcePolicyWithNamedContext,
195+
testEmptyStringArgInEnv,
195196
testInvalidJSONCommands,
196197
testHistoryError,
197198
testHistoryFinalizeTrace,
@@ -273,6 +274,50 @@ func TestIntegration(t *testing.T) {
273274
)...)
274275
}
275276

277+
func testEmptyStringArgInEnv(t *testing.T, sb integration.Sandbox) {
278+
integration.SkipOnPlatform(t, "windows")
279+
f := getFrontend(t, sb)
280+
281+
dockerfile := []byte(`
282+
FROM busybox AS build
283+
ARG FOO
284+
ARG BAR=
285+
RUN env > env.txt
286+
287+
FROM scratch
288+
COPY --from=build env.txt .
289+
`)
290+
dir := integration.Tmpdir(
291+
t,
292+
fstest.CreateFile("Dockerfile", dockerfile, 0600),
293+
)
294+
c, err := client.New(sb.Context(), sb.Address())
295+
require.NoError(t, err)
296+
defer c.Close()
297+
298+
destDir := t.TempDir()
299+
_, err = f.Solve(sb.Context(), c, client.SolveOpt{
300+
Exports: []client.ExportEntry{
301+
{
302+
Type: client.ExporterLocal,
303+
OutputDir: destDir,
304+
},
305+
},
306+
LocalMounts: map[string]fsutil.FS{
307+
dockerui.DefaultLocalNameDockerfile: dir,
308+
dockerui.DefaultLocalNameContext: dir,
309+
},
310+
}, nil)
311+
require.NoError(t, err)
312+
313+
dt, err := os.ReadFile(filepath.Join(destDir, "env.txt"))
314+
require.NoError(t, err)
315+
316+
envStr := string(dt)
317+
require.Contains(t, envStr, "BAR=")
318+
require.NotContains(t, envStr, "FOO=")
319+
}
320+
276321
func testDefaultEnvWithArgs(t *testing.T, sb integration.Sandbox) {
277322
integration.SkipOnPlatform(t, "windows")
278323
f := getFrontend(t, sb)

0 commit comments

Comments
 (0)