Skip to content

Commit bc2dd7f

Browse files
committed
Fix: normalize unit testing fixture catalog
1 parent cc2e1f1 commit bc2dd7f

File tree

2 files changed

+57
-13
lines changed

2 files changed

+57
-13
lines changed

sqlmesh/core/test/definition.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,11 @@ def __init__(
100100
self._validate_and_normalize_test()
101101

102102
if self.engine_adapter.default_catalog:
103-
self._fixture_catalog: t.Optional[exp.Identifier] = exp.parse_identifier(
104-
self.engine_adapter.default_catalog, dialect=self._test_adapter_dialect
103+
self._fixture_catalog: t.Optional[exp.Identifier] = normalize_identifiers(
104+
exp.parse_identifier(
105+
self.engine_adapter.default_catalog, dialect=self._test_adapter_dialect
106+
),
107+
dialect=self._test_adapter_dialect,
105108
)
106109
else:
107110
self._fixture_catalog = None

tests/core/engine_adapter/integration/test_integration_snowflake.py

Lines changed: 52 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,25 @@
1-
import typing as t
21
import pytest
2+
import typing as t
3+
from datetime import datetime
4+
from pathlib import Path
35
from pytest import FixtureRequest
6+
from pytest_mock import MockerFixture
7+
8+
import sqlmesh.core.dialect as d
49
from sqlglot import exp
5-
from pathlib import Path
6-
from sqlglot.optimizer.qualify_columns import quote_identifiers
10+
from sqlmesh import Config, ExecutionContext, model
711
from sqlglot.helper import seq_get
12+
from sqlglot.optimizer.qualify_columns import quote_identifiers
13+
from sqlmesh.core.config import ModelDefaultsConfig
814
from sqlmesh.core.engine_adapter import SnowflakeEngineAdapter
915
from sqlmesh.core.engine_adapter.shared import DataObject
10-
import sqlmesh.core.dialect as d
11-
from sqlmesh.core.model import SqlModel, load_sql_based_model
16+
from sqlmesh.core.model import ModelKindName, SqlModel, load_sql_based_model
1217
from sqlmesh.core.plan import Plan
13-
from tests.core.engine_adapter.integration import TestContext
14-
from sqlmesh import model, ExecutionContext
15-
from pytest_mock import MockerFixture
1618
from sqlmesh.core.snapshot import SnapshotId, SnapshotIdBatch
1719
from sqlmesh.core.snapshot.execution_tracker import (
1820
QueryExecutionContext,
1921
QueryExecutionTracker,
2022
)
21-
from sqlmesh.core.model import ModelKindName
22-
from datetime import datetime
23-
2423
from tests.core.engine_adapter.integration import (
2524
TestContext,
2625
generate_pytest_params,
@@ -337,3 +336,45 @@ def test_rows_tracker(
337336
assert stats is not None
338337
assert stats.total_rows_processed is None
339338
assert stats.total_bytes_processed is None
339+
340+
341+
def test_unit_test(tmp_path: Path, ctx: TestContext):
342+
models_path = tmp_path / "models"
343+
tests_path = tmp_path / "tests"
344+
345+
models_path.mkdir()
346+
tests_path.mkdir()
347+
348+
test_payload = """
349+
test_dummy_model:
350+
model: s.dummy
351+
inputs:
352+
s.src_table:
353+
rows:
354+
- c: 1
355+
outputs:
356+
query:
357+
- c: 1
358+
"""
359+
360+
(models_path / "dummy_model.sql").write_text(f"MODEL (name s.dummy); SELECT c FROM s.src_table")
361+
(tests_path / "test_dummy_model.yaml").write_text(test_payload)
362+
363+
def _config_mutator(gateway_name: str, config: Config):
364+
config.model_defaults = ModelDefaultsConfig(dialect="snowflake")
365+
test_connection = config.gateways[gateway_name].connection.copy() # type: ignore
366+
367+
# Force the database to lowercase to test that we normalize (if we didn't, the test would fail)
368+
test_connection.database = test_connection.database.lower() # type: ignore
369+
config.gateways[gateway_name].test_connection = test_connection
370+
371+
sqlmesh = ctx.create_context(path=tmp_path, config_mutator=_config_mutator)
372+
373+
test_conn = sqlmesh.config.get_test_connection(ctx.gateway)
374+
assert test_conn.type_ == "snowflake"
375+
376+
catalog = test_conn.get_catalog()
377+
assert catalog is not None and catalog.islower()
378+
379+
test_results = sqlmesh.test()
380+
assert not test_results.errors

0 commit comments

Comments
 (0)