`dq@dZddlmZddlmZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl m Z ddlZdZe j dGd d eZe j dGd d eZe j dd GddeZdZy)z= Python representations of the JSON Schema Test Suite tests. )partial)PathN) _VALIDATORSctjjd}| t|Sttj j j dz }|js td|S)NJSON_SCHEMA_TEST_SUITEjsonzCan't find the JSON-Schema-Test-Suite directory. Set the 'JSON_SCHEMA_TEST_SUITE' environment variable or run the tests from alongside a checkout of the suite.) osenvirongetr jsonschema__file__parentis_dir ValueError)roots 9/usr/lib/python3/dist-packages/jsonschema/tests/_suite.py _find_suitersh ::>>2 3D Dz  ## $ + + 2 2V ;D ;;=    KT)hashcdeZdZejej eZdZdZ dZ y)Suitedefaultc|jjdd}tjtj t |dg}tj|jdS)Nbinjsonschema_suiteremotesutf-8) _rootjoinpath subprocess check_outputsys executablestrrloadsdecode)selfrrs r_remoteszSuite._remotes+sX::..u6HI)) ^^S!12I > zz'..122rctjD](\}}|j|j||*y)N)name)runner Validator)ritemsversion benchmark)r(r,r+r-s rr0zSuite.benchmark2sB*002 OD) LLdL # - -# .  rcnt||jjd||jS)Ntests)r+pathr)Versionrr r)r(r+s rr/z Suite.version9s/$$Wd3MMO  rN) __name__ __module__ __qualname__attribFactoryrrr)r0r/rrrr&s. DGGLDLL5 6E3 rrceZdZejZejZejZdZdZ dZ dZ dZ dZ y)r4c |jD]9}|D]2}|j|jt|jfi|4;yN)r2 bench_funcfully_qualified_namervalidate_ignoring_errors)r(r,kwargssuitetests rr0zVersion.benchmarkIsPZZ\ E !!--D99DVD  rcLfdjjdDS)Nc3lK|]+}j|jdd|D]}|-ywNsubjectr3 _tests_inr+.0childrEr(s r z Version.tests..RL  3B'    14*.json)_pathglobr(s`rr2z Version.testsQs" 2  rcpjjdd}fd|jdDS)Noptionalformatc3lK|]+}j|jdd|D]}|-ywrHrLrNs rrQz'Version.format_tests..]rRrSrT)rUr rV)r(r3s` r format_testszVersion.format_tests[s4zz"":x8 8,  rcb|j||jjd|dzS)NrYz.jsonrJ)rMrUr r5s roptional_tests_ofzVersion.optional_tests_offs3~~$$Z@  rc ~|jdd|jjjddz}|Dcic]-}|D]&}|D]}|j|j di|!(/}}}}t |tjf|} t|_ |Scc}}}w#t$rY|SwxYw)Nr+Test-r<) popr+titlereplace method_nameto_unittest_methodtypeunittestTestCase)_someone_save_us_the_module_of_the_callerr7 Exception) r(suitesrCr+rDr2rEmethodsclss rto_unittest_testcasezVersion.to_unittest_testcaselszz&&499??+<+D+DS"+M"MN         5d55?? ?    4(++-w7 FHCN !     s2B(B// B<;B<c#Ktj|jdD]fddDyw)Nr)encodingc 3`K|]%}tdddjd|'yw) descriptionschema)r/rKcase_descriptionrurNr<)_Testr))rOrEeachr(rKs rrQz$Version._tests_in..sK  #%)-%8> MM    s+.r2)rr& read_text)r(rKr3rxs`` @rrMzVersion._tests_insBJJt~~w~?@ D #7m   s>AN)r6r7r8r9r:rUr)r+r0r2r\r^rprMr<rrr4r4AsI DGGIEtwwyH 4779D    ( rr4F)rreprceZdZejZejZejZejZejZ ejdZ ejZ ejZ ejdZ dZedZedZdfd Zd Zd Zy) rwF)rzNrc8dj|jS)Nz )rZrArWs r__repr__z_Test.__repr__s!!$";";< )joinr/r+rKrvrtrWs rrAz_Test.fully_qualified_names>zz !! %%     rc d}djtj|d|jtj|d|jtj|d|j S)Nz[\W\- ]+z test_{}_{}_{}_)rZresubrKrvrt)r( delimiterss rrfz_Test.method_namesZ %% FF:sDLL 1 FF:sD$9$9 : FF:sD$4$4 5  rcyr?r<)rEs rz_Test.src jrfd}nfd}j|_|}||Stjj dddk7rt j|St j||S)Nc*jdiyNr<)validatethisrCr(s rfnz$_Test.to_unittest_method..fns ''rc|jtj5jdidddy#1swYyxYwr) assertRaisesr ValidationErrorrrs rrz$_Test.to_unittest_method..fns=&&z'A'AB,!DMM+F+,,,s =AJSON_SCHEMA_EXPECTED_FAILURES0) validrfr6r r r riexpectedFailureskip)r(rrCrreasons` ` rrgz_Test.to_unittest_methodsu :: ( ,&& d >I ZZ^^;S AS H++B/ /(8==(, ,rc |j|jtjj |j|j |j }d}||_|d|j|d|}tjjdddk7r t|j|jy)N)rustoreid_ofctd|)NzTried to access the network: ) RuntimeError)uris rprevent_network_accessz._Test.validate..prevent_network_accesss!>seDE Er)ruresolverJSON_SCHEMA_DEBUGr)instancer<) check_schemarur RefResolver from_schemar)ID_OFresolve_remoter r r breakpointrdata)r(r-rCrr validators rrz_Test.validatest{{+))55;;--//6  F"8NT[[8NvN ::>>-s 3s : LDII.rc\ |j|y#tj$rYywxYw)N)r-)rr r)r(r-s rrBz_Test.validate_ignoring_errorss-  MMIM .))   s ++)r6r7r8r9r:r/rKrvrtrrurr)commentr}propertyrArfrgrrBr<rrrwrwsdggiGdggiGtwwy$'')K 4779D TWW% F DGGIEtwwyHdggd#G=    '8-$/(rrwcFtjdjdS)a The FQON of the module 2nd stack frames up from here. This is intended to allow us to dynamically return test case classes that are indistinguishable from being defined in the module that wants them. Otherwise, trial will mis-print the FQON, and copy pasting it won't re-run the class that really is running. Save us all, this is all so so so so so terrible. r6)r# _getframe f_globalsr<rrrkrks ==  % %j 11r)__doc__ functoolsrpathlibrrr rr!r#rir9jsonschema.validatorsrr rsobjectrr4rwrkr<rrrs   -$T F  4TIfIIXTRFRRj 2r