tests: detect stale Cython .so files at test startup#756
tests: detect stale Cython .so files at test startup#756Lorak-mmk merged 2 commits intoscylladb:masterfrom
Conversation
There was a problem hiding this comment.
Pull request overview
Adds early test-session detection of stale in-place Cython extension builds (to avoid running tests against outdated compiled code) and documents the rebuild requirement for contributors.
Changes:
- Add
pytest_configurehook intests/conftest.pyto warn when a compiled extension is older than its correspondingcassandra/*.pysource. - Document the required
python setup.py build_ext --inplacerebuild step inCONTRIBUTING.rstand note that tests will warn when staleness is detected.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
tests/conftest.py |
New pytest startup hook that scans for stale compiled extensions vs .py sources and emits a warning. |
CONTRIBUTING.rst |
Adds contributor guidance about rebuilding extensions to avoid testing stale compiled code. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
91aeef3 to
668275b
Compare
There was a problem hiding this comment.
Pull request overview
Adds a pytest startup check to help developers avoid accidentally running tests against stale Cython-compiled extensions when the corresponding cassandra/*.py sources have been edited without rebuilding, and documents the rebuild requirement for contributors.
Changes:
- Introduces a
pytest_configurehook that scans for Cython extension modules and warns when a compiled extension appears older than its.pysource. - Documents the need to rebuild extensions after editing Cython-compiled
cassandra/modules, noting that the test suite will warn on staleness.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
tests/conftest.py |
Adds a pytest session-start hook that attempts to detect stale Cython extension artifacts and emits a warning. |
CONTRIBUTING.rst |
Adds contributor guidance about rebuilding extensions after modifying Cython-compiled driver modules. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Lorak-mmk
left a comment
There was a problem hiding this comment.
Looks good in general I think. First 3 commits should be squashed into one.
Add a pytest_configure hook in tests/conftest.py that compares mtime of each compiled extension against its .py source and warns when the source is newer. This prevents silently testing stale compiled code after editing a Cython-compiled module without rebuilding. The scan iterates over .py source files and checks for the first matching compiled extension per importlib.machinery.EXTENSION_SUFFIXES order, mirroring Python's import machinery and handling both .so (POSIX) and .pyd (Windows) automatically. Also document the rebuild requirement in CONTRIBUTING.rst, using uv commands instead of deprecated setup.py invocations.
Replace all 'python setup.py install' instructions with 'pip install .' or 'pip install scylla-driver' equivalents. Replace setup.py-specific command-line flags (--no-cython, --no-extensions, etc.) with their environment variable equivalents (CASS_DRIVER_NO_CYTHON, CASS_DRIVER_NO_EXTENSIONS, CASS_DRIVER_NO_LIBEV). Remove deprecated pip --install-option usage.
8f5e85c to
35d31e3
Compare
Squashed. |
Add a pytest_configure hook in tests/conftest.py that compares mtime of each compiled .so against its .py source and warns when the source is newer. This prevents silently testing stale compiled code after editing a Cython-compiled module without rebuilding.
(Bit me here - #749 )
Also document the rebuild requirement in CONTRIBUTING.rst.
Pre-review checklist
./docs/source/.Fixes:annotations to PR description.