mirror of
https://github.com/apache/superset.git
synced 2026-09-01 04:51:23 +00:00
- pyproject.toml: pin psycopg2-binary alongside sqlalchemy-cockroachdb -- the latter declares no DBAPI dependency of its own, so the documented `apache-superset[cockroachdb]` install couldn't actually connect. - testcontainers.yml: scope the concurrency group by ref so a PR run and the nightly cron (or two different PRs) no longer cancel each other. - test_cockroachdb.py: assert the actual generic/SQLAlchemy type, matching the Trino test, instead of only checking a column spec was found. - pytest.ini + new `testcontainers` marker + _driver.py: exclude tests/testcontainers/ from a plain `pytest` run by default (it needs Docker), while the dedicated CI job now sets SUPERSET_TESTCONTAINERS_STRICT so a broken/missing driver import fails that job instead of silently skipping to a green, zero-tests-run result. - UPDATING.md: the migration note now says to uninstall the old `cockroachdb` package outright, since reinstalling the extra alone can leave both packages registering the same dialect entry point. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
48 lines
1.9 KiB
Python
48 lines
1.9 KiB
Python
# Licensed to the Apache Software Foundation (ASF) under one
|
|
# or more contributor license agreements. See the NOTICE file
|
|
# distributed with this work for additional information
|
|
# regarding copyright ownership. The ASF licenses this file
|
|
# to you under the Apache License, Version 2.0 (the
|
|
# "License"); you may not use this file except in compliance
|
|
# with the License. You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing,
|
|
# software distributed under the License is distributed on an
|
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
# KIND, either express or implied. See the License for the
|
|
# specific language governing permissions and limitations
|
|
# under the License.
|
|
"""
|
|
Shared import guard for the per-dialect testcontainers modules
|
|
(tests/testcontainers/db_engine_specs/test_*.py), each of which needs its
|
|
own optional `testcontainers[...]` driver submodule to even import.
|
|
"""
|
|
|
|
import importlib
|
|
import os
|
|
|
|
|
|
def require_driver(module_name: str) -> None:
|
|
"""
|
|
Import `module_name`, a dialect's `testcontainers` driver submodule.
|
|
|
|
Most environments treat that driver as optional: a bare local `pytest`
|
|
run, or another CI job that never installed the `testcontainers` extras,
|
|
should skip the module rather than fail collection outright.
|
|
|
|
The dedicated per-dialect CI job (.github/workflows/testcontainers.yml)
|
|
sets SUPERSET_TESTCONTAINERS_STRICT, because there the driver is not
|
|
optional -- that job's matrix installs exactly this one driver for
|
|
exactly this one module. A broken or missing import there means the job
|
|
is misconfigured, and should fail loudly instead of silently reporting
|
|
a misleadingly green, zero-tests-run result.
|
|
"""
|
|
if os.environ.get("SUPERSET_TESTCONTAINERS_STRICT"):
|
|
importlib.import_module(module_name)
|
|
else:
|
|
import pytest
|
|
|
|
pytest.importorskip(module_name)
|