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:
parent
d7e5f2fec7
commit
4f45fe6037
11 changed files with 446 additions and 5 deletions
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue