Files
RustPython/extra_tests
youknowdot c0694d955c Reject stale GenericAlias parameters on Python 3.15 (#9069)
* Reject GenericAlias parameters added after caching

Validate stale cached parameters and retain the Python regression without obsolete reference prerequisites.

Assisted-by: OpenAI Codex:model identifier unavailable

* Compute GenericAlias parameters lazily for Python 3.15

Populate the parameter cache on first lookup or subscription. Preserve cached identity and outer lookup replacement, propagate descriptor failures, and release displaced parameters outside the cache lock. Add Python regressions for timing, retries, reentrancy, recursion and concurrent callbacks.

Assisted-by: OpenAI Codex:model identifier unavailable

* Check GenericAlias recursion at lazy parameter materialization

Align the existing cyclic and deeply nested fixtures with certified CPython 3.15. Keep RecursionError assertions, cover both parameter lookup and subscription on both interpreters, and retain the separate deep-hash regression.

Assisted-by: OpenAI Codex:model identifier unavailable

* Keep finite GenericAlias stack stress native-specific

Preserve shared cyclic recursion checks and all RustPython stress assertions. Finite acyclic depth is not a portable CPython C-stack limit across optimized builds.

Assisted-by: OpenAI Codex:model identifier unavailable

* Materialize union parameters lazily like GenericAlias

Share the reentrant-safe parameter cache between aliases and unions. Preserve parameter identity without applying union argument equality or flattening. Cover nested alias timing, descriptor retry, reentrant replacement, empty caches and concurrent callbacks in Python regressions checked against final CPython 3.15.

Assisted-by: OpenAI Codex:model identifier unavailable

* Consolidate union regressions in the typing snippet

Preserve all existing regression bodies and coverage while following the requested snippet organization.

Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-12 16:15:01 +09:00
..
2022-07-17 03:25:34 +09:00
2025-12-12 22:46:39 +09:00

Test snippets

This directory contains two sets of test snippets which can be run in Python. The snippets/ directory contains functional tests, and the benchmarks/ directory contains snippets for use in benchmarking RustPython's performance.

Setup

Our testing depends on pytest, which you can install using pip.

Running

Simply run pytest -v in this directory, and the tests should run (and hopefully pass). If it hangs for a long time, that's because it's building RustPython in release mode, which should take less time than it would to run every test snippet with RustPython compiled in debug mode.