Skip to content

Commit c8ee8d4

Browse files
authored
Merge pull request #454 from ndeloof/depends_on_filter
keep depends_on config for services explicitly selected
2 parents 9325945 + aa737c5 commit c8ee8d4

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

types/project.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -423,7 +423,14 @@ func (p *Project) ForServices(names []string, options ...DependencyOption) error
423423
if _, ok := set[s.Name]; ok {
424424
for _, option := range options {
425425
if option == IgnoreDependencies {
426-
s.DependsOn = nil
426+
// remove all dependencies but those implied by explicitly selected services
427+
dependencies := s.DependsOn
428+
for d := range dependencies {
429+
if _, ok := set[d]; !ok {
430+
delete(dependencies, d)
431+
}
432+
}
433+
s.DependsOn = dependencies
427434
}
428435
}
429436
enabled = append(enabled, s)

types/project_test.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,28 @@ func Test_ForServices(t *testing.T) {
115115
assert.Equal(t, p.DisabledServices[4].Name, "service_5")
116116
}
117117

118+
func Test_ForServicesIgnoreDependencies(t *testing.T) {
119+
p := makeProject()
120+
err := p.ForServices([]string{"service_2"}, IgnoreDependencies)
121+
assert.NilError(t, err)
122+
123+
assert.Equal(t, len(p.DisabledServices), 5)
124+
service, err := p.GetService("service_2")
125+
assert.NilError(t, err)
126+
assert.Equal(t, len(service.DependsOn), 0)
127+
128+
p = makeProject()
129+
err = p.ForServices([]string{"service_2", "service_3"}, IgnoreDependencies)
130+
assert.NilError(t, err)
131+
132+
assert.Equal(t, len(p.DisabledServices), 4)
133+
service, err = p.GetService("service_3")
134+
assert.NilError(t, err)
135+
assert.Equal(t, len(service.DependsOn), 1)
136+
_, dependsOn := service.DependsOn["service_2"]
137+
assert.Check(t, dependsOn)
138+
}
139+
118140
func Test_ForServicesCycle(t *testing.T) {
119141
p := makeProject()
120142
p.Services[0].Links = []string{"service_2"}

0 commit comments

Comments
 (0)