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_2981_test.py

139 lines
9.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#coding:utf-8
"""
ID: issue-3363
ISSUE: 3363
TITLE: Error in Trace plugin (use local symbols in query)
DESCRIPTION:
JIRA: CORE-2981
FBTEST: bugs.core_2981
"""
import pytest
from difflib import unified_diff
from firebird.qa import *
db = db_factory()
act = python_act('db')
test_script = """
set list on;
select '*Лев Николаевич Толстой *
*Анна Каренина *
/Мне отмщение, и аз воздам/
*ЧАСТЬ ПЕРВАЯ*
*I *
Все счастливые семьи похожи друг на друга, каждая несчастливая
семья несчастлива по-своему.
Все смешалось в доме Облонских. Жена узнала, что муж был в связи
с бывшею в их доме француженкою-гувернанткой, и объявила мужу, что
не может жить с ним в одном доме. Положение это продолжалось уже
третий день и мучительно чувствовалось и самими супругами, и всеми
членами семьи, и домочадцами. Все члены семьи и домочадцы
чувствовали, что нет смысла в их сожительстве и что на каждом
постоялом дворе случайно сошедшиеся люди более связаны между собой,
чем они, члены семьи и домочадцы Облонских. Жена не выходила из
своих комнат, мужа третий день не было дома. Дети бегали по всему
дому, как потерянные; англичанка поссорилась с экономкой и написала
записку приятельнице, прося приискать ей новое место; повар ушел еще
вчера со двора, во время обеда; черная кухарка и кучер просили расчета.
На третий день после ссоры князь Степан Аркадьич Облонский --
Стива, как его звали в свете, -- в обычный час, то есть в восемь
часов утра, проснулся не в спальне жены, а в своем кабинете, на
сафьянном диване... Он повернул свое полное, выхоленное тело на
пружинах дивана, как бы желая опять заснуть надолго, с другой
стороны крепко обнял подушку и прижался к ней щекой; но вдруг
вскочил, сел на диван и открыл глаза.
"Да, да, как это было? -- думал он, вспоминая сон. -- Да, как это
было? Да! Алабин давал обед в Дармштадте; нет, не в Дармштадте, а
что-то американское. Да, но там Дармштадт был в Америке. Да, Алабин
давал обед на стеклянных столах, да, -- и столы пели: Il mio tesoro,
и не Il mio tesoro, а что-то лучше, и какие-то маленькие графинчики,
и они же женщины", -- вспоминал он.
Глаза Степана Аркадьича весело заблестели, и он задумался,
улыбаясь. "Да, хорошо было, очень хорошо. Много еще там было
отличного, да не скажешь словами и мыслями даже наяву не выразишь".
И, заметив полосу света, пробившуюся сбоку одной из суконных стор,
он весело скинул ноги с дивана, отыскал ими шитые женой (подарок ко
дню рождения в прошлом году), обделанные в золотистый сафьян туфли и
по старой, девятилетней привычке, не вставая, потянулся рукой к тому
месту, где в спальне у него висел халат. И тут он вспомнил вдруг,
как и почему он спит не в спальне жены, а в кабинете; улыбка исчезла
с его лица, он сморщил лоб.
"Ах, ах, ах! Ааа!.." -- замычал он, вспоминая все, что было. И
его воображению представились опять все подробности ссоры с женою,
вся безвыходность его положения и мучительнее всего собственная вина
его.
"Да! она не простит и не может простить. И всего ужаснее то, что
виной всему я, виной я, а не виноват. В этом-то вся драма, -- думал
он. -- Ах, ах, ах!" -- приговаривал он с отчаянием, вспоминая самые
тяжелые для себя впечатления из этой ссоры.
Неприятнее всего была та первая минута, когда он, вернувшись из
театра, веселый и довольный, с огромною грушей для жены в руке, не
нашел жены в гостиной; к удивлению, не нашел ее и в кабинете и,
наконец, увидал ее в спальне с несчастною, открывшею все, запиской в
руке.
Она, эта вечно озабоченная, и хлопотливая, и недалекая, какою он
считал ее, Долли, неподвижно сидела с запиской в руке и с выражением
ужаса, отчаяния и гнева смотрела на него.
-- Что это? это? -- спрашивала она, указывая на записку.
И при этом воспоминании, как это часто бывает, мучала Степана
Аркадьича не столько самое событие, сколько то, как он ответил на
эти слова жены.
С ним случилось в эту минуту то, что случается с людьми, когда
они неожиданно уличены в чем-нибудь слишком постыдном. Он не сумел
приготовить свое лицо к тому положению, в которое он становился
перед женой после открытия его вины. Вместо того чтоб оскорбиться,
отрекаться, оправдываться, просить прощения, оставаться даже
равнодушным -- все было бы лучше того, что он сделал! -- его лицо
совершенно невольно ("рефлексы головного мозга", -- подумал Степан
Аркадьич, который любил физиологию), совершенно невольно вдруг
улыбнулось привычною, доброю и потому глупою улыбкой.
Эту глупую улыбку он не мог простить себе. Увидав эту улыбку,
Долли вздрогнула, как от физической боли, разразилась, со
свойственною ей горячностью, потоком жестоких слов и выбежала из
комнаты. С тех пор она не хотела видеть мужа.
"Всему виной эта глупая улыбка", -- думал Степан Аркадьич.
"Но что же делать? что делать?" -- с отчаянием говорил он себе и
не находил ответа.
' from rdb$database;
"""
trace = ['include_filter = %(SELECT|INSERT|UPDATE|DELETE)%',
'exclude_filter = %no_trace%',
'log_connections = true',
'log_transactions = true',
'log_statement_prepare = true',
'log_statement_free = true',
'log_statement_start = true',
'log_statement_finish = true',
'log_trigger_start = true',
'log_trigger_finish = true',
'log_context = true',
'print_plan = true',
'print_perf = true',
'time_threshold = 0',
'max_sql_length = 5000',
'max_blr_length = 500',
'max_dyn_length = 500',
'max_arg_length = 80',
'max_arg_count = 30',
]
@pytest.mark.version('>=3')
def test_1(act: Action):
# Get content of firebird.log BEFORE test
log_before = act.get_firebird_log()
with act.trace(db_events=trace, keep_log=False, encoding='utf8'):
act.isql(switches=['-n', '-q'], input=test_script)
# Get content of firebird.log AFTER test
log_after = act.get_firebird_log()
assert '\n'.join(unified_diff(log_before, log_after)) == ''