33 lines
1.0 KiB
Python
33 lines
1.0 KiB
Python
"""Tests for flow.core.platform."""
|
|
|
|
import platform as _platform
|
|
|
|
import pytest
|
|
|
|
from flow.core.platform import PlatformInfo, detect_container_runtime, detect_platform
|
|
|
|
|
|
def test_detect_platform_returns_platforminfo():
|
|
info = detect_platform()
|
|
assert isinstance(info, PlatformInfo)
|
|
assert info.os in ("linux", "macos")
|
|
assert info.arch in ("amd64", "arm64")
|
|
assert info.platform == f"{info.os}-{info.arch}"
|
|
|
|
|
|
def test_detect_platform_unsupported_os(monkeypatch):
|
|
monkeypatch.setattr(_platform, "system", lambda: "FreeBSD")
|
|
with pytest.raises(RuntimeError, match="Unsupported operating system"):
|
|
detect_platform()
|
|
|
|
|
|
def test_detect_platform_unsupported_arch(monkeypatch):
|
|
monkeypatch.setattr(_platform, "machine", lambda: "mips")
|
|
with pytest.raises(RuntimeError, match="Unsupported architecture"):
|
|
detect_platform()
|
|
|
|
|
|
def test_detect_container_runtime_returns_string_or_none():
|
|
result = detect_container_runtime()
|
|
assert result is None or result in ("docker", "podman")
|