Add Show Widget for library actions with Overview charts from last run output.

This commit is contained in:
2026-07-20 20:48:06 +02:00
parent e047499fed
commit d188ca41b8
20 changed files with 1918 additions and 128 deletions
@@ -0,0 +1,66 @@
package widgetparse
import (
"testing"
"codeberg.org/SquidSE/ClusterCanvas/service/internal/settings"
)
func TestParseFreeM(t *testing.T) {
stdout := ` total used free shared buff/cache available
Mem: 16014 4521 2341 412 9151 11012
Swap: 8191 0 8191
`
data, err := ParseFreeM(stdout)
if err != nil {
t.Fatalf("ParseFreeM: %v", err)
}
if data.Total != 16014 || data.Used != 4521 || data.Free != 2341 {
t.Fatalf("core fields = %+v", data)
}
if data.Shared != 412 || data.BuffCache != 9151 || data.Available != 11012 {
t.Fatalf("extra fields = %+v", data)
}
}
func TestParseDfHPrefersMount(t *testing.T) {
stdout := `Filesystem Size Used Avail Use% Mounted on
/dev/sda1 100G 40G 55G 42% /
/dev/sdb1 200G 10G 180G 6% /data
`
data, err := ParseDfH(stdout, "/data")
if err != nil {
t.Fatalf("ParseDfH: %v", err)
}
if data.MountedOn != "/data" || data.Size != "200G" || data.Used != "10G" {
t.Fatalf("row = %+v", data)
}
if data.SizeMiB != 200*1024 || data.UsedMiB != 10*1024 {
t.Fatalf("mib = %+v", data)
}
}
func TestParseDfHFirstRow(t *testing.T) {
stdout := `Filesystem Size Used Avail Use% Mounted on
tmpfs 1.6G 0 1.6G 0% /run
/dev/sda1 100G 40G 55G 42% /
`
data, err := ParseDfH(stdout, "")
if err != nil {
t.Fatalf("ParseDfH: %v", err)
}
if data.MountedOn != "/run" {
t.Fatalf("expected first row, got %+v", data)
}
}
func TestParseStdoutMemory(t *testing.T) {
stdout := "Mem: 100 40 20 1 39 50\n"
memory, disk, err := ParseStdout(settings.ActionWidgetTypeMemory, stdout, "")
if err != nil {
t.Fatalf("ParseStdout: %v", err)
}
if memory == nil || disk != nil || memory.Total != 100 {
t.Fatalf("memory=%v disk=%v", memory, disk)
}
}