| import gc | |
| import platform | |
| import pytest | |
| from markupsafe import escape | |
| @pytest.mark.skipif( | |
| escape.__module__ == "markupsafe._native", | |
| reason="only test memory leak with speedups", | |
| ) | |
| def test_markup_leaks(): | |
| counts = set() | |
| for _i in range(20): | |
| for _j in range(1000): | |
| escape("foo") | |
| escape("<foo>") | |
| escape("foo") | |
| escape("<foo>") | |
| if platform.python_implementation() == "PyPy": | |
| gc.collect() | |
| counts.add(len(gc.get_objects())) | |
| assert len(counts) == 1 |