Skip to content

Commit 045c678

Browse files
authored
Merge pull request #281 from laurazard/validate-service-dependents
Validate depended-on services exist in consistency check
2 parents a313a1e + 78d64f5 commit 045c678

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

loader/validate.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,12 @@ func checkConsistency(project *types.Project) error {
3838
}
3939
}
4040

41+
for dependedService := range s.DependsOn {
42+
if _, err := project.GetService(dependedService); err != nil {
43+
return errors.Wrap(errdefs.ErrInvalid, fmt.Sprintf("service %q depends on undefined service %s", s.Name, dependedService))
44+
}
45+
}
46+
4147
if strings.HasPrefix(s.NetworkMode, types.ServicePrefix) {
4248
serviceName := s.NetworkMode[len(types.ServicePrefix):]
4349
if _, err := project.GetServices(serviceName); err != nil {

loader/validate_test.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,3 +184,19 @@ func TestValidateSecret(t *testing.T) {
184184
assert.Error(t, err, "secret \"foo\" must declare either `file` or `environment`: invalid compose project")
185185
})
186186
}
187+
188+
func TestValidateDependsOn(t *testing.T) {
189+
project := types.Project{
190+
Services: types.Services([]types.ServiceConfig{
191+
{
192+
Name: "myservice",
193+
Image: "scratch",
194+
DependsOn: map[string]types.ServiceDependency{
195+
"missingservice": {},
196+
},
197+
},
198+
}),
199+
}
200+
err := checkConsistency(&project)
201+
assert.Error(t, err, `service "myservice" depends on undefined service missingservice: invalid compose project`)
202+
}

0 commit comments

Comments
 (0)