Skip to content

Commit b497942

Browse files
committed
Added/Updated tests\bugs\gh_8520_test.py: Checked on 6.0.0.737-cf1d367 (intermediate snapshot).
1 parent b31671b commit b497942

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed

tests/bugs/gh_8520_test.py

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
#coding:utf-8
2+
3+
"""
4+
ID: issue-8520
5+
ISSUE: https://github.com/FirebirdSQL/firebird/issues/8520
6+
TITLE: Error in iTransaction.getInfo() on embedded connection
7+
DESCRIPTION:
8+
NOTES:
9+
[17.04.2025] pzotov
10+
Confirmed problem on 6.0.0.686 (20-mar-2025).
11+
Checked on 6.0.0.737-cf1d367 (intermediate snapshot).
12+
"""
13+
14+
import os
15+
import re
16+
import time
17+
18+
import pytest
19+
from firebird.qa import *
20+
from firebird.driver import connect, driver_config, NetProtocol, DatabaseError
21+
22+
db = db_factory()
23+
act = python_act('db')
24+
25+
#-----------------------------------------------------------
26+
27+
@pytest.mark.version('>=6.0')
28+
def test_1(act: Action, capsys):
29+
30+
srv_config = driver_config.register_server(name = 'test_8520_srv', config = '')
31+
db_cfg_object = driver_config.register_database(name = 'test_8520_cfg')
32+
db_cfg_object.database.value = str(act.db.db_path)
33+
db_cfg_object.server.value = srv_config.name
34+
35+
sql_sttm = 'select mon$remote_protocol from mon$attachments where mon$attachment_id = current_connection'
36+
37+
protocols_list = [ None, NetProtocol.INET, ] # None - for local/embedded connection.
38+
if act.platform == 'Windows':
39+
protocols_list.append(NetProtocol.XNET)
40+
if act.is_version('<5'):
41+
protocols_list.append(NetProtocol.WNET)
42+
43+
expected_out_map = {}
44+
for p in protocols_list:
45+
db_cfg_object.protocol.value = p
46+
with connect(db_cfg_object.name, user = act.db.user, password = act.db.password) as con:
47+
protocol_name = 'UNKNOWN'
48+
with con.cursor() as cur:
49+
for r in cur.execute(sql_sttm):
50+
protocol_name = 'NONE' if p == None else p.name.upper()
51+
try:
52+
with con.main_transaction as tr:
53+
expected_out_map[ protocol_name ] = tr.info.database
54+
except DatabaseError as e:
55+
print(f'Error encountered for {protocol_name=}:')
56+
print(e.__str__())
57+
print(e.gds_codes)
58+
59+
# Construct expected output + print actual result for comparison with expected one:
60+
expected_out_lst = []
61+
for k,v in expected_out_map.items():
62+
print(k.lower(), v.lower())
63+
expected_out_lst.append( (k + ' ' + ('' if k == 'NONE' else k +'://') + str(act.db.db_path)).lower() )
64+
65+
expected_stdout = '\n'.join(expected_out_lst)
66+
act.expected_stdout = expected_stdout
67+
act.stdout = capsys.readouterr().out
68+
assert act.clean_stdout == act.clean_expected_stdout

0 commit comments

Comments
 (0)