Tests: massively improve the memory leak test performance (#4568)

* Tests: massively improve the memory leak test performance

With the growing number of worlds, GC becomes the bottleneck and slows down the test.

* Tests: fix typing in general/test_memory
This commit is contained in:
black-sliver 2025-01-29 01:52:01 +01:00 committed by GitHub
parent 41898ed640
commit 738c21c625
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 7 additions and 2 deletions

View File

@ -1,5 +1,6 @@
import unittest import unittest
from BaseClasses import MultiWorld
from worlds.AutoWorld import AutoWorldRegister from worlds.AutoWorld import AutoWorldRegister
from . import setup_solo_multiworld from . import setup_solo_multiworld
@ -9,8 +10,12 @@ class TestWorldMemory(unittest.TestCase):
"""Tests that worlds don't leak references to MultiWorld or themselves with default options.""" """Tests that worlds don't leak references to MultiWorld or themselves with default options."""
import gc import gc
import weakref import weakref
refs: dict[str, weakref.ReferenceType[MultiWorld]] = {}
for game_name, world_type in AutoWorldRegister.world_types.items(): for game_name, world_type in AutoWorldRegister.world_types.items():
with self.subTest("Game", game_name=game_name): with self.subTest("Game creation", game_name=game_name):
weak = weakref.ref(setup_solo_multiworld(world_type)) weak = weakref.ref(setup_solo_multiworld(world_type))
gc.collect() refs[game_name] = weak
gc.collect()
for game_name, weak in refs.items():
with self.subTest("Game cleanup", game_name=game_name):
self.assertFalse(weak(), "World leaked a reference") self.assertFalse(weak(), "World leaked a reference")