L ioddlmZmZddlmZddlmZddlmZddl m Z ddl m Z ddl mZddlZddlZddlZddlZddlZddlZdd lmZmZdd lmZmZmZdd lmZmZej<5ej>d dd lm Z ddddZ!dZ"dZ#GddeZ$GddeZ%GddeZ&y#1swY4xYw))redirect_stderrredirect_stdout)metadata)StringIO)JSONDecodeError)Path)dedent)TestCaseN)Draft4ValidatorDraft202012Validator) SchemaErrorValidationError_RefResolutionError)_LATEST_VERSIONvalidateignore)clicHttGfdd}|S)Nc.eZdZdZfdZedZy)%fake_validator..FakeValidatorcyN)selfargskwargss _/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/jsonschema/tests/test_cli.py__init__z.fake_validator..FakeValidator.__init__ s c,rjSgSr)pop)rinstanceerrorss r iter_errorsz1fake_validator..FakeValidator.iter_errors#szz|#Ircyrrrschemas r check_schemaz2fake_validator..FakeValidator.check_schema(s rN)__name__ __module__ __qualname__rr$ classmethodr()r#sr FakeValidatorrs!      rr-)listreversed)r#r-s` rfake_validatorr0s$ (6" #F   rcfd}|S)NcVj|}| t|t|Sr)getFileNotFoundErrorr)pathcontents all_contentss ropenzfake_open..open0s/##D)  #D) )!!rr)r7r8s` r fake_openr9/s" Krc tj|td#t$r}t |cYd}~Sd}~wwxYw)Nz.Tried and failed to capture a JSON dump error.)jsonloads RuntimeErrorrstr)non_jsonerrors r _message_forrA8s>M 8KLL 5zs" A ;AAc.eZdZdedfdZd0dZdZdZdZdZ d Z d Z d Z d Z d ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ 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)1TestCLINrc tj|}|j||jt tdt |xsit_ tt}}tj||||} t`|j| |td|d| d|jd|jd |j|jfS#t`wxYw) Nr8)stdinstdoutstderrz. Expected an exit code of z != z. stdout: z stderr: z )msg) r parse_argsupdate assertFalsehasattrr9r8rrun assertEqualr getvalue) rargvfilesrE exit_codeoverride argumentsrFrGactual_exit_codes rrun_clizTestCLI.run_cliBsNN4( " f-.U[b) %ZFF"ww     iV..7[=M H"jj8%eW-7)  rctdd}|jtdtj|j t |ggddd y) NrZr[r\r]r^rbr`--outputprettyr_rcz ===[ValidationError]===(some_instance)=== I am an error! ----------------------------- rergrjs r#test_invalid_instance_pretty_outputz+TestCLI.test_invalid_instance_pretty_outputwsT 02> H"jj8%eW-M  rctdd}|jtdtj|j t |ggddd y) NrZr[r\r]r^)rnplainrbr`r_rcrdrergrjs r+test_invalid_instance_explicit_plain_outputz3TestCLI.test_invalid_instance_explicit_plain_outputsR 02> H"jj8%eW-L)  rcd}td|}td|}|jtdtj|t ||ggddd y) Nr[ First errorr\ Second errorr]r^rarczM 12: First error 12: Second error rerrXrhr;rir0rr"firstseconds r%test_invalid_instance_multiple_errorsz-TestCLI.test_invalid_instance_multiple_errorssb A (C H"jj2%eV_57  rcd}td|}td|}|jtdtj|t ||ggddd y) Nr[rur\rvr]r^rmrca ===[ValidationError]===(some_instance)=== First error ----------------------------- ===[ValidationError]===(some_instance)=== Second error ----------------------------- rerwrxs r3test_invalid_instance_multiple_errors_pretty_outputz;TestCLI.test_invalid_instance_multiple_errors_pretty_outputsb A (C H"jj2%eV_5M   rc d}td|td|g}d}td|g}|jtdtj|tj|t ||gd d d y) Nr[An errorr\ Another errorfooBOOMr]r_some_first_instancesome_second_instance)rbrrbrr_rcze 12: An error 12: Another error foo: BOOM rerwrfirst_instance first_errorssecond_instance second_errorss rtest_multiple_invalid_instancesz'TestCLI.test_multiple_invalid_instancess J @ On E  (/JK  H$(JJ~$>%)ZZ%@ %\=A   rc d}td|td|g}d}td|g}|jtdtj|tj|t ||gd d d y) Nr[rr\rrrr]r)rnrorbrrbrr_rca ===[ValidationError]===(some_first_instance)=== An error ----------------------------- ===[ValidationError]===(some_first_instance)=== Another error ----------------------------- ===[ValidationError]===(some_second_instance)=== BOOM ----------------------------- rerwrs r-test_multiple_invalid_instances_pretty_outputz5TestCLI.test_multiple_invalid_instances_pretty_outputs J @ On E  (/JK  H$(JJ~$>%)ZZ%@ %\=A !  rc d}td|td|g}d}td|g}|jtdtj|tj|t ||gd d d y) Nr[rr\rrrr]r)--error-format&:{error.message}._-_.{error.instance}:rbrrbrr_rcz5:An error._-_.12::Another error._-_.12::BOOM._-_.foo:rerwrs rtest_custom_error_formatz TestCLI.test_custom_error_formats J @ On E  (/JK  H$(JJ~$>%)ZZ%@ %\=AJ!  rcD|jtddgddy)Nz {"type": 12}r_r_rcO 12: 12 is not valid under any of the given schemas rQrPrRrGrXrhrs rtest_invalid_schemazTestCLI.test_invalid_schema.s* >2  rc *ddi}|jt5}t|ddddtj}|j t tj|gdddt|zd z y#1swYbxYw) Ntyper[r'r"rrnror_rc%===[SchemaError]===(some_schema)===  ----------------------------- r assertRaisesr rr> exceptionrXrhr;rirr'er@s r!test_invalid_schema_pretty_outputz)TestCLI.test_invalid_schema_pretty_output9s"   { + 1q FR 0 1AKK  4::f#5669e*56   1 1s B  BcD|jtddgddy)Nz{"type": 12, "items": 57}rr_rczF 57: 57 is not of type 'object', 'boolean' rrrs r#test_invalid_schema_multiple_errorsz+TestCLI.test_invalid_schema_multiple_errorsLs+ #>?  rc ,ddd}|jt5}t|ddddtj}|j t tj|gddd t|zd z y#1swYbxYw) Nr[9)ritemsrrrrrcrrrrrs r1test_invalid_schema_multiple_errors_pretty_outputz9TestCLI.test_invalid_schema_multiple_errors_pretty_outputWsr*   { + 1q FR 0 1AKK  4::f#5669e*56   1 1s B  BcH|jtddgdddy) zv "Validating" an instance that's invalid under an invalid schema just shows the schema error. z{"type": 12, "minimum": 30}13r^rarcrrNrrs r)test_invalid_schema_with_invalid_instancez1TestCLI.test_invalid_schema_with_invalid_instancejs2 9"8  rc Xdddd}}|jt5}t||dddtj}|j t tj|tj|gddd t|zd z y#1swYvxYw) N r[rminimumrr^rnrorbr`r_rcrrrr)rr"r'rr@s r7test_invalid_schema_with_invalid_instance_pretty_outputz?TestCLI.test_invalid_schema_with_invalid_instance_pretty_output|sr:&   { + 7q FX 6 7AKK   JJv."jj2N9e*56   7 7s B  B)c z|jtdddgdddjtdy) Nz{"minimum": 30}not valid JSON!12)r_rr)rbrrbrr_rczw Failed to parse 'first_instance': {} 12: 12 is less than the minimum of 30 r)rXrhformatrArs r-test_invalid_instance_continues_with_the_restz5TestCLI.test_invalid_instance_continues_with_the_restsG -0 $  |$567!  rcdddd}}|jt5t||ddd|jt t j |gddd y#1swY>xYw) Nrr[rrrr)rrr_rcz7:12 is not valid under any of the given schemas._-_.12:r)rr rrXrhr;ri)rr"r's r1test_custom_error_format_applies_to_schema_errorsz9TestCLI.test_custom_error_format_applies_to_schema_errorsspr:&   { + 7 FX 6 7 4::f#56 L   7 7s A((A1c fd}|jtd|gdddt|dy) Nr{}r^rarcz1 Failed to parse 'some_instance': rrXrhrArr"s rtest_instance_is_invalid_JSONz%TestCLI.test_instance_is_invalid_JSONsE$ 4x@722>x2H1IJ   rc|jtddgdd\}}|j||jd||j d|y) Nrrr^rrcrQrPrRz7(some_instance)=== Traceback (most recent call last): r_rVrhrKassertIn assertNotInrrFrGs r+test_instance_is_invalid_JSON_pretty_outputz3TestCLI.test_instance_is_invalid_JSON_pretty_outputsd / N&     H   /rc vd}|jtdt|dgddt|dy) Nrrrr_rcz) Failed to parse : r)rQrErPrRrG)rXrhrrArs r&test_instance_is_invalid_JSON_on_stdinz.TestCLI.test_instance_is_invalid_JSON_on_stdinsM$ 4(8$**6x*@)AB   rc|jtdtdgdd\}}|j||j d||j d|y) Nrrrrrc)rQrErPrRz1()=== Traceback (most recent call last): r_)rVrhrrKrrrs r4test_instance_is_invalid_JSON_on_stdin_pretty_outputz  rcF|jtdgdddy)Nrr)rnrorbrr_rcz ===[FileNotFoundError]===(nonexisting_instance)=== 'nonexisting_instance' does not exist. ----------------------------- rrrs r*test_instance_does_not_exist_pretty_outputz2TestCLI.test_instance_does_not_exist_pretty_outputBs, 4(   rc.|jdgddy)Nnonexisting_schemarc%'nonexisting_schema' does not exist. rPrRrGrXrs rtest_schema_does_not_existz"TestCLI.test_schema_does_not_existTs! &';  rc0|jgdddy)N)rnrorrc ===[FileNotFoundError]===(nonexisting_schema)=== 'nonexisting_schema' does not exist. ----------------------------- rrrs r(test_schema_does_not_exist_pretty_outputz0TestCLI.test_schema_does_not_exist_pretty_output\s  =  rc0|jgdddy)N)rbrrrcrrrrs r&test_neither_instance_nor_schema_existz.TestCLI.test_neither_instance_nor_schema_existis E;  rc0|jgdddy)N)rnrorbrrrcrrrrs r4test_neither_instance_nor_schema_exist_pretty_outputz)=== rrrrs r1test_successful_validation_of_stdin_pretty_outputz9TestCLI.test_successful_validation_of_stdin_pretty_outputs- 4(4.62  rcH|jtddgdddyrrrs r-test_successful_validation_of_just_the_schemaz5TestCLI.test_successful_validation_of_just_the_schemarrcH|jtddgdddyrrrs r;test_successful_validation_of_just_the_schema_pretty_outputzCTestCLI.test_successful_validation_of_just_the_schema_pretty_outputrrctjd}|j|jtj |j t|j }|jdd|j d}|jt|ddd d |jjd zd gd d y)NFdelete-{"definitions": {"num": {"type": "integer"}}} {"$ref": "#/definitions/num"}1r^rbr` --base-uri/r_rr tempfileNamedTemporaryFileclose addCleanuposremovenamer write_textrXrhparentas_urirref_schema_fileref_pathr's r0test_successful_validation_via_explicit_base_uriz8TestCLI.test_successful_validation_via_explicit_base_uris"55UC  ?#7#78,,-KLx}}o-AB 6=ohoo446<   rctjd}|j|jtj |j t|j }|jdd|j d}|jt|ddd d |jjd zd gd ddy)NFrrrrz"1"r^rbr`rrr_rcrz 1: '1' is not of type 'integer' rQrPrRrFrGr rs r2test_unsuccessful_validation_via_explicit_base_uriz:TestCLI.test_unsuccessful_validation_via_explicit_base_uris"55UC  ?#7#78,,-KLx}}o-AB 6?ohoo446< 6  rc Vd}d}|jt5}|jt||dddt j j dgdddtj}|jtjd |y#1swYBxYw) Nz4{"$ref": "someNonexistentFile.json#definitions/num"}rr^rbr`rr_rQrPzsomeNonexistentFile.json') rrrXrhrcwdrr>rrrseprr'r"rr@s r,test_nonexistent_file_with_explicit_base_uriz4TestCLI.test_nonexistent_file_with_explicit_base_urisG   2 3 q    &"* / $((*"3"3"5!   AKK   9:EB  s ABB(cd}d}|jt5}|jt||gddddt j }|j |dy#1swY1xYw)Nz${"$ref": "foo.json#definitions/num"}rr^)rbr`rznot@UR1r_rzunknown url type: 'foo.json')rrrXrhr>rrNrs rtest_invalid_explicit_base_uriz&TestCLI.test_invalid_explicit_base_uris|7   2 3 q    &"*   AKK   1   s !A++A4c~|jtt|jt ddgddddy) Nz{"const": "check"}z"a"r^rarcrza: 'check' was expected r)assertIsr rrXrhrs r=test_it_validates_using_the_latest_validator_when_unspecifiedzETestCLI.test_it_validates_using_the_latest_validator_when_unspecifieds= *O< #7uM7.  rcRd}d}|jt||gddddy ) zG Specifically, `const` validation applies for Draft 7. z { "$schema": "http://json-schema.org/draft-07/schema#", "const": "check" } "foo"r^rarcrzfoo: 'check' was expected rNrrs r-test_it_validates_using_draft7_when_specifiedz5TestCLI.test_it_validates_using_draft7_when_specifieds9   6B70  rcPd}d}|jt||gdddy)zP Specifically, `const` validation *does not* apply for Draft 4. z { "$schema": "http://json-schema.org/draft-04/schema#", "const": "check" } r'r^rarrNrrs r-test_it_validates_using_draft4_when_specifiedz5TestCLI.test_it_validates_using_draft4_when_specified*s6  6B7  r)rr)1r)r*r+rrVrXrkrprsr{r}rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr r"r%r(r*rrrrCrCAshjA4@   (   * 6 >' R 8   &   & $ , ( $  0$  0     2*   $     "       * ,C& *  & rrCc8eZdZeZdZdZdZdZdZ y) TestParsercptjgd}|j|d|jy)N) --validatorz2jsonschema.tests.test_cli.TestParser.FakeValidator --instancemem://some/instancemem://some/schemarf)rrIr$r-rrTs r2test_find_validator_by_fully_qualified_object_namez=TestParser.test_find_validator_by_fully_qualified_object_nameAs0NN   i ,d.@.@Arcdtjgd}|j|dty)N)r.r r/r0r1rf)rrIr$r r2s r!test_find_validator_in_jsonschemaz,TestParser.test_find_validator_in_jsonschemaLs*NN   i ,o>rchtt}}t|5t|5|jt5t j |ddddddddd|j|jfS#1swY9xYw#1swY=xYw#1swYAxYwr)rrrr SystemExitrrIrO)rrPrFrGs rcli_output_forzTestParser.cli_output_forVs!XZ V $ %of&= %"":. %t$ % % % &//"333 % % % % % %s: B(BBB B(B BB% !B((B1cv|jddd\}}|jd||j|y)Nrnrr1zinvalid choice: 'foo'r8rrKrs rtest_unknown_outputzTestParser.test_unknown_output]s=,,    -v6  rcz|jddddd\}}|jd||j|y)Nrnrorrr1z3--error-format can only be used with --output plainr:rs rtest_useless_error_formatz$TestParser.test_useless_error_formatesG,,  e   A    rN) r)r*r+r0r-r3r5r8r;r=rrrr,r,=s$"$M B?4! !rr,ceZdZdZdZdZy)TestCLIIntegrationcptjd}|j|jddy)N jsonschemazLicense-ExpressionMIT)rrNr3)r our_metadatas r test_licensezTestCLIIntegration.test_licensess.((6  ))*>?Grctjtjdddddgtj}|j dj }|j|tjdy)Nz-Wr-mrAz --versionrGzutf-8) subprocess check_outputsys executableSTDOUTdecodestriprNrversion)rrOs r test_versionzTestCLIIntegration.test_versionwsc)) ^^T8T< M$$ ..)//1 ("2"2<"@Arctjtjddgtj}tjtjdddgtj}|j ||y)NrFrArGz--help)rHrIrJrKrLrN)routputoutput_for_helps r#test_no_arguments_shows_usage_notesz6TestCLIIntegration.test_no_arguments_shows_usage_notessf(( ^^T< 0$$ %11 ^^T< :$$  1rN)r)r*r+rDrPrTrrrr?r?rsHB 2rr?)' contextlibrr importlibriorr;rpathlibrtextwrapr unittestr rrHrJr warningsrAr r jsonschema.exceptionsr rrjsonschema.validatorsrrcatch_warnings simplefilterrr0r9rArCr,r?rrrr`s7   < <XH(# &My  hy  x2!2!j22ws 0B<<C