Skip to content

Commit d16222c

Browse files
authored
feat: account for vendors that don't support bind parameters (#22)
1 parent 2043efc commit d16222c

5 files changed

Lines changed: 27 additions & 8 deletions

File tree

adbc_drivers_validation/model.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ class DriverFeatures:
8585
get_objects_constraints_foreign: bool = False
8686
get_objects_constraints_primary: bool = False
8787
get_objects_constraints_unique: bool = False
88+
statement_bind: bool = True
8889
statement_bulk_ingest: bool = False
8990
statement_bulk_ingest_catalog: bool = False
9091
statement_bulk_ingest_schema: bool = False

adbc_drivers_validation/tests/conftest.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,12 @@
2222

2323
from adbc_drivers_validation import model
2424

25-
# Rewrite assertions in this module to have the friendly display
25+
# Rewrite assertions in these modules to have the friendly display
2626
pytest.register_assert_rewrite("adbc_drivers_validation.compare")
27+
pytest.register_assert_rewrite("adbc_drivers_validation.tests.connection")
28+
pytest.register_assert_rewrite("adbc_drivers_validation.tests.ingest")
29+
pytest.register_assert_rewrite("adbc_drivers_validation.tests.query")
30+
pytest.register_assert_rewrite("adbc_drivers_validation.tests.statement")
2731

2832

2933
def pytest_collection_modifyitems(

adbc_drivers_validation/tests/ingest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ def generate_tests(quirks: model.DriverQuirks, metafunc) -> None:
3535
combinations = []
3636

3737
enabled = {
38-
"test_not_null": True,
38+
"test_not_null": quirks.features.statement_bulk_ingest,
3939
"test_temporary": quirks.features.statement_bulk_ingest_temporary,
4040
"test_schema": quirks.features.statement_bulk_ingest_schema,
4141
"test_catalog": quirks.features.statement_bulk_ingest_catalog,

adbc_drivers_validation/tests/query.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,14 @@ def generate_tests(quirks: model.DriverQuirks, metafunc) -> None:
3535
for query in queries.queries.values():
3636
marks = []
3737
marks.extend(query.pytest_marks)
38+
39+
if (
40+
not quirks.features.statement_bind
41+
and isinstance(query.query, model.SelectQuery)
42+
and query.query.bind_query(quirks) is not None
43+
):
44+
marks.append(pytest.mark.skip(reason="bind not supported"))
45+
3846
if metafunc.definition.name == "test_execute_schema":
3947
if not isinstance(query.query, model.SelectQuery):
4048
continue

adbc_drivers_validation/tests/statement.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,20 @@ def generate_tests(quirks: model.DriverQuirks, metafunc) -> None:
3232
combinations = []
3333

3434
if (
35-
metafunc.definition.name == "test_parameter_schema"
36-
and not quirks.features.statement_get_parameter_schema
35+
metafunc.definition.name == "test_parameter_execute"
36+
and not quirks.features.statement_bind
3737
):
38-
marks.append(
39-
pytest.mark.xfail(
40-
raises=adbc_driver_manager.dbapi.NotSupportedError, strict=True
38+
marks.append(pytest.mark.skip("bind not supported"))
39+
40+
if metafunc.definition.name == "test_parameter_schema":
41+
if not quirks.features.statement_bind:
42+
marks.append(pytest.mark.skip("bind not supported"))
43+
elif not quirks.features.statement_get_parameter_schema:
44+
marks.append(
45+
pytest.mark.xfail(
46+
raises=adbc_driver_manager.dbapi.NotSupportedError, strict=True
47+
)
4148
)
42-
)
4349

4450
if (
4551
metafunc.definition.name == "test_prepare"

0 commit comments

Comments
 (0)