package config_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"gerrit.wikimedia.org/r/blubber/config"
|
|
)
|
|
|
|
func TestCommonConfigYAML(t *testing.T) {
|
|
cfg, err := config.ReadYAMLConfig([]byte(`---
|
|
version: v4
|
|
base: fooimage
|
|
entrypoint: ["/bin/foo"]
|
|
variants:
|
|
build: {}`))
|
|
|
|
assert.Nil(t, err)
|
|
|
|
assert.Equal(t, "fooimage", cfg.Base)
|
|
assert.Equal(t, []string{"/bin/foo"}, cfg.EntryPoint)
|
|
|
|
variant, err := config.ExpandVariant(cfg, "build")
|
|
|
|
assert.Equal(t, "fooimage", variant.Base)
|
|
assert.Equal(t, []string{"/bin/foo"}, variant.EntryPoint)
|
|
}
|
|
|
|
// Ensure that entrypoints inherit correctly
|
|
//
|
|
func TestEntryPointMerge(t *testing.T) {
|
|
foo := config.CommonConfig{EntryPoint: []string{"/bin/foo"}}
|
|
bar := config.CommonConfig{EntryPoint: []string{"/bin/bar"}}
|
|
foo.Merge(bar)
|
|
assert.Equal(t, []string{"/bin/bar"}, foo.EntryPoint)
|
|
}
|
|
|
|
func TestCommonConfigValidation(t *testing.T) {
|
|
t.Run("base", func(t *testing.T) {
|
|
t.Run("ok", func(t *testing.T) {
|
|
err := config.Validate(config.CommonConfig{
|
|
Base: "foo",
|
|
})
|
|
|
|
assert.Nil(t, err)
|
|
})
|
|
|
|
t.Run("optional", func(t *testing.T) {
|
|
err := config.Validate(config.CommonConfig{
|
|
Base: "",
|
|
})
|
|
|
|
assert.False(t, config.IsValidationError(err))
|
|
})
|
|
|
|
t.Run("bad", func(t *testing.T) {
|
|
err := config.Validate(config.CommonConfig{
|
|
Base: "foo fighter",
|
|
})
|
|
|
|
if assert.True(t, config.IsValidationError(err)) {
|
|
msg := config.HumanizeValidationError(err)
|
|
|
|
assert.Equal(t, `base: "foo fighter" is not a valid base image reference`, msg)
|
|
}
|
|
})
|
|
})
|
|
}
|