
    {go                        S SK JrJr  S SKJr  S SKJr  S SKJr  S SK	J
r
  S SKJr  S SKJr  S SKrS SKrS SKrS SKrS SKrS SKrS S	KJrJr  S S
KJrJrJr  S SKJrJr  \R<                  " 5          \R>                  " S5        S SKJ r   SSS5        S r!S r"S r# " S S\5      r$ " S S\5      r% " S S\5      r&g! , (       d  f       N9= f)    )redirect_stderrredirect_stdout)metadata)StringIO)JSONDecodeError)Path)dedent)TestCaseN)Draft4ValidatorDraft202012Validator)SchemaErrorValidationError_RefResolutionError)_LATEST_VERSIONvalidateignore)clic                  J   ^  [        [        T 5      5      m  " U 4S jS5      nU$ )Nc                   8   > \ rS rSrS rU 4S jr\S 5       rSrg)%fake_validator.<locals>.FakeValidator   c                     g N )selfargskwargss      ;/usr/lib/python3/dist-packages/jsonschema/tests/test_cli.py__init__.fake_validator.<locals>.FakeValidator.__init__    s        c                 6   > T(       a  TR                  5       $ / $ r   )pop)r   instanceerrorss     r   iter_errors1fake_validator.<locals>.FakeValidator.iter_errors#   s    zz|#Ir!   c                     g r   r   r   schemas     r   check_schema2fake_validator.<locals>.FakeValidator.check_schema(   s    r!   r   N)	__name__
__module____qualname____firstlineno__r   r&   classmethodr+   __static_attributes__)r%   s   r   FakeValidatorr      s!    		
 
	 
	r!   r3   )listreversed)r%   r3   s   ` r   fake_validatorr6      s$    (6"#F  r!   c                    ^  U 4S jnU$ )Nc                 X   > TR                  U 5      nUc  [        U 5      e[        U5      $ r   )getFileNotFoundErrorr   )pathcontentsall_contentss     r   openfake_open.<locals>.open0   s/    ##D)#D))!!r!   r   )r=   r>   s   ` r   	fake_openr@   /   s    "
 Kr!   c                      [         R                  " U 5        [        S5      e! [         a  n[	        U5      s S nA$ S nAff = f)Nz.Tried and failed to capture a JSON dump error.)jsonloadsRuntimeErrorr   str)non_jsonerrors     r   _message_forrH   8   s>    M

8 KLL  5zs   # 
A
=AAc                   :   \ rS rSrS\" 5       S4S jrS2S jrS rS rS r	S	 r
S
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S  r!S! r"S" r#S# r$S$ r%S% r&S& r'S' r(S( r)S) r*S* r+S+ r,S, r-S- r.S. r/S/ r0S0 r1S1r2g)3TestCLIA   Nr   c                    [         R                  " U5      nUR                  U5        U R                  [	        [         S5      5        [        U=(       d    0 5      [         l         [        5       [        5       p[         R                  " UUUUS9n	[         ?U R                  X[        SU SU	 SUR                  5        SUR                  5        S3	5      S9  UR                  5       UR                  5       4$ ! [         ?f = f)	Nr>   )stdinstdoutstderrz.
                    Expected an exit code of z != z.

                    stdout: z

                    stderr: z
                )msg)r   
parse_argsupdateassertFalsehasattrr@   r>   r   runassertEqualr	   getvalue)
r   argvfilesrM   	exit_codeoverride	argumentsrN   rO   actual_exit_codes
             r   run_cliTestCLI.run_cliB   s     NN4(	"f-.U[b)		%ZF"ww	  V..7[=M<N O#__./ 0#__./ 0. 	 
	
  &//"333 s   %*C7 7C?c                 p    U R                  U R                  " S0 UD6[        U5      [        U5      45        g )Nr   )rV   r^   r	   )r   rN   rO   r   s       r   assertOutputsTestCLI.assertOutputsb   s/    LL"6"F^VF^,	
r!   c                     [        SSS9nU R                  [        S[        R                  " UR
                  5      S9[        U/5      / SQSSS	9  g )
NI am an error!   r$   *{"does not": "matter since it is stubbed"}some_schemasome_instance-irj   ri      12: I am an error!
rY   	validatorrX   rZ   rO   r   ra   dictrB   dumpsr$   r6   r   rG   s     r   test_invalid_instanceTestCLI.test_invalid_instanceh   sR     02>H"jj8 %eW-7) 	 	
r!   c                     [        SSS9nU R                  [        S[        R                  " UR
                  5      S9[        U/5      / SQSSS	9  g )
Nrd   re   rf   rg   rh   rl   rj   --outputprettyri   rm   z                ===[ValidationError]===(some_instance)===

                I am an error!
                -----------------------------
            ro   rq   rt   s     r   #test_invalid_instance_pretty_output+TestCLI.test_invalid_instance_pretty_outputw   sT     02>H"jj8 %eW-M 	 	
r!   c                     [        SSS9nU R                  [        S[        R                  " UR
                  5      S9[        U/5      / SQSSS	9  g )
Nrd   re   rf   rg   rh   )ry   plainrl   rj   ri   rm   rn   ro   rq   rt   s     r   +test_invalid_instance_explicit_plain_output3TestCLI.test_invalid_instance_explicit_plain_output   sR     02>H"jj8 %eW-L) 	 	
r!   c                     Sn[        SUS9n[        SUS9nU R                  [        S[        R                  " U5      S9[        X#/5      / SQSS	S
9  g )Nre   First errorrf   Second errorrg   rh   rk   rm   zM                12: First error
                12: Second error
            ro   r   ra   rr   rB   rs   r6   r   r$   firstseconds       r   %test_invalid_instance_multiple_errors-TestCLI.test_invalid_instance_multiple_errors   s`    A (CH"jj2 %e_57 	 	
r!   c                     Sn[        SUS9n[        SUS9nU R                  [        S[        R                  " U5      S9[        X#/5      / SQSS	S
9  g )Nre   r   rf   r   rg   rh   rx   rm   a                  ===[ValidationError]===(some_instance)===

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

                Second error
                -----------------------------
            ro   r   r   s       r   3test_invalid_instance_multiple_errors_pretty_output;TestCLI.test_invalid_instance_multiple_errors_pretty_output   s`    A (CH"jj2 %e_5M	 	 	
r!   c           	          Sn[        SUS9[        SUS9/nSn[        SUS9/nU R                  [        S[        R                  " U5      [        R                  " U5      S9[        X$5      / S	QS
SS9  g )Nre   An errorrf   Another errorfooBOOMrg   ri   some_first_instancesome_second_instance)rl   r   rl   r   ri   rm   ze                12: An error
                12: Another error
                foo: BOOM
            ro   r   r   first_instancefirst_errorssecond_instancesecond_errorss        r   test_multiple_invalid_instances'TestCLI.test_multiple_invalid_instances   s    J@OnE
  (/JKH$(JJ~$>%)ZZ%@
 %\A  	 	
r!   c           	          Sn[        SUS9[        SUS9/nSn[        SUS9/nU R                  [        S[        R                  " U5      [        R                  " U5      S9[        X$5      / S	QS
SS9  g )Nre   r   rf   r   r   r   rg   r   )ry   rz   rl   r   rl   r   ri   rm   a                  ===[ValidationError]===(some_first_instance)===

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

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

                BOOM
                -----------------------------
            ro   r   r   s        r   -test_multiple_invalid_instances_pretty_output5TestCLI.test_multiple_invalid_instances_pretty_output   s    J@OnE
  (/JKH$(JJ~$>%)ZZ%@
 %\A ! 	 	
r!   c           	          Sn[        SUS9[        SUS9/nSn[        SUS9/nU R                  [        S[        R                  " U5      [        R                  " U5      S9[        X$5      / S	QS
SS9  g )Nre   r   rf   r   r   r   rg   r   )--error-format&:{error.message}._-_.{error.instance}:rl   r   rl   r   ri   rm   z5:An error._-_.12::Another error._-_.12::BOOM._-_.foo:ro   r   r   s        r   test_custom_error_format TestCLI.test_custom_error_format  s    J@OnE
  (/JKH$(JJ~$>%)ZZ%@
 %\A J! 	 	
r!   c                 8    U R                  [        SS9S/SSS9  g )Nz{"type": 12}ri   ri   rm   O                12: 12 is not valid under any of the given schemas
            rY   rX   rZ   rO   ra   rr   r   s    r   test_invalid_schemaTestCLI.test_invalid_schema.  s*    >2 	 	
r!   c           	      $   SS0nU R                  [        5       n[        USS9  S S S 5        [        WR                  5      nU R                  [        [        R                  " U5      S9/ SQSS[        U5      -   S	-   S
9  g ! , (       d  f       Nb= f)Ntypere    r*   r$   r   ry   rz   ri   rm   %===[SchemaError]===(some_schema)===


-----------------------------
r   	assertRaisesr   r   rE   	exceptionra   rr   rB   rs   r   r*   erG   s       r   !test_invalid_schema_pretty_output)TestCLI.test_invalid_schema_pretty_output9  s    "{+qFR0 ,AKK 4::f#5669e*56 	 
	
	 ,+s   B
Bc                 8    U R                  [        SS9S/SSS9  g )Nz{"type": 12, "items": 57}r   ri   rm   zF                57: 57 is not of type 'object', 'boolean'
            r   r   r   s    r   #test_invalid_schema_multiple_errors+TestCLI.test_invalid_schema_multiple_errorsL  s+    #>? 	 	
r!   c           	      &   SSS.nU R                  [        5       n[        USS9  S S S 5        [        WR                  5      nU R                  [        [        R                  " U5      S9/ SQSS	[        U5      -   S
-   S9  g ! , (       d  f       Nb= f)Nre   9   )r   itemsr   r   r   r   rm   r   r   r   r   r   s       r   1test_invalid_schema_multiple_errors_pretty_output9TestCLI.test_invalid_schema_multiple_errors_pretty_outputW  s    r*{+qFR0 ,AKK 4::f#5669e*56 	 
	
	 ,+s   B
Bc                 <    U R                  [        SSS9/ SQSSS9  g)	z^
"Validating" an instance that's invalid under an invalid schema
just shows the schema error.
z{"type": 12, "minimum": 30}13rh   rk   rm   r   r   Nr   r   s    r   )test_invalid_schema_with_invalid_instance1TestCLI.test_invalid_schema_with_invalid_instancej  s2    
 	9" 8 	 	
r!   c           	      P   SSSS.p!U R                  [        5       n[        X!S9  S S S 5        [        WR                  5      nU R                  [        [        R                  " U5      [        R                  " U5      S9/ SQSS	[        U5      -   S
-   S9  g ! , (       d  f       Nw= f)N   re      r   minimumr   rh   ry   rz   rl   rj   ri   rm   r   r   r   r   )r   r$   r*   r   rG   s        r   7test_invalid_schema_with_invalid_instance_pretty_output?TestCLI.test_invalid_schema_with_invalid_instance_pretty_output|  s    r:&{+qF6 ,AKK  JJv."jj2 N9e*56 	 	
	 ,+s   
B
B%c           
      n    U R                  [        SSSS9/ SQSSR                  [        S5      5      S9  g )	Nz{"minimum": 30}not valid JSON!12)ri   r   r   )rl   r   rl   r   ri   rm   zw                Failed to parse 'first_instance': {}
                12: 12 is less than the minimum of 30
            r   )ra   rr   formatrH   r   s    r   -test_invalid_instance_continues_with_the_rest5TestCLI.test_invalid_instance_continues_with_the_rest  sG    -0 $
  |$567! 	 	
r!   c                     SSSS.p!U R                  [        5         [        X!S9  S S S 5        U R                  [	        [
        R                  " U5      S9/ SQSS	S
9  g ! , (       d  f       N>= f)Nr   re   r   r   r   r   )r   r   ri   rm   z7:12 is not valid under any of the given schemas._-_.12:r   )r   r   r   ra   rr   rB   rs   )r   r$   r*   s      r   1test_custom_error_format_applies_to_schema_errors9TestCLI.test_custom_error_format_applies_to_schema_errors  se    r:&{+F6 , 	4::f#56
 L 	 
	
 ,+s   
A
A,c           	      Z    SnU R                  [        SUS9/ SQSS[        U5       S3S9  g )	Nr   {}rh   rk   rm   z1                Failed to parse 'some_instance': 
            r   ra   rr   rH   r   r$   s     r   test_instance_is_invalid_JSON%TestCLI.test_instance_is_invalid_JSON  sE    $4x@722>x2H1I J 	 	
r!   c                     U R                  [        SSS9/ SQSS9u  pU R                  U5        U R                  SU5        U R	                  SU5        g )	Nr   r   rh   r   rm   rY   rX   rZ   z7(some_instance)===

Traceback (most recent call last):
ri   r^   rr   rS   assertInassertNotInr   rN   rO   s      r   +test_instance_is_invalid_JSON_pretty_output3TestCLI.test_instance_is_invalid_JSON_pretty_output  sb     /
 N & 	
 	 H	
 	/r!   c           
      j    SnU R                  [        SS9[        U5      S/SS[        U5       S3S9  g )	Nr   r   r   ri   rm   z)                Failed to parse <stdin>: r   )rY   rM   rX   rZ   rO   )ra   rr   r   rH   r   s     r   &test_instance_is_invalid_JSON_on_stdin.TestCLI.test_instance_is_invalid_JSON_on_stdin  sM    $4(8$**6x*@)A B 	 
	
r!   c                     U R                  [        SS9[        S5      / SQSS9u  pU R                  U5        U R	                  SU5        U R                  SU5        g )	Nr   r   r   r   rm   )rY   rM   rX   rZ   z1(<stdin>)===

Traceback (most recent call last):
ri   )r^   rr   r   rS   r   r   r   s      r   4test_instance_is_invalid_JSON_on_stdin_pretty_output<TestCLI.test_instance_is_invalid_JSON_on_stdin_pretty_output  sb    4(,-6 & 
 	 B	
 	/r!   c           	      V    SnU R                  [        US9S/SS[        U5       S3S9  g )Nr   r   ri   rm   /                Failed to parse 'some_schema': r   r   r   r)   s     r   test_schema_is_invalid_JSON#TestCLI.test_schema_is_invalid_JSON  sE    "6*00<V0D/E F 	 		
r!   c                     U R                  [        SS9/ SQSS9u  pU R                  U5        U R                  SU5        g )Nr   r   r   rm   r   5(some_schema)===

Traceback (most recent call last):
)r^   rr   rS   r   r   s      r   )test_schema_is_invalid_JSON_pretty_output1TestCLI.test_schema_is_invalid_JSON_pretty_output  sH    #456 & 
 	 F	
r!   c           	      Z    Su  pU R                  [        XS9S/SS[        U5       S3S9  g)	=
Only the schema error is reported, as we abort immediately.
)r   also not valid JSON!rh   ri   rm   r   r   r   Nr   r   r*   r$   s      r   .test_schema_and_instance_are_both_invalid_JSON6TestCLI.test_schema_and_instance_are_both_invalid_JSON  sK     E6B00<V0D/E F 	 		
r!   c                     U R                  [        SSS9/ SQSS9u  pU R                  U5        U R                  SU5        U R	                  SU5        g	)
r   r   r   rh   r   rm   r   r   rj   Nr   r   s      r   <test_schema_and_instance_are_both_invalid_JSON_pretty_outputDTestCLI.test_schema_and_instance_are_both_invalid_JSON_pretty_output"  sd     -4
 N & 	
 	 F	
 	&1r!   c                 :    U R                  [        SS9/ SQSSS9  g )Nr   r   )rl   nonexisting_instanceri   rm   zC                'nonexisting_instance' does not exist.
            r   r   r   s    r   test_instance_does_not_exist$TestCLI.test_instance_does_not_exist7  s(    4(> 	 	
r!   c                 :    U R                  [        SS9/ SQSSS9  g )Nr   r   )ry   rz   rl   r   ri   rm   z                ===[FileNotFoundError]===(nonexisting_instance)===

                'nonexisting_instance' does not exist.
                -----------------------------
            r   r   r   s    r   *test_instance_does_not_exist_pretty_output2TestCLI.test_instance_does_not_exist_pretty_outputB  s,    4(  	 	
r!   c                 (    U R                  S/SSS9  g )Nnonexisting_schemarm   %'nonexisting_schema' does not exist.
rX   rZ   rO   ra   r   s    r   test_schema_does_not_exist"TestCLI.test_schema_does_not_existT  s!    &';	 	 	
r!   c                 *    U R                  / SQSSS9  g )N)ry   rz   r  rm                   ===[FileNotFoundError]===(nonexisting_schema)===

                'nonexisting_schema' does not exist.
                -----------------------------
            r  r  r   s    r   (test_schema_does_not_exist_pretty_output0TestCLI.test_schema_does_not_exist_pretty_output\  s     =	 	 
	
r!   c                 *    U R                  / SQSSS9  g )N)rl   r   r  rm   r  r  r  r   s    r   &test_neither_instance_nor_schema_exist.TestCLI.test_neither_instance_nor_schema_existi  s    E;	 	 	
r!   c                 *    U R                  / SQSSS9  g )N)ry   rz   rl   r   r  rm   r  r  r  r   s    r   4test_neither_instance_nor_schema_exist_pretty_output<TestCLI.test_neither_instance_nor_schema_exist_pretty_outputq  s$      	 	
r!   c                 <    U R                  [        SSS9/ SQSSS9  g Nr   rh   rk   r   rY   rX   rN   rO   r   r   s    r   test_successful_validation"TestCLI.test_successful_validation  (    4t<7	 	 	
r!   c                 <    U R                  [        SSS9/ SQSSS9  g Nr   rh   r   z"===[SUCCESS]===(some_instance)===
r   r  r   r   s    r   (test_successful_validation_pretty_output0TestCLI.test_successful_validation_pretty_output  (    4t<M8	 	 	
r!   c                 L    U R                  [        SS9[        S5      S/SSS9  g )Nr   r   ri   r   rY   rM   rX   rN   rO   ra   rr   r   r   s    r   #test_successful_validation_of_stdin+TestCLI.test_successful_validation_of_stdin  s/    4(4. 	 	
r!   c                 N    U R                  [        SS9[        S5      / SQSSS9  g )Nr   r   r   z===[SUCCESS]===(<stdin>)===
r   r!  r"  r   s    r   1test_successful_validation_of_stdin_pretty_output9TestCLI.test_successful_validation_of_stdin_pretty_output  s-    4(4.62 	 	
r!   c                 <    U R                  [        SSS9/ SQSSS9  g r  r   r   s    r   -test_successful_validation_of_just_the_schema5TestCLI.test_successful_validation_of_just_the_schema  r  r!   c                 <    U R                  [        SSS9/ SQSSS9  g r  r   r   s    r   ;test_successful_validation_of_just_the_schema_pretty_outputCTestCLI.test_successful_validation_of_just_the_schema_pretty_output  r  r!   c                    [         R                  " SS9nUR                  5         U R                  [        R
                  UR                  5        [        UR                  5      nUR                  S5        SUR                   S3nU R                  [        USS9SS	S
UR                  R                  5       S-   S/SSS9  g )NFdelete-{"definitions": {"num": {"type": "integer"}}}
{"$ref": "#/definitions/num"}1rh   rl   rj   
--base-uri/ri   r   r  tempfileNamedTemporaryFileclose
addCleanuposremovenamer   
write_textra   rr   parentas_urir   ref_schema_fileref_pathr*   s       r   0test_successful_validation_via_explicit_base_uri8TestCLI.test_successful_validation_via_explicit_base_uri  s    "55UC		?#7#78,,-KLx}}o-AB6=ohoo446<
  	 		
r!   c                    [         R                  " SS9nUR                  5         U R                  [        R
                  UR                  5        [        UR                  5      nUR                  S5        SUR                   S3nU R                  [        USS9SS	S
UR                  R                  5       S-   S/SSSS9  g )NFr/  r1  r2  r3  z"1"rh   rl   rj   r5  r6  ri   rm   r   z 1: '1' is not of type 'integer'
rY   rX   rZ   rN   rO   r7  rB  s       r   2test_unsuccessful_validation_via_explicit_base_uri:TestCLI.test_unsuccessful_validation_via_explicit_base_uri  s    "55UC		?#7#78,,-KLx}}o-AB6?ohoo446<
 6 	 
	
r!   c           	      V   SnSnU R                  [        5       nU R                  [        UUS9SSS[        R
                  " 5       R                  5       S/S9  S S S 5        [        WR                  5      nU R                  [        R                   S	3U5        g ! , (       d  f       NG= f)
Nz4{"$ref": "someNonexistentFile.json#definitions/num"}r4  rh   rl   rj   r5  ri   rY   rX   zsomeNonexistentFile.json')r   r   ra   rr   r   cwdrA  rE   r   r   r<  sepr   r*   r$   r   rG   s        r   ,test_nonexistent_file_with_explicit_base_uri4TestCLI.test_nonexistent_file_with_explicit_base_uri  s    G23q &"*
 / $((*"3"3"5!  
 4 AKK  9:EB 43s   ?B
B(c                     SnSnU R                  [        5       nU R                  [        UUS9/ SQS9  S S S 5        [	        WR
                  5      nU R                  US5        g ! , (       d  f       N6= f)Nz${"$ref": "foo.json#definitions/num"}r4  rh   )rl   rj   r5  znot@UR1ri   rL  zunknown url type: 'foo.json')r   r   ra   rr   rE   r   rV   rO  s        r   test_invalid_explicit_base_uri&TestCLI.test_invalid_explicit_base_uri  su    723q &"*  
 4 AKK 1	
 43s   A%%
A3c                 r    U R                  [        [        5        U R                  [	        SSS9/ SQSSSS9  g )	Nz{"const": "check"}z"a"rh   rk   rm   r   za: 'check' was expected
rH  )assertIsr   r   ra   rr   r   s    r   =test_it_validates_using_the_latest_validator_when_unspecifiedETestCLI.test_it_validates_using_the_latest_validator_when_unspecified  s=     	*O<#7uM7. 	 	
r!   c                 D    SnSnU R                  [        XS9/ SQSSSS9  g	)
z7
Specifically, `const` validation applies for Draft 7.
z
            {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "const": "check"
            }
        "foo"rh   rk   rm   r   zfoo: 'check' was expected
rH  Nr   r   s      r   -test_it_validates_using_draft7_when_specified5TestCLI.test_it_validates_using_draft7_when_specified  s7     6B70 	 	
r!   c                 B    SnSnU R                  [        XS9/ SQSSS9  g)z@
Specifically, `const` validation *does not* apply for Draft 4.
z
            {
                "$schema": "http://json-schema.org/draft-04/schema#",
                "const": "check"
            }
            rZ  rh   rk   r   r  Nr   r   s      r   -test_it_validates_using_draft4_when_specified5TestCLI.test_it_validates_using_draft4_when_specified*  s4     6B7	 	 	
r!   r   )r   r   )3r-   r.   r/   r0   r   r^   ra   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,  rE  rI  rP  rS  rW  r[  r^  r2   r   r!   r   rJ   rJ   A   s    hjA4@


(

*
6
>'
R
8	

&	

&
$
,
(
$
0$
0 


 2*	

$



"






*
,C&
*
 
&
r!   rJ   c                   @    \ rS rSr\" 5       rS rS rS rS r	S r
Srg)	
TestParseri=  c                 r    [         R                  " / SQ5      nU R                  US   U R                  5        g )N)--validatorz2jsonschema.tests.test_cli.TestParser.FakeValidator
--instancemem://some/instancemem://some/schemarp   )r   rQ   rV  r3   r   r\   s     r   2test_find_validator_by_fully_qualified_object_name=TestParser.test_find_validator_by_fully_qualified_object_nameA  s0    NN
	 	i,d.@.@Ar!   c                 f    [         R                  " / SQ5      nU R                  US   [        5        g )N)rc  r   rd  re  rf  rp   )r   rQ   rV  r   rg  s     r   !test_find_validator_in_jsonschema,TestParser.test_find_validator_in_jsonschemaL  s*    NN
	 	i,o>r!   c                    [        5       [        5       p2[        U5         [        U5         U R                  [        5         [
        R                  " U5        S S S 5        S S S 5        S S S 5        UR                  5       UR                  5       4$ ! , (       d  f       N>= f! , (       d  f       NG= f! , (       d  f       NP= fr   )r   r   r   r   
SystemExitr   rQ   rW   )r   rX   rN   rO   s       r   cli_output_forTestParser.cli_output_forV  sw    !XZV$of&="":.t$ / '>$  &//"333 /. '>&=$$s:   B2B!BB! B2
BB!!
B/	+B22
C c                 t    U R                  SSS5      u  pU R                  SU5        U R                  U5        g )Nry   r   rf  zinvalid choice: 'foo'ro  r   rS   r   s      r   test_unknown_outputTestParser.test_unknown_output]  s;    ,,
 	-v6 r!   c                 x    U R                  SSSSS5      u  pU R                  SU5        U R                  U5        g )Nry   rz   r   r   rf  z3--error-format can only be used with --output plainrr  r   s      r   test_useless_error_format$TestParser.test_useless_error_formate  sE    ,,e

 	A	
 	 r!   r   N)r-   r.   r/   r0   r6   r3   rh  rk  ro  rs  rv  r2   r   r!   r   ra  ra  =  s$    "$M	B?4!
!r!   ra  c                   &    \ rS rSrS rS rS rSrg)TestCLIIntegrationir  c                     [         R                  " [        R                  SSSS/[         R                  S9nU R                  SU5        g )N-mpipshow
jsonschemarO   s   License: MIT)
subprocesscheck_outputsys
executableSTDOUTr   )r   outputs     r   test_licenseTestCLIIntegration.test_licenses  s=    ((^^T5&,?$$
 	ov.r!   c                     [         R                  " [        R                  SSSSS/[         R                  S9nUR                  S5      R                  5       nU R                  U[        R                  " S5      5        g )Nz-Wr   r{  r~  z	--versionr  zutf-8)
r  r  r  r  r  decodestriprV   r   version)r   r  s     r   test_versionTestCLIIntegration.test_versionz  sc    ))^^T8T<M$$
 ..)//1("2"2<"@Ar!   c                     [         R                  " [        R                  SS/[         R                  S9n[         R                  " [        R                  SSS/[         R                  S9nU R                  X5        g )Nr{  r~  r  z--help)r  r  r  r  r  rV   )r   r  output_for_helps      r   #test_no_arguments_shows_usage_notes6TestCLIIntegration.test_no_arguments_shows_usage_notes  sd    ((^^T<0$$
 %11^^T<:$$
 	1r!   r   N)r-   r.   r/   r0   r  r  r  r2   r   r!   r   ry  ry  r  s    /B	2r!   ry  )'
contextlibr   r   	importlibr   ior   rB   r   pathlibr   textwrapr	   unittestr
   r<  r  r  r8  warningsr~  r   r   jsonschema.exceptionsr   r   r   jsonschema.validatorsr   r   catch_warningssimplefilterr   r6   r@   rH   rJ   ra  ry  r   r!   r   <module>r     s    7         	  
   < 
 <(# 
&My
h y
x2! 2!j2 2w s   0B<<
C
