McRogueFace/tests/regression
John McCardle 836a0584df Preserve Python subclass identity for entities in grids (reopens #266)
The Phase 3 fix for #266 removed UIEntity::self which prevented
tp_dealloc from ever running. However, this also allowed Python
subclass wrappers (GameEntity, ZoneExit, etc.) to be GC'd while
the C++ entity lived on in a grid. Later access via grid.entities
returned a base Entity wrapper, losing all subclass methods.

Fix: Add UIEntity::pyobject field that holds a strong reference to
the Python wrapper. Set in init(), cleared when the entity leaves
a grid (die(), set_grid(None), collection removal). This keeps
subclass identity alive while in a grid, but allows proper GC when
the entity is removed. Added releasePyIdentity() helper called at
all grid exit points.

Regression test exercises Liber Noster patterns: subclass hierarchy,
isinstance() checks, combat mixins, tooltip/send methods, GC
survival, die(), pop(), remove(), and stress test with 20 entities.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 00:24:26 -04:00
..
issue_9_rendertexture_resize_test.py Test suite modernization 2026-02-09 08:15:18 -05:00
issue_37_simple_test.py update tests: new scene API 2026-01-03 10:59:52 -05:00
issue_76_test.py Test suite modernization 2026-02-09 08:15:18 -05:00
issue_79_color_properties_test.py Test suite modernization 2026-02-09 08:15:18 -05:00
issue_99_texture_font_properties_test.py Test suite modernization 2026-02-09 08:15:18 -05:00
issue_123_chunk_system_test.py Test suite modernization 2026-02-09 08:15:18 -05:00
issue_146_fov_returns_none.py Test suite modernization 2026-02-09 08:15:18 -05:00
issue_147_grid_layers.py Test suite modernization 2026-02-09 08:15:18 -05:00
issue_148_layer_dirty_flags.py Test suite modernization 2026-02-09 08:15:18 -05:00
issue_176_entity_position_test.py Test suite modernization 2026-02-09 08:15:18 -05:00
issue_177_gridpoint_grid_pos_test.py Test suite modernization 2026-02-09 08:15:18 -05:00
issue_179_181_grid_vectors_test.py Organize test suite: add README, move loose tests to proper directories 2026-01-21 21:34:22 -05:00
issue_180_timer_orphan_test.py Organize test suite: add README, move loose tests to proper directories 2026-01-21 21:34:22 -05:00
issue_180_timer_stopped_test.py Organize test suite: add README, move loose tests to proper directories 2026-01-21 21:34:22 -05:00
issue_182_caption_size_test.py Organize test suite: add README, move loose tests to proper directories 2026-01-21 21:34:22 -05:00
issue_183_parent_quirks_test.py tests for the last few issues (these test scripts should work with recent APIs, while the rest of the test suite needs an overhaul) 2026-01-08 10:31:21 -05:00
issue_184_189_module_test.py Organize test suite: add README, move loose tests to proper directories 2026-01-21 21:34:22 -05:00
issue_185_188_bounds_test.py Organize test suite: add README, move loose tests to proper directories 2026-01-21 21:34:22 -05:00
issue_190_layer_docs_test.py Test suite modernization 2026-02-09 08:15:18 -05:00
issue_212_to_217_test.py Add input validation and fix Entity repr 2026-01-16 19:18:27 -05:00
issue_223_clip_children_test.py Fix UIFrame RenderTexture positioning and toggling issues 2026-01-22 22:54:50 -05:00
issue_251_callback_gc_test.py Fix callback/timer GC: prevent premature destruction of Python callbacks 2026-02-19 20:53:50 -05:00
issue_251_timer_gc_test.py Fix callback/timer GC: prevent premature destruction of Python callbacks 2026-02-19 20:53:50 -05:00
issue_258_gridstate_resize_test.py Fix gridstate heap overflows and spatial hash cleanup 2026-03-07 22:56:16 -05:00
issue_264_gridpoint_dangle_test.py Convert raw pointers to coordinate-based access (closes #264, closes #265) 2026-03-07 23:30:32 -05:00
issue_266_entity_lifecycle_test.py Remove entity self-reference cycle 2026-03-07 23:22:58 -05:00
issue_266_subclass_identity_test.py Preserve Python subclass identity for entities in grids (reopens #266) 2026-03-09 00:24:26 -04:00
issue_callback_refcount_test.py Simplify on_enter/on_exit callbacks to position-only signature 2026-01-28 17:36:02 -05:00
recursive_animation_callback_segfault.py fix: animations modifying animations during callback is now safe 2026-02-04 10:25:59 -05:00
subclass_callback_segfault_test.py Fix: Derivable drawable types participate in garbage collector cycle detection 2026-01-27 13:21:10 -05:00
test_type_preservation_solution.py Test suite modernization 2026-02-09 08:15:18 -05:00