Repository navigation
Conversation
…spanner adk artifact suites
…nd mariadb 11.8 suites
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #859 +/- ##
==========================================
+ Coverage 81.30% 81.38% +0.07%
==========================================
Files 527 527
Lines 88851 89016 +165
Branches 16576 16620 +44
==========================================
+ Hits 72244 72447 +203
+ Misses 12159 12122 -37
+ Partials 4448 4447 -1
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Overhauls SQLSpec's unit and integration test infrastructure on top of the clientless
pytest-databasesbranch (test/clientless-all), decoupling rootpytestruns from container and optional database SDK imports, sharding integration CI across parallel service groups for Python3.11–3.15, and adding live containerized coverage for Oracle Autonomous Database mTLS wallets, multi-cloud object storage (gs://,s3://,az://), AlloyDB Omni 18, MariaDB 11.8, and pure-Go enterprise ADBC drivers.Key Changes
Plugin Isolation & Clientless Fixtures (
tests/conftest.py,tests/integration/conftest.py,tests/integration/fixtures/)pytest_pluginsfrom roottests/conftest.pysotests/unitandtests/typingexecute without importingpytest_databases.docker.*or optional database SDKs, enforced bytest_unit_pytest_session_does_not_load_docker_or_integration_plugins.should_run_optional_cloud_suiteintests/conftest.pyto accept either CLI opt-in flags (--run-bigquery-tests,--run-spanner-tests) or environment variables (SQLSPEC_ENABLE_BIGQUERY_TESTS=1,SQLSPEC_ENABLE_SPANNER_TESTS=1), while running automatically whenCI=true._FIXTURE_DRIVER_REQUIREMENTSplugin discovery intests/integration/conftest.pyand guarded optional driver imports acrosssqlite.py,adapter_cases.py, andtests/integration/adapters/sqlite/sqlite/so partial-extra runs load only installed drivers.tests/plugins/db2.py(andtypes-docker), customgizmosql_sqlite_service, deadasyncpg_adk.py, eagertests/integration/fixtures/__init__.pyre-exports, and deprecated Spanner shims (spanner_connection,spanner_service.credentials) with clientlesspytest_databases.docker.*services (tests/integration/fixtures/db2.py,cockroach.py,spanner.py) and in-container admin commands (exec_psql,sqlplus -L -S,sqlcmd -C).MysqlAdkResidualContext(tests/integration/fixtures/mysql.py) andtests/integration/adapters/mysql/test_adk_residuals.pycoveringaiomysql,asyncmy,mysqlconnector(sync and async), andpymysqlwith pool teardown cleanup.s3fs-coupled RustFS bucket creation intests/fixtures/rustfs.pywith stdlib AWS SigV4 HTTPPUTprovisioning (ensure_s3_bucket/ensure_rustfs_bucket).Parallel Execution & Sharded CI (
tests/integration/adapters/conftest.py,.github/workflows/ci.yml,Makefile)xdist_groupnormalization (@pytest.hookimpl(tryfirst=True)) intests/integration/adapters/conftest.py, preserving dedicated secondary-container markers (alloydb,gizmosql_sqlite,mariadb,oracle_18c,oracle_adb,paradedb,pgvector,snowflake) and routingoracle,db2, andsnowflakeADBC cases to their respective database families.postgres/test_cockroach_retry.pytotests/integration/adapters/cockroach/test_retry.pyunderxdist_group("cockroachdb").test-integrationin.github/workflows/ci.ymlacross Python3.11–3.15and parallel service-group shards (postgres-cockroach,mysql-mariadb-embedded,oracle,mssql-db2,cloud-adbc-storage) with shard-scoped Docker image caches and matchingmake test-integration-<shard>targets inMakefile.Containerized Adapter & Multi-Cloud Storage Suites (
pyproject.toml,tests/integration/)pytest-databases>=0.19.0tolitestar-org/pytest-databases@test/clientless-allinpyproject.toml([tool.uv.sources]) and addedgcsfs,adlfs,adbc-driver-oracle,adbc-driver-db2,adbc-driver-gizmosql, andadbc-driver-snowflaketo[dependency-groups].extras.oracle_adb_service) Thin-mode mTLSwallet_zip(ewallet.p12toewallet.pem),tnsnames.oraalias resolution, andDBMS_CLOUDtests intests/integration/adapters/oracle/oracledb/test_adb_wallet.py.floci_gcp_service(gs://),floci_aws_service(s3://), andazure_blob_service(az://) forObStoreBackendandFSSpecBackend(tests/integration/storage/test_cloud_backends.py), Arrow/object streaming (tests/integration/storage/test_streaming.py), and GCS-backed Spanner ADK artifact stores (tests/integration/adapters/spanner/spanner/extensions/adk/test_adk_artifact_store.py).tests/integration/adapters/postgres/test_alloydb_omni.py), MariaDB 11.8 compatibility tests (tests/integration/adapters/mysql/test_mariadb.py), and containerized pure-Go ADBC suites for Oracle (oracle/adbc/test_adbc_oracle.py), IBM Db2 (db2/adbc/test_adbc_db2.py), and Snowflake/Embucket (snowflake/adbc/test_adbc_snowflake.py).Production Adapter Fixes (
sqlspec/adapters/asyncpg/,sqlspec/adapters/psycopg/,sqlspec/adapters/psqlpy/,sqlspec/adapters/adbc/)enable_alloydb_columnaracrossasyncpg,psycopg, andpsqlpyto configure the session-settablegoogle_columnar_engine.enable_columnar_scanGUC (rather thanPOSTMASTER-scopedgoogle_columnar_engine.enabled), alignedpooler_mode="auto"startup GUC behavior, validated invalidpooler_modevalues withImproperConfigurationError, and removed unsupportedmax_cached_statement_lifetimefromPsqlpyPoolParams.DATABASE=...;HOSTNAME=...;PORT=...;UID=...;PWD=...;) todb2://URIs insqlspec/adapters/adbc/core.pyand routed parameterized non-row-returning Db2 statements throughCursor.executemany(AdbcStatementExecuteUpdate) insqlspec/adapters/adbc/driver.pywhile preserving Arrow C-stream ingestion.Documentation & Contributor Guides (
docs/,tests/integration/adapters/README.md)docs/usage/testing.rstanddocs/examples/patterns/integration_testing.pyfor bare clientlesspytest-databases, Docker and Podman runtime discovery (--container-runtime),--keep-containers, shared-containerpytest-xdist--dist=loadgroup, and the database and cloud-storage service catalog.docs/contributing/creating_adapters.rst,docs/reference/adapters/db2.rst,docs/reference/adapters/oracledb.rst, andtests/integration/adapters/README.mdwith_FIXTURE_DRIVER_REQUIREMENTS, preserved secondary-containerxdist_groupmarkers,orcloud opt-in flags, and per-shardMakefiletargets.