fix more test

Signed-off-by: yxxhero <aiopsclub@163.com>
(cherry picked from commit 07dbc163a7)
Signed-off-by: yxxhero <aiopsclub@163.com>
This commit is contained in:
yxxhero 2026-03-10 13:49:03 +08:00
parent aeefe97c29
commit 1ef6087f32
1 changed files with 31 additions and 2 deletions

View File

@ -1342,6 +1342,7 @@ type ChartPrepareOptions struct {
WaitForJobs bool
OutputDir string
OutputDirTemplate string
IncludeNeeds bool
IncludeTransitiveNeeds bool
Concurrency int
KubeVersion string
@ -2943,14 +2944,23 @@ func (st *HelmState) GetReleasesWithLabels() []ReleaseSpec {
func (st *HelmState) SelectReleases(includeTransitiveNeeds bool) ([]Release, error) {
values := st.Values()
rs, err := markExcludedReleases(st.Releases, st.Selectors, values, includeTransitiveNeeds)
rs, err := markExcludedReleases(st.Releases, st.Selectors, values, includeTransitiveNeeds, false)
if err != nil {
return nil, err
}
return rs, nil
}
func markExcludedReleases(releases []ReleaseSpec, selectors []string, values map[string]any, includeTransitiveNeeds bool) ([]Release, error) {
func (st *HelmState) SelectReleasesWithNeeds(includeTransitiveNeeds bool) ([]Release, error) {
values := st.Values()
rs, err := markExcludedReleases(st.Releases, st.Selectors, values, includeTransitiveNeeds, true)
if err != nil {
return nil, err
}
return rs, nil
}
func markExcludedReleases(releases []ReleaseSpec, selectors []string, values map[string]any, includeTransitiveNeeds bool, includeNeeds bool) ([]Release, error) {
var filteredReleases []Release
filters := []ReleaseFilter{}
for _, label := range selectors {
@ -2982,6 +2992,8 @@ func markExcludedReleases(releases []ReleaseSpec, selectors []string, values map
}
if includeTransitiveNeeds {
unmarkNeedsAndTransitives(filteredReleases, releases)
} else if includeNeeds {
unmarkDirectNeeds(filteredReleases, releases)
}
return filteredReleases, nil
}
@ -3039,6 +3051,23 @@ func unmarkNeedsAndTransitives(filteredReleases []Release, allReleases []Release
unmarkReleases(needsWithTranstives, filteredReleases)
}
func unmarkDirectNeeds(filteredReleases []Release, allReleases []ReleaseSpec) {
directNeeds := collectDirectNeeds(filteredReleases, allReleases)
unmarkReleases(directNeeds, filteredReleases)
}
func collectDirectNeeds(filteredReleases []Release, allReleases []ReleaseSpec) map[string]struct{} {
directNeeds := map[string]struct{}{}
for _, r := range filteredReleases {
if !r.Filtered {
for _, need := range r.Needs {
directNeeds[need] = struct{}{}
}
}
}
return directNeeds
}
func collectAllNeedsWithTransitives(filteredReleases []Release, allReleases []ReleaseSpec) map[string]struct{} {
needsWithTranstives := map[string]struct{}{}
for _, r := range filteredReleases {