Ë
    ùmxi€o  ã                   ó�  — d dl mZmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ 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mZ d d
lmZmZmZ d dlmZmZ  ej<                  «       5   ej>                  d«       d dlm Z  ddd«       d„ Z!d„ Z"d„ Z# G d„ de«      Z$ G d„ de«      Z% G d„ de«      Z&y# 1 sw Y   Œ4xY w)é    )Úredirect_stderrÚredirect_stdout)Úmetadata)ÚStringIO)ÚJSONDecodeError)ÚPath)Údedent)ÚTestCaseN)ÚDraft4ValidatorÚDraft202012Validator)ÚSchemaErrorÚValidationErrorÚ_RefResolutionError)Ú_LATEST_VERSIONÚvalidateÚignore)Úclic                  óH   ‡ — t        t        ‰ «      «      Š  G ˆ fd„d«      }|S )Nc                   ó.   •— e Zd Zd„ Zˆ fd„Zed„ «       Zy)ú%fake_validator.<locals>.FakeValidatorc                  ó   — y ©N© )ÚselfÚargsÚkwargss      úP/home/htdocs/ttos/venv/lib/python3.12/site-packages/jsonschema/tests/test_cli.pyÚ__init__z.fake_validator.<locals>.FakeValidator.__init__    s   € Øó    c                 ó,   •— ‰r‰j                  «       S g S r   )Úpop)r   ÚinstanceÚerrorss     €r   Úiter_errorsz1fake_validator.<locals>.FakeValidator.iter_errors#   s   ø€ ÙØ—z‘z“|Ð#ØˆIr   c                  ó   — y r   r   ©r   Úschemas     r   Úcheck_schemaz2fake_validator.<locals>.FakeValidator.check_schema(   s   € àr   N)Ú__name__Ú
__module__Ú__qualname__r   r$   Úclassmethodr(   )r#   s   €r   ÚFakeValidatorr      s!   ø„ ò	ô	ð
 
ñ	ó 
ñ	r   r-   )ÚlistÚreversed)r#   r-   s   ` r   Úfake_validatorr0      s$   ø€ Ü”(˜6Ó"Ó#€F÷ó ð Ðr   c                 ó   ‡ — ˆ fd„}|S )Nc                 óV   •— ‰j                  | «      }|€t        | «      ‚t        |«      S r   )ÚgetÚFileNotFoundErrorr   )ÚpathÚcontentsÚall_contentss     €r   Úopenzfake_open.<locals>.open0   s/   ø€ Ø×#Ñ# DÓ)ˆØÐÜ# DÓ)Ð)Ü˜Ó!Ð!r   r   )r7   r8   s   ` r   Ú	fake_openr9   /   s   ø€ ô"ð
 €Kr   c                 ó†   — 	 t        j                  | «       t        d«      ‚# t        $ r}t	        |«      cY d }~S d }~ww xY w)Nz.Tried and failed to capture a JSON dump error.)ÚjsonÚloadsÚRuntimeErrorr   Ústr)Únon_jsonÚerrors     r   Ú_message_forrA   8   s>   € ðMÜ�
‰
�8Ôô ÐKÓLÐLøô ò Ü�5‹zÕûðús   ‚" ¢	A «
;µA »A c                   ó.  — e Zd Zd e«       dfd„Zd0d„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„ 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$„ Z%d%„ Z&d&„ Z'd'„ Z(d(„ Z)d)„ Z*d*„ Z+d+„ Z,d,„ Z-d-„ Z.d.„ Z/d/„ Z0y)1ÚTestCLINr   c                 ó  — t        j                  |«      }|j                  |«       | j                  t	        t         d«      «       t        |xs i «      t         _        	 t        «       t        «       }}t        j                  ||||¬«      }	t         `| j                  |	|t        d|› d|	› d|j                  «       › d|j                  «       › d�	«      ¬«       |j                  «       |j                  «       fS # t         `w xY w)	Nr8   )ÚstdinÚstdoutÚstderrz.
                    Expected an exit code of z != z.

                    stdout: z

                    stderr: z
                )Úmsg)r   Ú
parse_argsÚupdateÚassertFalseÚhasattrr9   r8   r   ÚrunÚassertEqualr	   Úgetvalue)
r   ÚargvÚfilesrE   Ú	exit_codeÚoverrideÚ	argumentsrF   rG   Úactual_exit_codes
             r   Úrun_clizTestCLI.run_cliB   sý   € ô —N‘N 4Ó(ˆ	Ø×Ñ˜Ô"à×Ñœ¤ fÓ-Ô.Ü˜Uš[ bÓ)ŒŒð		Ü%›Z¬«�FˆFÜ"Ÿw™wØØØØô	 Ðô �à×ÑØ˜i¬Vð.Ø.7¨[¸Ð=MÐ<Nð Oà#Ÿ_™_Ó.Ð/ð 0à#Ÿ_™_Ó.Ð/ð 0ðó.ð 	ô 
	
ð �‰Ó  &§/¡/Ó"3Ð3Ð3øô ‘ús   Á-C8 Ã8D c                 óp   — | j                   | j                  di |¤Žt        |«      t        |«      f«       y )Nr   )rN   rV   r	   )r   rF   rG   r   s       r   ÚassertOutputszTestCLI.assertOutputsb   s1   € Ø×ÑØˆD�L‰LÑ"˜6Ñ"Ü�F‹^œV F›^Ð,õ	
r   c                 ó²   — t        dd¬«      }| j                  t        dt        j                  |j
                  «      ¬«      t        |g«      g d¢dd¬	«       y )
NúI am an error!é   ©r"   ú*{"does not": "matter since it is stubbed"}©Úsome_schemaÚsome_instance©ú-ir`   r_   é   ú12: I am an error!
©rQ   Ú	validatorrP   rR   rG   ©r   rX   Údictr;   Údumpsr"   r0   ©r   r@   s     r   Útest_invalid_instancezTestCLI.test_invalid_instanceh   sR   € ÜÐ 0¸2Ô>ˆØ×ÑÜØHÜ"Ÿj™j¨¯©Ó8ôô % e WÓ-â7àØ)ð 	õ 	
r   c                 ó²   — t        dd¬«      }| j                  t        dt        j                  |j
                  «      ¬«      t        |g«      g d¢dd¬	«       y )
NrZ   r[   r\   r]   r^   ©rb   r`   ú--outputÚprettyr_   rc   z”                ===[ValidationError]===(some_instance)===

                I am an error!
                -----------------------------
            re   rg   rj   s     r   Ú#test_invalid_instance_pretty_outputz+TestCLI.test_invalid_instance_pretty_outputw   sT   € ÜÐ 0¸2Ô>ˆØ×ÑÜØHÜ"Ÿj™j¨¯©Ó8ôô % e WÓ-âMàðð 	õ 	
r   c                 ó²   — t        dd¬«      }| j                  t        dt        j                  |j
                  «      ¬«      t        |g«      g d¢dd¬	«       y )
NrZ   r[   r\   r]   r^   )rn   Úplainrb   r`   r_   rc   rd   re   rg   rj   s     r   Ú+test_invalid_instance_explicit_plain_outputz3TestCLI.test_invalid_instance_explicit_plain_output‹   sR   € ÜÐ 0¸2Ô>ˆØ×ÑÜØHÜ"Ÿj™j¨¯©Ó8ôô % e WÓ-âLàØ)ð 	õ 	
r   c                 ó¾   — d}t        d|¬«      }t        d|¬«      }| j                  t        dt        j                  |«      ¬«      t        ||g«      g d¢dd	¬
«       y )Nr[   úFirst errorr\   úSecond errorr]   r^   ra   rc   zM                12: First error
                12: Second error
            re   ©r   rX   rh   r;   ri   r0   ©r   r"   ÚfirstÚseconds       r   Ú%test_invalid_instance_multiple_errorsz-TestCLI.test_invalid_instance_multiple_errorsš   sb   € ØˆÜ ¸ÔAˆÜ  ¸(ÔCˆà×ÑÜØHÜ"Ÿj™j¨Ó2ôô % e¨V _Ó5â7àðð 	õ 	
r   c                 ó¾   — d}t        d|¬«      }t        d|¬«      }| j                  t        dt        j                  |«      ¬«      t        ||g«      g d¢dd	¬
«       y )Nr[   ru   r\   rv   r]   r^   rm   rc   a                  ===[ValidationError]===(some_instance)===

                First error
                -----------------------------
                ===[ValidationError]===(some_instance)===

                Second error
                -----------------------------
            re   rw   rx   s       r   Ú3test_invalid_instance_multiple_errors_pretty_outputz;TestCLI.test_invalid_instance_multiple_errors_pretty_output¯   sb   € ØˆÜ ¸ÔAˆÜ  ¸(ÔCˆà×ÑÜØHÜ"Ÿj™j¨Ó2ôô % e¨V _Ó5âMàð	ð 	õ 	
r   c           	      ó  — d}t        d|¬«      t        d|¬«      g}d}t        d|¬«      g}| j                  t        dt        j                  |«      t        j                  |«      ¬«      t        ||«      g d	¢d
d¬«       y )Nr[   úAn errorr\   úAnother errorÚfooÚBOOMr]   ©r_   Úsome_first_instanceÚsome_second_instance)rb   r„   rb   r…   r_   rc   ze                12: An error
                12: Another error
                foo: BOOM
            re   rw   ©r   Úfirst_instanceÚfirst_errorsÚsecond_instanceÚsecond_errorss        r   Útest_multiple_invalid_instancesz'TestCLI.test_multiple_invalid_instancesÊ   s‰   € Øˆä˜J°Ô@Ü˜O°nÔEð
ˆð  ˆÜ(¨¸/ÔJÐKˆà×ÑÜØHÜ$(§J¡J¨~Ó$>Ü%)§Z¡Z°Ó%@ôô
 % \°=ÓAòð ðð 	õ 	
r   c           	      ó  — d}t        d|¬«      t        d|¬«      g}d}t        d|¬«      g}| j                  t        dt        j                  |«      t        j                  |«      ¬«      t        ||«      g d	¢d
d¬«       y )Nr[   r   r\   r€   r�   r‚   r]   rƒ   )rn   ro   rb   r„   rb   r…   r_   rc   a¦                  ===[ValidationError]===(some_first_instance)===

                An error
                -----------------------------
                ===[ValidationError]===(some_first_instance)===

                Another error
                -----------------------------
                ===[ValidationError]===(some_second_instance)===

                BOOM
                -----------------------------
            re   rw   r†   s        r   Ú-test_multiple_invalid_instances_pretty_outputz5TestCLI.test_multiple_invalid_instances_pretty_outputé   s‰   € Øˆä˜J°Ô@Ü˜O°nÔEð
ˆð  ˆÜ(¨¸/ÔJÐKˆà×ÑÜØHÜ$(§J¡J¨~Ó$>Ü%)§Z¡Z°Ó%@ôô
 % \°=ÓAòð ðð! 	õ 	
r   c           	      ó  — d}t        d|¬«      t        d|¬«      g}d}t        d|¬«      g}| j                  t        dt        j                  |«      t        j                  |«      ¬«      t        ||«      g d	¢d
d¬«       y )Nr[   r   r\   r€   r�   r‚   r]   rƒ   )ú--error-formatú&:{error.message}._-_.{error.instance}:rb   r„   rb   r…   r_   rc   z5:An error._-_.12::Another error._-_.12::BOOM._-_.foo:re   rw   r†   s        r   Útest_custom_error_formatz TestCLI.test_custom_error_format  s‡   € Øˆä˜J°Ô@Ü˜O°nÔEð
ˆð  ˆÜ(¨¸/ÔJÐKˆà×ÑÜØHÜ$(§J¡J¨~Ó$>Ü%)§Z¡Z°Ó%@ôô
 % \°=ÓAòð ØJð! 	õ 	
r   c                 óD   — | j                  t        d¬«      dgdd¬«       y )Nz{"type": 12}©r_   r_   rc   úO                12: 12 is not valid under any of the given schemas
            ©rQ   rP   rR   rG   ©rX   rh   ©r   s    r   Útest_invalid_schemazTestCLI.test_invalid_schema.  s*   € Ø×ÑÜ >Ô2Ø�àðð 	õ 	
r   c           	      ó*  — ddi}| j                  t        «      5 }t        |d¬«       d d d «       t        j                  «      }| j                  t        t        j                  |«      ¬«      g d¢ddt        |«      z   d	z   ¬
«       y # 1 sw Y   ŒbxY w)NÚtyper[   Ú ©r'   r"   r“   ©rn   ro   r_   rc   ú%===[SchemaError]===(some_schema)===

ú
-----------------------------
r•   ©	ÚassertRaisesr   r   r>   Ú	exceptionrX   rh   r;   ri   ©r   r'   Úer@   s       r   Ú!test_invalid_schema_pretty_outputz)TestCLI.test_invalid_schema_pretty_output9  s‰   € Ø˜"�ˆà×Ñœ{Ó+ð 	1¨qÜ˜F¨RÕ0÷	1ä�A—K‘KÓ ˆà×ÑÜ¤4§:¡:¨fÓ#5Ô6Ú6àà9Ü�e“*ñà5ñ6ð 	õ 
	
÷		1ð 	1ús   šB	Â	Bc                 óD   — | j                  t        d¬«      dgdd¬«       y )Nz{"type": 12, "items": 57}r“   r_   rc   zF                57: 57 is not of type 'object', 'boolean'
            r•   r–   r—   s    r   Ú#test_invalid_schema_multiple_errorsz+TestCLI.test_invalid_schema_multiple_errorsL  s+   € Ø×ÑÜÐ#>Ô?Ø�àðð 	õ 	
r   c           	      ó,  — dddœ}| j                  t        «      5 }t        |d¬«       d d d «       t        j                  «      }| j                  t        t        j                  |«      ¬«      g d¢dd	t        |«      z   d
z   ¬«       y # 1 sw Y   ŒbxY w)Nr[   é9   )rš   Úitemsr›   rœ   r“   r�   rc   rž   rŸ   r•   r    r£   s       r   Ú1test_invalid_schema_multiple_errors_pretty_outputz9TestCLI.test_invalid_schema_multiple_errors_pretty_outputW  sŠ   € Ø rÑ*ˆà×Ñœ{Ó+ð 	1¨qÜ˜F¨RÕ0÷	1ä�A—K‘KÓ ˆà×ÑÜ¤4§:¡:¨fÓ#5Ô6Ú6àà9Ü�e“*ñà5ñ6ð 	õ 
	
÷		1ð 	1ús   ›B
Â
Bc                 óH   — | j                  t        dd¬«      g d¢dd¬«       y)	zv
        "Validating" an instance that's invalid under an invalid schema
        just shows the schema error.
        z{"type": 12, "minimum": 30}Ú13r^   ra   rc   r”   r•   Nr–   r—   s    r   Ú)test_invalid_schema_with_invalid_instancez1TestCLI.test_invalid_schema_with_invalid_instancej  s2   € ð
 	×ÑÜØ9Ø"ôò 8àðð 	õ 	
r   c           	      óX  — ddddœ}}| j                  t        «      5 }t        ||¬«       d d d «       t        j                  «      }| j                  t        t        j                  |«      t        j                  |«      ¬«      g d¢dd	t        |«      z   d
z   ¬«       y # 1 sw Y   ŒvxY w)Né   r[   é   ©rš   Úminimumrœ   r^   ©rn   ro   rb   r`   r_   rc   rž   rŸ   r•   r    )r   r"   r'   r¤   r@   s        r   Ú7test_invalid_schema_with_invalid_instance_pretty_outputz?TestCLI.test_invalid_schema_with_invalid_instance_pretty_output|  s    € Ø¨°rÑ:�&ˆà×Ñœ{Ó+ð 	7¨qÜ˜F¨XÕ6÷	7ä�A—K‘KÓ ˆà×ÑÜÜ ŸJ™J vÓ.Ü"Ÿj™j¨Ó2ôò Nàà9Ü�e“*ñà5ñ6ð 	õ 	
÷		7ð 	7ús   �B Â B)c           
      óz   — | j                  t        ddd¬«      g d¢ddj                  t        d«      «      ¬«       y )	Nz{"minimum": 30}únot valid JSON!Ú12)r_   r‡   r‰   )rb   r‡   rb   r‰   r_   rc   zw                Failed to parse 'first_instance': {}
                12: 12 is less than the minimum of 30
            r•   )rX   rh   ÚformatrA   r—   s    r   Ú-test_invalid_instance_continues_with_the_restz5TestCLI.test_invalid_instance_continues_with_the_rest’  sG   € Ø×ÑÜØ-Ø0Ø $ôò
ð ð÷ ‘”|Ð$5Ó6Ó7ð! 	õ 	
r   c                 óè   — ddddœ}}| j                  t        «      5  t        ||¬«       d d d «       | j                  t	        t        j                  |«      ¬«      g d¢dd	¬
«       y # 1 sw Y   Œ>xY w)Nr°   r[   r±   r²   rœ   r“   )r�   r�   r_   rc   z7:12 is not valid under any of the given schemas._-_.12:r•   )r¡   r   r   rX   rh   r;   ri   )r   r"   r'   s      r   Ú1test_custom_error_format_applies_to_schema_errorsz9TestCLI.test_custom_error_format_applies_to_schema_errors¦  sp   € Ø¨°rÑ:�&ˆà×Ñœ{Ó+ñ 	7Ü˜F¨XÕ6÷	7ð 	×ÑÜ¤4§:¡:¨fÓ#5Ô6òð
 ØLð 	õ 
	
÷	7ð 	7ús   �A(Á(A1c           	      óf   — d}| j                  t        d|¬«      g d¢ddt        |«      › d�¬«       y )	Nr·   ú{}r^   ra   rc   z1                Failed to parse 'some_instance': ú
            r•   ©rX   rh   rA   ©r   r"   s     r   Útest_instance_is_invalid_JSONz%TestCLI.test_instance_is_invalid_JSON¸  sE   € Ø$ˆà×ÑÜ 4°xÔ@Ú7àð2Ü2>¸xÓ2HÐ1Ið Jðð 	õ 	
r   c                 ó¶   — | j                  t        dd¬«      g d¢d¬«      \  }}| j                  |«       | j                  d|«       | j	                  d|«       y )	Nr¾   r·   r^   r´   rc   ©rQ   rP   rR   z7(some_instance)===

Traceback (most recent call last):
r_   ©rV   rh   rK   ÚassertInÚassertNotIn©r   rF   rG   s      r   Ú+test_instance_is_invalid_JSON_pretty_outputz3TestCLI.test_instance_is_invalid_JSON_pretty_outputÅ  sd   € ØŸ™ÜØ Ø/ôò
 Nàð &ó 	
‰ˆ�ð 	×Ñ˜Ô Ø�‰ØHØô	
ð 	×Ñ˜¨Õ/r   c           
      óv   — d}| j                  t        d¬«      t        |«      dgddt        |«      › d�¬«       y )	Nr·   r¾   r“   r_   rc   z)                Failed to parse <stdin>: r¿   )rQ   rE   rP   rR   rG   )rX   rh   r   rA   rÁ   s     r   Ú&test_instance_is_invalid_JSON_on_stdinz.TestCLI.test_instance_is_invalid_JSON_on_stdin×  sM   € Ø$ˆà×ÑÜ 4Ô(Ü˜8Ó$à�àð*Ü*6°xÓ*@Ð)Að Bðð 	õ 
	
r   c                 óÈ   — | j                  t        d¬«      t        d«      g d¢d¬«      \  }}| j                  |«       | j	                  d|«       | j                  d|«       y )	Nr¾   r“   r·   r�   rc   )rQ   rE   rP   rR   z1(<stdin>)===

Traceback (most recent call last):
r_   )rV   rh   r   rK   rÆ   rÇ   rÈ   s      r   Ú4test_instance_is_invalid_JSON_on_stdin_pretty_outputz<TestCLI.test_instance_is_invalid_JSON_on_stdin_pretty_outputæ  sd   € ØŸ™Ü 4Ô(ÜÐ,Ó-â6àð &ó 
‰ˆ�ð 	×Ñ˜Ô Ø�‰ØBØô	
ð 	×Ñ˜¨Õ/r   c           	      ób   — d}| j                  t        |¬«      dgddt        |«      › d�¬«       y )Nr·   r“   r_   rc   ú/                Failed to parse 'some_schema': r¿   r•   rÀ   r&   s     r   Útest_schema_is_invalid_JSONz#TestCLI.test_schema_is_invalid_JSONö  sE   € Ø"ˆà×ÑÜ 6Ô*à�àð0Ü0<¸VÓ0DÐ/Eð Fðð 	õ 		
r   c                 ó�   — | j                  t        d¬«      g d¢d¬«      \  }}| j                  |«       | j                  d|«       y )Nr·   r“   r�   rc   rÄ   ú5(some_schema)===

Traceback (most recent call last):
)rV   rh   rK   rÆ   rÈ   s      r   Ú)test_schema_is_invalid_JSON_pretty_outputz1TestCLI.test_schema_is_invalid_JSON_pretty_output  sJ   € ØŸ™ÜÐ#4Ô5â6àð &ó 
‰ˆ�ð 	×Ñ˜Ô Ø�‰ØFØõ	
r   c           	      ój   — d\  }}| j                  t        ||¬«      dgddt        |«      › d�¬«       y)	úM
        Only the schema error is reported, as we abort immediately.
        )r·   úalso not valid JSON!r^   r_   rc   rÏ   r¿   r•   NrÀ   ©r   r'   r"   s      r   Ú.test_schema_and_instance_are_both_invalid_JSONz6TestCLI.test_schema_and_instance_are_both_invalid_JSON  sO   € ð EÑˆ�Ø×ÑÜ 6¸ÔBà�àð0Ü0<¸VÓ0DÐ/Eð Fðð 	õ 		
r   c                 ó¶   — | j                  t        dd¬«      g d¢d¬«      \  }}| j                  |«       | j                  d|«       | j	                  d|«       y	)
rÕ   r·   rÖ   r^   r´   rc   rÄ   rÒ   r`   NrÅ   rÈ   s      r   Ú<test_schema_and_instance_are_both_invalid_JSON_pretty_outputzDTestCLI.test_schema_and_instance_are_both_invalid_JSON_pretty_output"  sf   € ð Ÿ™ÜØ-Ø4ôò
 Nàð &ó 	
‰ˆ�ð 	×Ñ˜Ô Ø�‰ØFØô	
ð 	×Ñ˜¨&Õ1r   c                 óF   — | j                  t        d¬«      g d¢dd¬«       y )Nr¾   r“   )rb   Únonexisting_instancer_   rc   zC                'nonexisting_instance' does not exist.
            r•   r–   r—   s    r   Útest_instance_does_not_existz$TestCLI.test_instance_does_not_exist7  s(   € Ø×ÑÜ 4Ô(Ú>àðð 	õ 	
r   c                 óF   — | j                  t        d¬«      g d¢dd¬«       y )Nr¾   r“   )rn   ro   rb   rÜ   r_   rc   zµ                ===[FileNotFoundError]===(nonexisting_instance)===

                'nonexisting_instance' does not exist.
                -----------------------------
            r•   r–   r—   s    r   Ú*test_instance_does_not_exist_pretty_outputz2TestCLI.test_instance_does_not_exist_pretty_outputB  s,   € Ø×ÑÜ 4Ô(òð ðð 	õ 	
r   c                 ó.   — | j                  dgdd¬«       y )NÚnonexisting_schemarc   ú%'nonexisting_schema' does not exist.
©rP   rR   rG   ©rX   r—   s    r   Útest_schema_does_not_existz"TestCLI.test_schema_does_not_existT  s!   € Ø×ÑØ&Ð'àØ;ð	 	õ 	
r   c                 ó0   — | j                  g d¢dd¬«       y )N)rn   ro   rá   rc   ú±                ===[FileNotFoundError]===(nonexisting_schema)===

                'nonexisting_schema' does not exist.
                -----------------------------
            rã   rä   r—   s    r   Ú(test_schema_does_not_exist_pretty_outputz0TestCLI.test_schema_does_not_exist_pretty_output\  s    € Ø×ÑÚ=àðð	 	õ 
	
r   c                 ó0   — | j                  g d¢dd¬«       y )N)rb   rÜ   rá   rc   râ   rã   rä   r—   s    r   Ú&test_neither_instance_nor_schema_existz.TestCLI.test_neither_instance_nor_schema_existi  s   € Ø×ÑÚEàØ;ð	 	õ 	
r   c                 ó0   — | j                  g d¢dd¬«       y )N)rn   ro   rb   rÜ   rá   rc   rç   rã   rä   r—   s    r   Ú4test_neither_instance_nor_schema_exist_pretty_outputz<TestCLI.test_neither_instance_nor_schema_exist_pretty_outputq  s$   € Ø×Ñòð ðð 	õ 	
r   c                 óH   — | j                  t        dd¬«      g d¢dd¬«       y ©Nr¾   r^   ra   r›   ©rQ   rP   rF   rG   r–   r—   s    r   Útest_successful_validationz"TestCLI.test_successful_validation‚  ó(   € Ø×ÑÜ 4°tÔ<Ú7ØØð	 	õ 	
r   c                 óH   — | j                  t        dd¬«      g d¢dd¬«       y ©Nr¾   r^   r´   z"===[SUCCESS]===(some_instance)===
r›   rï   r–   r—   s    r   Ú(test_successful_validation_pretty_outputz0TestCLI.test_successful_validation_pretty_outputŠ  ó(   € Ø×ÑÜ 4°tÔ<ÚMØ8Øð	 	õ 	
r   c                 óX   — | j                  t        d¬«      t        d«      dgdd¬«       y )Nr¾   r“   r_   r›   ©rQ   rE   rP   rF   rG   ©rX   rh   r   r—   s    r   Ú#test_successful_validation_of_stdinz+TestCLI.test_successful_validation_of_stdin’  s/   € Ø×ÑÜ 4Ô(Ü˜4“.Ø�ØØð 	õ 	
r   c                 óZ   — | j                  t        d¬«      t        d«      g d¢dd¬«       y )Nr¾   r“   r�   z===[SUCCESS]===(<stdin>)===
r›   r÷   rø   r—   s    r   Ú1test_successful_validation_of_stdin_pretty_outputz9TestCLI.test_successful_validation_of_stdin_pretty_output›  s-   € Ø×ÑÜ 4Ô(Ü˜4“.Ú6Ø2Øð 	õ 	
r   c                 óH   — | j                  t        dd¬«      g d¢dd¬«       y rî   r–   r—   s    r   Ú-test_successful_validation_of_just_the_schemaz5TestCLI.test_successful_validation_of_just_the_schema¤  rñ   r   c                 óH   — | j                  t        dd¬«      g d¢dd¬«       y ró   r–   r—   s    r   Ú;test_successful_validation_of_just_the_schema_pretty_outputzCTestCLI.test_successful_validation_of_just_the_schema_pretty_output¬  rõ   r   c                 ó�  — t        j                  d¬«      }|j                  «        | j                  t        j
                  |j                  «       t        |j                  «      }|j                  d«       d|j                  › d�}| j                  t        |d¬«      dd	d
|j                  j                  «       dz   dgdd¬«       y )NF©Údeleteú-{"definitions": {"num": {"type": "integer"}}}ú
{"$ref": "ú#/definitions/num"}Ú1r^   rb   r`   ú
--base-uriú/r_   r›   rï   ©ÚtempfileÚNamedTemporaryFileÚcloseÚ
addCleanupÚosÚremoveÚnamer   Ú
write_textrX   rh   ÚparentÚas_uri©r   Úref_schema_fileÚref_pathr'   s       r   Ú0test_successful_validation_via_explicit_base_uriz8TestCLI.test_successful_validation_via_explicit_base_uri´  s±   € Ü"×5Ñ5¸UÔCˆØ×ÑÔØ�‰œŸ	™	 ?×#7Ñ#7Ô8ä˜×,Ñ,Ó-ˆØ×ÑÐKÔLà˜xŸ}™}˜oÐ-AÐBˆà×ÑÜ 6¸Ô=à�oØ˜hŸo™o×4Ñ4Ó6¸Ñ<Øðð
 Øð 	õ 		
r   c                 ó’  — t        j                  d¬«      }|j                  «        | j                  t        j
                  |j                  «       t        |j                  «      }|j                  d«       d|j                  › d�}| j                  t        |d¬«      dd	d
|j                  j                  «       dz   dgddd¬«       y )NFr  r  r  r  z"1"r^   rb   r`   r  r  r_   rc   r›   z 1: '1' is not of type 'integer'
©rQ   rP   rR   rF   rG   r	  r  s       r   Ú2test_unsuccessful_validation_via_explicit_base_uriz:TestCLI.test_unsuccessful_validation_via_explicit_base_uriÉ  s´   € Ü"×5Ñ5¸UÔCˆØ×ÑÔØ�‰œŸ	™	 ?×#7Ñ#7Ô8ä˜×,Ñ,Ó-ˆØ×ÑÐKÔLà˜xŸ}™}˜oÐ-AÐBˆà×ÑÜ 6¸Ô?à�oØ˜hŸo™o×4Ñ4Ó6¸Ñ<Øðð
 ØØ6ð 	õ 
	
r   c           	      óV  — d}d}| j                  t        «      5 }| j                  t        ||¬«      dddt	        j
                  «       j                  «       dg¬«       d d d «       t        j                  «      }| j                  t        j                  › d	�|«       y # 1 sw Y   ŒBxY w)
Nz4{"$ref": "someNonexistentFile.json#definitions/num"}r  r^   rb   r`   r  r_   ©rQ   rP   zsomeNonexistentFile.json')r¡   r   rX   rh   r   Úcwdr  r>   r¢   rÆ   r  Úsep©r   r'   r"   r¤   r@   s        r   Ú,test_nonexistent_file_with_explicit_base_uriz4TestCLI.test_nonexistent_file_with_explicit_base_uriß  s    € ØGˆØˆà×ÑÔ2Ó3ð 	°qØ×ÑÜØ &Ø"*ôð
 ˜/Ø ¤$§(¡(£*×"3Ñ"3Ó"5Ø!ðð ô 
÷	ô �A—K‘KÓ ˆØ�‰œŸ™˜Ð 9Ð:¸EÕB÷	ð 	ús   šABÂB(c                 óî   — d}d}| j                  t        «      5 }| j                  t        ||¬«      g d¢¬«       d d d «       t	        j
                  «      }| j                  |d«       y # 1 sw Y   Œ1xY w)Nz${"$ref": "foo.json#definitions/num"}r  r^   )rb   r`   r  znot@UR1r_   r  zunknown url type: 'foo.json')r¡   r   rX   rh   r>   r¢   rN   r  s        r   Útest_invalid_explicit_base_uriz&TestCLI.test_invalid_explicit_base_uriò  s|   € Ø7ˆØˆà×ÑÔ2Ó3ð 	°qØ×ÑÜØ &Ø"*ôòð ô 
÷	ô �A—K‘KÓ ˆØ×ÑØÐ1õ	
÷	ð 	ús   š!A+Á+A4c                 ó~   — | j                  t        t        «       | j                  t	        dd¬«      g d¢ddd¬«       y )	Nz{"const": "check"}z"a"r^   ra   rc   r›   za: 'check' was expected
r  )ÚassertIsr   r   rX   rh   r—   s    r   Ú=test_it_validates_using_the_latest_validator_when_unspecifiedzETestCLI.test_it_validates_using_the_latest_validator_when_unspecified  s=   € ð 	�‰Ô*¬OÔ<à×ÑÜÐ#7ÀuÔMÚ7ØØØ.ð 	õ 	
r   c                 óR   — d}d}| j                  t        ||¬«      g d¢ddd¬«       y	)
zG
        Specifically, `const` validation applies for Draft 7.
        zŒ
            {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "const": "check"
            }
        ú"foo"r^   ra   rc   r›   zfoo: 'check' was expected
r  Nr–   r×   s      r   Ú-test_it_validates_using_draft7_when_specifiedz5TestCLI.test_it_validates_using_draft7_when_specified  s9   € ðˆð ˆØ×ÑÜ 6¸ÔBÚ7ØØØ0ð 	õ 	
r   c                 óP   — d}d}| j                  t        ||¬«      g d¢dd¬«       y)zP
        Specifically, `const` validation *does not* apply for Draft 4.
        z�
            {
                "$schema": "http://json-schema.org/draft-04/schema#",
                "const": "check"
            }
            r'  r^   ra   r›   rï   Nr–   r×   s      r   Ú-test_it_validates_using_draft4_when_specifiedz5TestCLI.test_it_validates_using_draft4_when_specified*  s6   € ðˆð ˆØ×ÑÜ 6¸ÔBÚ7ØØð	 	õ 	
r   )r›   r›   )1r)   r*   r+   r   rV   rX   rk   rp   rs   r{   r}   r‹   r�   r‘   r˜   r¥   r§   r«   r®   rµ   rº   r¼   rÂ   rÉ   rË   rÍ   rÐ   rÓ   rØ   rÚ   rÝ   rß   rå   rè   rê   rì   rð   rô   rù   rû   rý   rÿ   r  r  r   r"  r%  r(  r*  r   r   r   rC   rC   A   sï   „ à¡h£j¸Aó4ó@
ò
ò
ò(
ò
ò*
ò6
ò>'
òR
ò8	
ò
ò&	
ò
ò&
ò$
ò,
ò(
ò$
ò0ò$
ò0ò 
ò
ò
ò 2ò*	
ò
ò$
ò
ò
ò
ò"
ò
ò
ò
ò
ò
ò
ò*
ò,Cò&
ò*
ò 
ó&
r   rC   c                   ó8   — e Zd Z e«       Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)Ú
TestParserc                 óp   — t        j                  g d¢«      }| j                  |d   | j                  «       y )N)ú--validatorz2jsonschema.tests.test_cli.TestParser.FakeValidatorú
--instanceúmem://some/instanceúmem://some/schemarf   )r   rI   r$  r-   ©r   rT   s     r   Ú2test_find_validator_by_fully_qualified_object_namez=TestParser.test_find_validator_by_fully_qualified_object_nameA  s0   € Ü—N‘Nòó
ˆ	ð 	�‰�i Ñ,¨d×.@Ñ.@ÕAr   c                 ód   — t        j                  g d¢«      }| j                  |d   t        «       y )N)r.  r   r/  r0  r1  rf   )r   rI   r$  r   r2  s     r   Ú!test_find_validator_in_jsonschemaz,TestParser.test_find_validator_in_jsonschemaL  s*   € Ü—N‘Nòó
ˆ	ð 	�‰�i Ñ,¬oÕ>r   c                 óh  — t        «       t        «       }}t        |«      5  t        |«      5  | j                  t        «      5  t        j                  |«       d d d «       d d d «       d d d «       |j                  «       |j                  «       fS # 1 sw Y   Œ9xY w# 1 sw Y   Œ=xY w# 1 sw Y   ŒAxY wr   )r   r   r   r¡   Ú
SystemExitr   rI   rO   )r   rP   rF   rG   s       r   Úcli_output_forzTestParser.cli_output_forV  s’   € Ü!›¤X£Z�ˆÜ˜VÓ$ñ 	%¤o°fÓ&=ñ 	%Ø×"Ñ"¤:Ó.ñ %Ü—‘˜tÔ$÷%÷	%÷ 	%ð �‰Ó  &§/¡/Ó"3Ð3Ð3÷%ð %ú÷	%ð 	%ú÷ 	%ð 	%ús:    B(¬BÁBÁBÁ B(ÂBÂBÂB%	Â!B(Â(B1c                 óv   — | j                  ddd«      \  }}| j                  d|«       | j                  |«       y )Nrn   r�   r1  zinvalid choice: 'foo'©r8  rÆ   rK   rÈ   s      r   Útest_unknown_outputzTestParser.test_unknown_output]  s=   € Ø×,Ñ,Ø˜Øó
‰ˆ�ð 	�‰Ð-¨vÔ6Ø×Ñ˜Õ r   c                 óz   — | j                  ddddd«      \  }}| j                  d|«       | j                  |«       y )Nrn   ro   r�   r�   r1  z3--error-format can only be used with --output plainr:  rÈ   s      r   Útest_useless_error_formatz$TestParser.test_useless_error_formate  sG   € Ø×,Ñ,Ø˜Ø˜eØó
‰ˆ�ð
 	�‰ØAØô	
ð 	×Ñ˜Õ r   N)
r)   r*   r+   r0   r-   r3  r5  r8  r;  r=  r   r   r   r,  r,  =  s$   „ á"Ó$€Mò	Bò?ò4ò!ó
!r   r,  c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚTestCLIIntegrationc                 óp   — t        j                   d«      }| j                  |j                  d«      d«       y )NÚ
jsonschemazLicense-ExpressionÚMIT)r   rN   r3   )r   Úour_metadatas     r   Útest_licensezTestCLIIntegration.test_licenses  s.   € Ü×(Ñ(¨Ó6ˆØ×Ñ˜×)Ñ)Ð*>Ó?ÀÕGr   c                 óþ   — t        j                  t        j                  dddddgt         j                  ¬«      }|j                  d«      j                  «       }| j                  |t        j                  d«      «       y )Nz-Wr   ú-mrA  z	--version©rG   zutf-8)
Ú
subprocessÚcheck_outputÚsysÚ
executableÚSTDOUTÚdecodeÚstriprN   r   Úversion)r   rO  s     r   Útest_versionzTestCLIIntegration.test_versionw  sc   € Ü×)Ñ)Ü�^‰^˜T 8¨T°<ÀÐMÜ×$Ñ$ô
ˆð —.‘. Ó)×/Ñ/Ó1ˆØ×Ñ˜¤(×"2Ñ"2°<Ó"@ÕAr   c                 ó  — t        j                  t        j                  ddgt         j                  ¬«      }t        j                  t        j                  dddgt         j                  ¬«      }| j                  ||«       y )NrF  rA  rG  z--help)rH  rI  rJ  rK  rL  rN   )r   ÚoutputÚoutput_for_helps      r   Ú#test_no_arguments_shows_usage_notesz6TestCLIIntegration.test_no_arguments_shows_usage_notes  sf   € Ü×(Ñ(Ü�^‰^˜T <Ð0Ü×$Ñ$ô
ˆô %×1Ñ1Ü�^‰^˜T <°Ð:Ü×$Ñ$ô
ˆð 	×Ñ˜ Õ1r   N)r)   r*   r+   rD  rP  rT  r   r   r   r?  r?  r  s   „ òHòBó	2r   r?  )'Ú
contextlibr   r   Ú	importlibr   Úior   r;   r   Úpathlibr   Útextwrapr	   Úunittestr
   r  rH  rJ  r
  ÚwarningsrA  r   r   Újsonschema.exceptionsr   r   r   Újsonschema.validatorsr   r   Úcatch_warningsÚsimplefilterr   r0   r9   rA   rC   r,  r?  r   r   r   ú<module>r`     s­   ðß 7Ý Ý Ý  Ý Ý Ý Û Û 	Û Û 
Û Û ç <÷ñ ÷
 <à€X×ÑÓñ Ø€H×Ñ˜(Ô#Ý÷ò
ò&òMôy
ˆhô y
ôx2!�ô 2!ôj2˜õ 2÷wð ús   Á0B<Â<C