mirror of
https://github.com/FirebirdSQL/firebird-qa.git
synced 2025-01-22 13:33:07 +01:00
140 lines
9.5 KiB
Python
140 lines
9.5 KiB
Python
#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.trace
|
||
@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)) == ''
|