| package interpolation |
| |
| import ( |
| "testing" |
| |
| "github.com/stretchr/testify/assert" |
| |
| "github.com/docker/docker/cli/compose/types" |
| ) |
| |
| var defaults = map[string]string{ |
| "USER": "jenny", |
| "FOO": "bar", |
| } |
| |
| func defaultMapping(name string) (string, bool) { |
| val, ok := defaults[name] |
| return val, ok |
| } |
| |
| func TestInterpolate(t *testing.T) { |
| services := types.Dict{ |
| "servicea": types.Dict{ |
| "image": "example:${USER}", |
| "volumes": []interface{}{"$FOO:/target"}, |
| "logging": types.Dict{ |
| "driver": "${FOO}", |
| "options": types.Dict{ |
| "user": "$USER", |
| }, |
| }, |
| }, |
| } |
| expected := types.Dict{ |
| "servicea": types.Dict{ |
| "image": "example:jenny", |
| "volumes": []interface{}{"bar:/target"}, |
| "logging": types.Dict{ |
| "driver": "bar", |
| "options": types.Dict{ |
| "user": "jenny", |
| }, |
| }, |
| }, |
| } |
| result, err := Interpolate(services, "service", defaultMapping) |
| assert.NoError(t, err) |
| assert.Equal(t, expected, result) |
| } |
| |
| func TestInvalidInterpolation(t *testing.T) { |
| services := types.Dict{ |
| "servicea": types.Dict{ |
| "image": "${", |
| }, |
| } |
| _, err := Interpolate(services, "service", defaultMapping) |
| assert.EqualError(t, err, `Invalid interpolation format for "image" option in service "servicea": "${"`) |
| } |