Skip to content

Commit 54e6b57

Browse files
authored
Fix: tests should not be sensitive to output column order (#5369)
1 parent c5e4b17 commit 54e6b57

File tree

2 files changed

+40
-4
lines changed

2 files changed

+40
-4
lines changed

sqlmesh/core/test/definition.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -644,16 +644,16 @@ def _create_df(
644644
return self._execute(query)
645645

646646
rows = values["rows"]
647+
columns_str: t.Optional[t.List[str]] = None
647648
if columns:
649+
columns_str = [str(c) for c in columns]
648650
referenced_columns = list(dict.fromkeys(col for row in rows for col in row))
649651
_raise_if_unexpected_columns(columns, referenced_columns)
650652

651653
if partial:
652-
columns = referenced_columns
654+
columns_str = [c for c in columns_str if c in referenced_columns]
653655

654-
return pd.DataFrame.from_records(
655-
rows, columns=[str(c) for c in columns] if columns else None
656-
)
656+
return pd.DataFrame.from_records(rows, columns=columns_str)
657657

658658
def _add_missing_columns(
659659
self, query: exp.Query, all_columns: t.Optional[t.Collection[str]] = None

tests/core/test_test.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -770,6 +770,42 @@ def test_partial_data_column_order(sushi_context: Context) -> None:
770770
).run()
771771
)
772772

773+
# - output df must differ if sorted by (id, event_date) vs. (event_date, id)
774+
# - output partial must be true
775+
_check_successful_or_raise(
776+
_create_test(
777+
body=load_yaml(
778+
"""
779+
test_foo:
780+
model: sushi.foo
781+
inputs:
782+
sushi.items:
783+
- id: 9876
784+
event_date: 2020-01-01
785+
- id: 1234
786+
name: hello
787+
event_date: 2020-01-02
788+
outputs:
789+
partial: true
790+
query:
791+
- event_date: 2020-01-01
792+
id: 9876
793+
- event_date: 2020-01-02
794+
id: 1234
795+
name: hello
796+
"""
797+
),
798+
test_name="test_foo",
799+
model=sushi_context.upsert_model(
800+
_create_model(
801+
"SELECT id, name, price, event_date FROM sushi.items",
802+
default_catalog=sushi_context.default_catalog,
803+
)
804+
),
805+
context=sushi_context,
806+
).run()
807+
)
808+
773809

774810
def test_partial_data_missing_schemas(sushi_context: Context) -> None:
775811
_check_successful_or_raise(

0 commit comments

Comments
 (0)