"""Tests for M6 gaming-environment checks (pure evaluators + aggregate smoke test).""" import unittest from rigdoctor.core import gameenv from rigdoctor.core.health import Finding class AspmTests(unittest.TestCase): def test_powersave_is_warning(self): f = gameenv.evaluate_aspm("[powersave] performance powersupersave\n") self.assertEqual(f.severity, "warning") self.assertEqual(f.category, "PCIe") def test_performance_is_ok(self): self.assertEqual(gameenv.evaluate_aspm("[performance] powersave powersupersave").severity, "ok") def test_default_is_info(self): self.assertEqual(gameenv.evaluate_aspm("[default] performance powersave").severity, "info") def test_missing_is_none(self): self.assertIsNone(gameenv.evaluate_aspm(None)) self.assertIsNone(gameenv.evaluate_aspm("no brackets here")) class GovernorTests(unittest.TestCase): def test_performance_only_is_ok(self): self.assertEqual(gameenv.evaluate_governor({"performance"}).severity, "ok") def test_powersave_is_warning(self): f = gameenv.evaluate_governor({"powersave"}) self.assertEqual(f.severity, "warning") self.assertIn("cpupower", f.suggestion) def test_dynamic_is_info(self): self.assertEqual(gameenv.evaluate_governor({"schedutil"}).severity, "info") def test_empty_is_none(self): self.assertIsNone(gameenv.evaluate_governor(set())) class SwappinessTests(unittest.TestCase): def test_high_is_info_with_suggestion(self): f = gameenv.evaluate_swappiness(60) self.assertEqual(f.severity, "info") self.assertIn("swappiness", f.suggestion) def test_low_is_ok(self): self.assertEqual(gameenv.evaluate_swappiness(10).severity, "ok") class ShaderCacheTests(unittest.TestCase): def test_disabled_nvidia_is_warning(self): self.assertEqual(gameenv.evaluate_shader_cache({"__GL_SHADER_DISK_CACHE": "0"}).severity, "warning") def test_disabled_mesa_is_warning(self): self.assertEqual(gameenv.evaluate_shader_cache({"MESA_SHADER_CACHE_DISABLE": "true"}).severity, "warning") def test_default_is_ok(self): self.assertEqual(gameenv.evaluate_shader_cache({}).severity, "ok") class AggregateTests(unittest.TestCase): def test_run_returns_sorted_findings(self): findings = gameenv.run_gameenv_checks() self.assertTrue(all(isinstance(f, Finding) for f in findings)) order = {"critical": 0, "warning": 1, "info": 2, "ok": 3} sevs = [order.get(f.severity, 9) for f in findings] self.assertEqual(sevs, sorted(sevs)) # worst-first if __name__ == "__main__": unittest.main()