U
    [ew                     @   s   d dl mZ d dlZd dlZd dlZd dlmZmZmZm	Z	 d dl
mZ d dlmZ dd ZG dd	 d	eZG d
d deZdS )    )TestCaseN)Draft4ValidatorValidationErrorcli__version__)NativeIO)SchemaErrorc                     s$   t t  G  fdddt}|S )Nc                       s(   e Zd Zdd Z fddZdd ZdS )z%fake_validator.<locals>.FakeValidatorc                 _   s   d S N )selfargskwargsr
   r
   [/var/www/html/services/stratfitenv/lib/python3.8/site-packages/jsonschema/tests/test_cli.py__init__   s    z.fake_validator.<locals>.FakeValidator.__init__c                    s    r   S g S r	   )pop)r   instanceerrorsr
   r   iter_errors   s    z1fake_validator.<locals>.FakeValidator.iter_errorsc                 S   s   d S r	   r
   )r   schemar
   r
   r   check_schema   s    z2fake_validator.<locals>.FakeValidator.check_schemaN)__name__
__module____qualname__r   r   r   r
   r   r
   r   FakeValidator   s   r   )listreversedobject)r   r   r
   r   r   fake_validator   s    r   c                   @   s:   e Zd Ze ZdZdZdd Zdd Zdd Z	d	d
 Z
dS )
TestParserzfoo.jsonzschema.jsonc                 C   s   | j t_| ttd d S )Nopen)	fake_openr   r    Z
addCleanupdelattr)r   r
   r
   r   setUp#   s    zTestParser.setUpc                 C   s>   || j krd}n || jkr i }n| d| tt|S )N zWhat is {!r})instance_fileschema_fileZfailformatr   jsondumps)r   pathcontentsr
   r
   r   r!   '   s    

zTestParser.fake_openc                 C   s.   t ddd| j| jg}| |d | j d S )N--validatorz2jsonschema.tests.test_cli.TestParser.FakeValidator
--instance	validator)r   
parse_argsr%   r&   assertIsr   r   	argumentsr
   r
   r   2test_find_validator_by_fully_qualified_object_name0   s     z=TestParser.test_find_validator_by_fully_qualified_object_namec                 C   s,   t ddd| j| jg}| |d t d S )Nr,   r   r-   r.   )r   r/   r%   r&   r0   r   r1   r
   r
   r   !test_find_validator_in_jsonschema;   s      z,TestParser.test_find_validator_in_jsonschemaN)r   r   r   r   r   r%   r&   r#   r!   r3   r4   r
   r
   r
   r   r      s   	r   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestCLIc              	   C   sZ   t  t   }}| t8 tjtdddiddiddigidgd	d
||d W 5 Q R X d S )NZanyOfminimum   typestringrequiredT   {error.message}r.   r   Z	instancesZerror_formatstdoutstderr)r   assertRaisesr   r   runr   )r   r?   r@   r
   r
   r   #test_draft3_schema_draft4_validatorG   s     z+TestCLI.test_draft3_schema_draft4_validatorc                 C   sX   t  t   }}tjt i dgdd||d}| |  | |  | |d d S )Nr;   r<   r=   r>   r   )r   r   rB   r   assertFalsegetvalueassertEqual)r   r?   r@   	exit_coder
   r
   r   test_successful_validation[   s    
z"TestCLI.test_successful_validationc                 C   sj   t ddd}t t  }}tjt|gi dgdd||d}| |  | | d | |d d S )NzI am an error!r;   r   z"{error.instance} - {error.message}r=   r>   z1 - I am an error!r   r   r   rB   r   rD   rE   rF   )r   errorr?   r@   rG   r
   r
   r   test_unsuccessful_validationk   s    
z$TestCLI.test_unsuccessful_validationc                 C   s   t dddt dddg}t dddg}t t  }}tjt||i ddgdd||d	}| |  | | d
 | |d d S )N9r;   rI   87   z#{error.instance} - {error.message}	r=   r>   z1 - 9	1 - 8	2 - 7	rJ   )r   Zfirst_errorsZsecond_errorsr?   r@   rG   r
   r
   r   /test_unsuccessful_validation_multiple_instances|   s"    


z7TestCLI.test_unsuccessful_validation_multiple_instancesc                 C   s8   t jtjdddgt jd}|d }| |t d S )Nz-m
jsonschemaz	--version)r@   zutf-8)	
subprocesscheck_outputsys
executableSTDOUTdecodestriprF   r   )r   versionr
   r
   r   test_version   s    zTestCLI.test_versionN)r   r   r   rC   rH   rL   rQ   r[   r
   r
   r
   r   r5   F   s
   r5   )Zunittestr   r(   rS   rU   rR   r   r   r   r   Zjsonschema.compatr   Zjsonschema.exceptionsr   r   r   r5   r
   r
   r
   r   <module>   s   )