You've already forked dcmerge
fix(dockerCompose): add Service.MergeFirstWin()
This commit is contained in:
@ -464,6 +464,907 @@ func TestService_Equal(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestService_MergeFirstWin(t *testing.T) {
|
||||
require := require.New(t)
|
||||
|
||||
testCases := []struct {
|
||||
serviceDeploymentA *dockerCompose.Service
|
||||
serviceDeploymentB *dockerCompose.Service
|
||||
expectedService *dockerCompose.Service
|
||||
}{
|
||||
{
|
||||
serviceDeploymentA: nil,
|
||||
serviceDeploymentB: nil,
|
||||
expectedService: nil,
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{},
|
||||
serviceDeploymentB: &dockerCompose.Service{},
|
||||
expectedService: &dockerCompose.Service{},
|
||||
},
|
||||
|
||||
// CapabilitiesAdd
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
CapabilitiesAdd: []string{"NET_RAW"},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
CapabilitiesAdd: []string{},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
CapabilitiesAdd: []string{"NET_RAW"},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
CapabilitiesAdd: []string{},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
CapabilitiesAdd: []string{"NET_RAW"},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
CapabilitiesAdd: []string{"NET_RAW"},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
CapabilitiesAdd: []string{"NET_RAW"},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
CapabilitiesAdd: []string{"NET_RAW"},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
CapabilitiesAdd: []string{"NET_RAW"},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
CapabilitiesAdd: []string{"NET_RAW"},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
CapabilitiesAdd: []string{""},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
CapabilitiesAdd: []string{"NET_RAW"},
|
||||
},
|
||||
},
|
||||
|
||||
// CapabilitiesDrop
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
CapabilitiesDrop: []string{"NET_RAW"},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
CapabilitiesDrop: []string{},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
CapabilitiesDrop: []string{"NET_RAW"},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
CapabilitiesDrop: []string{},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
CapabilitiesDrop: []string{"NET_RAW"},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
CapabilitiesDrop: []string{"NET_RAW"},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
CapabilitiesDrop: []string{"NET_RAW"},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
CapabilitiesDrop: []string{"NET_RAW"},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
CapabilitiesDrop: []string{"NET_RAW"},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
CapabilitiesDrop: []string{"NET_RAW"},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
CapabilitiesDrop: []string{""},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
CapabilitiesDrop: []string{"NET_RAW"},
|
||||
},
|
||||
},
|
||||
|
||||
// Deploy
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Deploy: nil,
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Deploy: nil,
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Deploy: nil,
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Deploy: dockerCompose.NewServiceDeploy(),
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Deploy: nil,
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Deploy: dockerCompose.NewServiceDeploy(),
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Deploy: nil,
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Deploy: dockerCompose.NewServiceDeploy(),
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Deploy: dockerCompose.NewServiceDeploy(),
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Deploy: dockerCompose.NewServiceDeploy(),
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Deploy: dockerCompose.NewServiceDeploy(),
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Deploy: dockerCompose.NewServiceDeploy(),
|
||||
},
|
||||
},
|
||||
|
||||
// Environments
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Environments: nil,
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Environments: nil,
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Environments: nil,
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Environments: []string{},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Environments: nil,
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Environments: []string{},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Environments: nil,
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Environments: []string{},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Environments: []string{},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Environments: []string{},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Environments: []string{},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Environments: []string{},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Environments: []string{"PROXY_HOST=u.example.com"},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Environments: []string{"PROXY_HOST=u.example.local"},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Environments: []string{"PROXY_HOST=u.example.com"},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Environments: []string{"PROXY_HOST=u.example.com", "PROXY_HOST=u.example.de"},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Environments: []string{"PROXY_HOST=u.example.com"},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Environments: []string{"PROXY_HOST=u.example.com", "PROXY_HOST=u.example.de"},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Environments: []string{"PROXY_HOST=u.example.com"},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Environments: []string{"PROXY_HOST=a.example.local"},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Environments: []string{"PROXY_HOST=u.example.com"},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Environments: []string{"PROXY_HOST=u.example.com"},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Environments: []string{""},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Environments: []string{"PROXY_HOST=u.example.com"},
|
||||
},
|
||||
},
|
||||
|
||||
// ExtraHosts
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
ExtraHosts: nil,
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
ExtraHosts: nil,
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
ExtraHosts: nil,
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
ExtraHosts: []string{},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
ExtraHosts: nil,
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
ExtraHosts: []string{},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
ExtraHosts: nil,
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
ExtraHosts: []string{},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
ExtraHosts: []string{},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
ExtraHosts: []string{},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
ExtraHosts: []string{},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
ExtraHosts: []string{},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
ExtraHosts: []string{"extra.host.local"},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
ExtraHosts: []string{"extra.host.local"},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
ExtraHosts: []string{"extra.host.local"},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
ExtraHosts: []string{"extra.host.local"},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
ExtraHosts: []string{"extra.host.com"},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
ExtraHosts: []string{"extra.host.com", "extra.host.local"},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
ExtraHosts: []string{"extra.host.local"},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
ExtraHosts: []string{""},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
ExtraHosts: []string{"extra.host.local"},
|
||||
},
|
||||
},
|
||||
|
||||
// Image
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Image: "",
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Image: "",
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Image: "",
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Image: "HelloWorld",
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Image: "FooBar",
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Image: "HelloWorld",
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Image: "HelloWorld",
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Image: "",
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Image: "HelloWorld",
|
||||
},
|
||||
},
|
||||
|
||||
// Labels
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Labels: nil,
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Labels: nil,
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Labels: nil,
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Labels: []string{},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Labels: nil,
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Labels: []string{},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Labels: nil,
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Labels: []string{},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Labels: []string{},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Labels: []string{},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Labels: []string{},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Labels: []string{},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Labels: []string{"prometheus.io/scrape=true"},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Labels: []string{"prometheus.io/scrape=true"},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Labels: []string{"prometheus.io/scrape=true"},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Labels: []string{"prometheus.io/scrape=true", "prometheus.io/scrape=false"},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Labels: []string{"prometheus.io/scrape=true"},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Labels: []string{"prometheus.io/scrape=true", "prometheus.io/scrape=false"},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Labels: []string{"prometheus.io/scrape=true"},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Labels: []string{"prometheus.io/scrape=false"},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Labels: []string{"prometheus.io/scrape=true"},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Labels: []string{"prometheus.io/scrape=true"},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Labels: []string{""},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Labels: []string{"prometheus.io/scrape=true"},
|
||||
},
|
||||
},
|
||||
|
||||
// Networks
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Networks: nil,
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Networks: nil,
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Networks: nil,
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Networks: make(map[string]*dockerCompose.ServiceNetwork),
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Networks: nil,
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Networks: make(map[string]*dockerCompose.ServiceNetwork),
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Networks: nil,
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Networks: make(map[string]*dockerCompose.ServiceNetwork),
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Networks: make(map[string]*dockerCompose.ServiceNetwork),
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Networks: make(map[string]*dockerCompose.ServiceNetwork),
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Networks: make(map[string]*dockerCompose.ServiceNetwork),
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Networks: make(map[string]*dockerCompose.ServiceNetwork),
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Networks: map[string]*dockerCompose.ServiceNetwork{
|
||||
"proxy": {Aliases: []string{"app.proxy.network"}},
|
||||
},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Networks: nil,
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Networks: map[string]*dockerCompose.ServiceNetwork{
|
||||
"proxy": {Aliases: []string{"app.proxy.network"}},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Networks: map[string]*dockerCompose.ServiceNetwork{
|
||||
"proxy": {Aliases: []string{"app.proxy.network"}},
|
||||
},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Networks: map[string]*dockerCompose.ServiceNetwork{
|
||||
"db": {Aliases: []string{"app.db.network"}},
|
||||
},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Networks: map[string]*dockerCompose.ServiceNetwork{
|
||||
"db": {Aliases: []string{"app.db.network"}},
|
||||
"proxy": {Aliases: []string{"app.proxy.network"}},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Networks: map[string]*dockerCompose.ServiceNetwork{
|
||||
"proxy": {Aliases: []string{"app.proxy.network"}},
|
||||
},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Networks: map[string]*dockerCompose.ServiceNetwork{
|
||||
"proxy": {Aliases: []string{"app.proxy.network", ""}},
|
||||
},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Networks: map[string]*dockerCompose.ServiceNetwork{
|
||||
"proxy": {Aliases: []string{"app.proxy.network"}},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Networks: map[string]*dockerCompose.ServiceNetwork{
|
||||
"proxy": {Aliases: []string{"app.proxy.network"}},
|
||||
},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Networks: map[string]*dockerCompose.ServiceNetwork{
|
||||
"proxy": {Aliases: []string{"vpn.network"}},
|
||||
},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Networks: map[string]*dockerCompose.ServiceNetwork{
|
||||
"proxy": {Aliases: []string{"app.proxy.network", "vpn.network"}},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
// Ports
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Ports: nil,
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Ports: nil,
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Ports: nil,
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Ports: []string{},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Ports: nil,
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Ports: []string{},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Ports: nil,
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Ports: []string{},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Ports: []string{},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Ports: []string{},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Ports: []string{},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Ports: []string{},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Ports: []string{"80:80"},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Ports: []string{"80:80"},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Ports: []string{"80:80"},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Ports: []string{"80:80"},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Ports: []string{"10080:80"},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Ports: []string{"80:80"},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Ports: []string{"80:80/tcp"},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Ports: []string{"80:80"},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Ports: []string{"80:80/tcp"},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Ports: []string{"80:80"},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Ports: []string{"10080:80/udp"},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Ports: []string{"80:80"},
|
||||
},
|
||||
},
|
||||
|
||||
// Secrets
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Secrets: nil,
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Secrets: nil,
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Secrets: nil,
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Secrets: []string{},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Secrets: nil,
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Secrets: []string{},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Secrets: nil,
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Secrets: []string{},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Secrets: []string{},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Secrets: []string{},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Secrets: []string{},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Secrets: []string{},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Secrets: []string{"db_pass_credentials"},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Secrets: []string{"db_pass_credentials"},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Secrets: []string{"db_pass_credentials"},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Secrets: []string{"db_pass_credentials"},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Secrets: []string{"oauth2_pass_credentials"},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Secrets: []string{"db_pass_credentials", "oauth2_pass_credentials"},
|
||||
},
|
||||
},
|
||||
|
||||
// ULimits
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
ULimits: nil,
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
ULimits: nil,
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
ULimits: nil,
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
ULimits: dockerCompose.NewServiceULimits(),
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
ULimits: nil,
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
ULimits: dockerCompose.NewServiceULimits(),
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
ULimits: nil,
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
ULimits: dockerCompose.NewServiceULimits(),
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
ULimits: dockerCompose.NewServiceULimits(),
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
ULimits: dockerCompose.NewServiceULimits(),
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
ULimits: dockerCompose.NewServiceULimits(),
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
ULimits: dockerCompose.NewServiceULimits(),
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
ULimits: &dockerCompose.ServiceULimits{
|
||||
NProc: 10,
|
||||
NoFile: &dockerCompose.ServiceULimitsNoFile{
|
||||
Hard: 10,
|
||||
Soft: 10,
|
||||
},
|
||||
},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
ULimits: &dockerCompose.ServiceULimits{
|
||||
NProc: 10,
|
||||
NoFile: &dockerCompose.ServiceULimitsNoFile{
|
||||
Hard: 10,
|
||||
Soft: 10,
|
||||
},
|
||||
},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
ULimits: &dockerCompose.ServiceULimits{
|
||||
NProc: 10,
|
||||
NoFile: &dockerCompose.ServiceULimitsNoFile{
|
||||
Hard: 10,
|
||||
Soft: 10,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
ULimits: &dockerCompose.ServiceULimits{
|
||||
NProc: 10,
|
||||
NoFile: &dockerCompose.ServiceULimitsNoFile{
|
||||
Hard: 10,
|
||||
Soft: 10,
|
||||
},
|
||||
},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
ULimits: &dockerCompose.ServiceULimits{
|
||||
NProc: 15,
|
||||
NoFile: &dockerCompose.ServiceULimitsNoFile{
|
||||
Hard: 25,
|
||||
Soft: 20,
|
||||
},
|
||||
},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
ULimits: &dockerCompose.ServiceULimits{
|
||||
NProc: 10,
|
||||
NoFile: &dockerCompose.ServiceULimitsNoFile{
|
||||
Hard: 10,
|
||||
Soft: 10,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
// Volumes
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Volumes: nil,
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Volumes: nil,
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Volumes: nil,
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Volumes: []string{},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Volumes: nil,
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Volumes: []string{},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Volumes: nil,
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Volumes: []string{},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Volumes: []string{},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Volumes: []string{},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Volumes: []string{},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Volumes: []string{},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Volumes: []string{"/etc/localtime:/etc/localtime"},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Volumes: []string{"/etc/localtime:/etc/localtime"},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Volumes: []string{"/etc/localtime:/etc/localtime"},
|
||||
},
|
||||
},
|
||||
{
|
||||
serviceDeploymentA: &dockerCompose.Service{
|
||||
Volumes: []string{"/etc/localtime:/etc/localtime"},
|
||||
},
|
||||
serviceDeploymentB: &dockerCompose.Service{
|
||||
Volumes: []string{"/usr/share/zoneinfo/Europe/Berlin:/etc/localtime"},
|
||||
},
|
||||
expectedService: &dockerCompose.Service{
|
||||
Volumes: []string{"/etc/localtime:/etc/localtime"},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for i, testCase := range testCases {
|
||||
testCase.serviceDeploymentA.MergeFirstWin(testCase.serviceDeploymentB)
|
||||
require.True(testCase.expectedService.Equal(testCase.serviceDeploymentA), "Failed test case %v", i)
|
||||
}
|
||||
}
|
||||
|
||||
func TestService_MergeLastWin(t *testing.T) {
|
||||
require := require.New(t)
|
||||
|
||||
|
Reference in New Issue
Block a user