52 lines
1.2 KiB
Go
52 lines
1.2 KiB
Go
package parser
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/google/go-cmp/cmp"
|
|
"gotest.tools/assert"
|
|
is "gotest.tools/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")
|
|
}
|