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) |