mirror of https://github.com/docker/compose.git
prevent getCanonicalContainerName to crash
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
This commit is contained in:
parent
f86f252a66
commit
22b8c731c7
|
@ -71,6 +71,10 @@ func (s *composeService) stderr() io.Writer {
|
||||||
}
|
}
|
||||||
|
|
||||||
func getCanonicalContainerName(c moby.Container) string {
|
func getCanonicalContainerName(c moby.Container) string {
|
||||||
|
if len(c.Names) == 0 {
|
||||||
|
// corner case, sometime happens on removal. return short ID as a safeguard value
|
||||||
|
return c.ID[:12]
|
||||||
|
}
|
||||||
// Names return container canonical name /foo + link aliases /linked_by/foo
|
// Names return container canonical name /foo + link aliases /linked_by/foo
|
||||||
for _, name := range c.Names {
|
for _, name := range c.Names {
|
||||||
if strings.LastIndex(name, "/") == 0 {
|
if strings.LastIndex(name, "/") == 0 {
|
||||||
|
|
|
@ -78,7 +78,7 @@ func TestServiceLinks(t *testing.T) {
|
||||||
apiClient := mocks.NewMockAPIClient(mockCtrl)
|
apiClient := mocks.NewMockAPIClient(mockCtrl)
|
||||||
cli := mocks.NewMockCli(mockCtrl)
|
cli := mocks.NewMockCli(mockCtrl)
|
||||||
tested.dockerCli = cli
|
tested.dockerCli = cli
|
||||||
cli.EXPECT().Client().Return(apiClient)
|
cli.EXPECT().Client().Return(apiClient).AnyTimes()
|
||||||
|
|
||||||
s.Links = []string{"db"}
|
s.Links = []string{"db"}
|
||||||
|
|
||||||
|
@ -100,7 +100,7 @@ func TestServiceLinks(t *testing.T) {
|
||||||
apiClient := mocks.NewMockAPIClient(mockCtrl)
|
apiClient := mocks.NewMockAPIClient(mockCtrl)
|
||||||
cli := mocks.NewMockCli(mockCtrl)
|
cli := mocks.NewMockCli(mockCtrl)
|
||||||
tested.dockerCli = cli
|
tested.dockerCli = cli
|
||||||
cli.EXPECT().Client().Return(apiClient)
|
cli.EXPECT().Client().Return(apiClient).AnyTimes()
|
||||||
|
|
||||||
s.Links = []string{"db:db"}
|
s.Links = []string{"db:db"}
|
||||||
|
|
||||||
|
@ -122,7 +122,7 @@ func TestServiceLinks(t *testing.T) {
|
||||||
apiClient := mocks.NewMockAPIClient(mockCtrl)
|
apiClient := mocks.NewMockAPIClient(mockCtrl)
|
||||||
cli := mocks.NewMockCli(mockCtrl)
|
cli := mocks.NewMockCli(mockCtrl)
|
||||||
tested.dockerCli = cli
|
tested.dockerCli = cli
|
||||||
cli.EXPECT().Client().Return(apiClient)
|
cli.EXPECT().Client().Return(apiClient).AnyTimes()
|
||||||
|
|
||||||
s.Links = []string{"db:dbname"}
|
s.Links = []string{"db:dbname"}
|
||||||
|
|
||||||
|
@ -144,7 +144,7 @@ func TestServiceLinks(t *testing.T) {
|
||||||
apiClient := mocks.NewMockAPIClient(mockCtrl)
|
apiClient := mocks.NewMockAPIClient(mockCtrl)
|
||||||
cli := mocks.NewMockCli(mockCtrl)
|
cli := mocks.NewMockCli(mockCtrl)
|
||||||
tested.dockerCli = cli
|
tested.dockerCli = cli
|
||||||
cli.EXPECT().Client().Return(apiClient)
|
cli.EXPECT().Client().Return(apiClient).AnyTimes()
|
||||||
|
|
||||||
s.Links = []string{"db:dbname"}
|
s.Links = []string{"db:dbname"}
|
||||||
s.ExternalLinks = []string{"db1:db2"}
|
s.ExternalLinks = []string{"db1:db2"}
|
||||||
|
@ -170,7 +170,7 @@ func TestServiceLinks(t *testing.T) {
|
||||||
apiClient := mocks.NewMockAPIClient(mockCtrl)
|
apiClient := mocks.NewMockAPIClient(mockCtrl)
|
||||||
cli := mocks.NewMockCli(mockCtrl)
|
cli := mocks.NewMockCli(mockCtrl)
|
||||||
tested.dockerCli = cli
|
tested.dockerCli = cli
|
||||||
cli.EXPECT().Client().Return(apiClient)
|
cli.EXPECT().Client().Return(apiClient).AnyTimes()
|
||||||
|
|
||||||
s.Links = []string{}
|
s.Links = []string{}
|
||||||
s.ExternalLinks = []string{}
|
s.ExternalLinks = []string{}
|
||||||
|
@ -200,8 +200,11 @@ func TestServiceLinks(t *testing.T) {
|
||||||
func TestWaitDependencies(t *testing.T) {
|
func TestWaitDependencies(t *testing.T) {
|
||||||
mockCtrl := gomock.NewController(t)
|
mockCtrl := gomock.NewController(t)
|
||||||
defer mockCtrl.Finish()
|
defer mockCtrl.Finish()
|
||||||
api := mocks.NewMockAPIClient(mockCtrl)
|
|
||||||
tested.apiClient = api
|
apiClient := mocks.NewMockAPIClient(mockCtrl)
|
||||||
|
cli := mocks.NewMockCli(mockCtrl)
|
||||||
|
tested.dockerCli = cli
|
||||||
|
cli.EXPECT().Client().Return(apiClient).AnyTimes()
|
||||||
|
|
||||||
t.Run("should skip dependencies with scale 0", func(t *testing.T) {
|
t.Run("should skip dependencies with scale 0", func(t *testing.T) {
|
||||||
dbService := types.ServiceConfig{Name: "db", Scale: 0}
|
dbService := types.ServiceConfig{Name: "db", Scale: 0}
|
||||||
|
|
|
@ -34,8 +34,11 @@ import (
|
||||||
func TestDown(t *testing.T) {
|
func TestDown(t *testing.T) {
|
||||||
mockCtrl := gomock.NewController(t)
|
mockCtrl := gomock.NewController(t)
|
||||||
defer mockCtrl.Finish()
|
defer mockCtrl.Finish()
|
||||||
|
|
||||||
api := mocks.NewMockAPIClient(mockCtrl)
|
api := mocks.NewMockAPIClient(mockCtrl)
|
||||||
tested.apiClient = api
|
cli := mocks.NewMockCli(mockCtrl)
|
||||||
|
tested.dockerCli = cli
|
||||||
|
cli.EXPECT().Client().Return(api).AnyTimes()
|
||||||
|
|
||||||
api.EXPECT().ContainerList(gomock.Any(), projectFilterListOpt()).Return(
|
api.EXPECT().ContainerList(gomock.Any(), projectFilterListOpt()).Return(
|
||||||
[]moby.Container{
|
[]moby.Container{
|
||||||
|
@ -67,8 +70,11 @@ func TestDown(t *testing.T) {
|
||||||
func TestDownRemoveOrphans(t *testing.T) {
|
func TestDownRemoveOrphans(t *testing.T) {
|
||||||
mockCtrl := gomock.NewController(t)
|
mockCtrl := gomock.NewController(t)
|
||||||
defer mockCtrl.Finish()
|
defer mockCtrl.Finish()
|
||||||
|
|
||||||
api := mocks.NewMockAPIClient(mockCtrl)
|
api := mocks.NewMockAPIClient(mockCtrl)
|
||||||
tested.apiClient = api
|
cli := mocks.NewMockCli(mockCtrl)
|
||||||
|
tested.dockerCli = cli
|
||||||
|
cli.EXPECT().Client().Return(api).AnyTimes()
|
||||||
|
|
||||||
api.EXPECT().ContainerList(gomock.Any(), projectFilterListOpt()).Return(
|
api.EXPECT().ContainerList(gomock.Any(), projectFilterListOpt()).Return(
|
||||||
[]moby.Container{
|
[]moby.Container{
|
||||||
|
@ -99,8 +105,11 @@ func TestDownRemoveOrphans(t *testing.T) {
|
||||||
func TestDownRemoveVolumes(t *testing.T) {
|
func TestDownRemoveVolumes(t *testing.T) {
|
||||||
mockCtrl := gomock.NewController(t)
|
mockCtrl := gomock.NewController(t)
|
||||||
defer mockCtrl.Finish()
|
defer mockCtrl.Finish()
|
||||||
|
|
||||||
api := mocks.NewMockAPIClient(mockCtrl)
|
api := mocks.NewMockAPIClient(mockCtrl)
|
||||||
tested.apiClient = api
|
cli := mocks.NewMockCli(mockCtrl)
|
||||||
|
tested.dockerCli = cli
|
||||||
|
cli.EXPECT().Client().Return(api).AnyTimes()
|
||||||
|
|
||||||
api.EXPECT().ContainerList(gomock.Any(), projectFilterListOpt()).Return(
|
api.EXPECT().ContainerList(gomock.Any(), projectFilterListOpt()).Return(
|
||||||
[]moby.Container{testContainer("service1", "123", false)}, nil)
|
[]moby.Container{testContainer("service1", "123", false)}, nil)
|
||||||
|
|
|
@ -39,8 +39,11 @@ var tested = composeService{}
|
||||||
func TestKillAll(t *testing.T) {
|
func TestKillAll(t *testing.T) {
|
||||||
mockCtrl := gomock.NewController(t)
|
mockCtrl := gomock.NewController(t)
|
||||||
defer mockCtrl.Finish()
|
defer mockCtrl.Finish()
|
||||||
|
|
||||||
api := mocks.NewMockAPIClient(mockCtrl)
|
api := mocks.NewMockAPIClient(mockCtrl)
|
||||||
tested.apiClient = api
|
cli := mocks.NewMockCli(mockCtrl)
|
||||||
|
tested.dockerCli = cli
|
||||||
|
cli.EXPECT().Client().Return(api).AnyTimes()
|
||||||
|
|
||||||
project := types.Project{Name: strings.ToLower(testProject), Services: []types.ServiceConfig{testService("service1"), testService("service2")}}
|
project := types.Project{Name: strings.ToLower(testProject), Services: []types.ServiceConfig{testService("service1"), testService("service2")}}
|
||||||
|
|
||||||
|
@ -61,8 +64,11 @@ func TestKillSignal(t *testing.T) {
|
||||||
const serviceName = "service1"
|
const serviceName = "service1"
|
||||||
mockCtrl := gomock.NewController(t)
|
mockCtrl := gomock.NewController(t)
|
||||||
defer mockCtrl.Finish()
|
defer mockCtrl.Finish()
|
||||||
|
|
||||||
api := mocks.NewMockAPIClient(mockCtrl)
|
api := mocks.NewMockAPIClient(mockCtrl)
|
||||||
tested.apiClient = api
|
cli := mocks.NewMockCli(mockCtrl)
|
||||||
|
tested.dockerCli = cli
|
||||||
|
cli.EXPECT().Client().Return(api).AnyTimes()
|
||||||
|
|
||||||
project := types.Project{Name: strings.ToLower(testProject), Services: []types.ServiceConfig{testService(serviceName)}}
|
project := types.Project{Name: strings.ToLower(testProject), Services: []types.ServiceConfig{testService(serviceName)}}
|
||||||
listOptions := moby.ContainerListOptions{
|
listOptions := moby.ContainerListOptions{
|
||||||
|
|
|
@ -34,8 +34,11 @@ import (
|
||||||
func TestPs(t *testing.T) {
|
func TestPs(t *testing.T) {
|
||||||
mockCtrl := gomock.NewController(t)
|
mockCtrl := gomock.NewController(t)
|
||||||
defer mockCtrl.Finish()
|
defer mockCtrl.Finish()
|
||||||
|
|
||||||
api := mocks.NewMockAPIClient(mockCtrl)
|
api := mocks.NewMockAPIClient(mockCtrl)
|
||||||
tested.apiClient = api
|
cli := mocks.NewMockCli(mockCtrl)
|
||||||
|
tested.dockerCli = cli
|
||||||
|
cli.EXPECT().Client().Return(api).AnyTimes()
|
||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
args := filters.NewArgs(projectFilter(strings.ToLower(testProject)))
|
args := filters.NewArgs(projectFilter(strings.ToLower(testProject)))
|
||||||
|
|
|
@ -33,8 +33,11 @@ import (
|
||||||
func TestStopTimeout(t *testing.T) {
|
func TestStopTimeout(t *testing.T) {
|
||||||
mockCtrl := gomock.NewController(t)
|
mockCtrl := gomock.NewController(t)
|
||||||
defer mockCtrl.Finish()
|
defer mockCtrl.Finish()
|
||||||
|
|
||||||
api := mocks.NewMockAPIClient(mockCtrl)
|
api := mocks.NewMockAPIClient(mockCtrl)
|
||||||
tested.apiClient = api
|
cli := mocks.NewMockCli(mockCtrl)
|
||||||
|
tested.dockerCli = cli
|
||||||
|
cli.EXPECT().Client().Return(api).AnyTimes()
|
||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
api.EXPECT().ContainerList(gomock.Any(), projectFilterListOpt()).Return(
|
api.EXPECT().ContainerList(gomock.Any(), projectFilterListOpt()).Return(
|
||||||
|
|
Loading…
Reference in New Issue