123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- package dockerfile // import "github.com/docker/docker/builder/dockerfile"
- import (
- "bytes"
- "strings"
- "testing"
- "gotest.tools/v3/assert"
- is "gotest.tools/v3/assert/cmp"
- )
- func strPtr(source string) *string {
- return &source
- }
- func TestGetAllAllowed(t *testing.T) {
- buildArgs := NewBuildArgs(map[string]*string{
- "ArgNotUsedInDockerfile": strPtr("fromopt1"),
- "ArgOverriddenByOptions": strPtr("fromopt2"),
- "ArgNoDefaultInDockerfileFromOptions": strPtr("fromopt3"),
- "HTTP_PROXY": strPtr("theproxy"),
- "all_proxy": strPtr("theproxy2"),
- })
- buildArgs.AddMetaArg("ArgFromMeta", strPtr("frommeta1"))
- buildArgs.AddMetaArg("ArgFromMetaOverridden", strPtr("frommeta2"))
- buildArgs.AddMetaArg("ArgFromMetaNotUsed", strPtr("frommeta3"))
- buildArgs.AddArg("ArgOverriddenByOptions", strPtr("fromdockerfile2"))
- buildArgs.AddArg("ArgWithDefaultInDockerfile", strPtr("fromdockerfile1"))
- buildArgs.AddArg("ArgNoDefaultInDockerfile", nil)
- buildArgs.AddArg("ArgNoDefaultInDockerfileFromOptions", nil)
- buildArgs.AddArg("ArgFromMeta", nil)
- buildArgs.AddArg("ArgFromMetaOverridden", strPtr("fromdockerfile3"))
- all := buildArgs.GetAllAllowed()
- expected := map[string]string{
- "HTTP_PROXY": "theproxy",
- "all_proxy": "theproxy2",
- "ArgOverriddenByOptions": "fromopt2",
- "ArgWithDefaultInDockerfile": "fromdockerfile1",
- "ArgNoDefaultInDockerfileFromOptions": "fromopt3",
- "ArgFromMeta": "frommeta1",
- "ArgFromMetaOverridden": "fromdockerfile3",
- }
- assert.Check(t, is.DeepEqual(expected, all))
- }
- func TestGetAllMeta(t *testing.T) {
- buildArgs := NewBuildArgs(map[string]*string{
- "ArgNotUsedInDockerfile": strPtr("fromopt1"),
- "ArgOverriddenByOptions": strPtr("fromopt2"),
- "ArgNoDefaultInMetaFromOptions": strPtr("fromopt3"),
- "HTTP_PROXY": strPtr("theproxy"),
- })
- buildArgs.AddMetaArg("ArgFromMeta", strPtr("frommeta1"))
- buildArgs.AddMetaArg("ArgOverriddenByOptions", strPtr("frommeta2"))
- buildArgs.AddMetaArg("ArgNoDefaultInMetaFromOptions", nil)
- all := buildArgs.GetAllMeta()
- expected := map[string]string{
- "HTTP_PROXY": "theproxy",
- "ArgFromMeta": "frommeta1",
- "ArgOverriddenByOptions": "fromopt2",
- "ArgNoDefaultInMetaFromOptions": "fromopt3",
- }
- assert.Check(t, is.DeepEqual(expected, all))
- }
- func TestWarnOnUnusedBuildArgs(t *testing.T) {
- buildArgs := NewBuildArgs(map[string]*string{
- "ThisArgIsUsed": strPtr("fromopt1"),
- "ThisArgIsNotUsed": strPtr("fromopt2"),
- "HTTPS_PROXY": strPtr("referenced builtin"),
- "HTTP_PROXY": strPtr("unreferenced builtin"),
- })
- buildArgs.AddArg("ThisArgIsUsed", nil)
- buildArgs.AddArg("HTTPS_PROXY", nil)
- buffer := new(bytes.Buffer)
- buildArgs.WarnOnUnusedBuildArgs(buffer)
- out := buffer.String()
- assert.Assert(t, !strings.Contains(out, "ThisArgIsUsed"), out)
- assert.Assert(t, !strings.Contains(out, "HTTPS_PROXY"), out)
- assert.Assert(t, !strings.Contains(out, "HTTP_PROXY"), out)
- assert.Check(t, is.Contains(out, "ThisArgIsNotUsed"))
- }
- func TestIsUnreferencedBuiltin(t *testing.T) {
- buildArgs := NewBuildArgs(map[string]*string{
- "ThisArgIsUsed": strPtr("fromopt1"),
- "ThisArgIsNotUsed": strPtr("fromopt2"),
- "HTTPS_PROXY": strPtr("referenced builtin"),
- "HTTP_PROXY": strPtr("unreferenced builtin"),
- })
- buildArgs.AddArg("ThisArgIsUsed", nil)
- buildArgs.AddArg("HTTPS_PROXY", nil)
- assert.Check(t, buildArgs.IsReferencedOrNotBuiltin("ThisArgIsUsed"))
- assert.Check(t, buildArgs.IsReferencedOrNotBuiltin("ThisArgIsNotUsed"))
- assert.Check(t, buildArgs.IsReferencedOrNotBuiltin("HTTPS_PROXY"))
- assert.Check(t, !buildArgs.IsReferencedOrNotBuiltin("HTTP_PROXY"))
- }
|