Skip to content

Commit 620873a

Browse files
committed
add more tests for delimitercommand.py
reaching 100% coverage for the file
1 parent a405fc2 commit 620873a

1 file changed

Lines changed: 33 additions & 0 deletions

File tree

test/pytests/test_delimitercommand.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,16 @@ def test_queries_iter_with_custom_delimiter_preserves_semicolons_inside_statemen
5555
]
5656

5757

58+
def test_split_handles_placeholder_collision_in_original_sql() -> None:
59+
command = DelimiterCommand()
60+
command.set('$$')
61+
62+
assert command._split('select \ufffc1; select 2$$ select 3$$') == [
63+
'select \ufffc1; select 2$$',
64+
'select 3$$',
65+
]
66+
67+
5868
def test_queries_iter_resplits_remaining_input_after_delimiter_change() -> None:
5969
command = DelimiterCommand()
6070
queries = command.queries_iter('select 1; delimiter $$ select 2$$ select 3$$')
@@ -65,3 +75,26 @@ def test_queries_iter_resplits_remaining_input_after_delimiter_change() -> None:
6575
command.set('$$')
6676

6777
assert list(queries) == ['select 2', 'select 3']
78+
79+
80+
def test_queries_iter_reappends_old_trailing_delimiter_before_resplitting(monkeypatch) -> None:
81+
command = DelimiterCommand()
82+
command._delimiter = ';;'
83+
split_calls: list[str] = []
84+
85+
def fake_split(sql: str) -> list[str]:
86+
split_calls.append(sql)
87+
if len(split_calls) == 1:
88+
return ['delimiter $$;;', 'select 2$$']
89+
return ['ignored', 'select 2']
90+
91+
monkeypatch.setattr(command, '_split', fake_split)
92+
93+
queries = command.queries_iter('ignored')
94+
95+
assert next(queries) == 'delimiter $$'
96+
97+
command.set('$$')
98+
99+
assert list(queries) == ['select 2']
100+
assert split_calls == ['ignored', 'delimiter $$ select 2$$;;']

0 commit comments

Comments
 (0)