diff --git a/pkg/agent/delivery/local_docker.go b/pkg/agent/delivery/local_docker.go index bae75e844..090eeba35 100644 --- a/pkg/agent/delivery/local_docker.go +++ b/pkg/agent/delivery/local_docker.go @@ -163,7 +163,7 @@ func (d *LocalDockerDelivery) detectVolumeVersion(ctx context.Context, volumeNam "sh", "-c", script, } - out, err := d.cmd(ctx, args...).CombinedOutput() + out, err := d.cmd(ctx, args...).Output() if err != nil { log.Debugf("failed to detect agent version in volume: %v", err) return "" diff --git a/pkg/agent/delivery/local_docker_test.go b/pkg/agent/delivery/local_docker_test.go index 6f512e595..74323c462 100644 --- a/pkg/agent/delivery/local_docker_test.go +++ b/pkg/agent/delivery/local_docker_test.go @@ -264,6 +264,27 @@ func TestDetectVolumeVersion_ReturnsEmptyOnFailure(t *testing.T) { assert.Empty(t, ver) } +func TestDetectVolumeVersion_IgnoresStderrNoise(t *testing.T) { + tmpDir := t.TempDir() + scriptPath := filepath.Join(tmpDir, "fake-docker.sh") + script := "#!/bin/sh\n" + + "case \"$1\" in\n" + + " run)\n" + + " echo \"Unable to find image 'busybox:latest' locally\" >&2\n" + + " echo \"latest: Pulling from library/busybox\" >&2\n" + + " echo \"v1.2.3\"\n" + + " ;;\n" + + " *) exit 1 ;;\n" + + "esac\n" + require.NoError(t, os.WriteFile(scriptPath, []byte(script), 0o600)) + // #nosec G302 -- test script must be executable + require.NoError(t, os.Chmod(scriptPath, 0o755)) + + d := &LocalDockerDelivery{DockerCommand: scriptPath} + ver := d.detectVolumeVersion(context.Background(), "test-vol") + assert.Equal(t, "v1.2.3", ver) +} + func TestDetectVolumeVersion_ReturnsEmptyWhenNoBinary(t *testing.T) { tmpDir := t.TempDir()