Current File : //opt/imh-python/lib/python2.7/test/test_gdb.pyo
�
��Wc@s�ddlZddlZddlZddlZddlZddlZddlmZddlm	Z	m
Z
yddlZWnek
r�e
ZnXd�Ze�\ZZZedkr�ejdeeef��nejjd�rejd��nejjejjej�d	�Zd
�Zed�\ZZerZejd��nd
ejgZed
ej�\ZZdekr�dZejeej ���nd�Z!d�Z"e"�Z#dej$fd��YZ%de%fd��YZ&ej'e!�d�de%fd��Y�Z(de%fd��YZ)de%fd��YZ*de%fd��YZ+de%fd ��YZ,d!�Z-e.d"kr�e-�ndS(#i����N(ttest_support(trun_unittesttfindfilecCs�y;tjdddgdtjdt�}|j�d}Wn tk
r]tjd��nXtj	d|�}|dkr�td	|��n|t|j
d
��t|j
d��fS(Ntgdbs-nxs	--versiontstdouttuniversal_newlinesisCouldn't find gdb on the paths^GNU gdb.*?\b(\d+)\.(\d+)sunable to parse GDB version: %rii(t
subprocesstPopentPIPEtTruetcommunicatetOSErrortunittesttSkipTesttretsearchtNonet	Exceptiontinttgroup(tproctversiontmatch((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pytget_gdb_versions		
isFgdb versions before 7.0 didn't support python embedding. Saw %s.%s:
%stsunoss&test doesn't work very well on Solariss
python-gdb.pyc
Os�|r%tjj�}|j|�nd}d
}ttfdkrZ|ddtf7}ntj	||dtj
d	tj
d
tj
d|�j�\}}||fS(skRuns gdb in batch mode with the additional arguments given by *args.

    Returns its (stdout, stderr)
    Rs--batchs-nxiis-iexsadd-auto-load-safe-path tstdinRtstderrtenvN(sgdbs--batchs-nx(ii(tostenvirontcopytupdateRtgdb_major_versiontgdb_minor_versiontcheckout_hook_pathRRRR
(targstenv_varsRtbase_cmdtoutterr((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pytrun_gdb:s	's9--eval-command=python import sys; print(sys.version_info)s*gdb not built with embedded python supports--argssauto-loading has been declineds3gdb security settings prevent use of custom hooks: cCsOtj�d}d}x,|j�D]}|jd�r#|}q#q#W|dkS(Nt	PY_CFLAGSts-Os-O0s-Og(R*s-O0s-Og(t	sysconfigtget_config_varstsplitt
startswith(tcflagst	final_opttopt((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pytpython_is_optimized]s
cCs^td�\}}tjd|�}|s<tjd��n|jd�jd�}d|kS(Ns+--eval-command=python print(dir(gdb.Frame))s.*\[(.*)\].*s1Unable to parse output from gdb.Frame.select testis, s'select'(R(RRRR
RR-(Rt_tmt
gdb_frame_dir((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pytgdb_has_frame_selectest
DebuggerTestscBsPeZdZdddded�Zded�Zd�Zd�Zd�Z	RS(s(Test that the debugger can debug Python.tPyObject_PrintcCsydd|ddg}ttfdkr8|dg7}n|rK||7}n
|dg7}d	d
dg}|g|D]}d|^qq7}|d
tjg7}|s�|dg7}n|r�|d|g7}n|r�||g7}ntdd|�\}	}
|
j�}g}d|ddddddddddf}
x-|D]%}|j|
�s<|j|�q<q<W|j|g�|	S(s�
        Run 'python -c SOURCE' under gdb with a breakpoint.

        Support injecting commands after the breakpoint is reached

        Returns the stdout from gdb

        cmds_after_breakpoint: if provided, a list of strings: gdb commands
        sset breakpoint pending yessbreak %ssset print address offtruniisset print entry-values not	backtraceRs--batchs-nxs--eval-command=%ss--argss-Ss-ctPYTHONHASHSEEDt0sFunction "%s" not defined.sLwarning: no loadable sections found in added symbol-file system-supplied DSOspwarning: Unable to find libthread_db matching inferior's thread library, thread debugging will not be available.sLwarning: Cannot initialize thread debugging library: Debugger service faileds@warning: Could not load shared library symbols for linux-vdso.sos@warning: Could not load shared library symbols for linux-gate.sosBwarning: Could not load shared library symbols for linux-vdso64.sos5Do you need "set solib-search-path" or "set sysroot"?s4warning: Source file is more recent than executable.sMissing separate debuginfo for sTry: zypper install -C (ii(	R R!tsyst
executableR(t
splitlinesR.tappendtassertEqual(tselftsourcetscriptt
breakpointtcmds_after_breakpointtimport_sitetcommandsR#tcmdR&R'terrlinestunexpected_errlinestignore_patternstline((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pytget_stack_tracetsL
	

!
	
cCsl|j|ddd|d|�}tjd|tj�}|sY|jd||f�n|jd�|fS(NRER8RFRGs6.*#0\s+PyObject_Print\s+\(\s*op\=\s*(.*?),\s+fp=.*\).*sUnexpected gdb output: %r
%si(RNRRtDOTALLtfailR(RBRCRFRGt
gdb_outputR4((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pytget_gdb_repr�s
		cCs*|j|j|�dd||f�dS(s9Ensure that the given "actual" string ends with "exp_end"tmsgs%r did not end with %rN(t
assertTruetendswith(RBtactualtexp_end((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pytassertEndsWith�scCs9tj||tj�}|j|dd||f�dS(NRSs%r did not match %r(RRRORT(RBRVtpatternR4((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pytassertMultilineMatchesscCs
td�S(Ns
gdb_sample.py(R(RB((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pytget_sample_scriptsN(
t__name__t
__module__t__doc__RtFalseRNRRRXRZR[(((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyR7pso		tPrettyPrintTestscBs:eZd�Zd!d�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d�Zd	�Zd
�Z
d�Zd�Zd
�Zd�Zd�Zd�Zd!d!d�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d�Z"d �Z#RS("cCs&|jd�}|jd|k�dS(Nsprint 42R8(RNRT(RBRQ((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_getting_backtracescCs<|jdt|�|�\}}|j|t|��dS(Nsprint (RRtreprRA(RBtvalRFtgdb_reprRQ((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyt
assertGdbReprscCsL|jd�|jd�|jd�|jtj�|jtj�dS(s2Verify the pretty-printing of various "int" valuesi*ii����N(ReR=tmaxint(RB((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_ints



cCs8|jd�|jd�|jd�|jd�dS(s3Verify the pretty-printing of various "long" valuesllJ)�l����l�����I�5N(Re(RB((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyt	test_longs


cCs+|jt�|jt�|jd�dS(s2Verify the pretty-printing of True, False and NoneN(ReR	R_R(RB((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_singletons"s

cCs2|ji�|jidd6�|jd�dS(s*Verify the pretty-printing of dictionariestbartfoos{'foo': 'bar', 'douglas':42}N(Re(RB((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyt
test_dicts(s
cCs$|jg�|jtd��dS(s#Verify the pretty-printing of listsiN(Retrange(RB((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyt
test_lists.s
cCs8|jd�|jd�|jd�|jd�dS(s%Verify the pretty-printing of stringsR*s(And now for something hopefully the sames7string with embedded NUL here  and then some more texts!this is byte 255:� and byte 128:�N(Re(RB((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_strings3s


cCs.|jt��|jd�|jd�dS(s$Verify the pretty-printing of tuplesiRkRjtbazN(i(sfoosbarRp(Rettuple(RB((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_tuples:s
cCsE|jd�|jd�|jd�|jd�|jd�dS(s,Verify the pretty-printing of unicode valuesuuhello worldu☠u文字化けu𝄡N(Re(RB((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_unicode@s




cCs�|jt��|jd�d}|j|jd��|j|jd��|jt|�ddh�|jd�d}|j|jd��|j|jd��|jt|�dd	h�|jd
�\}}|j|d�dS(
s"Verify the pretty-printing of setssprint set(['a', 'b'])isset([s])tatbsprint set([4, 5])iis"s = set(['a','b'])
s.pop()
print ss
set(['b'])N(RetsetRRRTR.RURAteval(RBtrepRdRQ((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyt	test_setsXscCs�|jt��|jd�d}|j|jd��|j|jd��|jt|�ddh�|jd�d}|j|jd��|j|jd��|jt|�dd	h�d
S(s(Verify the pretty-printing of frozensetssprint frozenset(['a', 'b'])isfrozenset([s])RtRusprint frozenset([4, 5])iiN(Ret	frozensetRRRTR.RURARw(RBRx((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_frozensetskscCsN|jd�\}}|j|d�|jd�\}}|j|d�dS(NsR
try:
    raise RuntimeError("I am an error")
except RuntimeError, e:
    print e
s)exceptions.RuntimeError('I am an error',)s=
try:
    a = 1 / 0
except ZeroDivisionError, e:
    print e
sCexceptions.ZeroDivisionError('integer division or modulo by zero',)(RRRA(RBRdRQ((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_exceptionsws		cCsB|jd�\}}tjd|�}|j|dd|�dS(s5Verify the pretty-printing of classic class instancess:
class Foo:
    pass
foo = Foo()
foo.an_int = 42
print foos(<Foo\(an_int=42\) at remote 0x[0-9a-f]+>RSs%Unexpected classic-class rendering %rN(RRRRRT(RBRdRQR4((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_classic_class�s
cCsB|jd�\}}tjd|�}|j|dd|�dS(s7Verify the pretty-printing of new-style class instancessB
class Foo(object):
    pass
foo = Foo()
foo.an_int = 42
print foos(<Foo\(an_int=42\) at remote 0x[0-9a-f]+>RSs'Unexpected new-style class rendering %rN(RRRRRT(RBRdRQR4((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_modern_class�s
cCsB|jd�\}}tjd|�}|j|dd|�dS(s<Verify the pretty-printing of an instance of a list subclasssQ
class Foo(list):
    pass
foo = Foo()
foo += [1, 2, 3]
foo.an_int = 42
print foos(<Foo\(an_int=42\) at remote 0x[0-9a-f]+>RSs'Unexpected new-style class rendering %rN(RRRRRT(RBRdRQR4((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_subclassing_list�s
cCsB|jd�\}}tjd|�}|j|dd|�dS(s=Verify the pretty-printing of an instance of a tuple subclasssJ
class Foo(tuple):
    pass
foo = Foo((1, 2, 3))
foo.an_int = 42
print foos(<Foo\(an_int=42\) at remote 0x[0-9a-f]+>RSs'Unexpected new-style class rendering %rN(RRRRRT(RBRdRQR4((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_subclassing_tuple�s
c
Cs�|r|dg}n	dg}|j|d|�\}}|rX|t|�krXdSn|rod|d}nd}tj||�}	|	s�|jd||f�ndS(s�Run Python under gdb, corrupting variables in the inferior process
        immediately before taking a backtrace.

        Verify that the variable's representation is the expected failsafe
        representationR:RFNt<s at remote 0x[0-9a-f]+>s<.* at remote 0x[0-9a-f]+>s$Unexpected gdb representation: %r
%s(RRRbRRRP(
RBRCt
corruptiontexpvaluetexptypeRFRdRQRYR4((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyt
assertSane�s		cCs5|jddddg�\}}|j|d�dS(s2Ensure that a NULL PyObject* is handled gracefullysprint 42RFsset variable op=0R:t0x0N(RRRA(RBRdRQ((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyt
test_NULL_ptr�scCs|jdd�dS(s?Ensure that a PyObject* with NULL ob_type is handled gracefullysprint 42sset op->ob_type=0N(R�(RB((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_NULL_ob_type�s	cCs|jdddd�dS(sDEnsure that a PyObject* with a corrupt ob_type is handled gracefullysprint 42sset op->ob_type=0xDEADBEEFR�i*N(R�(RB((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_corrupt_ob_type�s	cCs|jdddd�dS(sDEnsure that a PyObject* with a type with corrupt tp_flags is handledsprint 42sset op->ob_type->tp_flags=0x0R�i*N(R�(RB((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_corrupt_tp_flags�s	cCs|jdddd�dS(sCEnsure that a PyObject* with a type with corrupt tp_name is handledsprint 42s#set op->ob_type->tp_name=0xDEADBEEFR�i*N(R�(RB((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_corrupt_tp_name�s	cCs|jdddd�dS(sBEnsure that a PyInstanceObject with with a NULL in_dict is handleds:
class Foo:
    pass
foo = Foo()
foo.an_int = 42
print foos(set ((PyInstanceObject*)op)->in_dict = 0R�tFooN(R�(RB((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_NULL_instance_dictscCsH|jddt�\}}tjd|�}|j|dd|�dS(sAEnsure that the new-style class _Helper in site.py can be handledsprint __builtins__.helpRGs<_Helper at remote 0x[0-9a-f]+>RSsUnexpected rendering %rN(RRR	RRRT(RBRdRQR4((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_builtins_help
scCsN|jd�\}}|j|d�|jd�\}}|j|d�dS(sbEnsure that a reference loop involving a list doesn't lead proxyval
        into an infinite loop:s%a = [3, 4, 5] ; a.append(a) ; print as[3, 4, 5, [...]]s/a = [3, 4, 5] ; b = [a] ; a.append(b) ; print as[3, 4, 5, [[...]]]N(RRRA(RBRdRQ((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_selfreferential_listscCs)|jd�\}}|j|d�dS(sbEnsure that a reference loop involving a dict doesn't lead proxyval
        into an infinite loop:s/a = {} ; b = {'bar':a} ; a['foo'] = b ; print as{'foo': {'bar': {...}}}N(RRRA(RBRdRQ((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_selfreferential_dict$scCs?|jd�\}}|jtjd|�d||f�dS(Ns<
class Foo:
    pass
foo = Foo()
foo.an_attr = foo
print foos/<Foo\(an_attr=<\.\.\.>\) at remote 0x[0-9a-f]+>s$Unexpected gdb representation: %r
%s(RRRTRR(RBRdRQ((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyt'test_selfreferential_old_style_instance,scCsz|jd�\}}|jtjd|�d||f�|jd�\}}|jtjd|�d||f�dS(NsD
class Foo(object):
    pass
foo = Foo()
foo.an_attr = foo
print foos/<Foo\(an_attr=<\.\.\.>\) at remote 0x[0-9a-f]+>s$Unexpected gdb representation: %r
%ssT
class Foo(object):
    pass
a = Foo()
b = Foo()
a.an_attr = b
b.an_attr = a
print asV<Foo\(an_attr=<Foo\(an_attr=<\.\.\.>\) at remote 0x[0-9a-f]+>\) at remote 0x[0-9a-f]+>(RRRTRR(RBRdRQ((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyt'test_selfreferential_new_style_instance9scCsI|jd�\}}|j|d�|jt|�dtd��dS(s)Verify that very long output is truncatedsprint range(1000)s[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226...(truncated)is...(truncated)N(RRRAtlen(RBRdRQ((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_truncationTs
	cCs)|jd�\}}|j|d�dS(Ns	print lens<built-in function len>(RRRA(RBRdRQ((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_builtin_functionpscCs?|jd�\}}|jtjd|�d||f�dS(Ns&import sys; print sys.stdout.readliness@<built-in method readlines of file object at remote 0x[0-9a-f]+>s$Unexpected gdb representation: %r
%s(RRRTRR(RBRdRQ((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_builtin_methodts
cCsN|jdddddg�}|jtjd|tj�d||f�dS(Ns<
def foo(a, b, c):
    pass

foo(3, 4, 5)
print foo.__code__RER8RFs;print (PyFrameObject*)(((PyCodeObject*)op)->co_zombieframe)sK.*\s+\$1 =\s+Frame 0x[0-9a-f]+, for file <string>, line 3, in foo \(\)\s+.*s$Unexpected gdb representation: %r
%s(RNRTRRRO(RBRQ((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_frames{s	N($R\R]RaRReRgRhRiRlRnRoRrRsRyR{R|R}R~RR�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�(((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyR`sB															
	!	
						
	
		
				s&Python was compiled with optimizationstPyListTestscBs,eZd�Zd�Zd�Zd�ZRS(cCs|j||�dS(N(RX(RBtexpectedRV((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyt
assertListing�scCs5|jd|j�ddg�}|jd|�dS(s'Verify that the "py-list" command worksRDRFspy-lists�   5    
   6    def bar(a, b, c):
   7        baz(a, b, c)
   8    
   9    def baz(*args):
 >10        print(42)
  11    
  12    foo(1, 2, 3)
N(RNR[R�(RBtbt((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_basic_command�s	cCs5|jd|j�ddg�}|jd|�dS(s7Verify the "py-list" command with one absolute argumentRDRFs	py-list 9sL   9    def baz(*args):
 >10        print(42)
  11    
  12    foo(1, 2, 3)
N(RNR[R�(RBR�((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_one_abs_arg�s	cCs5|jd|j�ddg�}|jd|�dS(s8Verify the "py-list" command with two absolute argumentsRDRFspy-list 1,3sR   1    # Sample script for use by test_gdb.py
   2    
   3    def foo(a, b, c):
N(RNR[R�(RBR�((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_two_abs_args�s	(R\R]R�R�R�R�(((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyR��s			tStackNavigationTestscBs�eZejed�eje�d�d���Zejed�d��Zejed�d��Z	ejed�eje�d�d���Z
RS(s$test requires py-up/py-down commandss&Python was compiled with optimizationscCs5|jd|j�ddg�}|j|d�dS(s%Verify that the "py-up" command worksRDRFspy-upsn^.*
#[0-9]+ Frame 0x[0-9a-f]+, for file .*gdb_sample.py, line 7, in bar \(a=1, b=2, c=3\)
    baz\(a, b, c\)
$N(RNR[RZ(RBR�((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_pyup_command�s	cCs5|jd|j�ddg�}|j|d�dS(s7Verify handling of "py-down" at the bottom of the stackRDRFspy-downs$Unable to find a newer python frame
N(RNR[RX(RBR�((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_down_at_bottom�s	cCs9|jd|j�ddgd�}|j|d�dS(s2Verify handling of "py-up" at the top of the stackRDRFspy-upis%Unable to find an older python frame
N(RNR[RX(RBR�((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_up_at_top�s	cCs8|jd|j�dddg�}|j|d�dS(s$Verify "py-up" followed by "py-down"RDRFspy-upspy-downs�^.*
#[0-9]+ Frame 0x[0-9a-f]+, for file .*gdb_sample.py, line 7, in bar \(a=1, b=2, c=3\)
    baz\(a, b, c\)
#[0-9]+ Frame 0x[0-9a-f]+, for file .*gdb_sample.py, line 10, in baz \(args=\(1, 2, 3\)\)
    print\(42\)
$N(RNR[RZ(RBR�((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_up_then_down�s	(R\R]Rt
skipUnlesstHAS_PYUP_PYDOWNtskipIfR2R�R�R�R�(((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyR��st	PyBtTestscBs�eZeje�d�d��Zeje�d�d��Zejed�d��Z	eje�d�ejed�d���Z
eje�d�ejed�d���ZRS(s&Python was compiled with optimizationscCs5|jd|j�ddg�}|j|d�dS(s%Verify that the "py-bt" command worksRDRFspy-bts^.*
Traceback \(most recent call first\):
  File ".*gdb_sample.py", line 10, in baz
    print\(42\)
  File ".*gdb_sample.py", line 7, in bar
    baz\(a, b, c\)
  File ".*gdb_sample.py", line 4, in foo
    bar\(a, b, c\)
  File ".*gdb_sample.py", line 12, in <module>
    foo\(1, 2, 3\)
N(RNR[RZ(RBR�((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_bt�s	cCs5|jd|j�ddg�}|j|d�dS(s*Verify that the "py-bt-full" command worksRDRFs
py-bt-fulls>^.*
#[0-9]+ Frame 0x-?[0-9a-f]+, for file .*gdb_sample.py, line 7, in bar \(a=1, b=2, c=3\)
    baz\(a, b, c\)
#[0-9]+ Frame 0x-?[0-9a-f]+, for file .*gdb_sample.py, line 4, in foo \(a=1, b=2, c=3\)
    bar\(a, b, c\)
#[0-9]+ Frame 0x-?[0-9a-f]+, for file .*gdb_sample.py, line 12, in <module> \(\)
    foo\(1, 2, 3\)
N(RNR[RZ(RBR�((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_bt_full�s	s*Python was compiled without thread supportcCsZd}|j|ddg�}|jd|�|j|ddg�}|jd|�dS(sBVerify that "py-bt" indicates threads that are waiting for the GILsP
from threading import Thread

class TestThread(Thread):
    # These threads would run forever, but we'll interrupt things with the
    # debugger
    def run(self):
        i = 0
        while 1:
             i += 1

t = {}
for i in range(4):
   t[i] = TestThread()
   t[i].start()

# Trigger a breakpoint on the main thread
print 42

RFsthread apply all py-btsWaiting for the GILsthread apply all py-bt-fullN(RNtassertIn(RBRIRQ((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_threadsscCsfd}|j|ddddg�}|jd|�|j|ddddg�}|jd|�dS(	s?Verify that "py-bt" indicates if a thread is garbage-collectingsTfrom gc import collect
print 42
def foo():
    collect()
def bar():
    foo()
bar()
RFsbreak update_refstcontinuespy-btsGarbage-collectings
py-bt-fullN(RNR�(RBRIRQ((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_gc's	cCsid}|j|dddddg�}|jd|�|j|ddddg�}|jd	|�d
S(sAVerify that "py-bt" displays invocations of PyCFunction instancessLfrom time import gmtime
def foo():
    gmtime(1)
def bar():
    foo()
bar()
REttime_gmtimeRFR�spy-bts<built-in function gmtimes
py-bt-fulls#0 <built-in function gmtimeN(RNR�(RBRIRQ((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_pycfunctionCs(R\R]RR�R2R�R�R�tthreadR�R�R�(((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyR��s	!		tPyPrintTestscBs�eZeje�d�d��Zejed�eje�d�d���Zeje�d�d��Z	eje�d�d��Z
RS(s&Python was compiled with optimizationscCs5|jd|j�ddg�}|j|d�dS(s(Verify that the "py-print" command worksRDRFs
py-print argss".*\nlocal 'args' = \(1, 2, 3\)\n.*N(RNR[RZ(RBR�((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyR�ds	s$test requires py-up/py-down commandscCs>|jd|j�dddddg�}|j|d�dS(NRDRFspy-ups
py-print cs
py-print bs
py-print as3.*\nlocal 'c' = 3\nlocal 'b' = 2\nlocal 'a' = 1\n.*(RNR[RZ(RBR�((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_print_after_upms	cCs5|jd|j�ddg�}|j|d�dS(NRDRFspy-print __name__s&.*\nglobal '__name__' = '__main__'\n.*(RNR[RZ(RBR�((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_printing_globalvs	cCs5|jd|j�ddg�}|j|d�dS(NRDRFspy-print lens/.*\nbuiltin 'len' = <built-in function len>\n.*(RNR[RZ(RBR�((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_printing_builtin~s	(R\R]RR�R2R�R�R�R�R�R�(((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyR�cst
PyLocalsTestscBsVeZeje�d�d��Zejed�eje�d�d���ZRS(s&Python was compiled with optimizationscCs5|jd|j�ddg�}|j|d�dS(NRDRFs	py-localss.*\nargs = \(1, 2, 3\)\n.*(RNR[RZ(RBR�((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyR��s	s$test requires py-up/py-down commandscCs8|jd|j�dddg�}|j|d�dS(NRDRFspy-ups	py-localss.*\na = 1\nb = 2\nc = 3\n.*(RNR[RZ(RBR�((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyttest_locals_after_up�s	(	R\R]RR�R2R�R�R�R�(((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyR��s
cCsXtjr;dttfGHx tj�D]}d|GHq%Wntttt	t
tt�dS(NsGDB version %s.%s:t is    (
RtverboseR R!tgdb_versionR?RR`R�R�R�R�R�(RM((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyt	test_main�s	t__main__(/RRRR=RR+ttestRttest.test_supportRRR�tImportErrorRRR�R R!R
tplatformR.tpathtjointdirnameR>R"R(t
gdbpy_versionR3RItgdbpy_errorsRStrstripR2R6R�tTestCaseR7R`R�R�R�R�R�R�R�R\(((sf/builddir/build/BUILDROOT/imh-python-2.7.12-1.el7.x86_64/opt/imh-python/lib/python2.7/test/test_gdb.pyt<module>s\

								���	(-�#