Files
bootstrap_windows_env/internal/bootstrap/nvidia_test.go
T

99 lines
2.9 KiB
Go

package bootstrap
import (
"context"
"strings"
"testing"
)
func TestResolveNvidiaPFID(t *testing.T) {
tests := []struct {
model string
wantPFID string
wantErr bool
}{
{"RTX 4090", "995", false},
{"GeForce RTX 4090", "995", false},
{"rtx 4090", "995", false},
{"RTX 4090 D", "1036", false},
{"RTX 4090 Laptop GPU", "1004", false},
{"NonExistentGPU", "", true},
}
for _, tt := range tests {
t.Run(tt.model, func(t *testing.T) {
got, err := resolveNvidiaPFID(tt.model)
if (err != nil) != tt.wantErr {
t.Errorf("resolveNvidiaPFID(%q) error = %v, wantErr %v", tt.model, err, tt.wantErr)
return
}
if got != tt.wantPFID {
t.Errorf("resolveNvidiaPFID(%q) = %q, want %q", tt.model, got, tt.wantPFID)
}
})
}
}
func TestFetchNvidiaDriverURL(t *testing.T) {
// Query API for RTX 4090 Game Ready
url, version, err := fetchNvidiaDriverURL("995", "Game Ready")
if err != nil {
t.Skipf("Skipping API test (possibly offline or rate limited): %v", err)
return
}
if !strings.HasPrefix(url, "https://") {
t.Errorf("expected download URL to start with https://, got %q", url)
}
if version == "" {
t.Error("expected version to be non-empty")
}
// Query API for RTX 4090 Studio
urlStudio, versionStudio, err := fetchNvidiaDriverURL("995", "Studio")
if err != nil {
t.Skipf("Skipping API test: %v", err)
return
}
if !strings.HasPrefix(urlStudio, "https://") {
t.Errorf("expected studio download URL to start with https://, got %q", urlStudio)
}
if versionStudio == "" {
t.Error("expected studio version to be non-empty")
}
}
func TestGetInstalledNvidiaVersion(t *testing.T) {
// Test with a mock runner that returns a valid driver version format
mockRunner := &fakeRunner{
responses: map[string]CommandResult{
commandKey("powershell.exe", "-NoLogo", "-NoProfile", "-NonInteractive", "-ExecutionPolicy", "Bypass", "-Command", "Get-CimInstance Win32_VideoController | Where-Object { $_.Name -like '*Nvidia*' } | Select-Object -ExpandProperty DriverVersion"): {
Stdout: "32.0.15.9636\n",
},
},
}
ver, err := getInstalledNvidiaVersion(context.Background(), mockRunner)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if ver != "596.36" {
t.Errorf("getInstalledNvidiaVersion = %q, want %q", ver, "596.36")
}
// Test case with leading zero representation
mockRunner2 := &fakeRunner{
responses: map[string]CommandResult{
commandKey("powershell.exe", "-NoLogo", "-NoProfile", "-NonInteractive", "-ExecutionPolicy", "Bypass", "-Command", "Get-CimInstance Win32_VideoController | Where-Object { $_.Name -like '*Nvidia*' } | Select-Object -ExpandProperty DriverVersion"): {
Stdout: "32.0.10.6104\n",
},
},
}
ver2, err := getInstalledNvidiaVersion(context.Background(), mockRunner2)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if ver2 != "61.04" {
t.Errorf("getInstalledNvidiaVersion = %q, want %q", ver2, "61.04")
}
}