3
d                  @   s   d dl m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d dlm	Z	 e
jejdd  d Zdd Zdd	 Zd
d Zdd Zdd ZdddZdS )    )print_functionN)PY3   z/datac             C   sr   t | ts| g} g }xX| D ]P}t |ts0t|}x8t|D ],}|| }t |tjr:t|dr:|j| q:W qW |S )Nunittest)	
isinstancelistdictvarssortedtypesFunctionTypehasattrappend)collectionsZ	functionsZ
collectionkeyvalue r   Z/var/www/html/virt/lib64/python3.6/site-packages/srsly/tests/ruamel_yaml/test_appliance.pyfind_test_functions   s    


r   c             C   st   i }x^t j| D ]P}t jjt jj| |rt jj|\}}|jtrFdndrNq|j|g j	| qW t
|j }|S )Nz-py2z-py3)oslistdirpathisfilejoinsplitextendswithr   
setdefaultr   r
   items)	directory	filenamesfilenamebaseextr   r   r   find_test_filenames    s    r#   c             C   s   t jdd}|jddddtjkdd |jd	dd
d |jdddd |jdddd |j| } | j}| jrt| jgng }| j}dtjkr|j	tjd j
  dtjkr|j	tjd j
  |||| fS ) a   run the yaml tests. By default
    all functions on all appropriate test_files are run. Functions have
    unittest attributes that determine the required extensions to filenames
    that need to be available in order to run that test. E.g.


    python test_yaml.py test_constructor_types

    python test_yaml.py --verbose test_tokens spec-02-05


    The presence of an extension in the .skip attribute of a function
    disables the test for that function.)usagez	--verbosez-v
store_trueZYAML_TEST_VERBOSEzset verbosity output)actiondefaulthelpz--list-functionszHlist all functions with required file extensions for test files
        )r'   r)   function?zrestrict function to run)nargsr)   r   *zbasename of filename set, extensions (.code, .data) have to
        be a superset of those in the unittest attribute of the selected
        functionZYAML_TEST_FUNCTIONSZYAML_TEST_FILENAMES)argparseArgumentParseradd_argumentr   environ
parse_argsverboser*   r   extendsplit)argsparserr3   include_functionsinclude_filenamesr   r   r   parse_arguments,   s4    


r:   c             C   s  t r| j}nt| dr| j}n| j}|rVtjjdd d  tjjd|dj|f  y| |d|i W nn t	k
r } zRtj
 }t|trd}nd	}|rtjd
tjd ntjj|d  tjj  W Y d d }~X nX d}d }|stjjd tjj  ||||fS )Nunittest_name=K   
z
%s(%s)...
z, r3   FAILUREERROR   )limitfiler   SUCCESS.)r   __name__r   r;   	func_namesysstdoutwriter   	Exceptionexc_infor   AssertionError	traceback	print_excflush)r*   r   r3   nameexcinfokindr   r   r   executej   s2    


rU   c             C   s.  | r| rt jjd t| }d}d}x| D ]\}}}}|dkrFq.|dkrV|d7 }|dkrf|d7 }t jjdd d  t jjd	|d
j||f  |dkrtj|dt ji npt jjd tj|d t jd t jjd|d j  t jjdd d  x$|d j	D ]}	t
j
|	t jd qW x|D ]}
t jjdd d  t jjd|
  trzt|
ddd}|j }W d Q R X nt|
d}|j }W d Q R X t jj| |r(|d dkr(t jjd q(W q.W t jjdd d  t jjd|  d}|rt jjd|  d}|r*t jjd|  d}|S )Nr>   r   rD   r?   rA   r@   r<   r=   z%s(%s): %s
z, rC   z#Traceback (most recent call last):
r   )rC   z%s: see below
~)stream-z%s:
rreplace)errorsrbz
TESTS: %s
zFAILURES: %s
zERRORS: %s
)rH   rI   rJ   lenr   rN   print_exceptionprint_tbrF   r6   pprintr   openread)resultsr3   totalZfailuresr[   rQ   r   rT   rS   argr    fpdataZret_valr   r   r   display   sV    

ri   c             C   s2  t | }tt}t|\}}}}|jrTtd x |D ]}tdj|j|j q4W d S g }	x|D ]}
|rr|
j|krrq^|
jrx|D ]\}}|r||krqg }xj|
jD ]&}||krP |j	t
jjt||  qW t|
dg }x,|D ]}||krP qW t|
||}|	j	| qW q^t|
g |}|	j	| q^W t|	|dS )Nztest functions:z  {:30s} {}skip)r3   )r   r#   DATAr:   Zlist_functionsprintformatrF   r   r   r   r   r   getattrrU   ri   )r   r6   Ztest_functionsZtest_filenamesr8   r9   r3   afrd   r*   r!   extsr   r"   Z	skip_extsZskip_extresultr   r   r   run   s<    


rs   )N)
__future__r   rH   r   r   rN   ra   r.   Zsrsly.ruamel_yaml.compatr   __file__rsplitseprk   r   r#   r:   rU   ri   rs   r   r   r   r   <module>   s   >!0