yoohoo
This commit is contained in:
121
internal/system/detector_test.go
Normal file
121
internal/system/detector_test.go
Normal file
@@ -0,0 +1,121 @@
|
||||
package system
|
||||
|
||||
import (
|
||||
"context"
|
||||
"runtime"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestDetectPackageManager(t *testing.T) {
|
||||
tests := []struct {
|
||||
distro string
|
||||
expected string
|
||||
}{
|
||||
{"ubuntu", "apt"},
|
||||
{"debian", "apt"},
|
||||
{"fedora", "dnf"},
|
||||
{"centos", "dnf"},
|
||||
{"arch", "pacman"},
|
||||
{"manjaro", "pacman"},
|
||||
{"opensuse", "zypper"},
|
||||
{"alpine", "apk"},
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
result := detectPackageManager(test.distro)
|
||||
if result != test.expected {
|
||||
t.Errorf("detectPackageManager(%q) = %q, want %q", test.distro, result, test.expected)
|
||||
}
|
||||
}
|
||||
|
||||
unknownResult := detectPackageManager("totally_unknown_distro")
|
||||
if unknownResult == "" {
|
||||
t.Error("detectPackageManager with unknown distro should return something")
|
||||
}
|
||||
}
|
||||
|
||||
func TestDetectSystem(t *testing.T) {
|
||||
if runtime.GOOS != "linux" {
|
||||
t.Skip("Skipping Linux-specific test on non-Linux system")
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
info, err := DetectSystem(ctx)
|
||||
if err != nil {
|
||||
t.Fatalf("DetectSystem() failed: %v", err)
|
||||
}
|
||||
|
||||
if info.Distribution == "" {
|
||||
t.Error("Distribution should not be empty")
|
||||
}
|
||||
|
||||
if info.Architecture == "" {
|
||||
t.Error("Architecture should not be empty")
|
||||
}
|
||||
|
||||
if info.PackageManager == "" {
|
||||
t.Error("PackageManager should not be empty")
|
||||
}
|
||||
|
||||
// Architecture should match runtime.GOARCH
|
||||
if info.Architecture != runtime.GOARCH {
|
||||
t.Errorf("Architecture = %q, want %q", info.Architecture, runtime.GOARCH)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetChassisType(t *testing.T) {
|
||||
tests := []struct {
|
||||
input int
|
||||
expected string
|
||||
}{
|
||||
{1, "Other"},
|
||||
{3, "Desktop"},
|
||||
{9, "Laptop"},
|
||||
{10, "Notebook"},
|
||||
{999, "Unknown"}, // Invalid type
|
||||
{0, "Unknown"}, // Invalid type
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
result := getChassisType(test.input)
|
||||
if result != test.expected {
|
||||
t.Errorf("getChassisType(%d) = %q, want %q", test.input, result, test.expected)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestGatherSystemInfo(t *testing.T) {
|
||||
if runtime.GOOS != "linux" {
|
||||
t.Skip("Skipping Linux-specific test on non-Linux system")
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
sysInfo, err := GatherSystemInfo(ctx)
|
||||
if err != nil {
|
||||
t.Fatalf("GatherSystemInfo() failed: %v", err)
|
||||
}
|
||||
|
||||
// Basic validation
|
||||
if sysInfo.Distribution.ID == "" {
|
||||
t.Error("Distribution ID should not be empty")
|
||||
}
|
||||
|
||||
if sysInfo.CPU.Architecture == "" {
|
||||
t.Error("CPU Architecture should not be empty")
|
||||
}
|
||||
|
||||
if sysInfo.Memory.Total <= 0 {
|
||||
t.Error("Memory Total should be greater than 0")
|
||||
}
|
||||
|
||||
// CPU should have at least 1 core (but may be 0 if /proc/cpuinfo is not accessible in test environment)
|
||||
if sysInfo.CPU.Cores < 0 {
|
||||
t.Error("CPU Cores should not be negative")
|
||||
}
|
||||
|
||||
// If we can read CPU info, we should have at least 1 core
|
||||
// In test environments, this might not be available, so we just log it
|
||||
if sysInfo.CPU.Cores == 0 {
|
||||
t.Logf("Warning: CPU cores is 0, possibly due to test environment limitations")
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user