Skip to content

ci: run the configured tests, and build what the project declares - #3

Merged
nimbrel merged 6 commits into
mainfrom
fix/ci-pipeline-inputs
Sep 26, 2026
Merged

nimbrel merged 6 commits into
mainfrom
fix/ci-pipeline-inputs

Conversation

@nimbrel

@nimbrel nimbrel commented Sep 26, 2026

Copy link
Copy Markdown
Contributor

Fixes in how ftcheck ci picks its inputs and reports its runs.

  • With no --tests, ci uses pytest's testpaths (from pytest.ini, pyproject.toml, tox.ini or setup.cfg, in pytest's order), then tests/, then the project root, and says which it chose. Test requirements come from a requirements.txt beside the selected tests, so --tests other no longer installs tests/requirements.txt.
  • strip = true under [tool.maturin] is overridden with MATURIN_STRIP=false (maturin 1.12+), keeping symbols TSan needs; the warning stays for older maturin.
  • [build-system].requires (other than maturin) is installed into a build environment on the TSan interpreter, so build scripts that import Python packages work.
  • Each run keeps its raw TSan logs in tsan-runs/<UTC time>[-seed<N>]/ (the last five are kept), named in the summary.
  • A pytest session that exits before running what it collected is reported as aborted, and a stale JUnit file from an earlier run can no longer be read as this run's result.
  • ci and stress note when importing a module re-enables the GIL, since results then hold only with PYTHON_GIL=0.

18 new tests in tests/test_ci_pipeline.py.

…ide them

Without --tests, ci ran tests/ (or the root) even when pytest's testpaths named
another directory, and installed tests/requirements.txt even when --tests
selected other tests. The default now follows testpaths, the requirements file
is looked up beside the selected tests, and the summary names the choice.

Signed-off-by: nimbrel <[email protected]>
CARGO_PROFILE_RELEASE_STRIP only reaches Cargo's profile; strip = true under
[tool.maturin] is applied by maturin itself and still erased every frame name.
maturin 1.12 added MATURIN_STRIP to override pyproject.toml, so the build sets
it. The stripped-library warning stays for older maturin, and _stripped no
longer reads an unreadable file as stripped.

Signed-off-by: nimbrel <[email protected]>
A build script that imports Python packages (cffi and setuptools, for one)
failed, because nothing installed the project's build requirements. They are
now installed, less maturin, into a build venv on the TSan interpreter that is
first on PATH for maturin build. The test venv stays as it was.

Signed-off-by: nimbrel <[email protected]>
Every run forces PYTHON_GIL=0, so a module without gil_used = false was tested
in a mode its users never get, and nothing said so. After install, each
extension module is imported once without PYTHON_GIL; if the GIL comes back
on, ci and stress add a note. stress now prints the pipeline's notes.

Signed-off-by: nimbrel <[email protected]>
Only one earlier generation was kept (tsan-previous/), so running several seeds
back to back overwrote the logs behind a finding. Each run now writes to
tsan-runs/<UTC time>[-seed<N>]/, the summary names it, and the last five runs
are kept.

Signed-off-by: nimbrel <[email protected]>
…lected

Only an INTERNALERROR was recognised as an aborted session. A session that ran
fewer tests than it collected (JUnit tests, skipped and deselected included),
without -x or --maxfail saying why, now reads as aborted and exits 3. The
JUnit file is removed before each session, so one that dies before writing it
no longer inherits the previous run's counts.

Signed-off-by: nimbrel <[email protected]>
@nimbrel
nimbrel merged commit df1b874 into main Sep 26, 2026
6 checks passed
@nimbrel
nimbrel deleted the fix/ci-pipeline-inputs branch September 28, 2026 12:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant