Jump to: output_first_mismatch    outcomes_full_history    elapsed_time_chart
Show cross-report outcomes.

Annotation type Annotation details
2 @message
assert   
    MON$SEC_DATABASE Self
    RDB$MAP_NAME глобальная_апостроф
  - RDB$MAP_FROM лондонский симфонический оркестр
  + RDB$MAP_FROM ???????????????????? ?????????????????????????? ??????????????
    RDB$MAP_TO настройщик роялей
    RDB$MAP_NAME глобальная_кавычки
  - RDB$MAP_FROM лондонский симфонический оркестр
  + RDB$MAP_FROM ??????????????????????????????????????????????????????????? ?????????????????????????????????????????????????????????????????????????? ??????????????????????????????????????
    RDB$MAP_TO настройщик роялей
    RDB$MAP_NAME локальная_апостроф
    RDB$MAP_FROM лондонский симфонический оркестр
    RDB$MAP_TO настройщик роялей
    RDB$MAP_NAME локальная_кавычки
  - RDB$MAP_FROM лондонский симфонический оркестр
  + RDB$MAP_FROM ╨╗╨╛╨╜╨┤╨╛╨╜╤Б╨║╨╕╨╣ ╤Б╨╕╨╝╤Д╨╛╨╜╨╕╤З╨╡╤Б╨║╨╕╨╣ ╨╛╤А╨║╨╡╤Б╤В╤А
    RDB$MAP_TO настройщик роялей
    Records affected: 4

LOG DETAILS:

2024-09-30 13:19:53.754
2024-09-30 13:19:53.760 act = <firebird.qa.plugin.Action object at [hex]>
2024-09-30 13:19:53.766 tmp_sql = PosixPath('/var/tmp/qa_2024/test_11562/tmp_8253_non_ascii_ddl.sql')
2024-09-30 13:19:53.775 tmp_log = PosixPath('/var/tmp/qa_2024/test_11562/tmp_8253_non_ascii_ddl.log')
2024-09-30 13:19:53.781 capsys = <_pytest.capture.CaptureFixture object at [hex]>
2024-09-30 13:19:53.786
2024-09-30 13:19:53.791 @pytest.mark.intl
2024-09-30 13:19:53.796 @pytest.mark.version('>=4.0.6')
2024-09-30 13:19:53.800 def test_1(act: Action, tmp_sql: Path, tmp_log: Path, capsys):
2024-09-30 13:19:53.805
2024-09-30 13:19:53.810 # Scan line-by-line through databases.conf, find line starting with REQUIRED_ALIAS and extract name of file that
2024-09-30 13:19:53.816 # must be created in the $(dir_sampleDb)/qa/ folder. This name will be used further as target database (tmp_fdb).
2024-09-30 13:19:53.824 # NOTE: we have to SKIP lines which are commented out, i.e. if they starts with '#':
2024-09-30 13:19:53.831 p_required_alias_ptn =  re.compile( '^(?!#)((^|\\s+)' + REQUIRED_ALIAS + ')\\s*=\\s*\\$\\(dir_sampleDb\\)/qa/', re.IGNORECASE )
2024-09-30 13:19:53.836 fname_in_dbconf = None
2024-09-30 13:19:53.842
2024-09-30 13:19:53.847 with open(act.home_dir/'databases.conf', 'r') as f:
2024-09-30 13:19:53.853 for line in f:
2024-09-30 13:19:53.858 if p_required_alias_ptn.search(line):
2024-09-30 13:19:53.864 # If databases.conf contains line like this:
2024-09-30 13:19:53.869 #     tmp_8253_alias = $(dir_sampleDb)/qa/tmp_qa_8253.fdb
2024-09-30 13:19:53.874 # - then we extract filename: 'tmp_qa_8253.fdb' (see below):
2024-09-30 13:19:53.882 fname_in_dbconf = Path(line.split('=')[1].strip()).name
2024-09-30 13:19:53.887 break
2024-09-30 13:19:53.893
2024-09-30 13:19:53.898 # if 'fname_in_dbconf' remains undefined here then propably REQUIRED_ALIAS not equals to specified in the databases.conf!
2024-09-30 13:19:53.903 #
2024-09-30 13:19:53.910 assert fname_in_dbconf
2024-09-30 13:19:53.917
2024-09-30 13:19:53.922 dba_pswd = 'alterkey'
2024-09-30 13:19:53.927 g_name = 'лондонский симфонический оркестр'
2024-09-30 13:19:53.932 r_name = 'настройщик роялей'
2024-09-30 13:19:53.937 non_ascii_ddl = f'''
2024-09-30 13:19:53.941 set list on;
2024-09-30 13:19:53.946 create database '{REQUIRED_ALIAS}' user {act.db.user};
2024-09-30 13:19:53.951 create user {act.db.user} password '{dba_pswd}';
2024-09-30 13:19:53.956 commit;
2024-09-30 13:19:53.961 connect 'localhost:{REQUIRED_ALIAS}' user {act.db.user} password '{dba_pswd}';
2024-09-30 13:19:53.966 select mon$sec_database from mon$database; -- must be: 'Self'
2024-09-30 13:19:53.971 create role "{r_name}";
2024-09-30 13:19:53.976 commit;
2024-09-30 13:19:53.980 create mapping "локальная_апостроф" using any plugin from group '{g_name}' to role "{r_name}";
2024-09-30 13:19:53.985 create mapping "локальная_кавычки" using any plugin from group "{g_name}" to role "{r_name}";
2024-09-30 13:19:53.990 create global mapping "глобальная_апостроф" using any plugin from group '{g_name}' to role "{r_name}";
2024-09-30 13:19:53.995 create global mapping "глобальная_кавычки" using any plugin from group "{g_name}" to role "{r_name}";
2024-09-30 13:19:54.001 commit;
2024-09-30 13:19:54.006 set count on;
2024-09-30 13:19:54.011 select rdb$map_name,rdb$map_from,rdb$map_to from rdb$auth_mapping order by rdb$map_name;
2024-09-30 13:19:54.017 commit;
2024-09-30 13:19:54.024 '''
2024-09-30 13:19:54.029
2024-09-30 13:19:54.035 tmp_sql.write_bytes(non_ascii_ddl.encode('cp866'))
2024-09-30 13:19:54.040 act.isql(switches=['-q'], input_file=tmp_sql, credentials = False, connect_db = False, combine_output = True, charset='dos866', io_enc = 'cp866')
2024-09-30 13:19:54.045 tmp_log.write_bytes(act.clean_stdout.encode('utf-8'))
2024-09-30 13:19:54.051 with open(tmp_log, 'r', encoding = 'utf-8', errors = 'backslashreplace') as f:
2024-09-30 13:19:54.056 for line in f:
2024-09-30 13:19:54.062 print(line)
2024-09-30 13:19:54.068
2024-09-30 13:19:54.074 act.expected_stdout = f"""
2024-09-30 13:19:54.079 MON$SEC_DATABASE                Self
2024-09-30 13:19:54.085 RDB$MAP_NAME                    глобальная_апостроф
2024-09-30 13:19:54.091 RDB$MAP_FROM                    {g_name}
2024-09-30 13:19:54.096 RDB$MAP_TO                      {r_name}
2024-09-30 13:19:54.103 RDB$MAP_NAME                    глобальная_кавычки
2024-09-30 13:19:54.109 RDB$MAP_FROM                    {g_name}
2024-09-30 13:19:54.116 RDB$MAP_TO                      {r_name}
2024-09-30 13:19:54.122 RDB$MAP_NAME                    локальная_апостроф
2024-09-30 13:19:54.127 RDB$MAP_FROM                    {g_name}
2024-09-30 13:19:54.133 RDB$MAP_TO                      {r_name}
2024-09-30 13:19:54.140 RDB$MAP_NAME                    локальная_кавычки
2024-09-30 13:19:54.147 RDB$MAP_FROM                    {g_name}
2024-09-30 13:19:54.153 RDB$MAP_TO                      {r_name}
2024-09-30 13:19:54.159 Records affected: 4
2024-09-30 13:19:54.165 """
2024-09-30 13:19:54.171 act.stdout = capsys.readouterr().out
2024-09-30 13:19:54.177 >       assert act.clean_stdout == act.clean_expected_stdout
2024-09-30 13:19:54.184 E       assert
2024-09-30 13:19:54.189 E           MON$SEC_DATABASE Self
2024-09-30 13:19:54.197 E           RDB$MAP_NAME глобальная_апостроф
2024-09-30 13:19:54.207 E         - RDB$MAP_FROM лондонский симфонический оркестр
2024-09-30 13:19:54.213 E         + RDB$MAP_FROM ???????????????????? ?????????????????????????? ??????????????
2024-09-30 13:19:54.220 E           RDB$MAP_TO настройщик роялей
2024-09-30 13:19:54.226 E           RDB$MAP_NAME глобальная_кавычки
2024-09-30 13:19:54.231 E         - RDB$MAP_FROM лондонский симфонический оркестр
2024-09-30 13:19:54.236 E         + RDB$MAP_FROM ??????????????????????????????????????????????????????????? ?????????????????????????????????????????????????????????????????????????? ??????????????????????????????????????
2024-09-30 13:19:54.241 E           RDB$MAP_TO настройщик роялей
2024-09-30 13:19:54.246 E           RDB$MAP_NAME локальная_апостроф
2024-09-30 13:19:54.252 E           RDB$MAP_FROM лондонский симфонический оркестр
2024-09-30 13:19:54.258 E           RDB$MAP_TO настройщик роялей
2024-09-30 13:19:54.267 E           RDB$MAP_NAME локальная_кавычки
2024-09-30 13:19:54.273 E         - RDB$MAP_FROM лондонский симфонический оркестр
2024-09-30 13:19:54.280 E         + RDB$MAP_FROM ╨╗╨╛╨╜╨┤╨╛╨╜╤Б╨║╨╕╨╣ ╤Б╨╕╨╝╤Д╨╛╨╜╨╕╤З╨╡╤Б╨║╨╕╨╣ ╨╛╤А╨║╨╡╤Б╤В╤А
2024-09-30 13:19:54.286 E           RDB$MAP_TO настройщик роялей
2024-09-30 13:19:54.292 E           Records affected: 4
2024-09-30 13:19:54.298
2024-09-30 13:19:54.305 tests/bugs/gh_8253_test.py:111: AssertionError
2024-09-30 13:19:54.310 ---------------------------- Captured stdout setup -----------------------------
2024-09-30 13:19:54.315 Creating db: localhost:/var/tmp/qa_2024/test_11562/test.fdb [page_size=None, sql_dialect=None, charset='NONE', user=SYSDBA, password=masterkey]
3 #text
act = <firebird.qa.plugin.Action pytest object at [hex]>
tmp_sql = PosixPath('/var/tmp/qa_2024/test_11562/tmp_8253_non_ascii_ddl.sql')
tmp_log = PosixPath('/var/tmp/qa_2024/test_11562/tmp_8253_non_ascii_ddl.log')
capsys = <_pytest.capture.CaptureFixture pytest object at [hex]>

    @pytest.mark.intl
    @pytest.mark.version('>=4.0.6')
    def test_1(act: Action, tmp_sql: Path, tmp_log: Path, capsys):
    
        # Scan line-by-line through databases.conf, find line starting with REQUIRED_ALIAS and extract name of file that
        # must be created in the $(dir_sampleDb)/qa/ folder. This name will be used further as target database (tmp_fdb).
        # NOTE: we have to SKIP lines which are commented out, i.e. if they starts with '#':
        p_required_alias_ptn =  re.compile( '^(?!#)((^|\\s+)' + REQUIRED_ALIAS + ')\\s*=\\s*\\$\\(dir_sampleDb\\)/qa/', re.IGNORECASE )
        fname_in_dbconf = None
    
        with open(act.home_dir/'databases.conf', 'r') as f:
            for line in f:
                if p_required_alias_ptn.search(line):
                    # If databases.conf contains line like this:
                    #     tmp_8253_alias = $(dir_sampleDb)/qa/tmp_qa_8253.fdb
                    # - then we extract filename: 'tmp_qa_8253.fdb' (see below):
                    fname_in_dbconf = Path(line.split('=')[1].strip()).name
                    break
    
        # if 'fname_in_dbconf' remains undefined here then propably REQUIRED_ALIAS not equals to specified in the databases.conf!
        #
        assert fname_in_dbconf
    
        dba_pswd = 'alterkey'
        g_name = 'лондонский симфонический оркестр'
        r_name = 'настройщик роялей'
        non_ascii_ddl = f'''
            set list on;
            create database '{REQUIRED_ALIAS}' user {act.db.user};
            create user {act.db.user} password '{dba_pswd}';
            commit;
            connect 'localhost:{REQUIRED_ALIAS}' user {act.db.user} password '{dba_pswd}';
            select mon$sec_database from mon$database; -- must be: 'Self'
            create role "{r_name}";
            commit;
            create mapping "локальная_апостроф" using any plugin from group '{g_name}' to role "{r_name}";
            create mapping "локальная_кавычки" using any plugin from group "{g_name}" to role "{r_name}";
            create global mapping "глобальная_апостроф" using any plugin from group '{g_name}' to role "{r_name}";
            create global mapping "глобальная_кавычки" using any plugin from group "{g_name}" to role "{r_name}";
            commit;
            set count on;
            select rdb$map_name,rdb$map_from,rdb$map_to from rdb$auth_mapping order by rdb$map_name;
            commit;
        '''
    
        tmp_sql.write_bytes(non_ascii_ddl.encode('cp866'))
        act.isql(switches=['-q'], input_file=tmp_sql, credentials = False, connect_db = False, combine_output = True, charset='dos866', io_enc = 'cp866')
        tmp_log.write_bytes(act.clean_stdout.encode('utf-8'))
        with open(tmp_log, 'r', encoding = 'utf-8', errors = 'backslashreplace') as f:
            for line in f:
                print(line)
    
        act.expected_stdout = f"""
            MON$SEC_DATABASE                Self
            RDB$MAP_NAME                    глобальная_апостроф
            RDB$MAP_FROM                    {g_name}
            RDB$MAP_TO                      {r_name}
            RDB$MAP_NAME                    глобальная_кавычки
            RDB$MAP_FROM                    {g_name}
            RDB$MAP_TO                      {r_name}
            RDB$MAP_NAME                    локальная_апостроф
            RDB$MAP_FROM                    {g_name}
            RDB$MAP_TO                      {r_name}
            RDB$MAP_NAME                    локальная_кавычки
            RDB$MAP_FROM                    {g_name}
            RDB$MAP_TO                      {r_name}
            Records affected: 4
        """
        act.stdout = capsys.readouterr().out
>       assert act.clean_stdout == act.clean_expected_stdout
E       assert   
E           MON$SEC_DATABASE Self
E           RDB$MAP_NAME глобальная_апостроф
E         - RDB$MAP_FROM лондонский симфонический оркестр
E         + RDB$MAP_FROM ???????????????????? ?????????????????????????? ??????????????
E           RDB$MAP_TO настройщик роялей
E           RDB$MAP_NAME глобальная_кавычки
E         - RDB$MAP_FROM лондонский симфонический оркестр
E         + RDB$MAP_FROM ??????????????????????????????????????????????????????????? ?????????????????????????????????????????????????????????????????????????? ??????????????????????????????????????
E           RDB$MAP_TO настройщик роялей
E           RDB$MAP_NAME локальная_апостроф
E           RDB$MAP_FROM лондонский симфонический оркестр
E           RDB$MAP_TO настройщик роялей
E           RDB$MAP_NAME локальная_кавычки
E         - RDB$MAP_FROM лондонский симфонический оркестр
E         + RDB$MAP_FROM ╨╗╨╛╨╜╨┤╨╛╨╜╤Б╨║╨╕╨╣ ╤Б╨╕╨╝╤Д╨╛╨╜╨╕╤З╨╡╤Б╨║╨╕╨╣ ╨╛╤А╨║╨╡╤Б╤В╤А
E           RDB$MAP_TO настройщик роялей
E           Records affected: 4

tests/bugs/gh_8253_test.py:111: AssertionError
Full history of outcomes and elapsed time, ms:
NN SNAP_INFO CS_outcome SS_outcome CS_run_time SS_run_time CS_run_beg CS_run_end SS_run_beg SS_run_end
1 4.0.6.3189 2025.02.25 1a1a5 P P 928 716 2025.06.26 14:49:10.290 2025.06.26 14:49:11.218 2025.06.26 13:39:45.365 2025.06.26 13:39:46.081
2 4.0.6.3184 2025.02.24 9388c P P 11 7 2025.02.25 13:50:01.280 2025.02.25 13:50:01.291 2025.02.25 12:30:47.376 2025.02.25 12:30:47.383
3 4.0.6.3183 2025.02.16 cf6ca P P 10 11 2025.02.17 07:44:15.628 2025.02.17 07:44:15.638 2025.02.17 06:24:23.192 2025.02.17 06:24:23.203
4 4.0.6.3169 2024.12.13 42cc1 P P 7 9 2025.02.16 04:41:20.244 2025.02.16 04:41:20.251 2025.02.16 03:23:40.153 2025.02.16 03:23:40.162
5 4.0.6.3169 2024.12.08 50eb6 P P 5 6 2024.12.12 18:58:06.758 2024.12.12 18:58:06.763 2024.12.12 17:55:57.910 2024.12.12 17:55:57.916
6 4.0.6.3168 2024.11.28 48149 P P 7 4 2024.12.06 03:18:58.288 2024.12.06 03:18:58.295 2024.12.06 02:18:31.169 2024.12.06 02:18:31.173
7 4.0.6.3163 2024.10.16 2bb10 P P 6 7 2024.11.27 13:43:39.208 2024.11.27 13:43:39.214 2024.11.27 10:42:15.141 2024.11.27 10:42:15.148
8 4.0.6.3163 2024.10.15 f387e P P 6 5 2024.10.16 04:48:58.578 2024.10.16 04:48:58.584 2024.10.16 03:51:29.918 2024.10.16 03:51:29.923
9 4.0.6.3147 2024.08.31 4655b F F 6 7 2024.09.30 12:05:15.647 2024.09.30 12:05:15.653 2024.09.30 11:01:01.872 2024.09.30 11:01:01.879

Elapsed time, ms. Chart for last 9 runs:

Last commits information (all timestamps in UTC):