6
0
mirror of https://github.com/FirebirdSQL/firebird-qa.git synced 2025-01-22 21:43:06 +01:00
firebird-qa/tests/bugs/core_6160_test.py

48 lines
1.7 KiB
Python

#coding:utf-8
"""
ID: issue-6409
ISSUE: 6409
TITLE: SUBSTRING of non-text/-blob is described to return NONE character set in DSQL
DESCRIPTION:
Confirmed output of: ' ... charset: 0 NONE' on 4.0.0.1627.
Works as described in the ticket since 4.0.0.1632 ('... charset: 2 ASCII').
NOTE. In the 'substitution' section we remove all rows except line with phrase 'charset' in it.
Furter, we have to remove digital ID for this charset because it can be changed in the future:
'charset: 2 ASCII' --> 'charset: ASCII'
JIRA: CORE-6160
FBTEST: bugs.core_6160
NOTES:
[13.12.2023] pzotov
Added 'SQLSTATE' in substitutions: runtime error must not be filtered out by '?!(...)' pattern
("negative lookahead assertion", see https://docs.python.org/3/library/re.html#regular-expression-syntax).
Added 'combine_output = True' in order to see SQLSTATE if any error occurs.
"""
import pytest
from firebird.qa import *
db = db_factory()
test_script = """
-- 01: sqltype: 448 VARYING scale: 0 subtype: 0 len: 1 charset: 2 ASCII
set sqlda_display on;
set planonly;
select substring(1 from 1 for 1) from rdb$database;
select substring(current_date from 1 for 1) from rdb$database;
"""
act = isql_act('db', test_script, substitutions=[('^((?!SQLSTATE|charset).)*$', ''), ('[ \t]+', ' '),
('.*charset: [\\d]+', 'charset:')])
expected_stdout = """
charset: ASCII
charset: ASCII
"""
@pytest.mark.version('>=4.0')
def test_1(act: Action):
act.expected_stdout = expected_stdout
act.execute(combine_output = True)
assert act.clean_stdout == act.clean_expected_stdout