mirror of
https://github.com/open-jarvis/OpenJarvis.git
synced 2026-07-28 05:12:26 +00:00
49 lines
1.6 KiB
Bash
Executable File
49 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bats
|
|
# Tests for scripts/install/pull-model.sh
|
|
|
|
setup() {
|
|
# Use mktemp to ensure temp dir exists and is writable
|
|
TEST_TMPDIR=$(mktemp -d)
|
|
export OPENJARVIS_HOME="$TEST_TMPDIR/.openjarvis"
|
|
mkdir -p "$OPENJARVIS_HOME/.state/models"
|
|
export OLLAMA_STUB_LOG="$TEST_TMPDIR/ollama.log"
|
|
: > "$OLLAMA_STUB_LOG"
|
|
export PATH="$BATS_TEST_DIRNAME/stubs:$PATH"
|
|
export SCRIPT="$BATS_TEST_DIRNAME/../../../scripts/install/pull-model.sh"
|
|
}
|
|
|
|
teardown() {
|
|
# Clean up temp directory
|
|
[[ -n "${TEST_TMPDIR:-}" ]] && rm -rf "$TEST_TMPDIR"
|
|
}
|
|
|
|
@test "writes .downloading marker, then .ready on success" {
|
|
OLLAMA_STUB_EXIT=0 run bash "$SCRIPT" qwen3.5:2b
|
|
[ "$status" -eq 0 ]
|
|
[ -f "$OPENJARVIS_HOME/.state/models/qwen3.5:2b.ready" ]
|
|
[ ! -f "$OPENJARVIS_HOME/.state/models/qwen3.5:2b.downloading" ]
|
|
}
|
|
|
|
@test "writes .failed on error after retries exhausted" {
|
|
OLLAMA_STUB_EXIT=1 run bash "$SCRIPT" qwen3.5:2b
|
|
[ "$status" -ne 0 ]
|
|
[ -f "$OPENJARVIS_HOME/.state/models/qwen3.5:2b.failed" ]
|
|
}
|
|
|
|
@test "calls ollama pull with the right model name" {
|
|
OLLAMA_STUB_EXIT=0 run bash "$SCRIPT" qwen3.5:9b
|
|
grep -q "pull qwen3.5:9b" "$OLLAMA_STUB_LOG"
|
|
}
|
|
|
|
@test "retries 3 times on failure" {
|
|
OLLAMA_STUB_EXIT=1 run bash "$SCRIPT" qwen3.5:2b
|
|
pull_count=$(grep -c "pull qwen3.5:2b" "$OLLAMA_STUB_LOG")
|
|
[ "$pull_count" -eq 3 ]
|
|
}
|
|
|
|
@test "ready marker is created via atomic rename (no .tmp leftovers)" {
|
|
OLLAMA_STUB_EXIT=0 run bash "$SCRIPT" qwen3.5:2b
|
|
leftover=$(find "$OPENJARVIS_HOME/.state/models" -name "*.tmp" 2>/dev/null | wc -l)
|
|
[ "$leftover" -eq 0 ]
|
|
}
|