
    Mho                        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           n# 1 swxY w Y   d Z!d Z"d Z# G d de          Z$ G d de          Z% G d de          Z&dS )    )redirect_stderrredirect_stdout)metadata)StringIO)JSONDecodeError)Path)dedent)TestCaseN)Draft4ValidatorDraft202012Validator)SchemaErrorValidationError_RefResolutionError)_LATEST_VERSIONvalidateignore)clic                  ^     t          t                                 G  fdd          }|S )Nc                   6    e Zd Zd Z fdZed             ZdS )%fake_validator.<locals>.FakeValidatorc                     d S N )selfargskwargss      Y/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/jsonschema/tests/test_cli.py__init__z.fake_validator.<locals>.FakeValidator.__init__    s    D    c                 4    r                                 S g S r   )pop)r   instanceerrorss     r   iter_errorsz1fake_validator.<locals>.FakeValidator.iter_errors#   s     $zz||#Ir   c                     d S r   r   r   schemas     r   check_schemaz2fake_validator.<locals>.FakeValidator.check_schema(   s    Dr   N)__name__
__module____qualname__r   r$   classmethodr(   )r#   s   r   FakeValidatorr      sX        	 	 		 	 	 	 	
 
	 	 
	 	 	r   r-   )listreversed)r#   r-   s   ` r   fake_validatorr0      sR    (6""##F          r   c                       fd}|S )Nc                 n                         |           }|t          |           t          |          S r   )getFileNotFoundErrorr   )pathcontentsall_contentss     r   openzfake_open.<locals>.open0   s8    ##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   se    M
8 KLLL    5zzs   % 
AAAAc                   6   e Zd Zd e            dfdZd1d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/d0 Z0dS )2TestCLINr   c                 h   t          j        |          }|                    |           |                     t	          t           d                     t          |pi           t           _        	 t                      t                      }}t          j        ||||          }	t           `n# t           `w xY w| 	                    |	|t          d| d|	 d|                                 d|                                 d	                     |                                |                                fS )	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   sL    N4((	"""f--...U[b))		%ZZFF"w	      LLLLiV.7 =M  $__.. 
 $__..  . . 	 
	
 
	
 
	
   &//"3"333s   .4B* *	B3 c                     |                       | j        di |t          |          t          |          f           d S )Nr   )rN   rV   r	   )r   rF   rG   r   s       r   assertOutputszTestCLI.assertOutputsb   sM    DL""6""F^^VF^^,	
 	
 	
 	
 	
r   c                     t          dd          }|                     t          dt          j        |j                            t          |g          g ddd	           d S )
NI am an error!   r"   *{"does not": "matter since it is stubbed"}some_schemasome_instance-ira   r`      12: I am an error!
rQ   	validatorrP   rR   rG   r   rY   dictr;   dumpsr"   r0   r   r@   s     r   test_invalid_instancezTestCLI.test_invalid_instanceh   s~     02>>>H"j88   %eW--777) 	 	
 	
 	
 	
 	
r   c                     t          dd          }|                     t          dt          j        |j                            t          |g          g ddd	           d S )
Nr[   r\   r]   r^   r_   rc   ra   --outputprettyr`   rd   z                ===[ValidationError]===(some_instance)===

                I am an error!
                -----------------------------
            rf   rh   rk   s     r   #test_invalid_instance_pretty_outputz+TestCLI.test_invalid_instance_pretty_outputw   s     02>>>H"j88   %eW--MMM 	 	
 	
 	
 	
 	
r   c                     t          dd          }|                     t          dt          j        |j                            t          |g          g ddd	           d S )
Nr[   r\   r]   r^   r_   )ro   plainrc   ra   r`   rd   re   rf   rh   rk   s     r   +test_invalid_instance_explicit_plain_outputz3TestCLI.test_invalid_instance_explicit_plain_output   s~     02>>>H"j88   %eW--LLL) 	 	
 	
 	
 	
 	
r   c                     d}t          d|          }t          d|          }|                     t          dt          j        |                    t          ||g          g ddd	
           d S )Nr\   First errorr]   Second errorr^   r_   rb   rd   zM                12: First error
                12: Second error
            rf   r   rY   ri   r;   rj   r0   r   r"   firstseconds       r   %test_invalid_instance_multiple_errorsz-TestCLI.test_invalid_instance_multiple_errors   s    AAA (CCCH"j22   %eV_55777 	 	
 	
 	
 	
 	
r   c                     d}t          d|          }t          d|          }|                     t          dt          j        |                    t          ||g          g ddd	
           d S )Nr\   rv   r]   rw   r^   r_   rn   rd   a                  ===[ValidationError]===(some_instance)===

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

                Second error
                -----------------------------
            rf   rx   ry   s       r   3test_invalid_instance_multiple_errors_pretty_outputz;TestCLI.test_invalid_instance_multiple_errors_pretty_output   s    AAA (CCCH"j22   %eV_55MMM	 	 	
 	
 	
 	
 	
r   c           	      2   d}t          d|          t          d|          g}d}t          d|          g}|                     t          dt          j        |          t          j        |                    t          ||          g d	d
d           d S )Nr\   An errorr]   Another errorfooBOOMr^   r`   some_first_instancesome_second_instance)rc   r   rc   r   r`   rd   ze                12: An error
                12: Another error
                foo: BOOM
            rf   rx   r   first_instancefirst_errorssecond_instancesecond_errorss        r   test_multiple_invalid_instancesz'TestCLI.test_multiple_invalid_instances   s    J@@@OnEEE
  (/JJJKH$(J~$>$>%)Z%@%@  
 %\=AA    	 	
 	
 	
 	
 	
r   c           	      2   d}t          d|          t          d|          g}d}t          d|          g}|                     t          dt          j        |          t          j        |                    t          ||          g d	d
d           d S )Nr\   r   r]   r   r   r   r^   r   )ro   rp   rc   r   rc   r   r`   rd   a                  ===[ValidationError]===(some_first_instance)===

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

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

                BOOM
                -----------------------------
            rf   rx   r   s        r   -test_multiple_invalid_instances_pretty_outputz5TestCLI.test_multiple_invalid_instances_pretty_output   s    J@@@OnEEE
  (/JJJKH$(J~$>$>%)Z%@%@  
 %\=AA   ! 	 	
 	
 	
 	
 	
r   c           	      2   d}t          d|          t          d|          g}d}t          d|          g}|                     t          dt          j        |          t          j        |                    t          ||          g d	d
d           d S )Nr\   r   r]   r   r   r   r^   r   )--error-format&:{error.message}._-_.{error.instance}:rc   r   rc   r   r`   rd   z5:An error._-_.12::Another error._-_.12::BOOM._-_.foo:rf   rx   r   s        r   test_custom_error_formatz TestCLI.test_custom_error_format  s    J@@@OnEEE
  (/JJJKH$(J~$>$>%)Z%@%@  
 %\=AA   J! 	 	
 	
 	
 	
 	
r   c                 V    |                      t          d          dgdd           d S )Nz{"type": 12}r`   r`   rd   O                12: 12 is not valid under any of the given schemas
            rQ   rP   rR   rG   rY   ri   r   s    r   test_invalid_schemazTestCLI.test_invalid_schema.  sD    >222 	 	
 	
 	
 	
 	
r   c           	      X   ddi}|                      t                    5 }t          |d           d d d            n# 1 swxY w Y   t          |j                  }|                     t          t          j        |                    g dddt          |          z   d	z   
           d S )Ntyper\   rW   r'   r"   r   ro   rp   r`   rd   %===[SchemaError]===(some_schema)===


-----------------------------
r   	assertRaisesr   r   r>   	exceptionrY   ri   r;   rj   r   r'   er@   s       r   !test_invalid_schema_pretty_outputz)TestCLI.test_invalid_schema_pretty_output9  s    "{++ 	1qFR0000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1AK  4:f#5#56666669e**56 	 
	
 
	
 
	
 
	
 
	
s   =AAc                 V    |                      t          d          dgdd           d S )Nz{"type": 12, "items": 57}r   r`   rd   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  sE    #>??? 	 	
 	
 	
 	
 	
r   c           	      Z   ddd}|                      t                    5 }t          |d           d d d            n# 1 swxY w Y   t          |j                  }|                     t          t          j        |                    g ddd	t          |          z   d
z              d S )Nr\   9   )r   itemsrW   r   r   r   rd   r   r   r   r   r   s       r   1test_invalid_schema_multiple_errors_pretty_outputz9TestCLI.test_invalid_schema_multiple_errors_pretty_outputW  s    r**{++ 	1qFR0000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1AK  4:f#5#56666669e**56 	 
	
 
	
 
	
 
	
 
	
s   >AAc                 Z    |                      t          dd          g ddd           dS )	zv
        "Validating" an instance that's invalid under an invalid schema
        just shows the schema error.
        z{"type": 12, "minimum": 30}13r_   rb   rd   r   r   Nr   r   s    r   )test_invalid_schema_with_invalid_instancez1TestCLI.test_invalid_schema_with_invalid_instancej  sV    
 	9"   877 	 	
 	
 	
 	
 	
r   c           	         dddd}}|                      t                    5 }t          ||           d d d            n# 1 swxY w Y   t          |j                  }|                     t          t          j        |          t          j        |                    g ddd	t          |          z   d
z              d S )N   r\      r   minimumr   r_   ro   rp   rc   ra   r`   rd   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::&{++ 	7qFX6666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7AK   Jv.."j22   NMM9e**56 	 	
 	
 	
 	
 	
   A  AAc           
          |                      t          ddd          g ddd                    t          d                               d S )	Nz{"minimum": 30}not valid JSON!12)r`   r   r   )rc   r   rc   r   r`   rd   zw                Failed to parse 'first_instance': {}
                12: 12 is less than the minimum of 30
            r   )rY   ri   formatrA   r   s    r   -test_invalid_instance_continues_with_the_restz5TestCLI.test_invalid_instance_continues_with_the_rest  su    -0 $  
    |$56677! 	 	
 	
 	
 	
 	
r   c                    dddd}}|                      t                    5  t          ||           d d d            n# 1 swxY w Y   |                     t	          t          j        |                    g ddd	
           d S )Nr   r\   r   r   r   r   )r   r   r`   rd   z7:12 is not valid under any of the given schemas._-_.12:r   )r   r   r   rY   ri   r;   rj   )r   r"   r'   s      r   1test_custom_error_format_applies_to_schema_errorsz9TestCLI.test_custom_error_format_applies_to_schema_errors  s    r::&{++ 	7 	7FX6666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	4:f#5#5666  
 L 	 
	
 
	
 
	
 
	
 
	
r   c           	          d}|                      t          d|          g dddt          |           d           d S )	Nr   {}r_   rb   rd   z1                Failed to parse 'some_instance': 
            r   rY   ri   rA   r   r"   s     r   test_instance_is_invalid_JSONz%TestCLI.test_instance_is_invalid_JSON  si    $4x@@@7772>x2H2H   	 	
 	
 	
 	
 	
r   c                     |                      t          dd          g dd          \  }}|                     |           |                     d|           |                     d|           d S )	Nr   r   r_   r   rd   rQ   rP   rR   z7(some_instance)===

Traceback (most recent call last):
r`   rV   ri   rK   assertInassertNotInr   rF   rG   s      r   +test_instance_is_invalid_JSON_pretty_outputz3TestCLI.test_instance_is_invalid_JSON_pretty_output  s     /  
 NMM & 	
 	
 	   H	
 	
 	
 	/////r   c           
          d}|                      t          d          t          |          dgddt          |           d           d S )	Nr   r   r   r`   rd   z)                Failed to parse <stdin>: r   )rQ   rE   rP   rR   rG   )rY   ri   r   rA   r   s     r   &test_instance_is_invalid_JSON_on_stdinz.TestCLI.test_instance_is_invalid_JSON_on_stdin  sn    $4(((8$$*6x*@*@   	 
	
 
	
 
	
 
	
 
	
r   c                     |                      t          d          t          d          g dd          \  }}|                     |           |                     d|           |                     d|           d S )	Nr   r   r   r   rd   )rQ   rE   rP   rR   z1(<stdin>)===

Traceback (most recent call last):
r`   )rV   ri   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  s    4(((,--666 & 
 
 	   B	
 	
 	
 	/////r   c           	      |    d}|                      t          |          dgddt          |           d           d S )Nr   r   r`   rd   /                Failed to parse 'some_schema': r   r   r   r&   s     r   test_schema_is_invalid_JSONz#TestCLI.test_schema_is_invalid_JSON  sc    "6***0<V0D0D   	 		
 		
 		
 		
 		
r   c                     |                      t          d          g dd          \  }}|                     |           |                     d|           d S )Nr   r   r   rd   r   5(some_schema)===

Traceback (most recent call last):
)rV   ri   rK   r   r   s      r   )test_schema_is_invalid_JSON_pretty_outputz1TestCLI.test_schema_is_invalid_JSON_pretty_output  su    #4555666 & 
 
 	   F	
 	
 	
 	
 	
r   c           	          d\  }}|                      t          ||          dgddt          |           d           dS )	M
        Only the schema error is reported, as we abort immediately.
        )r   also not valid JSON!r_   r`   rd   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  sm     E6BBB0<V0D0D   	 		
 		
 		
 		
 		
r   c                     |                      t          dd          g dd          \  }}|                     |           |                     d|           |                     d|           d	S )
r   r   r   r_   r   rd   r   r   ra   Nr   r   s      r   <test_schema_and_instance_are_both_invalid_JSON_pretty_outputzDTestCLI.test_schema_and_instance_are_both_invalid_JSON_pretty_output"  s     -4  
 NMM & 	
 	
 	   F	
 	
 	
 	&11111r   c                 X    |                      t          d          g ddd           d S )Nr   r   )rc   nonexisting_instancer`   rd   zC                'nonexisting_instance' does not exist.
            r   r   r   s    r   test_instance_does_not_existz$TestCLI.test_instance_does_not_exist7  sH    4(((>>> 	 	
 	
 	
 	
 	
r   c                 X    |                      t          d          g ddd           d S )Nr   r   )ro   rp   rc   r   r`   rd   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  sP    4(((    	 	
 	
 	
 	
 	
r   c                 8    |                      dgdd           d S )Nnonexisting_schemard   %'nonexisting_schema' does not exist.
rP   rR   rG   rY   r   s    r   test_schema_does_not_existz"TestCLI.test_schema_does_not_existT  s5    &';	 	 	
 	
 	
 	
 	
r   c                 :    |                      g ddd           d S )N)ro   rp   r   rd                   ===[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                 :    |                      g ddd           d S )N)rc   r   r   rd   r   r   r   r   s    r   &test_neither_instance_nor_schema_existz.TestCLI.test_neither_instance_nor_schema_existi  s8    EEE;	 	 	
 	
 	
 	
 	
r   c                 :    |                      g ddd           d S )N)ro   rp   rc   r   r   rd   r   r   r   r   s    r   4test_neither_instance_nor_schema_exist_pretty_outputz<TestCLI.test_neither_instance_nor_schema_exist_pretty_outputq  sB        	 	
 	
 	
 	
 	
r   c                 Z    |                      t          dd          g ddd           d S Nr   r_   rb   rW   rQ   rP   rF   rG   r   r   s    r   test_successful_validationz"TestCLI.test_successful_validation  H    4t<<<777	 	 	
 	
 	
 	
 	
r   c                 Z    |                      t          dd          g ddd           d S Nr   r_   r   z"===[SUCCESS]===(some_instance)===
rW   r   r   r   s    r   (test_successful_validation_pretty_outputz0TestCLI.test_successful_validation_pretty_output  H    4t<<<MMM8	 	 	
 	
 	
 	
 	
r   c                 r    |                      t          d          t          d          dgdd           d S )Nr   r   r`   rW   rQ   rE   rP   rF   rG   rY   ri   r   r   s    r   #test_successful_validation_of_stdinz+TestCLI.test_successful_validation_of_stdin  sK    4(((4.. 	 	
 	
 	
 	
 	
r   c                 t    |                      t          d          t          d          g ddd           d S )Nr   r   r   z===[SUCCESS]===(<stdin>)===
rW   r   r   r   s    r   1test_successful_validation_of_stdin_pretty_outputz9TestCLI.test_successful_validation_of_stdin_pretty_output  sO    4(((4..6662 	 	
 	
 	
 	
 	
r   c                 Z    |                      t          dd          g ddd           d S r   r   r   s    r   -test_successful_validation_of_just_the_schemaz5TestCLI.test_successful_validation_of_just_the_schema  r   r   c                 Z    |                      t          dd          g ddd           d S 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          }|                                 |                     t          j        |j                   t          |j                  }|                    d           d|j         d}| 	                    t          |d          dd	d
|j                                        dz   dgdd           d S )NFdelete-{"definitions": {"num": {"type": "integer"}}}
{"$ref": "#/definitions/num"}1r_   rc   ra   
--base-uri/r`   rW   r   tempfileNamedTemporaryFileclose
addCleanuposremovenamer   
write_textrY   ri   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    "5UCCC	?#7888,--KLLLBx}BBB6===oho4466<
  	 		
 		
 		
 		
 		
r   c                    t          j        d          }|                                 |                     t          j        |j                   t          |j                  }|                    d           d|j         d}| 	                    t          |d          dd	d
|j                                        dz   dgddd           d S )NFr  r  r  r  z"1"r_   rc   ra   r  r	  r`   rd   rW   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    "5UCCC	?#7888,--KLLLBx}BBB6???oho4466<
 6 	 
	
 
	
 
	
 
	
 
	
r   c           	      |   d}d}|                      t                    5 }|                     t          ||          dddt	          j                                                    dg           d d d            n# 1 swxY w Y   t          |j                  }| 	                    t          j         d	|           d S )
Nz4{"$ref": "someNonexistentFile.json#definitions/num"}r  r_   rc   ra   r  r`   rQ   rP   zsomeNonexistentFile.json')r   r   rY   ri   r   cwdr  r>   r   r   r  sepr   r'   r"   r   r@   s        r   ,test_nonexistent_file_with_explicit_base_uriz4TestCLI.test_nonexistent_file_with_explicit_base_uri  s   G233 	q &"*  
 / $(**"3"3"5"5!  
 
 
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 AK  :::EBBBBBs   AA::A>A>c                    d}d}|                      t                    5 }|                     t          ||          g d           d d d            n# 1 swxY w Y   t	          |j                  }|                     |d           d S )Nz${"$ref": "foo.json#definitions/num"}r  r_   )rc   ra   r  znot@UR1r`   r  zunknown url type: 'foo.json')r   r   rY   ri   r>   r   rN   r   s        r   test_invalid_explicit_base_uriz&TestCLI.test_invalid_explicit_base_uri  s    7233 	q &"*      
 
 
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 AK  1	
 	
 	
 	
 	
s   )AAAc                     |                      t          t                     |                     t	          dd          g dddd           d S )	Nz{"const": "check"}z"a"r_   rb   rd   rW   za: 'check' was expected
r  )assertIsr   r   rY   ri   r   s    r   =test_it_validates_using_the_latest_validator_when_unspecifiedzETestCLI.test_it_validates_using_the_latest_validator_when_unspecified  sc     	*O<<<#7uMMM777. 	 	
 	
 	
 	
 	
r   c                 d    d}d}|                      t          ||          g dddd           d	S )
zG
        Specifically, `const` validation applies for Draft 7.
        z
            {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "const": "check"
            }
        "foo"r_   rb   rd   rW   zfoo: 'check' was expected
r  Nr   r   s      r   -test_it_validates_using_draft7_when_specifiedz5TestCLI.test_it_validates_using_draft7_when_specified  sY     6BBB7770 	 	
 	
 	
 	
 	
r   c                 b    d}d}|                      t          ||          g ddd           dS )zP
        Specifically, `const` validation *does not* apply for Draft 4.
        z
            {
                "$schema": "http://json-schema.org/draft-04/schema#",
                "const": "check"
            }
            r(  r_   rb   rW   r   Nr   r   s      r   -test_it_validates_using_draft4_when_specifiedz5TestCLI.test_it_validates_using_draft4_when_specified*  sV     6BBB777	 	 	
 	
 	
 	
 	
r   )rW   rW   )1r)   r*   r+   r   rV   rY   rl   rq   rt   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       hhjjA4 4 4 4@
 
 
 

 
 

 
 
(
 
 

 
 
*
 
 
6
 
 
>'
 '
 '
R
 
 
8	
 	
 	

 
 
&	
 	
 	

 
 
&
 
 
$
 
 
,
 
 
(
 
 
$
 
 
0 0 0$
 
 
0 0 0 
 
 

 
 

 
 
 2 2 2*	
 	
 	

 
 
$
 
 

 
 

 
 

 
 
"
 
 

 
 

 
 

 
 

 
 

 
 

 
 
*
 
 
,C C C&
 
 
*
 
 
 
 
 
&
 
 
 
 
r   rC   c                   @    e Zd Z e            Zd Zd Zd Zd Zd Z	dS )
TestParserc                 t    t          j        g d          }|                     |d         | j                   d S )N)--validatorz2jsonschema.tests.test_cli.TestParser.FakeValidator
--instancemem://some/instancemem://some/schemarg   )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  sF    N  
 
	 	i,d.@AAAAAr   c                 t    t          j        g d          }|                     |d         t                     d S )N)r/  r   r0  r1  r2  rg   )r   rI   r%  r   r3  s     r   !test_find_validator_in_jsonschemaz,TestParser.test_find_validator_in_jsonschemaL  sC    N  
 
	 	i,o>>>>>r   c                    t                      t                      }}t          |          5  t          |          5  |                     t                    5  t          j        |           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                                |                                fS r   )r   r   r   r   
SystemExitr   rI   rO   )r   rP   rF   rG   s       r   cli_output_forzTestParser.cli_output_forV  sr   !XZZV$$ 	% 	%of&=&= 	% 	%"":.. % %t$$$% % % % % % % % % % % % % % %	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%   &//"3"333sX   B&BA8,B8A<<B?A< BB&B	B&B	B&&B*-B*c                     |                      ddd          \  }}|                     d|           |                     |           d S )Nro   r   r2  zinvalid choice: 'foo'r9  r   rK   r   s      r   test_unknown_outputzTestParser.test_unknown_output]  sT    ,,
 
 	-v666     r   c                     |                      ddddd          \  }}|                     d|           |                     |           d S )Nro   rp   r   r   r2  z3--error-format can only be used with --output plainr;  r   s      r   test_useless_error_formatz$TestParser.test_useless_error_formate  sb    ,,e
 

 	A	
 	
 	
 	     r   N)
r)   r*   r+   r0   r-   r4  r6  r9  r<  r>  r   r   r   r-  r-  =  so        "N$$M	B 	B 	B? ? ?4 4 4! ! !
! 
! 
! 
! 
!r   r-  c                        e Zd Zd Zd Zd ZdS )TestCLIIntegrationc                     t          j         d          }|                     |                    d          d           d S )N
jsonschemazLicense-ExpressionMIT)r   rN   r3   )r   our_metadatas     r   test_licensezTestCLIIntegration.test_licenses  s=    (66))*>??GGGGGr   c                    t          j        t          j        dddddgt           j                  }|                    d                                          }|                     |t          j	        d                     d S )Nz-Wr   -mrB  z	--versionrG   zutf-8)

subprocesscheck_outputsys
executableSTDOUTdecodestriprN   r   version)r   rP  s     r   test_versionzTestCLIIntegration.test_versionw  sw    )^T8T<M$
 
 
 ..))//11("2<"@"@AAAAAr   c                     t          j        t          j        ddgt           j                  }t          j        t          j        dddgt           j                  }|                     ||           d S )NrG  rB  rH  z--help)rI  rJ  rK  rL  rM  rN   )r   outputoutput_for_helps      r   #test_no_arguments_shows_usage_notesz6TestCLIIntegration.test_no_arguments_shows_usage_notes  sv    (^T<0$
 
 
 %1^T<:$
 
 
 	11111r   N)r)   r*   r+   rE  rQ  rU  r   r   r   r@  r@  r  sG        H H HB B B	2 	2 	2 	2 	2r   r@  )'
contextlibr   r   	importlibr   ior   r;   r   pathlibr   textwrapr	   unittestr
   r  rI  rK  r  warningsrB  r   r   jsonschema.exceptionsr   r   r   jsonschema.validatorsr   r   catch_warningssimplefilterr   r0   r9   rA   rC   r-  r@  r   r   r   <module>ra     ss   7 7 7 7 7 7 7 7                                            				     



   < < < < < < < <         
 < ; ; ; ; ; ; ;X  H(###              
  &  M M My
 y
 y
 y
 y
h y
 y
 y
x2! 2! 2! 2! 2! 2! 2! 2!j2 2 2 2 2 2 2 2 2 2s   .BBB