You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

69 lines
1.5 KiB

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)
}
})
})
}