From aedfeb38f5aba21c8885b104a5d7263074bd290d Mon Sep 17 00:00:00 2001 From: Roland Walker Date: Fri, 3 Apr 2026 08:07:46 -0400 Subject: [PATCH] add more tests for delimitercommand.py reaching 100% coverage for the file --- test/pytests/test_delimitercommand.py | 33 +++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/test/pytests/test_delimitercommand.py b/test/pytests/test_delimitercommand.py index c8fec838..aefd8e40 100644 --- a/test/pytests/test_delimitercommand.py +++ b/test/pytests/test_delimitercommand.py @@ -55,6 +55,16 @@ def test_queries_iter_with_custom_delimiter_preserves_semicolons_inside_statemen ] +def test_split_handles_placeholder_collision_in_original_sql() -> None: + command = DelimiterCommand() + command.set('$$') + + assert command._split('select \ufffc1; select 2$$ select 3$$') == [ + 'select \ufffc1; select 2$$', + 'select 3$$', + ] + + def test_queries_iter_resplits_remaining_input_after_delimiter_change() -> None: command = DelimiterCommand() 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: command.set('$$') assert list(queries) == ['select 2', 'select 3'] + + +def test_queries_iter_reappends_old_trailing_delimiter_before_resplitting(monkeypatch) -> None: + command = DelimiterCommand() + command._delimiter = ';;' + split_calls: list[str] = [] + + def fake_split(sql: str) -> list[str]: + split_calls.append(sql) + if len(split_calls) == 1: + return ['delimiter $$;;', 'select 2$$'] + return ['ignored', 'select 2'] + + monkeypatch.setattr(command, '_split', fake_split) + + queries = command.queries_iter('ignored') + + assert next(queries) == 'delimiter $$' + + command.set('$$') + + assert list(queries) == ['select 2'] + assert split_calls == ['ignored', 'delimiter $$ select 2$$;;']