Your IP : 216.73.216.74


Current Path : /opt/alt/python37/lib/python3.7/site-packages/_pytest/__pycache__/
Upload File :
Current File : //opt/alt/python37/lib/python3.7/site-packages/_pytest/__pycache__/junitxml.cpython-37.pyc

B

C$�X&5�@s2dZddlZddlZddlZddlZddlZddlZddlZddlm	Z	ej
ddkrdddlmZne
ZeZeZGdd�dejj�ZdZd	Zd
d�eD�Zdd�eD�eZe�ed
�ed��e��Z[[[e�d�Zdd�ZGdd�de�Zej dd��Z!dd�Z"dd�Z#dd�Z$dd�Z%Gdd�de�Z&dS) z�
    report test results in JUnit-XML format,
    for use with Jenkins and build integration servers.


Based on initial code from Ross Lawley.
�N)�filename_arg�)�openc@seZdZdS)�JunitN)�__name__�
__module__�__qualname__�r	r	�A/opt/alt/python37/lib/python3.7/site-packages/_pytest/junitxml.pyrsr)�	�
�
))� �~)�i��)i�i��)ii��cCs2g|]*\}}|tjkrtd�t|�t|�f�qS)z%s-%s)�sys�
maxunicode�unicode�unichr)�.0�low�highr	r	r
�
<listcomp>+srcCsg|]}t|��qSr	)r)r�xr	r	r
r.sz[^%s]�z\.py$cCs$dd�}tj�t�|tj�|���S)NcSs0t|���}|dkr td�|Std�|SdS)N�z#x%02Xz#x%04X)�ord�groupr)Zmatchobj�ir	r	r
�repl8szbin_xml_escape.<locals>.repl)�py�xml�raw�illegal_xml_re�sub�escape)�argrr	r	r
�bin_xml_escape7sr'c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd dd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zd
S)!�
_NodeReportercCs8||_||_|jj|_d|_g|_g|_d|_i|_dS)Nr)�idr!�	add_stats�duration�
properties�nodes�testcase�attrs)�self�nodeidr!r	r	r
�__init__Cs
z_NodeReporter.__init__cCs"|j�t|�j�|j�|�dS)N)r!r*�typerr-�append)r0�noder	r	r
r4Nsz_NodeReporter.appendcCs|j�t|�t|�f�dS)N)r,r4�strr')r0�name�valuer	r	r
�add_propertyRsz_NodeReporter.add_propertycCs |jrt�dd�|jD��SdS)zBReturn a Junit node containing custom properties, if any.
        cSsg|]\}}tj||d��qS))r7r8)r�property)rr7r8r	r	r
rZsz6_NodeReporter.make_properties_node.<locals>.<listcomp>r)r,r)r0r	r	r
�make_properties_nodeUs
z"_NodeReporter.make_properties_nodecCs~|jr
t�t|j�}|dd�}|jjr8|�d|jj�d�|�t|d�|j	dd�}|j	ddk	rt|j	d|d<||_
dS)N���r�.)�	classnamer7�file��line)r.�AssertionError�mangle_test_addressr1r!�prefix�insert�joinr'�locationr/)r0Z
testreport�namesZ
classnamesr/r	r	r
�record_testreport_s


z_NodeReporter.record_testreportcCsDtjfd|ji|j��}|�|���x|jD]}|�|�q.W|S)N�time)rr.r+r/r4r;r-)r0r.r5r	r	r
�to_xmlns
z_NodeReporter.to_xmlNcCs"t|�}|||d�}|�|�dS)N)�message)r'r4)r0�kindrL�datar5r	r	r
�_add_simpleusz_NodeReporter._add_simplecCsDx>dD]6}t|d|�}|rttd|�}|�|t|���qWdS)N)�out�errZcapstdzsystem-)�getattrrr4r')r0�reportZcapname�content�tagr	r	r
�write_captured_outputzs

z#_NodeReporter.write_captured_outputcCs|�d�dS)N�passed)r*)r0rSr	r	r
�append_pass�sz_NodeReporter.append_passcCs�t|d�r|�tjd�nht|jd�r2|jjj}n"t|jtt	f�rJ|j}n
t	|j�}t
|�}tj|d�}|�t
|j��|�|�dS)N�wasxfailz%xfail-marked test passes unexpectedly�	reprcrash)rL)
�hasattrrOr�skipped�longreprrZrL�
isinstancerr6r'�failurer4)r0rSrLZfailr	r	r
�append_failure�s

z_NodeReporter.append_failurecCs|�tjt|j�dd��dS)Nzcollection failure)rL)r4r�errorr'r])r0rSr	r	r
�append_collect_error�sz"_NodeReporter.append_collect_errorcCs|�tjd|j�dS)Nzcollection skipped)rOrr\r])r0rSr	r	r
�append_collect_skipped�sz$_NodeReporter.append_collect_skippedcCs0t|dd�dkrd}nd}|�tj||j�dS)N�when�teardownztest teardown failureztest setup failure)rRrOrrar])r0rS�msgr	r	r
�append_error�s
z_NodeReporter.append_errorcCsrt|d�r|�tjd|j�nF|j\}}}|�d�rDt|dd��}|�tjd|||fd|d��|�	|�dS)NrYzexpected test failurez	Skipped: rz	%s:%s: %szpytest.skip)r3rL)
r[rOrr\rYr]�
startswithr'r4rV)r0rS�filename�linenoZ
skipreasonr	r	r
�append_skipped�s


z_NodeReporter.append_skippedcs,|��jdd��|j���fdd�|_dS)Nr)�indentcstj���S)N)r r!r"r	)rNr	r
�<lambda>��z(_NodeReporter.finalize.<locals>.<lambda>)rKr�__dict__�clear)r0r	)rNr
�finalize�s
z_NodeReporter.finalize)N)rrrr2r4r9r;rIrKrOrVrXr`rbrcrgrkrqr	r	r	r
r(Bs

r(cCsJ|jjddd�t|jdd�}|dk	r:|�|jj�}|jSdd�}|SdS)z�Add extra xml properties to the tag for the calling test.
    The fixture is callable with ``(name, value)``, with value being automatically
    xml-encoded.
    ZC3z.record_xml_property is an experimental feature)�coderL�_xmlNcSsdS)Nr	)r7r8r	r	r
�add_property_noop�sz.record_xml_property.<locals>.add_property_noop)r5�warnrR�config�
node_reporterr1r9)�requestr!rwrtr	r	r
�record_xml_property�sryc
CsH|�d�}|jdddddtjtdd�ddd	�|jd
ddddd
d�dS)Nzterminal reportingz
--junitxmlz--junit-xml�store�xmlpath�path)�optnamez1create junit-xml style report file at given path.)�action�dest�metavarr3�default�helpz
--junitprefixz--junit-prefixr6z0prepend prefix to classnames in junit-xml output)r~r�r�r�)ZgetgroupZ	addoption�	functools�partialr)�parserrr	r	r
�pytest_addoption�s
r�cCs8|jj}|r4t|d�s4t||jj�|_|j�|j�dS)NZ
slaveinput)�optionr{r[�LogXMLZjunitprefixrs�
pluginmanager�register)rvr{r	r	r
�pytest_configure�sr�cCs$t|dd�}|r |`|j�|�dS)Nrs)rRrsr��
unregister)rvr!r	r	r
�pytest_unconfigure�sr�cCs~|�d�\}}}|�d�}y|�d�Wntk
r<YnX|d�dd�|d<t�d|d�|d<|d||7<|S)	N�[z::z()r�/r=rr<)�	partition�split�remove�
ValueError�replace�
_py_ext_rer$)�addressr|Zpossible_open_bracket�paramsrHr	r	r
rC�s
rCc@s|eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS)r�cCs\tj�tj�|��}tj�tj�|��|_||_t�	ddddgd�|_
i|_g|_g|_
dS)NrarWr_r\r)�osr|�
expanduser�
expandvars�normpath�abspath�logfilerD�dict�fromkeys�stats�node_reporters�node_reporters_ordered�global_properties)r0r�rDr	r	r
r2szLogXML.__init__cCs<t|d|�}t|dd�}|j�||f�}|dk	r8|��dS)Nr1r5)rRr��poprq)r0rSr1�	slavenode�reporterr	r	r
rqs
zLogXML.finalizecCsXt|d|�}t|dd�}||f}||jkr4|j|St||�}||j|<|j�|�|S)Nr1r5)rRr�r(r�r4)r0rSr1r��keyr�r	r	r
rws



zLogXML.node_reportercCs ||jkr|j|d7<dS)Nr@)r�)r0r�r	r	r
r**s
zLogXML.add_statscCs|�|�}|�|�|S)N)rwrI)r0rSr�r	r	r
�
_opentestcase.s

zLogXML._opentestcasecCs�|jr&|jdkrr|�|�}|�|�nL|jrX|�|�}|jdkrL|�|�qr|�|�n|jrr|�|�}|�|�|�	|�|jdkr�|�|�}|�
|�|�|�dS)ahandle a setup/call/teardown report, generating the appropriate
        xml tags as necessary.

        note: due to plugins like xdist, this hook may be called in interlaced
        order with reports from other nodes. for example:

        usual call order:
            -> setup node1
            -> call node1
            -> teardown node1
            -> setup node2
            -> call node2
            -> teardown node2

        possible call order in xdist:
            -> setup node1
            -> call node1
            -> setup node2
            -> call node2
            -> teardown node2
            -> teardown node1
        �callreN)rWrdr�rX�failedr`rgr\rk�update_testcase_durationrVrq)r0rSr�r	r	r
�pytest_runtest_logreport3s"









zLogXML.pytest_runtest_logreportcCs$|�|�}|jt|dd�7_dS)z�accumulates total duration for nodeid from given report and updates
        the Junit.testcase with the new total if already created.
        r+gN)rwr+rR)r0rSr�r	r	r
r�]s
zLogXML.update_testcase_durationcCs0|js,|�|�}|jr"|�|�n
|�|�dS)N)rWr�r�rbrc)r0rSr�r	r	r
�pytest_collectreportds

zLogXML.pytest_collectreportcCs.|�d�}|jjddd�|�tjd|�dS)NZinternal�pytest)r>r7zinternal error)rwr/�updaterOrra)r0Zexcreprr�r	r	r
�pytest_internalerrorls
zLogXML.pytest_internalerrorcCst��|_dS)N)rJ�suite_start_time)r0r	r	r
�pytest_sessionstartqszLogXML.pytest_sessionstartcCs�tj�tj�|j��}tj�|�s,t�|�t|jddd�}t��}||j	}|j
d|j
d|j
d|j
d}|�d�|�tj
|��d	d
�|jD�d|j
d|j
d|j
d|d|d
�jdd��|��dS)N�wzutf-8)�encodingrWr_r\raz&<?xml version="1.0" encoding="utf-8"?>cSsg|]}|���qSr	)rK)rrr	r	r
r�sz/LogXML.pytest_sessionfinish.<locals>.<listcomp>r�z%.3f)r7�errorsZfailuresZskips�testsrJr)rl)r�r|�dirnamer�r��isdir�makedirsrrJr�r��writerZ	testsuite�_get_global_properties_noder�r�close)r0r�r�Zsuite_stop_timeZsuite_time_deltaZnumtestsr	r	r
�pytest_sessionfinishts$

(
zLogXML.pytest_sessionfinishcCs|�dd|j�dS)N�-zgenerated xml file: %s)Z	write_sepr�)r0Zterminalreporterr	r	r
�pytest_terminal_summary�szLogXML.pytest_terminal_summarycCs|j�t|�t|�f�dS)N)r�r4r6r')r0r7r8r	r	r
�add_global_property�szLogXML.add_global_propertycCs |jrt�dd�|jD��SdS)zBReturn a Junit node containing custom properties, if any.
        cSsg|]\}}tj||d��qS))r7r8)rr:)rr7r8r	r	r
r�sz6LogXML._get_global_properties_node.<locals>.<listcomp>r)r�rr,)r0r	r	r
r��s
z"LogXML._get_global_properties_nodeN)rrrr2rqrwr*r�r�r�r�r�r�r�r�r�r�r	r	r	r
r�s*r�)'�__doc__r�r r��rerrJr�Z_pytest.configr�version_info�codecsr�chrrr6r�int�longr!Z	NamespacerZ_legal_charsZ
_legal_rangesZ
_legal_xml_re�compilerFr#r�r'�objectr(Zfixtureryr�r�r�rCr�r	r	r	r
�<module>s@	
z