diff --git a/pkg/action/release_testing.go b/pkg/action/release_testing.go index 8cb6ce664..5604e8cc4 100644 --- a/pkg/action/release_testing.go +++ b/pkg/action/release_testing.go @@ -138,6 +138,10 @@ func (r *ReleaseTesting) GetPodLogs(out io.Writer, rel *release.Release) error { if len(r.Filters[IncludeNameFilter]) > 0 && !slices.Contains(r.Filters[IncludeNameFilter], h.Name) { continue } + + if h.Kind != "Pod" { + continue + } if err := r.getContainerLogs(out, client, h.Name); err != nil { return err } diff --git a/pkg/action/release_testing_test.go b/pkg/action/release_testing_test.go index dcc708548..2ec62caf0 100644 --- a/pkg/action/release_testing_test.go +++ b/pkg/action/release_testing_test.go @@ -65,13 +65,20 @@ func TestReleaseTestingGetPodLogs_FilterEvents(t *testing.T) { hooks := []*release.Hook{ { + Kind: "Pod", Name: "event-1", Events: []release.HookEvent{release.HookTest}, }, { + Kind: "Pod", Name: "event-2", Events: []release.HookEvent{release.HookTest}, }, + { + Kind: "ConfigMap", + Name: "event-3", + Events: []release.HookEvent{release.HookTest}, + }, } out := &bytes.Buffer{} @@ -80,6 +87,25 @@ func TestReleaseTestingGetPodLogs_FilterEvents(t *testing.T) { assert.Empty(t, out.String()) } +func TestReleaseTestingGetPodLogs_ExcludeFilter_SkipsPodHook(t *testing.T) { + config := actionConfigFixture(t) + require.NoError(t, config.Init(cli.New().RESTClientGetter(), "", os.Getenv("HELM_DRIVER"))) + client := NewReleaseTesting(config) + client.Filters[ExcludeNameFilter] = []string{"excluded-pod"} + + hooks := []*release.Hook{ + { + Kind: "Pod", + Name: "excluded-pod", + Events: []release.HookEvent{release.HookTest}, + }, + } + + out := &bytes.Buffer{} + require.NoError(t, client.GetPodLogs(out, &release.Release{Hooks: hooks})) + assert.Empty(t, out.String()) +} + func TestReleaseTestingGetPodLogs_PodRetrievalError(t *testing.T) { config := actionConfigFixture(t) require.NoError(t, config.Init(cli.New().RESTClientGetter(), "", os.Getenv("HELM_DRIVER"))) @@ -87,6 +113,7 @@ func TestReleaseTestingGetPodLogs_PodRetrievalError(t *testing.T) { hooks := []*release.Hook{ { + Kind: "Pod", Name: "event-1", Events: []release.HookEvent{release.HookTest}, }, @@ -95,6 +122,29 @@ func TestReleaseTestingGetPodLogs_PodRetrievalError(t *testing.T) { require.ErrorContains(t, client.GetPodLogs(&bytes.Buffer{}, &release.Release{Hooks: hooks}), "unable to get pod") } +func TestReleaseTestingGetPodLogs_SkipNonPodHooks(t *testing.T) { + config := actionConfigFixture(t) + require.NoError(t, config.Init(cli.New().RESTClientGetter(), "", os.Getenv("HELM_DRIVER"))) + client := NewReleaseTesting(config) + + hooks := []*release.Hook{ + { + Name: "cm-hook", + Kind: "ConfigMap", + Events: []release.HookEvent{release.HookTest}, + }, + { + Name: "secret-hook", + Kind: "Secret", + Events: []release.HookEvent{release.HookTest}, + }, + } + + out := &bytes.Buffer{} + require.NoError(t, client.GetPodLogs(out, &release.Release{Hooks: hooks})) + assert.Empty(t, out.String()) +} + func TestReleaseTesting_WaitOptionsPassedDownstream(t *testing.T) { is := assert.New(t) config := actionConfigFixture(t)