add ubuntu to test matrix for local ai and test fixes

This commit is contained in:
2026-06-11 11:27:14 -05:00
parent d19d7efefc
commit 476607e108
8 changed files with 71 additions and 7 deletions
+1 -1
View File
@@ -20,7 +20,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
os: [debian, arch, fedora]
os: [debian, arch, fedora, ubuntu]
fail-fast: false
steps:
+1 -1
View File
@@ -27,7 +27,7 @@ It installs:
| Workflow | Trigger |
|---|---|
| **Unit Tests** — `go test -v ./...` + `go vet ./...` | Pull requests to `main` / `dev` |
| **Integration Tests** — full run on Debian, Arch, Fedora (Dagger) and macOS (native) | Push + pull requests to `main` / `dev` |
| **Integration Tests** — full run on Debian, Arch, Fedora, Ubuntu (Dagger) and macOS (native) | Push + pull requests to `main` / `dev` |
## Install
+1 -1
View File
@@ -12,7 +12,7 @@ import (
)
func main() {
osFlag := flag.String("os", "all", "OS to test (debian, arch, fedora, or all)")
osFlag := flag.String("os", "all", "OS to test (debian, arch, fedora, ubuntu, or all)")
flag.Parse()
ctx := context.Background()
+1
View File
@@ -19,6 +19,7 @@ var (
isMacOS bool
isRHELFamily bool
isArchFamily bool
isTesting bool
)
func init() {
-2
View File
@@ -1,7 +1,6 @@
package main
import (
"flag"
"fmt"
"os"
"os/exec"
@@ -458,7 +457,6 @@ func installOllama() {
// Pull Gemma 4 E4B and Qwen2.5-Coder 7B
fmt.Println(" Pulling Gemma 4 E4B and Qwen2.5-Coder 7B models ...")
isTesting := flag.Lookup("test.v") != nil || os.Getenv("GO_ENV") == "test"
serverRunning := false
// Check if Ollama server is already responding
+66
View File
@@ -594,3 +594,69 @@ func TestInstallLocalAISpecialPkgs(t *testing.T) {
}
}
func TestIsSpecialPkgInstalledLocalAI(t *testing.T) {
defer resetMocks()
isMacOS = false
// Test case 1: None of the commands/files exist
hasCmd = func(name string) bool { return false }
osStat = func(name string) (os.FileInfo, error) { return nil, os.ErrNotExist }
pkgs := []string{"nvidia-drivers", "cuda-toolkit", "nvidia-container-toolkit", "ollama", "huggingface-cli"}
for _, p := range pkgs {
if isSpecialPkgInstalled(p) {
t.Errorf("expected %s to be not installed", p)
}
}
// Test case 2: Check nvidia-drivers
hasCmd = func(name string) bool { return name == "nvidia-smi" }
if !isSpecialPkgInstalled("nvidia-drivers") {
t.Error("expected nvidia-drivers to be installed when nvidia-smi exists")
}
// Test case 3: Check cuda-toolkit via hasCmd
hasCmd = func(name string) bool { return name == "nvcc" }
if !isSpecialPkgInstalled("cuda-toolkit") {
t.Error("expected cuda-toolkit to be installed when nvcc command exists")
}
// Test case 4: Check cuda-toolkit via path existence
hasCmd = func(name string) bool { return false }
osStat = func(name string) (os.FileInfo, error) {
if name == "/usr/local/cuda/bin/nvcc" {
return nil, nil // exists
}
return nil, os.ErrNotExist
}
if !isSpecialPkgInstalled("cuda-toolkit") {
t.Error("expected cuda-toolkit to be installed when /usr/local/cuda/bin/nvcc exists")
}
// Test case 5: Check nvidia-container-toolkit
resetMocks()
isMacOS = false
hasCmd = func(name string) bool { return name == "nvidia-ctk" }
if !isSpecialPkgInstalled("nvidia-container-toolkit") {
t.Error("expected nvidia-container-toolkit to be installed when nvidia-ctk command exists")
}
// Test case 6: Check ollama
resetMocks()
isMacOS = false
hasCmd = func(name string) bool { return name == "ollama" }
if !isSpecialPkgInstalled("ollama") {
t.Error("expected ollama to be installed when ollama command exists")
}
// Test case 7: Check huggingface-cli
resetMocks()
isMacOS = false
hasCmd = func(name string) bool { return name == "huggingface-cli" }
if !isSpecialPkgInstalled("huggingface-cli") {
t.Error("expected huggingface-cli to be installed when huggingface-cli command exists")
}
}
-2
View File
@@ -1,2 +0,0 @@
ok github.com/JMR-dev/bootstrap_dev_env 20.206s
? github.com/JMR-dev/bootstrap_dev_env/ci [no test files]
+1
View File
@@ -11,6 +11,7 @@ import (
// don't want the human-facing "[ERROR] ..." prints polluting CI logs
// (GitHub Actions auto-annotates "[ERROR]" lines as workflow errors).
func TestMain(m *testing.M) {
isTesting = true
issueLogWriter = io.Discard
disableProgressTracking = true
os.Exit(m.Run())