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-25 11:22:43.710
2024-09-25 11:22:43.716 act = <firebird.qa.plugin.Action object at [hex]>
2024-09-25 11:22:43.722 tmp_sql = PosixPath('/var/tmp/qa_2024/test_11654/tmp_8253_non_ascii_ddl.sql')
2024-09-25 11:22:43.729 tmp_log = PosixPath('/var/tmp/qa_2024/test_11654/tmp_8253_non_ascii_ddl.log')
2024-09-25 11:22:43.735 capsys = <_pytest.capture.CaptureFixture object at [hex]>
2024-09-25 11:22:43.741
2024-09-25 11:22:43.747 @pytest.mark.intl
2024-09-25 11:22:43.753 @pytest.mark.version('>=4.0.6')
2024-09-25 11:22:43.759 def test_1(act: Action, tmp_sql: Path, tmp_log: Path, capsys):
2024-09-25 11:22:43.766
2024-09-25 11:22:43.772 # Scan line-by-line through databases.conf, find line starting with REQUIRED_ALIAS and extract name of file that
2024-09-25 11:22:43.778 # must be created in the $(dir_sampleDb)/qa/ folder. This name will be used further as target database (tmp_fdb).
2024-09-25 11:22:43.785 # NOTE: we have to SKIP lines which are commented out, i.e. if they starts with '#':
2024-09-25 11:22:43.791 p_required_alias_ptn =  re.compile( '^(?!#)((^|\\s+)' + REQUIRED_ALIAS + ')\\s*=\\s*\\$\\(dir_sampleDb\\)/qa/', re.IGNORECASE )
2024-09-25 11:22:43.798 fname_in_dbconf = None
2024-09-25 11:22:43.804
2024-09-25 11:22:43.810 with open(act.home_dir/'databases.conf', 'r') as f:
2024-09-25 11:22:43.816 for line in f:
2024-09-25 11:22:43.823 if p_required_alias_ptn.search(line):
2024-09-25 11:22:43.829 # If databases.conf contains line like this:
2024-09-25 11:22:43.836 #     tmp_8253_alias = $(dir_sampleDb)/qa/tmp_qa_8253.fdb
2024-09-25 11:22:43.844 # - then we extract filename: 'tmp_qa_8253.fdb' (see below):
2024-09-25 11:22:43.849 fname_in_dbconf = Path(line.split('=')[1].strip()).name
2024-09-25 11:22:43.855 break
2024-09-25 11:22:43.866
2024-09-25 11:22:43.874 # if 'fname_in_dbconf' remains undefined here then propably REQUIRED_ALIAS not equals to specified in the databases.conf!
2024-09-25 11:22:43.880 #
2024-09-25 11:22:43.887 assert fname_in_dbconf
2024-09-25 11:22:43.893
2024-09-25 11:22:43.899 dba_pswd = 'alterkey'
2024-09-25 11:22:43.904 g_name = 'лондонский симфонический оркестр'
2024-09-25 11:22:43.909 r_name = 'настройщик роялей'
2024-09-25 11:22:43.914 non_ascii_ddl = f'''
2024-09-25 11:22:43.920 set list on;
2024-09-25 11:22:43.925 create database '{REQUIRED_ALIAS}' user {act.db.user};
2024-09-25 11:22:43.931 create user {act.db.user} password '{dba_pswd}';
2024-09-25 11:22:43.936 commit;
2024-09-25 11:22:43.942 connect 'localhost:{REQUIRED_ALIAS}' user {act.db.user} password '{dba_pswd}';
2024-09-25 11:22:43.948 select mon$sec_database from mon$database; -- must be: 'Self'
2024-09-25 11:22:43.952 create role "{r_name}";
2024-09-25 11:22:43.957 commit;
2024-09-25 11:22:43.963 create mapping "локальная_апостроф" using any plugin from group '{g_name}' to role "{r_name}";
2024-09-25 11:22:43.968 create mapping "локальная_кавычки" using any plugin from group "{g_name}" to role "{r_name}";
2024-09-25 11:22:43.974 create global mapping "глобальная_апостроф" using any plugin from group '{g_name}' to role "{r_name}";
2024-09-25 11:22:43.982 create global mapping "глобальная_кавычки" using any plugin from group "{g_name}" to role "{r_name}";
2024-09-25 11:22:43.988 commit;
2024-09-25 11:22:43.993 set count on;
2024-09-25 11:22:44.001 select rdb$map_name,rdb$map_from,rdb$map_to from rdb$auth_mapping order by rdb$map_name;
2024-09-25 11:22:44.008 commit;
2024-09-25 11:22:44.014 '''
2024-09-25 11:22:44.020
2024-09-25 11:22:44.027 tmp_sql.write_bytes(non_ascii_ddl.encode('cp866'))
2024-09-25 11:22:44.034 act.isql(switches=['-q'], input_file=tmp_sql, credentials = False, connect_db = False, combine_output = True, charset='dos866', io_enc = 'cp866')
2024-09-25 11:22:44.040 tmp_log.write_bytes(act.clean_stdout.encode('utf-8'))
2024-09-25 11:22:44.046 with open(tmp_log, 'r', encoding = 'utf-8', errors = 'backslashreplace') as f:
2024-09-25 11:22:44.053 for line in f:
2024-09-25 11:22:44.059 print(line)
2024-09-25 11:22:44.064
2024-09-25 11:22:44.070 act.expected_stdout = f"""
2024-09-25 11:22:44.074 MON$SEC_DATABASE                Self
2024-09-25 11:22:44.080 RDB$MAP_NAME                    глобальная_апостроф
2024-09-25 11:22:44.085 RDB$MAP_FROM                    {g_name}
2024-09-25 11:22:44.089 RDB$MAP_TO                      {r_name}
2024-09-25 11:22:44.095 RDB$MAP_NAME                    глобальная_кавычки
2024-09-25 11:22:44.101 RDB$MAP_FROM                    {g_name}
2024-09-25 11:22:44.108 RDB$MAP_TO                      {r_name}
2024-09-25 11:22:44.117 RDB$MAP_NAME                    локальная_апостроф
2024-09-25 11:22:44.125 RDB$MAP_FROM                    {g_name}
2024-09-25 11:22:44.133 RDB$MAP_TO                      {r_name}
2024-09-25 11:22:44.140 RDB$MAP_NAME                    локальная_кавычки
2024-09-25 11:22:44.147 RDB$MAP_FROM                    {g_name}
2024-09-25 11:22:44.153 RDB$MAP_TO                      {r_name}
2024-09-25 11:22:44.158 Records affected: 4
2024-09-25 11:22:44.164 """
2024-09-25 11:22:44.169 act.stdout = capsys.readouterr().out
2024-09-25 11:22:44.174 >       assert act.clean_stdout == act.clean_expected_stdout
2024-09-25 11:22:44.179 E       assert
2024-09-25 11:22:44.184 E           MON$SEC_DATABASE Self
2024-09-25 11:22:44.190 E           RDB$MAP_NAME глобальная_апостроф
2024-09-25 11:22:44.195 E         - RDB$MAP_FROM лондонский симфонический оркестр
2024-09-25 11:22:44.200 E         + RDB$MAP_FROM ???????????????????? ?????????????????????????? ??????????????
2024-09-25 11:22:44.205 E           RDB$MAP_TO настройщик роялей
2024-09-25 11:22:44.213 E           RDB$MAP_NAME глобальная_кавычки
2024-09-25 11:22:44.220 E         - RDB$MAP_FROM лондонский симфонический оркестр
2024-09-25 11:22:44.226 E         + RDB$MAP_FROM ??????????????????????????????????????????????????????????? ?????????????????????????????????????????????????????????????????????????? ??????????????????????????????????????
2024-09-25 11:22:44.232 E           RDB$MAP_TO настройщик роялей
2024-09-25 11:22:44.238 E           RDB$MAP_NAME локальная_апостроф
2024-09-25 11:22:44.244 E           RDB$MAP_FROM лондонский симфонический оркестр
2024-09-25 11:22:44.250 E           RDB$MAP_TO настройщик роялей
2024-09-25 11:22:44.256 E           RDB$MAP_NAME локальная_кавычки
2024-09-25 11:22:44.262 E         - RDB$MAP_FROM лондонский симфонический оркестр
2024-09-25 11:22:44.270 E         + RDB$MAP_FROM ╨╗╨╛╨╜╨┤╨╛╨╜╤Б╨║╨╕╨╣ ╤Б╨╕╨╝╤Д╨╛╨╜╨╕╤З╨╡╤Б╨║╨╕╨╣ ╨╛╤А╨║╨╡╤Б╤В╤А
2024-09-25 11:22:44.276 E           RDB$MAP_TO настройщик роялей
2024-09-25 11:22:44.283 E           Records affected: 4
2024-09-25 11:22:44.289
2024-09-25 11:22:44.296 tests/bugs/gh_8253_test.py:111: AssertionError
2024-09-25 11:22:44.305 ---------------------------- Captured stdout setup -----------------------------
2024-09-25 11:22:44.314 Creating db: localhost:/var/tmp/qa_2024/test_11654/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_11654/tmp_8253_non_ascii_ddl.sql')
tmp_log = PosixPath('/var/tmp/qa_2024/test_11654/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 5.0.3.1657 2025.06.19 4bd4c P P 1016 672 2025.06.27 12:21:16.688 2025.06.27 12:21:17.704 2025.06.27 11:02:10.031 2025.06.27 11:02:10.703
2 5.0.3.1657 2025.06.11 dae6f P P 1096 675 2025.06.17 07:26:20.538 2025.06.17 07:26:21.634 2025.06.17 06:06:02.243 2025.06.17 06:06:02.918
3 5.0.3.1657 2025.06.10 dbc92 P P 1259 907 2025.06.11 12:16:51.467 2025.06.11 12:16:52.726 2025.06.11 10:47:48.562 2025.06.11 10:47:49.469
4 5.0.3.1656 2025.05.20 c4b11 P P 985 805 2025.06.10 12:10:37.330 2025.06.10 12:10:38.315 2025.06.10 10:46:17.118 2025.06.10 10:46:17.923
5 5.0.3.1652 2025.05.13 f51c6 P P 1264 855 2025.05.20 05:14:51.625 2025.05.20 05:14:52.889 2025.05.20 03:38:35.538 2025.05.20 03:38:36.393
6 5.0.3.1651 2025.04.30 141ef P P 1205 864 2025.05.13 12:12:53.624 2025.05.13 12:12:54.829 2025.05.13 10:35:34.190 2025.05.13 10:35:35.054
7 5.0.3.1650 2025.04.28 4cbff P P 1136 851 2025.05.01 11:46:40.718 2025.05.01 11:46:41.854 2025.05.01 10:10:19.083 2025.05.01 10:10:19.934
8 5.0.3.1649 2025.04.21 5b2d0 P P 1248 835 2025.04.28 05:44:28.064 2025.04.28 05:44:29.312 2025.04.28 04:09:59.517 2025.04.28 04:10:00.352
9 5.0.3.1648 2025.04.18 2f4c5 P P 1224 746 2025.04.20 05:36:12.609 2025.04.20 05:36:13.833 2025.04.20 04:04:21.299 2025.04.20 04:04:22.045
10 5.0.3.1635 2025.03.31 22ec6 P P 1106 774 2025.04.18 11:59:16.815 2025.04.18 11:59:17.921 2025.04.18 10:23:30.886 2025.04.18 10:23:31.660
11 5.0.3.1633 2025.03.28 3123a P P 1054 1140 2025.03.31 10:33:13.032 2025.03.31 10:33:14.086 2025.03.31 09:03:44.419 2025.03.31 09:03:45.559
12 5.0.3.1633 2025.03.27 e0fb8 P P 1143 857 2025.03.28 11:08:34.439 2025.03.28 11:08:35.582 2025.03.28 09:36:19.973 2025.03.28 09:36:20.830
13 5.0.3.1631 2025.03.21 1925b P P 1148 756 2025.03.27 10:56:19.459 2025.03.27 10:56:20.607 2025.03.27 09:24:57.717 2025.03.27 09:24:58.473
14 5.0.3.1628 2025.03.14 16d05 P P 7 9 2025.03.17 08:29:24.424 2025.03.17 08:29:24.431 2025.03.17 06:49:09.523 2025.03.17 06:49:09.532
15 5.0.3.1627 2025.02.26 4e218 P P 10 10 2025.03.14 11:43:46.470 2025.03.14 11:43:46.480 2025.03.14 10:02:27.986 2025.03.14 10:02:27.996
16 5.0.3.1624 2025.02.25 dc3b2 P P 8 9 2025.02.26 10:34:19.223 2025.02.26 10:34:19.231 2025.02.26 08:58:32.565 2025.02.26 08:58:32.574
17 5.0.2.1615 2025.02.20 4a726 P P 10 7 2025.02.25 11:01:42.635 2025.02.25 11:01:42.645 2025.02.25 09:24:07.224 2025.02.25 09:24:07.231
18 5.0.2.1615 2025.02.14 9cb76 P P 5 11 2025.02.20 07:50:55.832 2025.02.20 07:50:55.837 2025.02.20 06:17:03.606 2025.02.20 06:17:03.617
19 5.0.2.1577 2024.12.24 3c80e P P 8 9 2025.02.14 11:04:49.820 2025.02.14 11:04:49.828 2025.02.14 09:30:36.951 2025.02.14 09:30:36.960
20 5.0.2.1576 2024.12.17 646b0 P P 9 7 2024.12.24 20:27:19.921 2024.12.24 20:27:19.930 2024.12.24 17:15:57.787 2024.12.24 17:15:57.794
21 5.0.2.1575 2024.12.08 63d39 P P 8 6 2024.12.16 08:08:43.607 2024.12.16 08:08:43.615 2024.12.16 06:58:41.451 2024.12.16 06:58:41.457
22 5.0.2.1567 2024.11.26 56e63 P P 6 5 2024.12.04 07:49:49.582 2024.12.04 07:49:49.588 2024.12.04 06:38:04.181 2024.12.04 06:38:04.186
23 5.0.2.1567 2024.11.21 96f61 P P 5 5 2024.11.26 05:31:37.386 2024.11.26 05:31:37.391 2024.11.26 04:23:12.473 2024.11.26 04:23:12.478
24 5.0.2.1567 2024.11.18 e1289 P P 5 5 2024.11.21 07:35:58.484 2024.11.21 07:35:58.489 2024.11.21 06:28:17.957 2024.11.21 06:28:17.962
25 5.0.2.1533 2024.10.23 0ec43 P P 6 5 2024.11.18 07:52:20.079 2024.11.18 07:52:20.085 2024.11.18 06:42:42.198 2024.11.18 06:42:42.203
26 5.0.2.1533 2024.10.22 8af7a P P 6 4 2024.10.23 09:49:32.836 2024.10.23 09:49:32.842 2024.10.23 08:38:44.498 2024.10.23 08:38:44.502
27 5.0.2.1532 2024.10.15 36dc0 P P 6 6 2024.10.22 20:01:18.597 2024.10.22 20:01:18.603 2024.10.22 18:50:55.245 2024.10.22 18:50:55.251
28 5.0.2.1518 2024.10.04 259ba P P 12 5 2024.10.15 09:34:55.258 2024.10.15 09:34:55.270 2024.10.15 08:24:22.005 2024.10.15 08:24:22.010
29 5.0.2.1518 2024.09.26 703cd P P 6 5 2024.10.03 08:02:23.365 2024.10.03 08:02:23.371 2024.10.03 06:49:31.672 2024.10.03 06:49:31.677
30 5.0.2.1489 2024.09.05 40838 F F 7 7 2024.09.25 08:03:20.009 2024.09.25 08:03:20.016 2024.09.25 06:49:36.053 2024.09.25 06:49:36.060

Elapsed time, ms. Chart for last 30 runs:

Last commits information (all timestamps in UTC):