feat: add integration test infra and bootstrapper updates
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
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")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user