diff --git a/.github/workflows/build-formualizer.yml b/.github/workflows/build-formualizer.yml index e8fec6b6c388..dad60bfa1c7f 100644 --- a/.github/workflows/build-formualizer.yml +++ b/.github/workflows/build-formualizer.yml @@ -87,13 +87,30 @@ jobs: CIBW_BEFORE_ALL_LINUX: >- curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain 1.99.0 CIBW_ENVIRONMENT_LINUX: PATH="$PATH:$HOME/.cargo/bin" + # The cp310 musllinux test run segfaults (SIGSEGV in `python -m formualizer recalc` + # and later in test_xlsx_source_tables) while the manylinux and cp314t runs pass. + # Threads spawned by Rust on musl are the likely overflow, so give them a stack + # large enough for the recursive evaluator (std honours RUST_MIN_STACK). + CIBW_TEST_ENVIRONMENT: RUST_MIN_STACK=67108864 CIBW_TEST_GROUPS: dev - CIBW_TEST_SOURCES: bindings/python/tests bindings/python/pyproject.toml + # test_doc_sync/test_examples read the repo docs, examples and scripts/ relative to the checkout root. + CIBW_TEST_SOURCES: >- + bindings/python/tests bindings/python/pyproject.toml bindings/python/examples + examples/sheetport scripts/check-doc-examples.py README.md bindings/python/README.md + bindings/wasm/README.md bindings/wasm/examples/sheetport-quickstart.mjs + crates/formualizer-sheetport/README.md crates/formualizer-workbook/README.md + crates/formualizer/examples/sheetport_quickstart.rs + docs-site/content/docs/sheetport/quickstart.mdx + docs-site/content/docs/guides/large-workbook-performance.mdx + # Diagnostic: a segfault kills pytest before it prints its failure report, so run the + # failing files first on their own and enable faulthandler for the full run. CIBW_TEST_COMMAND: >- python -c "import formualizer.formualizer_py as m, importlib.metadata as md; assert m.__file__.endswith('.so'), m.__file__; assert any(str(p).endswith('licenses/LICENSE-MIT') for p in md.files('formualizer'))" && - cd bindings/python && python -m pytest + cd bindings/python && + (python -X faulthandler -m pytest -q --tb=short tests/test_cli.py tests/test_recalc_reproducible.py || true) && + python -X faulthandler -m pytest - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: diff --git a/docs/packages/formualizer.yaml b/docs/packages/formualizer.yaml index 6e89636972c2..543fc7a42c7a 100644 --- a/docs/packages/formualizer.yaml +++ b/docs/packages/formualizer.yaml @@ -17,3 +17,4 @@ versions: - filename: formualizer-0.11.1-cp314-cp314t-musllinux_1_2_riscv64.whl sha256: 336fde6f3aa74c70b3608bc2bf530c74593beca80354b856d863c16caaff834e requires-python: '>=3.10' +- version: 0.12.0