6
0
mirror of https://github.com/FirebirdSQL/firebird-qa.git synced 2025-01-22 13:33:07 +01:00
firebird-qa/tests/bugs/gh_8309_test.py

91 lines
2.3 KiB
Python
Raw Permalink Normal View History

#coding:utf-8
"""
ID: issue-8309
ISSUE: https://github.com/FirebirdSQL/firebird/pull/8309
TITLE: Add ALTER PACKAGE BODY and CRAETE OR ALTER PACKAGE BODY parse rules
DESCRIPTION:
We create package with body. Then we change its body two times:
* using 'ALTER PACKAGE';
* using 'CREATE OR ALTER PACKAGE' clause.
Both changes must complete without error.
NOTES:
[10.11.2024] pzotov
Checked on 6.0.0.523-8ca2314.
"""
import pytest
from firebird.qa import *
db = db_factory()
act = isql_act('db', substitutions=[('[ \\t]+', ' ')])
@pytest.mark.version('>=6.0.0')
def test_1(act: Action):
msg_map = {
0: 'Initial'
,1: 'Changed via "ALTER PACKAGE BODY"'
,2: 'Changed via "CREATE OR ALTER PACKAGE BODY"'
}
test_sql = f"""
set term ^;
set heading off
^
set bail on
^
create or alter package pg_test as
begin
function fn_dummy returns varchar(50);
end
^
recreate package body pg_test as
begin
function fn_dummy returns varchar(50) as
begin
return '{msg_map[0]}';
end
end
^
select pg_test.fn_dummy() from rdb$database
^
set bail off
^
-- must NOT fail since 6.0.0.523:
alter package body pg_test as
begin
function fn_dummy returns varchar(50) as
begin
return '{msg_map[1]}';
end
end
^
select pg_test.fn_dummy() from rdb$database
^
-- must NOT fail since 6.0.0.523:
create or alter package body pg_test as
begin
function fn_dummy returns varchar(50) as
begin
return '{msg_map[2]}';
end
end
^
select pg_test.fn_dummy() from rdb$database
^
"""
act.expected_stdout = f"""
{msg_map[0]}
{msg_map[1]}
{msg_map[2]}
"""
act.isql(switches = ['-q'], input = test_sql, combine_output = True)
assert act.clean_stdout == act.clean_expected_stdout