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.
 
 
 

82 lines
2.1 KiB

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