Skip to content

Commit

Permalink
Merge pull request #281 from laurazard/validate-service-dependents
Browse files Browse the repository at this point in the history
Validate depended-on services exist in consistency check
  • Loading branch information
glours committed Jul 8, 2022
2 parents a313a1e + 78d64f5 commit 045c678
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 0 deletions.
6 changes: 6 additions & 0 deletions loader/validate.go
Expand Up @@ -38,6 +38,12 @@ func checkConsistency(project *types.Project) error {
}
}

for dependedService := range s.DependsOn {
if _, err := project.GetService(dependedService); err != nil {
return errors.Wrap(errdefs.ErrInvalid, fmt.Sprintf("service %q depends on undefined service %s", s.Name, dependedService))
}
}

if strings.HasPrefix(s.NetworkMode, types.ServicePrefix) {
serviceName := s.NetworkMode[len(types.ServicePrefix):]
if _, err := project.GetServices(serviceName); err != nil {
Expand Down
16 changes: 16 additions & 0 deletions loader/validate_test.go
Expand Up @@ -184,3 +184,19 @@ func TestValidateSecret(t *testing.T) {
assert.Error(t, err, "secret \"foo\" must declare either `file` or `environment`: invalid compose project")
})
}

func TestValidateDependsOn(t *testing.T) {
project := types.Project{
Services: types.Services([]types.ServiceConfig{
{
Name: "myservice",
Image: "scratch",
DependsOn: map[string]types.ServiceDependency{
"missingservice": {},
},
},
}),
}
err := checkConsistency(&project)
assert.Error(t, err, `service "myservice" depends on undefined service missingservice: invalid compose project`)
}

0 comments on commit 045c678

Please sign in to comment.