
    go                        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      N/var/www/openai/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    zz|#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  5z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     NN4(	"f-.U[b)		%ZFF"ww	  iV..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    DLL"6"F^VF^,	
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     02>H"jj8 %eW-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     02>H"jj8 %eW-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     02>H"jj8 %eW-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"jj2 %eV_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"jj2 %eV_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@OnE
  (/JKH$(JJ~$>%)ZZ%@
 %\=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@OnE
  (/JKH$(JJ~$>%)ZZ%@
 %\=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@OnE
  (/JKH$(JJ~$>%)ZZ%@
 %\=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    "{+qFR0 ,AKK 4::f#5669e*56 	 
	
	 ,+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*{+qFR0 ,AKK 4::f#5669e*56 	 
	
	 ,+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:&{+qFX6 ,AKK  JJv."jj2 N9e*56 	 	
	 ,+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  si    r:&{+FX6 , 	4::f#56
 L 	 
	
 ,+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    $4x@722>x2H1I 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$**6x*@)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*00<V0D/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00<V0D/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  (    4t<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  (    4t<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5UC		?#7#78,,-KLx}}o-AB6=ohoo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5UC		?#7#78,,-KLx}}o-AB6?ohoo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3q &"*
 / $((*"3"3"5!  
 4 AKK  9:EB 43s   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  su    723q &"*  
 4 AKK 1	
 43s   !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<#7u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    hjA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    NN
	 	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*    NN
	 	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  sy    !XZV$of&="":.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                     t        j                  t        j                  ddddgt         j                        }| j                  d|       y )N-mpipshow
jsonschemarG   s   License: MIT)
subprocesscheck_outputsys
executableSTDOUTr   )r   outputs     r   test_licensezTestCLIIntegration.test_licenses  s=    ((^^T5&,?$$
 	ov.r   c                     t        j                  t        j                  dddddgt         j                        }|j                  d      j                         }| j                  |t        j                  d             y )Nz-Wr   rA  rD  z	--versionrE  zutf-8)
rF  rG  rH  rI  rJ  decodestriprN   r   version)r   rP  s     r   test_versionzTestCLIIntegration.test_versionz  sc    ))^^T8T<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 )NrA  rD  rE  z--help)rF  rG  rH  rI  rJ  rN   )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?  r  s    /B	2r   r?  )'
contextlibr   r   	importlibr   ior   r;   r   pathlibr   textwrapr	   unittestr
   r  rF  rH  r
  warningsrD  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 2w s   0B<<C