Path: blob/main/py-polars/tests/unit/meta/test_cpu_check.py
8416 views
from __future__ import annotations12from typing import TYPE_CHECKING3from unittest.mock import Mock45import pytest67from polars import _cpu_check8from polars._cpu_check import check_cpu_flags910if TYPE_CHECKING:11from tests.conftest import PlMonkeyPatch1213TEST_FEATURE_FLAGS = "+sse3,+ssse3"141516def test_check_cpu_flags(17plmonkeypatch: PlMonkeyPatch, recwarn: pytest.WarningsRecorder18) -> None:19cpu_flags = {"sse3": True, "ssse3": True}20mock_read_cpu_flags = Mock(return_value=cpu_flags)21plmonkeypatch.setattr(_cpu_check, "_read_cpu_flags", mock_read_cpu_flags)2223check_cpu_flags(TEST_FEATURE_FLAGS)2425assert len(recwarn) == 0262728def test_check_cpu_flags_missing_features(plmonkeypatch: PlMonkeyPatch) -> None:29cpu_flags = {"sse3": True, "ssse3": False}30mock_read_cpu_flags = Mock(return_value=cpu_flags)31plmonkeypatch.setattr(_cpu_check, "_read_cpu_flags", mock_read_cpu_flags)3233with pytest.warns(RuntimeWarning, match="Missing required CPU features") as w:34check_cpu_flags(TEST_FEATURE_FLAGS)3536assert "ssse3" in str(w[0].message)373839def test_check_cpu_flags_unknown_flag(40plmonkeypatch: PlMonkeyPatch,41) -> None:42real_cpu_flags = {"sse3": True, "ssse3": False}43mock_read_cpu_flags = Mock(return_value=real_cpu_flags)44unknown_feature_flags = "+sse3,+ssse3,+HelloWorld!"45plmonkeypatch.setattr(_cpu_check, "_read_cpu_flags", mock_read_cpu_flags)46with pytest.raises(RuntimeError, match="unknown feature flag: 'HelloWorld!'"):47check_cpu_flags(unknown_feature_flags)484950def test_check_cpu_flags_skipped_no_flags(plmonkeypatch: PlMonkeyPatch) -> None:51mock_read_cpu_flags = Mock()52plmonkeypatch.setattr(_cpu_check, "_read_cpu_flags", mock_read_cpu_flags)5354check_cpu_flags("")5556assert mock_read_cpu_flags.call_count == 0575859def test_check_cpu_flags_skipped_env_var(plmonkeypatch: PlMonkeyPatch) -> None:60plmonkeypatch.setenv("POLARS_SKIP_CPU_CHECK", "1")6162mock_read_cpu_flags = Mock()63plmonkeypatch.setattr(_cpu_check, "_read_cpu_flags", mock_read_cpu_flags)6465check_cpu_flags(TEST_FEATURE_FLAGS)6667assert mock_read_cpu_flags.call_count == 0686970