From 5e5dad87212834f53e9e88378230866cf5c47f41 Mon Sep 17 00:00:00 2001 From: christophe-duc Date: Wed, 7 Jan 2026 20:24:51 -0400 Subject: [PATCH] corrected a bug reported by Claude Agent --- pkg/commands/runtime_libpod_stub.go | 12 +++++++++--- pkg/commands/runtime_mock.go | 12 +++++++++--- pkg/commands/runtime_test.go | 12 ++++++++++-- 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/pkg/commands/runtime_libpod_stub.go b/pkg/commands/runtime_libpod_stub.go index 7f46c288..3e242382 100644 --- a/pkg/commands/runtime_libpod_stub.go +++ b/pkg/commands/runtime_libpod_stub.go @@ -72,10 +72,12 @@ func (r *LibpodRuntime) PruneContainers(ctx context.Context) error { } func (r *LibpodRuntime) ContainerStats(ctx context.Context, id string, stream bool) (<-chan ContainerStatsEntry, <-chan error) { + statsChan := make(chan ContainerStatsEntry) + close(statsChan) errChan := make(chan error, 1) errChan <- ErrLibpodNotAvailable close(errChan) - return nil, errChan + return statsChan, errChan } // Image operations - all return ErrLibpodNotAvailable @@ -135,16 +137,20 @@ func (r *LibpodRuntime) ListPods(ctx context.Context) ([]PodSummary, error) { } func (r *LibpodRuntime) PodStats(ctx context.Context, id string, stream bool) (<-chan PodStatsEntry, <-chan error) { + statsChan := make(chan PodStatsEntry) + close(statsChan) errChan := make(chan error, 1) errChan <- ErrLibpodNotAvailable close(errChan) - return nil, errChan + return statsChan, errChan } // Events returns an error channel on non-Linux platforms. func (r *LibpodRuntime) Events(ctx context.Context) (<-chan Event, <-chan error) { + eventsChan := make(chan Event) + close(eventsChan) errChan := make(chan error, 1) errChan <- ErrLibpodNotAvailable close(errChan) - return nil, errChan + return eventsChan, errChan } diff --git a/pkg/commands/runtime_mock.go b/pkg/commands/runtime_mock.go index 6e417235..5a437ea1 100644 --- a/pkg/commands/runtime_mock.go +++ b/pkg/commands/runtime_mock.go @@ -155,10 +155,12 @@ func (m *MockRuntime) ContainerStats(ctx context.Context, id string, stream bool if m.ContainerStatsFunc != nil { return m.ContainerStatsFunc(ctx, id, stream) } + statsCh := make(chan ContainerStatsEntry) + close(statsCh) errCh := make(chan error, 1) errCh <- ErrMockNotImplemented close(errCh) - return nil, errCh + return statsCh, errCh } // Image operations @@ -270,10 +272,12 @@ func (m *MockRuntime) PodStats(ctx context.Context, id string, stream bool) (<-c if m.PodStatsFunc != nil { return m.PodStatsFunc(ctx, id, stream) } + statsCh := make(chan PodStatsEntry) + close(statsCh) errCh := make(chan error, 1) errCh <- ErrMockNotImplemented close(errCh) - return nil, errCh + return statsCh, errCh } // Events @@ -283,10 +287,12 @@ func (m *MockRuntime) Events(ctx context.Context) (<-chan Event, <-chan error) { if m.EventsFunc != nil { return m.EventsFunc(ctx) } + eventsCh := make(chan Event) + close(eventsCh) errCh := make(chan error, 1) errCh <- ErrMockNotImplemented close(errCh) - return nil, errCh + return eventsCh, errCh } // Lifecycle diff --git a/pkg/commands/runtime_test.go b/pkg/commands/runtime_test.go index 46dca711..18b0730c 100644 --- a/pkg/commands/runtime_test.go +++ b/pkg/commands/runtime_test.go @@ -196,7 +196,11 @@ func TestMockRuntimeContainerStats(t *testing.T) { t.Run("returns error channel when not implemented", func(t *testing.T) { statsChan, errChan := mock.ContainerStats(ctx, "container1", false) - assert.Nil(t, statsChan) + assert.NotNil(t, statsChan) + + // Stats channel should be closed (empty) + _, ok := <-statsChan + assert.False(t, ok, "stats channel should be closed") err := <-errChan assert.Equal(t, ErrMockNotImplemented, err) @@ -392,7 +396,11 @@ func TestMockRuntimeEvents(t *testing.T) { t.Run("returns error when not implemented", func(t *testing.T) { eventChan, errChan := mock.Events(ctx) - assert.Nil(t, eventChan) + assert.NotNil(t, eventChan) + + // Events channel should be closed (empty) + _, ok := <-eventChan + assert.False(t, ok, "events channel should be closed") err := <-errChan assert.Equal(t, ErrMockNotImplemented, err)