From f6137b2dcc75b9d9fa10d675b3611290afcbce66 Mon Sep 17 00:00:00 2001 From: ajnart Date: Wed, 12 Aug 2026 18:24:33 +0200 Subject: [PATCH] fix(truenas): guard empty dataset percentage --- .../src/truenas/test/truenas-integration.spec.ts | 13 +++++++++++++ .../integrations/src/truenas/truenas-integration.ts | 3 ++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/integrations/src/truenas/test/truenas-integration.spec.ts b/packages/integrations/src/truenas/test/truenas-integration.spec.ts index 7f1a2ad4e..a53f74bc2 100644 --- a/packages/integrations/src/truenas/test/truenas-integration.spec.ts +++ b/packages/integrations/src/truenas/test/truenas-integration.spec.ts @@ -218,6 +218,19 @@ describe("TrueNasIntegration", () => { }); }); + test("reports zero usage for an empty root dataset", async () => { + ws.setResponder((method) => + method === "pool.dataset.query" + ? [{ id: "tank", used: { parsed: 0 }, available: { parsed: 0 } }] + : happyResponder(method), + ); + const integration = createIntegration(credentials); + + const result = await integration.getSystemInfoAsync(); + + expect(result.fileSystem[0]?.percentage).toBe(0); + }); + test("authenticates with an API key when one is configured", async () => { const integration = createIntegration([{ kind: "apiKey", value: "api-key-123" }]); diff --git a/packages/integrations/src/truenas/truenas-integration.ts b/packages/integrations/src/truenas/truenas-integration.ts index 6a5249a2e..c061332f2 100644 --- a/packages/integrations/src/truenas/truenas-integration.ts +++ b/packages/integrations/src/truenas/truenas-integration.ts @@ -51,7 +51,8 @@ export class TrueNasIntegration extends Integration implements ISystemHealthMoni deviceName: dataset.name, available: `${dataset.available}`, used: `${dataset.used}`, - percentage: (dataset.used / (dataset.used + dataset.available)) * 100, + percentage: + dataset.used + dataset.available === 0 ? 0 : (dataset.used / (dataset.used + dataset.available)) * 100, })), availablePkgUpdates: 0, network: {