 347efac0cd
			
		
	
	347efac0cd
	
	
	
		
			
			* - Set up the two long tests to only run when the specific config is active * Apply Black Sliver's suggestion
		
			
				
	
	
		
			60 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import os
 | |
| from argparse import Namespace
 | |
| from typing import ClassVar
 | |
| from typing import Dict, FrozenSet, Tuple, Any
 | |
| 
 | |
| from BaseClasses import MultiWorld
 | |
| from test.bases import WorldTestBase
 | |
| from test.general import gen_steps, setup_solo_multiworld as setup_base_solo_multiworld
 | |
| from worlds.AutoWorld import call_all
 | |
| from .. import DLCqworld
 | |
| 
 | |
| 
 | |
| class DLCQuestTestBase(WorldTestBase):
 | |
|     game = "DLCQuest"
 | |
|     world: DLCqworld
 | |
|     player: ClassVar[int] = 1
 | |
|     # Set False to run tests that take long
 | |
|     skip_long_tests: bool = True
 | |
| 
 | |
|     @classmethod
 | |
|     def setUpClass(cls) -> None:
 | |
|         super().setUpClass()
 | |
|         cls.skip_long_tests = not bool(os.environ.get("long"))
 | |
| 
 | |
|     def world_setup(self, *args, **kwargs):
 | |
|         super().world_setup(*args, **kwargs)
 | |
|         if self.constructed:
 | |
|             self.world = self.multiworld.worlds[self.player]  # noqa
 | |
| 
 | |
|     @property
 | |
|     def run_default_tests(self) -> bool:
 | |
|         # world_setup is overridden, so it'd always run default tests when importing DLCQuestTestBase
 | |
|         is_not_dlc_test = type(self) is not DLCQuestTestBase
 | |
|         should_run_default_tests = is_not_dlc_test and super().run_default_tests
 | |
|         return should_run_default_tests
 | |
| 
 | |
| 
 | |
| def setup_dlc_quest_solo_multiworld(test_options=None, seed=None, _cache: Dict[FrozenSet[Tuple[str, Any]], MultiWorld] = {}) -> MultiWorld: #noqa
 | |
|     if test_options is None:
 | |
|         test_options = {}
 | |
| 
 | |
|     # Yes I reuse the worlds generated between tests, its speeds the execution by a couple seconds
 | |
|     frozen_options = frozenset(test_options.items()).union({seed})
 | |
|     if frozen_options in _cache:
 | |
|         return _cache[frozen_options]
 | |
| 
 | |
|     multiworld = setup_base_solo_multiworld(DLCqworld, (), seed=seed)
 | |
|     # print(f"Seed: {multiworld.seed}") # Uncomment to print the seed for every test
 | |
|     args = Namespace()
 | |
|     for name, option in DLCqworld.options_dataclass.type_hints.items():
 | |
|         value = option(test_options[name]) if name in test_options else option.from_any(option.default)
 | |
|         setattr(args, name, {1: value})
 | |
|     multiworld.set_options(args)
 | |
|     for step in gen_steps:
 | |
|         call_all(multiworld, step)
 | |
| 
 | |
|     _cache[frozen_options] = multiworld
 | |
| 
 | |
|     return multiworld
 |