test(ingest): SQL connector + load-bearing + golden, detach-proven (I4)

New: test_ingest_sql.py (connector mechanics + typed rendering + dispatch), test_ingest_sql_loadbearing.py (SQL seams: typed-NULL, typed-REAL, navigability via unchanged okf), test_ingest_golden_sql.py + examples/ingest-golden-sql/ (byte-frozen sqlite golden; NULL->empty, 4200.0->4200.0 and escape discriminate a typed impl from naive ones). Updated: sql-source refusal test repointed to http (I6); manifest schema-breadth comment. Each new seam proven RED at its detach point.

Refs: shared/ingest-spec.md 11 golden + load-bearing table
This commit is contained in:
Kjell Tore Guttormsen 2026-07-04 06:56:02 +02:00
commit 4f45fe6037
11 changed files with 446 additions and 5 deletions

View file

@ -242,11 +242,12 @@ def test_two_runs_with_identical_inputs_are_byte_identical(tmp_path: Path) -> No
assert first == second # §10 idempotence at file level
def test_sql_source_has_no_connector_in_i2(tmp_path: Path) -> None:
# The polymorphic schema VALIDATES sql (brief assumption 1); executing it is I4 —
# attempting to materialize is an explicit refusal, never a silent no-op.
def test_http_source_has_no_connector(tmp_path: Path) -> None:
# The polymorphic schema VALIDATES http (brief assumption 1); executing it is the gated
# I6 extension point — attempting to materialize is an explicit refusal, never a silent
# no-op. (sql now EXECUTES, I4; see tests/test_ingest_sql.py.)
manifest_path, bundle_dir = _project(
tmp_path, source={"type": "sql", "id": "db", "connection_ref": "PROJ_DB"}
tmp_path, source={"type": "http", "id": "api", "base_url": "https://host/api"}
)
with pytest.raises(IngestError):
materialize(manifest_path, bundle_dir, ingested_at=_INGESTED_AT)