From cf902495199db60710df4c0a85205c8c47568844 Mon Sep 17 00:00:00 2001 From: Vito Cappello Date: Fri, 14 Aug 2026 10:17:38 -0400 Subject: [PATCH] Clamp Linux battery capacity percentage (#1957) --- agent/battery/battery_linux.go | 1 + agent/battery/battery_linux_test.go | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/agent/battery/battery_linux.go b/agent/battery/battery_linux.go index 10077eed..84414a19 100644 --- a/agent/battery/battery_linux.go +++ b/agent/battery/battery_linux.go @@ -102,6 +102,7 @@ func GetBatteryStats() (batteryPercent uint8, batteryState uint8, err error) { if parseErr != nil { continue } + cap = min(max(cap, 0), 100) totalPercent += cap count++ diff --git a/agent/battery/battery_linux_test.go b/agent/battery/battery_linux_test.go index 280b00cd..15fed19c 100644 --- a/agent/battery/battery_linux_test.go +++ b/agent/battery/battery_linux_test.go @@ -91,6 +91,16 @@ func TestGetBatteryStats_FullBattery(t *testing.T) { assert.Equal(t, stateFull, state) } +func TestGetBatteryStats_CapacityClamped(t *testing.T) { + _, addBattery := setupFakeSysfs(t) + addBattery("BAT0", "105", "Charging") + + pct, state, err := GetBatteryStats() + assert.NoError(t, err) + assert.Equal(t, uint8(100), pct) + assert.Equal(t, stateCharging, state) +} + func TestGetBatteryStats_EmptyBattery(t *testing.T) { _, addBattery := setupFakeSysfs(t) addBattery("BAT0", "0", "Empty")