package config_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"gerrit.wikimedia.org/r/blubber/config"
|
|
)
|
|
|
|
func TestCopiesConfigAllArtifacts(t *testing.T) {
|
|
cfg := config.CopiesConfig{
|
|
{From: "foo"},
|
|
{From: "local"},
|
|
{From: "foo", Source: "./foo/dir", Destination: "./bar/dir"},
|
|
}
|
|
|
|
expanded := cfg.Expand("/app/dir")
|
|
|
|
assert.Equal(t, config.CopiesConfig{
|
|
{From: "foo", Source: "/app/dir", Destination: "/app/dir"},
|
|
{From: "foo", Source: "/opt/lib", Destination: "/opt/lib"},
|
|
{From: "local", Source: ".", Destination: "."},
|
|
{From: "foo", Source: "./foo/dir", Destination: "./bar/dir"},
|
|
}, expanded)
|
|
}
|
|
|
|
func TestCopiesConfigMerge(t *testing.T) {
|
|
cfg := config.CopiesConfig{
|
|
{From: "local"},
|
|
{From: "foo", Source: "/app/dir", Destination: "/app"},
|
|
{From: "bar"},
|
|
}
|
|
|
|
cfg.Merge(config.CopiesConfig{
|
|
{From: "foo", Source: "/app/dir", Destination: "/app"},
|
|
{From: "bar", Source: "/some/dir", Destination: "/dir"},
|
|
})
|
|
|
|
assert.Equal(t, config.CopiesConfig{
|
|
{From: "local"},
|
|
{From: "bar"},
|
|
{From: "foo", Source: "/app/dir", Destination: "/app"},
|
|
{From: "bar", Source: "/some/dir", Destination: "/dir"},
|
|
}, cfg)
|
|
}
|
|
|
|
func TestCopiesConfigUnmarshalJSON(t *testing.T) {
|
|
t.Run("strings", func(t *testing.T) {
|
|
cfg := config.CopiesConfig{}
|
|
err := cfg.UnmarshalJSON([]byte(`["foo", "bar"]`))
|
|
|
|
if assert.NoError(t, err) {
|
|
assert.Len(t, cfg, 2)
|
|
assert.Equal(t, "foo", cfg[0].From)
|
|
assert.Equal(t, "bar", cfg[1].From)
|
|
}
|
|
})
|
|
|
|
t.Run("objects", func(t *testing.T) {
|
|
cfg := config.CopiesConfig{}
|
|
err := cfg.UnmarshalJSON([]byte(`[{ "from": "foo" }, { "from": "bar", "source": "/foo", "destination": "/bar" }]`))
|
|
|
|
if assert.NoError(t, err) {
|
|
assert.Len(t, cfg, 2)
|
|
assert.Equal(t, "foo", cfg[0].From)
|
|
assert.Equal(t, "bar", cfg[1].From)
|
|
assert.Equal(t, "/foo", cfg[1].Source)
|
|
assert.Equal(t, "/bar", cfg[1].Destination)
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestCopiesConfigVariants(t *testing.T) {
|
|
cfg := config.CopiesConfig{
|
|
{From: "foo", Source: "/foo/src", Destination: "/foo/dst"},
|
|
{From: "build", Source: "/foo/src", Destination: "/foo/dst"},
|
|
{From: "foo"},
|
|
}
|
|
|
|
assert.Equal(t, []string{"foo", "build"}, cfg.Variants())
|
|
}
|