a
    xd*                     @   s   d dl Z d dlZd dlZd dlZd dlmZ d dlZdd Z	G dd de
Zdd ed	D Zd
d ZG dd de
Zdd ZG dd de
ZG dd de
ZdS )    N)	quoteattrc                 C   s   | j jt| j | jfS N)suitenameidpath_in_suite)test r	   T/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/lit/reports.pyby_suite_and_test_path   s    r   c                   @   s   e Zd Zdd Zdd ZdS )
JsonReportc                 C   s
   || _ d S r   output_fileselfr   r	   r	   r
   __init__   s    zJsonReport.__init__c                    s  t jjt jjh  fdd|D }i }t j|d< ||d< g  |d< }|D ]}| |jjj|jj	|jj
d}|jjri  |d< }|jj D ]\}}	|	 ||< q|jjr,|jj D ]r\}}
| }|d | }||
jj|
j	|
j
d}|
jr i  |d< }|
j D ]\}}	|	 ||< q|| q|| qHt| jd	,}tj||d
dd |d W d    n1 sx0    Y  d S )Nc                    s   g | ]}|j j vr|qS r	   resultcode.0tZunexecuted_codesr	   r
   
<listcomp>       z,JsonReport.write_results.<locals>.<listcomp>__version__elapsedtests)r   r   outputr   metrics:w   Tindent	sort_keys
)litTestEXCLUDEDSKIPPED__versioninfo__getFullNamer   r   r   r   r   r   itemsZtodatamicroResultsappendopenr   jsondumpwrite)r   r   r   data
tests_datar   	test_dataZmetrics_datakeyvalue
micro_testparent_namemicro_full_nameZmicro_test_dataZmicro_metrics_datafiler	   r   r
   write_results   sD    

zJsonReport.write_resultsN__name__
__module____qualname__r   r=   r	   r	   r	   r
   r      s   r   c                 C   s   i | ]}t |d vr|dqS ))	r&   N)chr)r   cr	   r	   r
   
<dictcomp>I   r   rF       c                 C   s
   |  tS r   )	translate_invalid_xml_chars_dict)sr	   r	   r
   remove_invalid_xml_charsL   s    rK   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )XunitReportc                 C   s"   || _ tjjtjjtjjh| _d S r   r   r'   r(   r)   r*   UNSUPPORTEDskipped_codesr   r	   r	   r
   r   X   s    zXunitReport.__init__c                 C   s   |j td t|dd }t| jdV}|d |dj|d |D ]\}}| ||t	| qJ|d W d    n1 s0    Y  d S )	N)r7   c                 S   s   | j S r   )r   )r   r	   r	   r
   <lambda>_   r   z+XunitReport.write_results.<locals>.<lambda>r!   z'<?xml version="1.0" encoding="UTF-8"?>
z<testsuites time="{time:.2f}">
)timez</testsuites>
)
sortr   	itertoolsgroupbyr0   r   r3   format_write_testsuitelist)r   r   r   Ztests_by_suiter<   r   Z	test_iterr	   r	   r
   r=   ]   s    
zXunitReport.write_resultsc                    s   t  fdd|D }t dd |D }|jjdd}|dt| dt| d| d	| d
	 |D ]} ||| qh|d d S )Nc                 3   s    | ]}|j j jv rd V  qdS    N)r   r   rO   r   r   r	   r
   	<genexpr>i   r   z/XunitReport._write_testsuite.<locals>.<genexpr>c                 s   s   | ]}|  rd V  qdS rX   )	isFailurer   r	   r	   r
   r[   j   r   .-z<testsuite name=z tests="z" failures="z" skipped="z">
z</testsuite>
)sumconfigr   replacer3   quolen_write_test)r   r<   r   r   skippedZfailuresr   r   r	   rZ   r
   rV   h   s    ,zXunitReport._write_testsuitec           
   	   C   s   d |jd d dd}| d|p(| }|jd }|jjpBd}|dt| dt| d|d	d
 | r|d |jjdd}t	|t
r|dd}t|}|| |d n:|jj| jv r| |}	|dt|	 d n
|d d S )N/r]   _        z<testcase classname=z name=z time="z.2f"z>
  <failure><![CDATA[z]]>z]]]]><![CDATA[>utf-8ignorez]]></failure>
</testcase>
z>
  <skipped message=z/>
</testcase>
z/>
)joinr   ra   r   r   r3   rb   r\   r   
isinstancebytesdecoderK   r   rO   _get_skip_reason)
r   r<   r   Z
suite_namepath
class_namer   rQ   r   reasonr	   r	   r
   rd   r   s"    
(



zXunitReport._write_testc                 C   sV   |j j}|tjjkrdS |tjjkr(dS |tjjks8J | }|rRdd| S dS )Nz)Test not selected (--filter, --max-tests)zUser interruptzMissing required feature(s): z, zUnsupported configuration)	r   r   r'   r(   r)   r*   rN   ZgetMissingRequiredFeaturesrm   )r   r   r   featuresr	   r	   r
   rq      s    zXunitReport._get_skip_reasonN)r?   r@   rA   r   r=   rV   rd   rq   r	   r	   r	   r
   rL   W   s
   
rL   c                 C   s   | t j | d d| dddt|ddii|d}|tjj	ksd|tjj
ksd|tjjkrnd|d	< np|tjjks|tjjkrd
|d	< nN|tjjks|tjjks|tjjkrd|d	< n |tjjks|tjjkrd|d	< |S )NZz%.9fsz@<p><text-artifact artifact-id="artifact-content-in-request"></p>zartifact-content-in-requestcontentsrk   )ZtestId
start_timedurationZsummary_htmlZ	artifactsexpectedPASSstatusFAILZSKIPZABORT)datetimefromtimestamp	isoformatbase64	b64encodeencoderp   r'   r(   r{   ZXPASSZ	FLAKYPASSr}   ZXFAILrN   r*   r)   Z
UNRESOLVEDTIMEOUT)	test_namerx   elapsed_timetest_outputresult_codeis_expectedr6   r	   r	   r
   gen_resultdb_test_entry   s>    








r   c                   @   s   e Zd Zdd Zdd ZdS )ResultDBReportc                 C   s
   || _ d S r   r   r   r	   r	   r
   r      s    zResultDBReport.__init__c                    sL  t jjt jjh  fdd|D }i }t j|d< ||d< g  |d< }|D ]}|t| |jj	|jj
|jj|jj|jjj d |jjrH|jj D ]d\}}| }|d | d }	|t|	|j	r|j	n|jj	|j
r|j
n|jj
|j|j|jj d qqHt| jd	,}
tj||
d
dd |
d W d    n1 s>0    Y  d S )Nc                    s   g | ]}|j j vr|qS r	   r   r   r   r	   r
   r      r   z0ResultDBReport.write_results.<locals>.<listcomp>r   r   r   )r   rx   r   r   r   r   r    Zmicroresr!   r"   Tr#   r&   )r'   r(   r)   r*   r+   r/   r   r,   r   startr   r   r   r\   r.   r-   r0   r   r1   r2   r3   )r   r   r   r4   r5   r   r7   r9   r:   r;   r<   r	   r   r
   r=      sL    


zResultDBReport.write_resultsNr>   r	   r	   r	   r
   r      s   r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TimeTraceReportc                 C   s"   || _ tjjtjjtjjh| _d S r   rM   r   r	   r	   r
   r      s    zTimeTraceReport.__init__c                    sp   t dd |D   fdd|D }d|i}tjd"}tj||ddd W d    n1 sb0    Y  d S )	Nc                 S   s   g | ]}|j jqS r	   )r   r   r   r	   r	   r
   r      r   z1TimeTraceReport.write_results.<locals>.<listcomp>c                    s&   g | ]}|j jjvr| qS r	   )r   r   rO   _get_test_event)r   xfirst_start_timer   r	   r
   r      s   ZtraceEventsr!   r"   Tr#   )minr0   r   r1   r2   )r   r   r   eventsZ	json_dataZtime_trace_filer	   r   r
   r=      s    zTimeTraceReport.write_resultsc                 C   sZ   |  }|jjpd}|jjr(|jj| nd}|jjp6d}|ddt|d t|d |dS )Nri   r   rY   Xg    .A)pidtidphtsZdurr   )r,   r   r   r   r   int)r   r   r   r   r   rx   r   r	   r	   r
   r     s    

zTimeTraceReport._get_test_eventN)r?   r@   rA   r   r=   r   r	   r	   r	   r
   r      s   r   )r   r~   rS   r1   xml.sax.saxutilsr   rb   Zlit.Testr'   r   objectr   rangerI   rK   rL   r   r   r   r	   r	   r	   r
   <module>   s   8G$0