123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- package parser // import "github.com/docker/docker/builder/dockerfile/parser"
- import (
- "testing"
- "github.com/google/go-cmp/cmp"
- "github.com/gotestyourself/gotestyourself/assert"
- is "github.com/gotestyourself/gotestyourself/assert/cmp"
- )
- func TestParseNameValOldFormat(t *testing.T) {
- directive := Directive{}
- node, err := parseNameVal("foo bar", "LABEL", &directive)
- assert.Check(t, err)
- expected := &Node{
- Value: "foo",
- Next: &Node{Value: "bar"},
- }
- assert.DeepEqual(t, expected, node, cmpNodeOpt)
- }
- var cmpNodeOpt = cmp.AllowUnexported(Node{})
- func TestParseNameValNewFormat(t *testing.T) {
- directive := Directive{}
- node, err := parseNameVal("foo=bar thing=star", "LABEL", &directive)
- assert.Check(t, err)
- expected := &Node{
- Value: "foo",
- Next: &Node{
- Value: "bar",
- Next: &Node{
- Value: "thing",
- Next: &Node{
- Value: "star",
- },
- },
- },
- }
- assert.DeepEqual(t, expected, node, cmpNodeOpt)
- }
- func TestParseNameValWithoutVal(t *testing.T) {
- directive := Directive{}
- // In Config.Env, a variable without `=` is removed from the environment. (#31634)
- // However, in Dockerfile, we don't allow "unsetting" an environment variable. (#11922)
- _, err := parseNameVal("foo", "ENV", &directive)
- assert.Check(t, is.ErrorContains(err, ""), "ENV must have two arguments")
- }
|