Ë
    ` ÚdBp  ã                   ó<  — 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Zd dlZd dlZd dlZd dlZ	 d dlmZ d d	lmZ d d
lmZmZmZ d dlmZmZmZ d dlm Z m!Z! d„ Z"d„ Z#d„ Z$ G d„ de«      Z% G d„ de«      Z& G d„ de«      Z'y# e$ r d dlZY ŒXw xY w)é    )Úredirect_stderrÚredirect_stdout)ÚStringIO)ÚJSONDecodeError)ÚPath)Údedent)ÚTestCaseN)Úmetadata)Úm)ÚDraft4ValidatorÚDraft202012ValidatorÚcli)ÚRefResolutionErrorÚSchemaErrorÚValidationError)Ú_LATEST_VERSIONÚvalidatec                  óR   ‡ — t        t        ‰ «      «      Š  G ˆ fd„dt        «      }|S )Nc                   ó.   •— e Zd Zd„ Zˆ fd„Zed„ «       Zy)ú%fake_validator.<locals>.FakeValidatorc                  ó   — y ©N© )ÚselfÚargsÚkwargss      ú;/usr/lib/python3/dist-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Úobject)r#   r-   s   ` r   Úfake_validatorr1      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>.open1   s/   ø€ Ø×#Ñ# DÓ)ˆØÐÜ# DÓ)Ð)Ü˜Ó!Ð!r   r   )r8   r9   s   ` r   Ú	fake_openr:   0   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_forrB   9   s>   € ðMÜ�
‰
�8Ôô ÐKÓLÐLøô ò Ü�5‹zÕûðús   ‚" ¢	A «
;µA »A c                   ó8  — e Zd Z e«        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-„ Z0d.„ Z1y/)1ÚTestCLIr   c                 ó  — t        j                  |«      }|j                  |«       | j                  t	        t         d«      «       t        |«      t         _        	 t        «       t        «       }}t        j                  ||||¬«      }	t         `| j                  |	|t        dj                  ||	|j                  «       |j                  «       «      «      ¬«       |j                  «       |j                  «       fS # t         `w xY w)Nr9   )ÚstdinÚstdoutÚstderrzˆ
                    Expected an exit code of {} != {}.

                    stdout: {}

                    stderr: {}
                )Úmsg)r   Ú
parse_argsÚupdateÚassertFalseÚhasattrr:   r9   r   ÚrunÚassertEqualr   ÚformatÚgetvalue)
r   ÚargvÚfilesrF   Ú	exit_codeÚoverrideÚ	argumentsrG   rH   Úactual_exit_codes
             r   Úrun_clizTestCLI.run_cliC   sã   € ô —N‘N 4Ó(ˆ	Ø×Ñ˜Ô"à×Ñœ¤ fÓ-Ô.Ü˜UÓ#ŒŒð		Ü%›Z¬«�FˆFÜ"Ÿw™wØØØØô	 Ðô �à×ÑØ˜i¬Vð÷ ‘FØØ$Ø—O‘OÓ%Ø—O‘OÓ%ó	ó.ð 	ô 	
ð  �‰Ó  &§/¡/Ó"3Ð3Ð3øô% ‘ús   Á-C9 Ã9Dc                 óp   — | j                   | j                  di |¤Žt        |«      t        |«      f«       y )Nr   )rO   rX   r   )r   rG   rH   r   s       r   ÚassertOutputszTestCLI.assertOutputsh   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©ú-irb   ra   é   ú12: I am an error!
©rS   Ú	validatorrR   rT   rH   ©r   rZ   Údictr<   Údumpsr"   r1   ©r   rA   s     r   Útest_invalid_instancezTestCLI.test_invalid_instancen   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 )
Nr\   r]   r^   r_   r`   ©rd   rb   ú--outputÚprettyra   re   z”                ===[ValidationError]===(some_instance)===

                I am an error!
                -----------------------------
            rg   ri   rl   s     r   Ú#test_invalid_instance_pretty_outputz+TestCLI.test_invalid_instance_pretty_output}   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 )
Nr\   r]   r^   r_   r`   )rp   Úplainrd   rb   ra   re   rf   rg   ri   rl   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`   rc   re   zM                12: First error
                12: Second error
            rg   ©r   rZ   rj   r<   rk   r1   ©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]   rw   r^   rx   r_   r`   ro   re   a                  ===[ValidationError]===(some_instance)===

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

                Second error
                -----------------------------
            rg   ry   rz   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_   ©ra   Úsome_first_instanceÚsome_second_instance)rd   r†   rd   r‡   ra   re   ze                12: An error
                12: Another error
                foo: BOOM
            rg   ry   ©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…   )rp   rq   rd   r†   rd   r‡   ra   re   a¦                  ===[ValidationError]===(some_first_instance)===

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

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

                BOOM
                -----------------------------
            rg   ry   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}:rd   r†   rd   r‡   ra   re   z5:An error._-_.12::Another error._-_.12::BOOM._-_.foo:rg   ry   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}©ra   ra   re   úO                12: 12 is not valid under any of the given schemas
            ©rS   rR   rT   rH   ©rZ   rj   ©r   s    r   Útest_invalid_schemazTestCLI.test_invalid_schema4  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•   ©rp   rq   ra   re   ú%===[SchemaError]===(some_schema)===

ú
-----------------------------
r—   ©	ÚassertRaisesr   r   r?   Ú	exceptionrZ   rj   r<   rk   ©r   r'   ÚerA   s       r   Ú!test_invalid_schema_pretty_outputz)TestCLI.test_invalid_schema_pretty_output?  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•   ra   re   zF                57: 57 is not of type 'object', 'boolean'
            r—   r˜   r™   s    r   Ú#test_invalid_schema_multiple_errorsz+TestCLI.test_invalid_schema_multiple_errorsR  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Ÿ   re   r    r¡   r—   r¢   r¥   s       r   Ú1test_invalid_schema_multiple_errors_pretty_outputz9TestCLI.test_invalid_schema_multiple_errors_pretty_output]  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`   rc   re   r–   r—   Nr˜   r™   s    r   Ú)test_invalid_schema_with_invalid_instancez1TestCLI.test_invalid_schema_with_invalid_instancep  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`   ©rp   rq   rd   rb   ra   re   r    r¡   r—   r¢   )r   r"   r'   r¦   rA   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)ra   r‰   r‹   )rd   r‰   rd   r‹   ra   re   zw                Failed to parse 'first_instance': {}
                12: 12 is less than the minimum of 30
            r—   ©rZ   rj   rP   rB   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’   ra   re   z7:12 is not valid under any of the given schemas._-_.12:r—   )r£   r   r   rZ   rj   r<   rk   )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           
      ó|   — d}| j                  t        d|¬«      g d¢ddj                  t        |«      «      ¬«       y )Nr¹   ú{}r`   rc   re   z@                Failed to parse 'some_instance': {}
            r—   r»   ©r   r"   s     r   Útest_instance_is_invalid_JSONz%TestCLI.test_instance_is_invalid_JSON¾  s>   € Ø$ˆà×ÑÜ 4°xÔ@Ú7àðç‘”| HÓ-Ó.ð 	õ 	
r   c                 ó¶   — | j                  t        dd¬«      g d¢d¬«      \  }}| j                  |«       | j                  d|«       | j	                  d|«       y )	NrÀ   r¹   r`   r¶   re   ©rS   rR   rT   z7(some_instance)===

Traceback (most recent call last):
ra   ©rX   rj   rL   ÚassertInÚassertNotIn©r   rG   rH   s      r   Ú+test_instance_is_invalid_JSON_pretty_outputz3TestCLI.test_instance_is_invalid_JSON_pretty_outputË  sd   € ØŸ™ÜØ Ø/ôò
 Nàð &ó 	
‰ˆ�ð 	×Ñ˜Ô Ø�‰ØHØô	
ð 	×Ñ˜¨Õ/r   c                 óŒ   — d}| j                  t        d¬«      t        |«      dgddj                  t	        |«      «      ¬«       y )Nr¹   rÀ   r•   ra   re   z8                Failed to parse <stdin>: {}
            )rS   rF   rR   rT   rH   )rZ   rj   r   rP   rB   rÁ   s     r   Ú&test_instance_is_invalid_JSON_on_stdinz.TestCLI.test_instance_is_invalid_JSON_on_stdinÝ  sF   € Ø$ˆà×ÑÜ 4Ô(Ü˜8Ó$à�àðç‘”| HÓ-Ó.ð 	õ 
	
r   c                 óÈ   — | j                  t        d¬«      t        d«      g d¢d¬«      \  }}| j                  |«       | j	                  d|«       | j                  d|«       y )	NrÀ   r•   r¹   rŸ   re   )rS   rF   rR   rT   z1(<stdin>)===

Traceback (most recent call last):
ra   )rX   rj   r   rL   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           
      óx   — d}| j                  t        |¬«      dgddj                  t        |«      «      ¬«       y )Nr¹   r•   ra   re   ú>                Failed to parse 'some_schema': {}
            r—   r»   r&   s     r   Útest_schema_is_invalid_JSONz#TestCLI.test_schema_is_invalid_JSONü  s>   € Ø"ˆà×ÑÜ 6Ô*à�àðç‘”| FÓ+Ó,ð 	õ 		
r   c                 ó�   — | j                  t        d¬«      g d¢d¬«      \  }}| j                  |«       | j                  d|«       y )Nr¹   r•   rŸ   re   rÄ   ú5(some_schema)===

Traceback (most recent call last):
)rX   rj   rL   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           
      ó€   — d\  }}| j                  t        ||¬«      dgddj                  t        |«      «      ¬«       y)úM
        Only the schema error is reported, as we abort immediately.
        )r¹   úalso not valid JSON!r`   ra   re   rÏ   r—   Nr»   ©r   r'   r"   s      r   Ú.test_schema_and_instance_are_both_invalid_JSONz6TestCLI.test_schema_and_instance_are_both_invalid_JSON  sH   € ð EÑˆ�Ø×ÑÜ 6¸ÔBà�àðç‘”| FÓ+Ó,ð 	õ 		
r   c                 ó¶   — | j                  t        dd¬«      g d¢d¬«      \  }}| j                  |«       | j                  d|«       | j	                  d|«       y	)
rÕ   r¹   rÖ   r`   r¶   re   rÄ   rÒ   rb   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•   )rd   Únonexisting_instancera   re   zC                'nonexisting_instance' does not exist.
            r—   r˜   r™   s    r   Útest_instance_does_not_existz$TestCLI.test_instance_does_not_exist=  s(   € Ø×ÑÜ 4Ô(Ú>àðð 	õ 	
r   c                 óF   — | j                  t        d¬«      g d¢dd¬«       y )NrÀ   r•   )rp   rq   rd   rÜ   ra   re   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_outputH  s,   € Ø×ÑÜ 4Ô(òð ðð 	õ 	
r   c                 ó.   — | j                  dgdd¬«       y )NÚnonexisting_schemare   ú%'nonexisting_schema' does not exist.
©rR   rT   rH   ©rZ   r™   s    r   Útest_schema_does_not_existz"TestCLI.test_schema_does_not_existZ  s!   € Ø×ÑØ&Ð'àØ;ð	 	õ 	
r   c                 ó0   — | j                  g d¢dd¬«       y )N)rp   rq   rá   re   ú±                ===[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_outputb  s    € Ø×ÑÚ=àðð	 	õ 
	
r   c                 ó0   — | j                  g d¢dd¬«       y )N)rd   rÜ   rá   re   râ   rã   rä   r™   s    r   Ú&test_neither_instance_nor_schema_existz.TestCLI.test_neither_instance_nor_schema_existo  s   € Ø×ÑÚEàØ;ð	 	õ 	
r   c                 ó0   — | j                  g d¢dd¬«       y )N)rp   rq   rd   rÜ   rá   re   rç   rã   rä   r™   s    r   Ú4test_neither_instance_nor_schema_exist_pretty_outputz<TestCLI.test_neither_instance_nor_schema_exist_pretty_outputw  s$   € Ø×Ñòð ðð 	õ 	
r   c                 óH   — | j                  t        dd¬«      g d¢dd¬«       y ©NrÀ   r`   rc   r�   ©rS   rR   rG   rH   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•   ra   r�   ©rS   rF   rR   rG   rH   ©rZ   rj   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`   rd   rb   ú
--base-uriú/ra   r�   rï   ©ÚtempfileÚNamedTemporaryFileÚcloseÚ
addCleanupÚosÚremoveÚnamer   Ú
write_textrZ   rj   Ú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ˆà×ÑÜ 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`   rd   rb   r  r  ra   re   r�   z 1: '1' is not of type 'integer'
©rS   rR   rT   rG   rH   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ˆà×ÑÜ 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`   rd   rb   r  ra   ©rS   rR   zsomeNonexistentFile.json')r£   r   rZ   rj   r   Úcwdr  r?   r¤   rÆ   r  Úsep©r   r'   r"   r¦   rA   s        r   Ú,test_nonexistent_file_with_explicit_base_uriz4TestCLI.test_nonexistent_file_with_explicit_base_uriå  s    € ØGˆØˆà×ÑÔ1Ó2ð 	°aØ×ÑÜØ &Ø"*ôð
 ˜/Ø ¤$§(¡(£*×"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`   )rd   rb   r  znot@UR1ra   r  zunknown url type: 'foo.json')r£   r   rZ   rj   r?   r¤   rO   r  s        r   Útest_invalid_exlicit_base_uriz%TestCLI.test_invalid_exlicit_base_uriø  s|   € Ø7ˆØˆà×ÑÔ1Ó2ð 	°aØ×ÑÜØ &Ø"*ôòð ô 
÷	ô �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`   rc   re   r�   za: 'check' was expected
r  )ÚassertIsr   r   rZ   rj   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`   rc   re   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`   rc   r�   rï   Nr˜   r×   s      r   Ú-test_it_validates_using_draft4_when_specifiedz5TestCLI.test_it_validates_using_draft4_when_specified0  s6   € ðˆð ˆØ×ÑÜ 6¸ÔBÚ7ØØð	 	õ 	
r   N)r�   r�   )2r)   r*   r+   r   r   rX   rZ   rm   rr   ru   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   rD   rD   B   sñ   „ á›#¡X£Z¸1ó#4óJ
ò
ò
ò(
ò
ò*
ò6
ò>'
òR
ò8	
ò
ò&	
ò
ò&
ò$
ò,
ò(
ò$
ò0ò$
ò0ò 
ò
ò
ò 2ò*	
ò
ò$
ò
ò
ò
ò"
ò
ò
ò
ò
ò
ò
ò*
ò,Cò&
ò*
ò 
ó&
r   rD   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/schemarh   )r   rJ   r$  r-   ©r   rV   s     r   Ú2test_find_validator_by_fully_qualified_object_namez=TestParser.test_find_validator_by_fully_qualified_object_nameG  s0   € Ü—N‘Nòó
ˆ	ð 	�‰�i Ñ,¨d×.@Ñ.@ÕAr   c                 ód   — t        j                  g d¢«      }| j                  |d   t        «       y )N)r.  r   r/  r0  r1  rh   )r   rJ   r$  r   r2  s     r   Ú!test_find_validator_in_jsonschemaz,TestParser.test_find_validator_in_jsonschemaR  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   rJ   rQ   )r   rR   rG   rH   s       r   Úcli_output_forzTestParser.cli_output_for\  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 )Nrp   rƒ   r1  zinvalid choice: 'foo'©r8  rÆ   rL   rÈ   s      r   Útest_unknown_outputzTestParser.test_unknown_outputc  s=   € Ø×,Ñ,Ø˜Øó
‰ˆ�ð 	�‰Ð-¨vÔ6Ø×Ñ˜Õ r   c                 óz   — | j                  ddddd«      \  }}| j                  d|«       | j                  |«       y )Nrp   rq   r‘   rƒ   r1  z3--error-format can only be used with --output plainr:  rÈ   s      r   Útest_useless_error_formatz$TestParser.test_useless_error_formatk  sG   € Ø×,Ñ,Ø˜Ø˜eØó
‰ˆ�ð
 	�‰ØAØô	
ð 	×Ñ˜Õ r   N)
r)   r*   r+   r1   r-   r3  r5  r8  r;  r=  r   r   r   r,  r,  C  s$   „ á"Ó$€Mò	Bò?ò4ò!ó
!r   r,  c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚTestCLIIntegrationc                 ó˜   — t        j                  t        j                  ddddgt         j                  ¬«      }| j                  d|«       y )Nú-mÚpipÚshowÚ
jsonschema©rH   s   License: MIT)Ú
subprocessÚcheck_outputÚsysÚ
executableÚSTDOUTrÆ   )r   Úoutputs     r   Útest_licensezTestCLIIntegration.test_licensey  s=   € Ü×(Ñ(Ü�^‰^˜T 5¨&°,Ð?Ü×$Ñ$ô
ˆð 	�‰�o vÕ.r   c                 óú   — t        j                  t        j                  dddgt         j                  ¬«      }|j                  d«      j                  «       }| j                  |t        j                  d«      «       y )NrA  rD  z	--versionrE  zutf-8)
rF  rG  rH  rI  rJ  ÚdecodeÚstriprO   r
   Úversion)r   rP  s     r   Útest_versionzTestCLIIntegration.test_version€  s_   € Ü×)Ñ)Ü�^‰^˜T <°Ð=Ü×$Ñ$ô
ˆð —.‘. Ó)×/Ñ/Ó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 )NrA  rD  rE  z--help)rF  rG  rH  rI  rJ  rO   )r   rK  Ú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+   rL  rQ  rT  r   r   r   r?  r?  x  s   „ ò/òBó	2r   r?  )(Ú
contextlibr   r   Úior   r<   r   Úpathlibr   Útextwrapr   Úunittestr	   r  rF  rH  r
  Ú	importlibr
   ÚImportErrorÚimportlib_metadataÚ
pyrsistentr   rD  r   r   r   Újsonschema.exceptionsr   r   r   Újsonschema.validatorsr   r   r1   r:   rB   rD   r,  r?  r   r   r   ú<module>r`     s•   ðß 7Ý Ý  Ý Ý Ý Û Û 	Û Û 
Û ð*Ý"õ ç AÑ A÷ñ ÷
 <òò&òMô~
ˆhô ~
ôB2!�ô 2!ôj2˜õ 2øðS ò *Ý)ð*ús   ¼B Â	BÂB