§
    øÛgC4  ã                   óð  — d Z ddlZddlZddlZddlZddlZddlZej        d         dk     rddlm	Z	 ne
ZeZeZ G d„ dej        j        ¦  «        ZdZdZd	„ eD ¦   «         Zd
„ eD ¦   «         ez   Z ej         ed¦  «         ed¦  «                             e¦  «        z  ¦  «        Z[[[ ej        d¦  «        Zd„ Z G d„ de¦  «        Zej        d„ ¦   «         Zd„ Zd„ Z d„ Z!d„ Z" G d„ de¦  «        Z#dS )z�
    report test results in JUnit-XML format,
    for use with Jenkins and build integration servers.


Based on initial code from Ross Lawley.
é    Né   )Úopenc                   ó   — e Zd ZdS )ÚJunitN)Ú__name__Ú
__module__Ú__qualname__© ó    úF/granary/edev/quantum/lib/python3.11/site-packages/_pytest/junitxml.pyr   r      s   € € € € € Ø€Dr   r   )é	   é
   é   ))é    é~   )é€   iÿ×  )i à  iýÿ  )i   iÿÿ c                 ó�   — g | ]C\  }}|t           j        k     ¯t          d ¦  «        t          |¦  «        t          |¦  «        fz  ‘ŒDS )z%s-%s)ÚsysÚ
maxunicodeÚunicodeÚunichr)Ú.0ÚlowÚhighs      r   ú
<listcomp>r   '   sP   € ð ð ð áˆˆd¨­c¬nÒ(<Ð(<õ ˆGÑÔ�˜s™œ¥V¨D¡\¤\Ð2Ñ2Ø(<Ð(<Ð(<r   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r
   )r   ©r   Úxs     r   r   r   +   s   € Ð1Ð1Ð1˜q•˜‘”Ð1Ð1Ð1r   z[^%s]Ú z\.py$c                 ó²   — d„ }t           j                             t                               |t           j                             | ¦  «        ¦  «        ¦  «        S )Nc                 ó˜   — t          |                      ¦   «         ¦  «        }|dk    rt          d¦  «        |z  S t          d¦  «        |z  S )Néÿ   z#x%02Xz#x%04X)ÚordÚgroupr   )ÚmatchobjÚis     r   Úreplzbin_xml_escape.<locals>.repl5   sH   € Ý�—’Ñ Ô Ñ!Ô!ˆØ�Š9ˆ9Ý˜8Ñ$Ô$ qÑ(Ð(å˜8Ñ$Ô$ qÑ(Ð(r   )ÚpyÚxmlÚrawÚillegal_xml_reÚsubÚescape)Úargr'   s     r   Úbin_xml_escaper/   4   sE   € ð)ð )ð )õ Œ6�:Š:•n×(Ò(¨­r¬v¯}ª}¸SÑ/AÔ/AÑBÔBÑCÔCÐCr   c                   ój   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )Ú_NodeReporterc                 óŠ   — || _         || _        | j        j        | _        d| _        g | _        g | _        d | _        i | _        d S )Nr   )Úidr)   Ú	add_statsÚdurationÚ
propertiesÚnodesÚtestcaseÚattrs)ÚselfÚnodeidr)   s      r   Ú__init__z_NodeReporter.__init__@   sC   € àˆŒØˆŒØœÔ+ˆŒØˆŒØˆŒØˆŒ
ØˆŒØˆŒ
ˆ
ˆ
r   c                 ó’   — | j                              t          |¦  «        j        ¦  «         | j                             |¦  «         d S ©N)r)   r4   Útyper   r7   Úappend)r:   Únodes     r   r@   z_NodeReporter.appendK   s=   € ØŒ×Ò�4 ™:œ:Ô.Ñ/Ô/Ð/ØŒ
×Ò˜$ÑÔÐÐÐr   c                 ór   — | j                              t          |¦  «        t          |¦  «        f¦  «         d S r>   )r6   r@   Ústrr/   ©r:   ÚnameÚvalues      r   Úadd_propertyz_NodeReporter.add_propertyO   s1   € ØŒ×Ò¥ D¡	¤	­>¸%Ñ+@Ô+@ÐAÑBÔBÐBÐBÐBr   c                 óf   — | j         r)t                                d„ | j         D ¦   «         ¦  «        S dS )úBReturn a Junit node containing custom properties, if any.
        c                 óL   — g | ]!\  }}t                                ||¬ ¦  «        ‘Œ"S ©©rE   rF   ©r   Úproperty©r   rE   rF   s      r   r   z6_NodeReporter.make_properties_node.<locals>.<listcomp>V   s<   € ð %ð %ð %á�D˜%õ —’ D°�Ñ6Ô6ð%ð %ð %r   r   )r6   r   ©r:   s    r   Úmake_properties_nodez"_NodeReporter.make_properties_nodeR   sK   € ð Œ?ð 	Ý×#Ò#ð %ð %à#'¤?ð%ñ %ô %ñ ô ð ð ˆrr   c                 ób  — | j         rJ ‚t          |j        ¦  «        }|d d…         }| j        j        r |                     d| j        j        ¦  «         d                     |¦  «        t          |d         ¦  «        |j        d         dœ}|j        d         �|j        d         |d<   || _	        d S )Néÿÿÿÿr   ú.)Ú	classnamerE   Úfileé   Úline)
r8   Úmangle_test_addressr;   r)   ÚprefixÚinsertÚjoinr/   Úlocationr9   )r:   Ú
testreportÚnamesÚ
classnamesr9   s        r   Úrecord_testreportz_NodeReporter.record_testreport\   s´   € Ø”=Ð Ð Ð Ý# JÔ$5Ñ6Ô6ˆØ˜3˜B˜3”Zˆ
ØŒ8Œ?ð 	2Ø×Ò˜a ¤¤Ñ1Ô1Ð1àŸš *Ñ-Ô-Ý" 5¨¤9Ñ-Ô-ØÔ'¨Ô*ð
ð 
ˆð
 Ô˜qÔ!Ð-Ø&Ô/°Ô2ˆE�&‰MØˆŒ
ˆ
ˆ
r   c                 óÌ   — t          j        dd| j        i| j        ¤Ž}|                     |                      ¦   «         ¦  «         | j        D ]}|                     |¦  «         Œ|S )NÚtimer
   )r   r8   r5   r9   r@   rQ   r7   )r:   r8   rA   s      r   Úto_xmlz_NodeReporter.to_xmlk   si   € Ý”>ÐCÐC t¤}ÐC¸¼
ÐCÐCˆØ�Š˜×1Ò1Ñ3Ô3Ñ4Ô4Ð4Ø”Jð 	"ð 	"ˆDØ�OŠO˜DÑ!Ô!Ð!Ð!Øˆr   Nc                 óh   — t          |¦  «        } |||¬¦  «        }|                      |¦  «         d S )N©Úmessage)r/   r@   )r:   Úkindrg   ÚdatarA   s        r   Ú_add_simplez_NodeReporter._add_simpler   s;   € Ý˜dÑ#Ô#ˆØˆt�D 'Ð*Ñ*Ô*ˆØ�Š�DÑÔÐÐÐr   c                 óÀ   — dD ]Z}t          |d|z   ¦  «        }|rCt          t          d|z   ¦  «        }|                       |t          |¦  «        ¦  «        ¦  «         Œ[d S )N)ÚoutÚerrÚcapstdzsystem-)Úgetattrr   r@   r/   )r:   ÚreportÚcapnameÚcontentÚtags        r   Ú_write_captured_outputz$_NodeReporter._write_captured_outputw   sp   € Ø%ð 	:ð 	:ˆGÝ˜f h°Ñ&8Ñ9Ô9ˆGØð :Ý�e Y°Ñ%8Ñ9Ô9�Ø—’˜C˜C¥¨wÑ 7Ô 7Ñ8Ô8Ñ9Ô9Ð9øð		:ð 	:r   c                 óZ   — |                       d¦  «         |                      |¦  «         d S )NÚpassed)r4   rt   ©r:   rp   s     r   Úappend_passz_NodeReporter.append_pass~   s.   € Ø�Š�xÑ Ô Ð Ø×#Ò# FÑ+Ô+Ð+Ð+Ð+r   c                 ó&  — t          |d¦  «        r!|                      t          j        d¦  «         nÊt          |j        d¦  «        r|j        j        j        }n=t          |j        t          t          f¦  «        r|j        }nt          |j        ¦  «        }t          |¦  «        }t                               |¬¦  «        }|                     t          |j        ¦  «        ¦  «         |                      |¦  «         |                      |¦  «         d S )NÚwasxfailz%xfail-marked test passes unexpectedlyÚ	reprcrashrf   )Úhasattrrj   r   ÚskippedÚlongreprr{   rg   Ú
isinstancer   rC   r/   Úfailurer@   rt   )r:   rp   rg   Úfails       r   Úappend_failurez_NodeReporter.append_failure‚   sö   € å�6˜:Ñ&Ô&ð 	Ø×ÒÝ”Ø7ñ9ô 9ð 9ð 9õ �v”¨Ñ4Ô4ð /Ø œ/Ô3Ô;��Ý˜FœO­gµs¨^Ñ<Ô<ð /Ø œ/��å˜fœoÑ.Ô.�Ý$ WÑ-Ô-ˆGÝ—=’=¨�=Ñ1Ô1ˆDØ�KŠK� v¤Ñ7Ô7Ñ8Ô8Ð8Ø�KŠK˜ÑÔÐØ×#Ò# FÑ+Ô+Ð+Ð+Ð+r   c                 óˆ   — |                       t                               t          |j        ¦  «        d¬¦  «        ¦  «         d S )Nzcollection failurerf   )r@   r   Úerrorr/   r~   rw   s     r   Úappend_collect_errorz"_NodeReporter.append_collect_error•   sF   € à�Š•E—K’K¥¨v¬Ñ ?Ô ?Ø(<ð  ñ >ô >ñ 	?ô 	?ð 	?ð 	?ð 	?r   c                 óR   — |                       t          j        d|j        ¦  «         d S )Nzcollection skipped)rj   r   r}   r~   rw   s     r   Úappend_collect_skippedz$_NodeReporter.append_collect_skippedš   s5   € Ø×ÒÝŒMÐ/°´ñ	Bô 	Bð 	Bð 	Bð 	Br   c                 ó|   — |                       t          j        d|j        ¦  «         |                      |¦  «         d S )Nztest setup failure)rj   r   r„   r~   rt   rw   s     r   Úappend_errorz_NodeReporter.append_errorž   sC   € Ø×ÒÝŒKÐ-¨v¬ñ	@ô 	@ð 	@à×#Ò# FÑ+Ô+Ð+Ð+Ð+r   c           	      ó|  — t          |d¦  «        r'|                      t          j        d|j        ¦  «         no|j        \  }}}|                     d¦  «        rt          |dd …         ¦  «        }|                      t                               |›d|›d|›�d|¬¦  «        ¦  «         |  	                    |¦  «         d S )	Nrz   zexpected test failurez	Skipped: r   ú:z: zpytest.skip)r?   rg   )
r|   rj   r   r}   rz   r~   Ú
startswithr/   r@   rt   )r:   rp   ÚfilenameÚlinenoÚ
skipreasons        r   Úappend_skippedz_NodeReporter.append_skipped£   sÙ   € Ý�6˜:Ñ&Ô&ð 	3Ø×ÒÝ”Ð6¸¼ñô ð ð ð ,2¬?Ñ(ˆH�f˜jØ×$Ò$ [Ñ1Ô1ð <Ý+¨J°q°r°r¬NÑ;Ô;�
Ø�KŠKÝ—’¨X¨X¨X°v°v°v¸z¸zÐJØ#0Ø&0ð ñ 2ô 2ñ3ô 3ð 3ð 	×#Ò# FÑ+Ô+Ð+Ð+Ð+r   c                 óž   ‡— |                       ¦   «                              d¬¦  «        Š| j                             ¦   «          ˆfd„| _         d S )Nr   ©Úindentc                  óB   •— t           j                             ‰ ¦  «        S r>   )r(   r)   r*   )ri   s   €r   ú<lambda>z(_NodeReporter.finalize.<locals>.<lambda>µ   s   ø€ �bœfŸjšj¨Ñ.Ô.€ r   )rd   r   Ú__dict__Úclear)r:   ri   s    @r   Úfinalizez_NodeReporter.finalize²   sI   ø€ Ø�{Š{‰}Œ}×$Ò$¨AÐ$Ñ.Ô.ˆØŒ×ÒÑÔÐØ.Ð.Ð.Ð.ˆŒˆˆr   r>   )r   r   r	   r<   r@   rG   rQ   ra   rd   rj   rt   rx   r‚   r…   r‡   r‰   r�   r˜   r
   r   r   r1   r1   ?   s   € € € € € ð	ð 	ð 	ð ð  ð  ðCð Cð Cðð ð ðð ð ðð ð ðð ð ð ð
:ð :ð :ð,ð ,ð ,ð,ð ,ð ,ð&?ð ?ð ?ð
Bð Bð Bð,ð ,ð ,ð
,ð ,ð ,ð/ð /ð /ð /ð /r   r1   c                 óÀ   — | j                              dd¬¦  «         t          | j        dd¦  «        }|�&|                     | j         j        ¦  «        }|j        S d„ }|S )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.
    ÚC3z.record_xml_property is an experimental feature)Úcoderg   Ú_xmlNc                 ó   — d S r>   r
   rL   s     r   Úadd_property_noopz.record_xml_property.<locals>.add_property_noopÇ   s   € ØˆDr   )rA   Úwarnro   ÚconfigÚnode_reporterr;   rG   )Úrequestr)   r¡   rž   s       r   Úrecord_xml_propertyr£   ¸   s{   € ð „L×ÒØØ@ð ñ ô ð õ �'”. &¨$Ñ
/Ô
/€CØ
€Ø×)Ò)¨'¬,Ô*=Ñ>Ô>ˆØÔ)Ð)ð	ð 	ð 	ð !Ð r   c           	      óž   — |                       d¦  «        }|                     dddddd d¬¦  «         |                     d	d
ddd d¬¦  «         d S )Nzterminal reportingz
--junitxmlz--junit-xmlÚstoreÚxmlpathÚpathz1create junit-xml style report file at given path.)ÚactionÚdestÚmetavarÚdefaultÚhelpz--junitprefixz--junit-prefixrC   z0prepend prefix to classnames in junit-xml output)r¨   rª   r«   r¬   )ÚgetgroupÚ	addoption)Úparserr$   s     r   Úpytest_addoptionr°   Í   s„   € Ø�OŠOÐ0Ñ1Ô1€EØ	‡O‚OØ�mØØØØØ@ð ñ Bô Bð Bð 
‡O‚OØÐ)ØØØØ?ð ñ Aô Að Að Að Ar   c                 óÆ   — | j         j        }|rPt          | d¦  «        sBt          || j         j        ¦  «        | _        | j                             | j        ¦  «         d S d S d S )NÚ
slaveinput)Úoptionr¦   r|   ÚLogXMLÚjunitprefixrœ   ÚpluginmanagerÚregister)r    r¦   s     r   Úpytest_configurer¸   Þ   sn   € ØŒmÔ#€Gàð 3•w˜v |Ñ4Ô4ð 3Ý˜W f¤mÔ&?Ñ@Ô@ˆŒØÔ×%Ò% f¤kÑ2Ô2Ð2Ð2Ð2ð3ð 3ð 3ð 3r   c                 óh   — t          | dd ¦  «        }|r| `| j                             |¦  «         d S d S )Nrœ   )ro   rœ   r¶   Ú
unregister)r    r)   s     r   Úpytest_unconfigurer»   æ   sG   € Ý
�&˜& $Ñ
'Ô
'€CØ
ð -ØˆKØÔ×'Ò'¨Ñ,Ô,Ð,Ð,Ð,ð-ð -r   c                 ó\  — |                       d¦  «        \  }}}|                     d¦  «        }	 |                     d¦  «         n# t          $ r Y nw xY w|d                              dd¦  «        |d<   t
                               d|d         ¦  «        |d<   |dxx         ||z   z  cc<   |S )	Nú[z::z()r   ú/rT   r   rS   )Ú	partitionÚsplitÚremoveÚ
ValueErrorÚreplaceÚ
_py_ext_rer,   )Úaddressr§   Úpossible_open_bracketÚparamsr_   s        r   rY   rY   í   sÃ   € Ø*1×*;Ò*;¸CÑ*@Ô*@Ñ'€DÐ
 Ø�JŠJ�tÑÔ€EðØ�Š�TÑÔÐÐøÝð ð ð Øˆðøøøð �QŒx×Ò  SÑ)Ô)€Eˆ!�HÝ�~Š~˜b %¨¤(Ñ+Ô+€Eˆ!�Hà	ˆ"€I€I„IÐ&¨Ñ/Ñ/€I€I�IØ€Ls   °A Á
AÁAc                   ób   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ ZdS )r´   c                 ó|  — t           j                             t           j                             |¦  «        ¦  «        }t           j                             t           j                             |¦  «        ¦  «        | _        || _        t           	                    g d¢d¦  «        | _
        i | _        g | _        g | _        d S )N)r„   rv   r€   r}   r   )Úosr§   Ú
expanduserÚ
expandvarsÚnormpathÚabspathÚlogfilerZ   ÚdictÚfromkeysÚstatsÚnode_reportersÚnode_reporters_orderedÚglobal_properties)r:   rÏ   rZ   s      r   r<   zLogXML.__init__ý   sœ   € Ý”'×$Ò$¥R¤W×%7Ò%7¸Ñ%@Ô%@ÑAÔAˆÝ”w×'Ò'­¬¯ª¸Ñ(@Ô(@ÑAÔAˆŒØˆŒÝ—]’]ð $
ð $
ð $
ð
 ñô ˆŒ
ð !ˆÔØ&(ˆÔ#Ø!#ˆÔÐÐr   c                 ó²   — t          |d|¦  «        }t          |dd ¦  «        }| j                             ||f¦  «        }|�|                     ¦   «          d S d S ©Nr;   rA   )ro   rÓ   Úpopr˜   )r:   rp   r;   Ú	slavenodeÚreporters        r   r˜   zLogXML.finalize  se   € Ý˜ ¨6Ñ2Ô2ˆå˜F F¨DÑ1Ô1ˆ	ØÔ&×*Ò*¨F°IÐ+>Ñ?Ô?ˆØÐØ×ÒÑÔÐÐÐð  Ðr   c                 óæ   — t          |d|¦  «        }t          |dd ¦  «        }||f}|| j        v r| j        |         S t          || ¦  «        }|| j        |<   | j                             |¦  «         |S r×   )ro   rÓ   r1   rÔ   r@   )r:   rp   r;   rÙ   ÚkeyrÚ   s         r   r¡   zLogXML.node_reporter  s‚   € Ý˜ ¨6Ñ2Ô2ˆå˜F F¨DÑ1Ô1ˆ	à�iÐˆà�$Ô%Ð%Ð%àÔ& sÔ+Ð+å  ¨Ñ.Ô.ˆà#+ˆÔ˜CÑ ØÔ#×*Ò*¨8Ñ4Ô4Ð4àˆr   c                 óF   — || j         v r| j         |xx         dz  cc<   d S d S )NrW   )rÒ   )r:   rÜ   s     r   r4   zLogXML.add_stats%  s3   € Ø�$”*ÐÐØŒJ�sˆOˆOŒO˜qÑ ˆOˆO‰OˆOˆOð Ðr   c                 óZ   — |                       |¦  «        }|                     |¦  «         |S r>   )r¡   ra   ©r:   rp   rÚ   s      r   Ú_opentestcasezLogXML._opentestcase)  s.   € Ø×%Ò% fÑ-Ô-ˆØ×"Ò" 6Ñ*Ô*Ð*Øˆr   c                 óö  — |j         r6|j        dk    r*|                      |¦  «        }|                     |¦  «         n„|j        rL|                      |¦  «        }|j        dk    r|                     |¦  «         nG|                     |¦  «         n1|j        r*|                      |¦  «        }|                     |¦  «         |  	                    |¦  «         |j        dk    r|  
                    |¦  «         dS dS )a  handle 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
        ÚcallÚteardownN)rv   Úwhenrà   rx   Úfailedr‚   r‰   r}   r�   Úupdate_testcase_durationr˜   rß   s      r   Úpytest_runtest_logreportzLogXML.pytest_runtest_logreport.  s  € ð. Œ=ð 	,ØŒ{˜fÒ$Ð$Ø×-Ò-¨fÑ5Ô5�Ø×$Ò$ VÑ,Ô,Ð,øØŒ]ð 	,Ø×)Ò)¨&Ñ1Ô1ˆHØŒ{˜fÒ$Ð$Ø×'Ò'¨Ñ/Ô/Ð/Ð/à×%Ò% fÑ-Ô-Ð-Ð-ØŒ^ð 	,Ø×)Ò)¨&Ñ1Ô1ˆHØ×#Ò# FÑ+Ô+Ð+Ø×%Ò% fÑ-Ô-Ð-ØŒ;˜*Ò$Ð$Ø�MŠM˜&Ñ!Ô!Ð!Ð!Ð!ð %Ð$r   c                 ón   — |                       |¦  «        }|xj        t          |dd¦  «        z  c_        dS )zŽaccumulates total duration for nodeid from given report and updates
        the Junit.testcase with the new total if already created.
        r5   g        N)r¡   r5   ro   rß   s      r   ræ   zLogXML.update_testcase_durationV  s=   € ð ×%Ò% fÑ-Ô-ˆØÐÔ�W V¨Z¸Ñ=Ô=Ñ=ÐÔÐÐr   c                 ó¨   — |j         sJ|                      |¦  «        }|j        r|                     |¦  «         d S |                     |¦  «         d S d S r>   )rv   rà   rå   r…   r‡   rß   s      r   Úpytest_collectreportzLogXML.pytest_collectreport]  sg   € ØŒ}ð 	8Ø×)Ò)¨&Ñ1Ô1ˆHØŒ}ð 8Ø×-Ò-¨fÑ5Ô5Ð5Ð5Ð5à×/Ò/°Ñ7Ô7Ð7Ð7Ð7ð	8ð 	8r   c                 óª   — |                       d¦  «        }|j                             dd¬¦  «         |                     t          j        d|¦  «         d S )NÚinternalÚpytest)rU   rE   zinternal error)r¡   r9   Úupdaterj   r   r„   )r:   ÚexcreprrÚ   s      r   Úpytest_internalerrorzLogXML.pytest_internalerrore  sQ   € Ø×%Ò% jÑ1Ô1ˆØŒ×Ò¨°zÐÑBÔBÐBØ×Ò�Uœ[Ð*:¸GÑDÔDÐDÐDÐDr   c                 ó6   — t          j         ¦   «         | _        d S r>   )rc   Úsuite_start_timerP   s    r   Úpytest_sessionstartzLogXML.pytest_sessionstartj  s   € Ý $¤	¡¤ˆÔÐÐr   c                 ó2  — t           j                             t           j                             | j        ¦  «        ¦  «        }t           j                             |¦  «        st          j        |¦  «         t          | j        dd¬¦  «        }t          j        ¦   «         }|| j	        z
  }| j
        d         | j
        d         z   | j
        d         z   | j
        d         z   }|                     d¦  «         |                     t                               |                      ¦   «         d	„ | j        D ¦   «         d
| j
        d         | j
        d         | j
        d         |d|z  ¬¦  «                             d¬¦  «        ¦  «         |                     ¦   «          d S )NÚwzutf-8)Úencodingrv   r€   r}   r„   z&<?xml version="1.0" encoding="utf-8"?>c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r
   )rd   r   s     r   r   z/LogXML.pytest_sessionfinish.<locals>.<listcomp>{  s    € Ð=Ð=Ð=˜AˆQ�XŠX‰ZŒZÐ=Ð=Ð=r   rí   z%.3f)rE   ÚerrorsÚfailuresÚskipsÚtestsrc   r   r’   )rÊ   r§   ÚdirnamerÎ   rÏ   ÚisdirÚmakedirsr   rc   rò   rÒ   Úwriter   Ú	testsuiteÚ_get_global_properties_noderÔ   r   Úclose)r:   rü   rÏ   Úsuite_stop_timeÚsuite_time_deltaÚnumtestss         r   Úpytest_sessionfinishzLogXML.pytest_sessionfinishm  sb  € Ý”'—/’/¥"¤'§/¢/°$´,Ñ"?Ô"?Ñ@Ô@ˆÝŒw�}Š}˜WÑ%Ô%ð 	!ÝŒK˜Ñ Ô Ð Ý�t”| S°7Ð;Ñ;Ô;ˆÝœ)™+œ+ˆØ*¨TÔ-BÑBÐà”:˜hÔ'¨$¬*°YÔ*?Ñ?À$Ä*ÈYÔBWÑWÐZ^ÔZdÐelÔZmÑmˆà�ŠÐ>Ñ?Ô?Ð?à�Š•e—o’oØ×,Ò,Ñ.Ô.Ø=Ð= Ô!<Ð=Ñ=Ô=ØØ”:˜gÔ&Ø”Z 	Ô*Ø”*˜YÔ'ØØÐ*Ñ*ð &ñ .ô .÷ /6ªg¸Q¨gÑ.?Ô.?ñ	Aô 	Að 	Að 	�Š‰Œˆˆˆr   c                 óB   — |                      dd| j        z  ¦  «         d S )Nú-zgenerated xml file: %s)Ú	write_seprÏ   )r:   Úterminalreporters     r   Úpytest_terminal_summaryzLogXML.pytest_terminal_summary„  s5   € Ø×"Ò" 3Ø#;¸t¼|Ñ#Lñ	Nô 	Nð 	Nð 	Nð 	Nr   c                 ór   — | j                              t          |¦  «        t          |¦  «        f¦  «         d S r>   )rÕ   r@   rC   r/   rD   s      r   Úadd_global_propertyzLogXML.add_global_propertyˆ  s2   € ØÔ×%Ò%¥s¨4¡y¤yµ.ÀÑ2GÔ2GÐ&HÑIÔIÐIÐIÐIr   c                 óf   — | j         r)t                               d„ | j         D ¦   «         ¦  «        S dS )rI   c                 óL   — g | ]!\  }}t                                ||¬ ¦  «        ‘Œ"S rK   rM   rO   s      r   r   z6LogXML._get_global_properties_node.<locals>.<listcomp>�  s<   € ð ð ð á'˜D %õ Ÿš¨D¸˜Ñ>Ô>ðð ð r   r   )rÕ   r   r6   rP   s    r   r  z"LogXML._get_global_properties_node‹  sM   € ð Ô!ð 	Ý×#Ò#ðð à+/Ô+Aðñ ô ñô ð ð ˆrr   N)r   r   r	   r<   r˜   r¡   r4   rà   rç   ræ   rê   rð   ró   r  r  r  r  r
   r   r   r´   r´   ü   sð   € € € € € ð$ð $ð $ð ð  ð  ðð ð ð$!ð !ð !ðð ð ð
&"ð &"ð &"ðP>ð >ð >ð8ð 8ð 8ðEð Eð Eð
,ð ,ð ,ðð ð ð.Nð Nð NðJð Jð Jð
ð 
ð 
ð 
ð 
r   r´   )$Ú__doc__r(   rÊ   Úrer   rc   rí   Úversion_infoÚcodecsr   Úchrr   rC   r   ÚintÚlongr)   Ú	Namespacer   Ú_legal_charsÚ_legal_rangesÚ_legal_xml_reÚcompiler\   r+   rÄ   r/   Úobjectr1   Úfixturer£   r°   r¸   r»   rY   r´   r
   r   r   ú<module>r     s$  ððð ð 
€	€	€	Ø 	€	€	€	Ø 	€	€	€	Ø 
€
€
€
Ø €€€Ø €€€ð Ô�AÔ˜ÒÐØÐÐÐÐÐÐà€FØ€GØ€Dð	ð 	ð 	ð 	ð 	ˆBŒFÔñ 	ô 	ð 	ð "€ð€ðð à$ðñ ô €ð 2Ð1 LÐ1Ñ1Ô1°MÑA€Ø�”˜G˜G GÑ,Ô,¨w¨w°r©{¬{×/?Ò/?ÀÑ/NÔ/NÑNÑOÔO€ØØØàˆRŒZ˜Ñ!Ô!€
ðDð Dð Dðv/ð v/ð v/ð v/ð v/�Fñ v/ô v/ð v/ðr „ð!ð !ñ „ð!ð(Að Að Að"3ð 3ð 3ð-ð -ð -ðð ð ðYð Yð Yð Yð YˆVñ Yô Yð Yð Yð Yr   