mirror of
https://github.com/lutris/lutris
synced 2024-09-15 22:09:55 +00:00
107 lines
4.2 KiB
Python
107 lines
4.2 KiB
Python
import logging
|
|
from unittest.mock import patch
|
|
|
|
from test_pga import DatabaseTester
|
|
|
|
from lutris import runners
|
|
from lutris.config import LutrisConfig
|
|
from lutris.util.test_config import setup_test_environment
|
|
|
|
LOGGER = logging.getLogger(__name__)
|
|
setup_test_environment()
|
|
|
|
|
|
class ImportRunnerTest(DatabaseTester):
|
|
def test_runner_modules(self):
|
|
runner_list = runners.__all__
|
|
self.assertIn("linux", runner_list)
|
|
self.assertIn("wine", runner_list)
|
|
self.assertIn("libretro", runner_list)
|
|
self.assertIn("fsuae", runner_list)
|
|
|
|
def test_import_module(self):
|
|
for runner_name in runners.__all__:
|
|
runner_class = runners.import_runner(runner_name)
|
|
self.assertEqual(runner_class().__class__.__name__, runner_name)
|
|
|
|
def test_options(self):
|
|
for runner_name in runners.__all__:
|
|
LOGGER.info("Importing %s", runner_name)
|
|
runner_class = runners.import_runner(runner_name)
|
|
runner = runner_class()
|
|
self.assertTrue(hasattr(runner, "game_options"), "%s doesn't have game options" % runner_name)
|
|
self.assertTrue(hasattr(runner, "runner_options"))
|
|
for option in runner.game_options:
|
|
self.assertIn("type", option)
|
|
self.assertFalse(option["type"] == "single")
|
|
|
|
def test_get_system_config(self):
|
|
def fake_yaml_reader(path):
|
|
if not path:
|
|
return {}
|
|
if "system.yml" in path:
|
|
return {"system": {"resolution": "640x480"}}
|
|
return {}
|
|
|
|
with patch("lutris.config.read_yaml_from_file") as yaml_reader:
|
|
yaml_reader.side_effect = fake_yaml_reader
|
|
wine_runner = runners.import_runner("wine")
|
|
wine = wine_runner()
|
|
self.assertEqual(wine.system_config.get("resolution"), "640x480")
|
|
|
|
def test_runner_config_overrides_system_config(self):
|
|
def fake_yaml_reader(path):
|
|
if not path:
|
|
return {}
|
|
if "system.yml" in path:
|
|
return {"resolution": "640x480"}
|
|
if "wine.yml" in path:
|
|
return {"system": {"resolution": "800x600"}}
|
|
return {}
|
|
|
|
with patch("lutris.config.read_yaml_from_file") as yaml_reader:
|
|
yaml_reader.side_effect = fake_yaml_reader
|
|
wine_runner = runners.import_runner("wine")
|
|
wine = wine_runner()
|
|
self.assertEqual(wine.system_config.get("resolution"), "800x600")
|
|
|
|
def test_game_config_overrides_all(self):
|
|
def fake_yaml_reader(path):
|
|
if not path:
|
|
return {}
|
|
if "system.yml" in path:
|
|
return {"system": {"resolution": "640x480"}}
|
|
if "wine.yml" in path:
|
|
return {"system": {"resolution": "800x600"}}
|
|
if "rage.yml" in path:
|
|
return {"system": {"resolution": "1920x1080"}}
|
|
return {}
|
|
|
|
with patch("lutris.config.read_yaml_from_file") as yaml_reader:
|
|
yaml_reader.side_effect = fake_yaml_reader
|
|
wine_runner = runners.import_runner("wine")
|
|
game_config = LutrisConfig(game_config_id="rage", runner_slug="wine")
|
|
wine = wine_runner(game_config)
|
|
self.assertEqual(wine.system_config.get("resolution"), "1920x1080")
|
|
|
|
def test_system_config_with_no_system_yml(self):
|
|
def fake_yaml_reader(path):
|
|
if not path:
|
|
return {}
|
|
if "system.yml" in path:
|
|
return {}
|
|
if "wine.yml" in path:
|
|
return {"system": {"resolution": "800x600"}}
|
|
if "rage.yml" in path:
|
|
return {"system": {"resolution": "1680x1050"}, "runner": "wine"}
|
|
return {}
|
|
|
|
with patch("lutris.config.read_yaml_from_file") as yaml_reader:
|
|
yaml_reader.side_effect = fake_yaml_reader
|
|
wine_runner = runners.import_runner("wine")
|
|
game_config = LutrisConfig(runner_slug="wine", game_config_id="rage")
|
|
self.assertEqual(game_config.game_config_id, "rage")
|
|
self.assertEqual(game_config.runner_slug, "wine")
|
|
wine = wine_runner(game_config)
|
|
self.assertEqual(wine.system_config.get("resolution"), "1680x1050")
|