Skip to content

Add cross-platform CI validation - #172

Merged
schapman1974 merged 1 commit into
masterfrom
agent/cross-platform-ci
Aug 6, 2026
Merged

Add cross-platform CI validation#172
schapman1974 merged 1 commit into
masterfrom
agent/cross-platform-ci

Conversation

@schapman1974

Copy link
Copy Markdown
Owner

Summary

  • Complete the Linux CPython matrix by testing every supported standard release from 3.9 through 3.14, while keeping the 100% coverage and lint gate on 3.14.
  • Build the universal wheel once, then install and exercise that exact artifact on Linux x64, Windows x64, Intel macOS, Apple-silicon macOS, and CPython 3.14t.
  • Validate core-only installs at the Python 3.9 floor and the complete optional local-backend profile on current interpreters.
  • Add a weekly/manual full-suite workflow for current Windows and macOS, including cross-process SQLite stress.
  • Harden multiprocessing tests with bounded joins, exit-code checks, reliable queue draining, and explicit client cleanup.
  • Remove the obsolete Travis configuration and update the README and roadmap with the tested platform scope and follow-up work.

Why

The existing CI was Ubuntu-only, skipped supported Python 3.10 and 3.12, and rebuilt the same pure wheel instead of proving that one artifact works across operating systems. That left Windows mandatory file-handle behavior, macOS/Windows spawn-based multiprocessing, Unicode and spaced paths, native optional dependency availability, and platform-specific SQLite behavior untested.

The installed-package verifier deliberately runs outside the checkout in isolated mode. It checks imports, dependency consistency, the console entry point, synchronous and asynchronous persistence, indexes and queries, reopen durability, Unicode paths, and TinyDB, SQLite, DuckDB, and Parquet when installed.

Validation

  • actionlint 1.7.12 passed both workflow files.
  • Full local macOS Python 3.14 rehearsal: 3,763 passed, 1 skipped, 531 deselected.
  • Full branch coverage remains 100%: 8,497 statements and 3,626 branches.
  • Focused portable suite: 389 passed.
  • Cross-process SQLite stress: 2 passed.
  • Built wheel and sdist passed strict Twine checks.
  • Core Python 3.9 and complete Python 3.14 wheel installs passed isolated smoke tests and dependency checks.
  • Current CPython 3.14 Windows wheels resolve for DuckDB, PyArrow, PyMongo, Psycopg, and the remaining optional dependencies.

Known follow-up

Parquet currently maps logical collection names directly to filenames. The Windows lane deselects only the known Parquet case using collection name a:b, because that is not a legal Windows filename. Migration-safe physical-name encoding, path containment, case-distinct names, drive-relative Windows paths, lock canonicalization, and exceptional handle cleanup are recorded under #81 and #93 in the roadmap.

MongoDB, PostgreSQL, and MariaDB service-container jobs remain Linux-only. This PR changes validation, tests, and documentation; it does not change runtime database behavior.

@schapman1974
schapman1974 marked this pull request as ready for review August 6, 2026 00:58
@schapman1974
schapman1974 merged commit a8c8fb9 into master Aug 6, 2026
22 checks passed
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