56 lines
1.9 KiB
Python
56 lines
1.9 KiB
Python
import unittest
|
|
|
|
from pathlib import Path
|
|
from tempfile import TemporaryDirectory
|
|
from typing import TYPE_CHECKING, Dict, Type
|
|
from Utils import parse_yaml
|
|
|
|
if TYPE_CHECKING:
|
|
from worlds.AutoWorld import World
|
|
|
|
|
|
class TestGenerateYamlTemplates(unittest.TestCase):
|
|
old_world_types: Dict[str, Type["World"]]
|
|
|
|
def setUp(self) -> None:
|
|
import worlds.AutoWorld
|
|
|
|
self.old_world_types = worlds.AutoWorld.AutoWorldRegister.world_types
|
|
|
|
def tearDown(self) -> None:
|
|
import worlds.AutoWorld
|
|
|
|
worlds.AutoWorld.AutoWorldRegister.world_types = self.old_world_types
|
|
|
|
if "World: with colon" in worlds.AutoWorld.AutoWorldRegister.world_types:
|
|
del worlds.AutoWorld.AutoWorldRegister.world_types["World: with colon"]
|
|
|
|
def test_name_with_colon(self) -> None:
|
|
from Options import generate_yaml_templates
|
|
from worlds.AutoWorld import AutoWorldRegister
|
|
from worlds.AutoWorld import World
|
|
|
|
class WorldWithColon(World):
|
|
game = "World: with colon"
|
|
item_name_to_id = {}
|
|
location_name_to_id = {}
|
|
|
|
AutoWorldRegister.world_types = {WorldWithColon.game: WorldWithColon}
|
|
with TemporaryDirectory(f"archipelago_{__name__}") as temp_dir:
|
|
generate_yaml_templates(temp_dir)
|
|
path: Path
|
|
for path in Path(temp_dir).iterdir():
|
|
self.assertTrue(path.is_file())
|
|
self.assertTrue(path.suffix == ".yaml")
|
|
with path.open(encoding="utf-8") as f:
|
|
try:
|
|
data = parse_yaml(f)
|
|
except:
|
|
f.seek(0)
|
|
print(f"Error in {path.name}:\n{f.read()}")
|
|
raise
|
|
self.assertIn("game", data)
|
|
self.assertIn(":", data["game"])
|
|
self.assertIn(data["game"], data)
|
|
self.assertIsInstance(data[data["game"]], dict)
|