o
    >�Ò]w  ã                   @   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                 _   ó   d S ©N© )ÚselfÚargsÚkwargsr   r   ú;/usr/lib/python3/dist-packages/jsonschema/tests/test_cli.pyÚ__init__   ó   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   r	   r
   r   )r   Úschemar   r   r   Úcheck_schema   r   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"   Ú
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_fileÚ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 )Nr0   r   r1   r2   )r   r3   r(   r)   r4   r   r5   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#   r7   r8   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   sp   t ƒ t ƒ }}|  t¡�" tjtdddiddiddigidgd	d
œ||d� W d   ƒ d S 1 s1w   Y  d S )NÚanyOfÚminimumé   ÚtypeÚstringÚrequiredTé   ú{error.message}©r2   r   Ú	instancesÚerror_format©ÚstdoutÚstderr)r   ÚassertRaisesr   r   Úrunr   )r   rF   rG   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@   rA   rB   rE   r   )r   r   rI   r    ÚassertFalseÚgetvalueÚassertEqual)r   rF   rG   Ú	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}rB   rE   z1 - I am an error!©r   r   r   rI   r    rK   rL   rM   )r   ÚerrorrF   rG   rN   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@   rP   Ú8Ú7é   z#{error.instance} - {error.message}	rB   rE   z1 - 9	1 - 8	2 - 7	rQ   )r   Úfirst_errorsÚsecond_errorsrF   rG   rN   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)rG   zutf-8)	Ú
subprocessÚcheck_outputÚsysÚ
executableÚSTDOUTÚdecodeÚstriprM   r   )r   Úversionr   r   r   Útest_version‘   s   þzTestCLI.test_versionN)r   r   r   rJ   rO   rS   rZ   rd   r   r   r   r   r9   F   s    r9   )Úunittestr   r,   r\   r^   r[   r   r   r   r   Újsonschema.compatr   Újsonschema.exceptionsr   r    r!   r9   r   r   r   r   Ú<module>   s    )