Files
OpenJarvis/tests/hardware/test_apple.py
T
Jon Saad-FalconandClaude Opus 4.6 990d7d8a79 Expand test suite to 1031 tests: new agents, tools, MCP layer, model catalog
Add ReAct and OpenHands agents, WebSearch and CodeInterpreter tools,
full MCP protocol layer (server/client/transport), Gemini cloud engine
support, 12 new model specs (4 local MoE + 8 cloud), trace system,
and comprehensive test coverage across all dimensions (hardware, engine,
memory, agents, tools, MCP, integration).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 04:59:11 +00:00

141 lines
4.6 KiB
Python

"""Apple Silicon hardware tests."""
from __future__ import annotations
from unittest.mock import patch
import pytest
from openjarvis.core.config import (
GpuInfo,
HardwareInfo,
_detect_apple_gpu,
recommend_engine,
)
pytestmark = pytest.mark.apple
# ---------------------------------------------------------------------------
# Detection / system_profiler parsing
# ---------------------------------------------------------------------------
class TestAppleDetection:
"""Tests for _detect_apple_gpu() against system_profiler outputs."""
@patch("openjarvis.core.config.platform.system", return_value="Darwin")
@patch(
"openjarvis.core.config._run_cmd",
return_value=(
"Graphics/Displays:\n"
"\n"
" Apple M4 Max:\n"
"\n"
" Chipset Model: Apple M4 Max\n"
" Type: GPU\n"
" Bus: Built-In\n"
" Total Number of Cores: 40\n"
),
)
def test_system_profiler_parsing(self, mock_run, mock_system):
gpu = _detect_apple_gpu()
assert gpu is not None
assert gpu.vendor == "apple"
assert "M4 Max" in gpu.name
@patch("openjarvis.core.config.platform.system", return_value="Linux")
def test_non_darwin_returns_none(self, mock_system):
"""On non-Darwin platforms, Apple GPU detection returns None."""
assert _detect_apple_gpu() is None
@patch("openjarvis.core.config.platform.system", return_value="Darwin")
@patch(
"openjarvis.core.config._run_cmd",
return_value=(
"Graphics/Displays:\n"
"\n"
" Intel UHD Graphics 630:\n"
"\n"
" Chipset Model: Intel UHD Graphics 630\n"
" Type: GPU\n"
),
)
def test_no_apple_in_output(self, mock_run, mock_system):
"""system_profiler output without 'Apple' returns None."""
assert _detect_apple_gpu() is None
@patch("openjarvis.core.config.platform.system", return_value="Darwin")
@patch(
"openjarvis.core.config._run_cmd",
return_value=(
"Graphics/Displays:\n"
"\n"
" Apple M2 Ultra:\n"
"\n"
" Chipset Model: Apple M2 Ultra\n"
" Type: GPU\n"
" Bus: Built-In\n"
),
)
def test_apple_chip_model_extraction(self, mock_run, mock_system):
"""'Chipset Model:' line is used to extract the chip name."""
gpu = _detect_apple_gpu()
assert gpu is not None
assert gpu.name == "Apple M2 Ultra"
@patch("openjarvis.core.config.platform.system", return_value="Darwin")
@patch(
"openjarvis.core.config._run_cmd",
return_value=(
"Graphics/Displays:\n"
" Apple Silicon\n"
" Type: GPU\n"
),
)
def test_apple_no_chipset_line_falls_back(self, mock_run, mock_system):
"""When no 'Chipset Model' line exists, falls back to 'Apple Silicon'."""
gpu = _detect_apple_gpu()
assert gpu is not None
assert gpu.vendor == "apple"
assert gpu.name == "Apple Silicon"
@patch("openjarvis.core.config.platform.system", return_value="Darwin")
@patch("openjarvis.core.config._run_cmd", return_value="")
def test_empty_profiler_output(self, mock_run, mock_system):
"""Empty system_profiler output returns None (no 'Apple' substring)."""
assert _detect_apple_gpu() is None
# ---------------------------------------------------------------------------
# Engine recommendation
# ---------------------------------------------------------------------------
class TestAppleEngineRecommendation:
"""Tests that Apple Silicon hardware maps to ollama."""
def test_m4_max_recommends_ollama(self):
hw = HardwareInfo(
platform="darwin",
cpu_brand="Apple M4 Max",
cpu_count=16,
ram_gb=128.0,
gpu=GpuInfo(vendor="apple", name="Apple M4 Max", vram_gb=128.0, count=1),
)
assert recommend_engine(hw) == "ollama"
def test_unified_memory(self):
"""On Apple Silicon, GPU VRAM equals system RAM (unified memory)."""
ram_gb = 192.0
gpu = GpuInfo(vendor="apple", name="Apple M4 Ultra", vram_gb=ram_gb, count=1)
hw = HardwareInfo(
platform="darwin",
cpu_brand="Apple M4 Ultra",
cpu_count=24,
ram_gb=ram_gb,
gpu=gpu,
)
assert hw.gpu.vram_gb == hw.ram_gb
assert recommend_engine(hw) == "ollama"