fix: handle null `py::handle` and add tests for `py::scoped_critical_section` (#5706)
* chore: handle null for `py::scoped_critical_section`
* test: add tests for `py::scoped_critical_section`
* test: use assert instead of REQUIRE
* feat: enable faulthandler for pytest
* chore: use `__has_include(<barrier>)`
* fix: fix segmentation fault in test
* fix: test critical_section for no-gil only
* test: run new tests only
* test: ensure non-empty test selection
* fix: fix test critical_section
* fix: change Python 3.14.0b1/2 xfail tests to non-strict
* test: trigger gc manually
* test: mark xfail to `DynamicClass`
* Use `namespace test_scoped_critical_section_ns` (standard approach to guard against name clashes).
* Simplify changes in pybind11/critical_section.h and add test_nullptr_combinations()
* test: disable Python devmode in pytest
* test: add comprehensive comments for the tests
* test: add a summary comment for tests
* refactor: simpler impl
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
---------
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
Co-authored-by: Ralf W. Grosse-Kunstleve <rgrossekunst@nvidia.com>
Co-authored-by: Henry Schreiner <henryschreineriii@gmail.com>
4 files changed