rcqZdZddlmZddlmZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl m Z ddlZdZe jdGd d eZe jdGd d eZe jdd GddeZdZdS)z= Python representations of the JSON Schema Test Suite tests. )partial)PathN) _VALIDATORSctjd}|t|Sttjjjdz }|std|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_suitersq :>>2 3 3D Dzz  # $ $ + 2V ;D ;;==      KT)hashc^eZdZejejeZdZdZ dZ dS)Suitedefaultc|jdd}tjtjt |dg}tj| dS)Nbinjsonschema_suiteremotesutf-8) _rootjoinpath subprocess check_outputsys executablestrrloadsdecode)selfrrs r_remoteszSuite._remotes+s`:..u6HII) ^S!122I >  z'..11222rctjD]0\}}||||1dS)N)name)runner Validator)ritemsversion benchmark)r(r,r+r-s rr0zSuite.benchmark2s^*022  OD) LLdL # # - -# .      rc|t||jd||S)Ntests)r+pathr)Versionrr r)r(r+s rr/z Suite.version9s<$$Wd33MMOO    rN) __name__ __module__ __qualname__attribFactoryrrr)r0r/rrrr&sc DGLDL55 6 6 6E333     rrceZdZejZejZejZdZdZ dZ dZ dZ dZ dS)r4c |D]2}|D]-}||jt|jfi|.3dSN)r2 bench_funcfully_qualified_namervalidate_ignoring_errors)r(r,kwargssuitetests rr0zVersion.benchmarkIspZZ\\  E  !!-D9DDVDD   rcPfdjdDS)Nc3jK|]-}|jdd|D]}|V.dSNsubjectr3 _tests_inr+.0childrEr(s r z Version.tests..Rq   3B3'          r*.json)_pathglobr(s`rr2z Version.testsQs<    22    rc|jdd}fd|dDS)Noptionalformatc3jK|]-}|jdd|D]}|V.dSrHrLrNs rrQz'Version.format_tests..]rRrrS)rTr rU)r(r3s` r format_testszVersion.format_tests[sQz"":x88    8,,    rch|||jd|dzS)NrXz.jsonrJ)rMrTr r5s roptional_tests_ofzVersion.optional_tests_offs9~~$$Z@@   rc.dd|jddz}fd|D}t |t jf|} t|_n#t$rYnwxYw|S)Nr+Test-c Ji|]}|D]}|D]}|j|jdi S)r<) method_nameto_unittest_method)rOrDr2rErCs r z0Version.to_unittest_testcase..nsp          5d5????     r) popr+titlereplacetypeunittestTestCase)_someone_save_us_the_module_of_the_callerr7 Exception)r(suitesrCr+methodsclss ` rto_unittest_testcasezVersion.to_unittest_testcaselszz&&49??+<+<+D+DS"+M+M"MNN        4(+-w77 FHHCNN    D    s1B BBc#Ktj|dD]fddDVdS)Nr)encodingc 3^K|]'}tdddjd|V(dS) descriptionschema)r/rKcase_descriptionrvrNr<)_Testr))rOrEeachr(rKs rrQz$Version._tests_in..sq   #%)-%8> M         rr2)rr& read_text)r(rKr3rys`` @rrMzVersion._tests_insJt~~w~??@@  D      #7m         rN)r6r7r8r9r:rTr)r+r0r2r[r]rqrMr<rrr4r4As DGIIEtwyyH 4799D          (     rr4F)rreprcneZdZejZejZejZejZejZ ejdZ ejZ ejZ ejdZ dZedZedZdfd Zd Zd ZdS) rxF)r{Nrc6d|jS)Nz )rYrArVs r__repr__z_Test.__repr__s!!$";<< )joinr/r+rKrwrurVs rrAz_Test.fully_qualified_names6zz ! %     rc d}dtj|d|jtj|d|jtj|d|jS)Nz[\W\- ]+z test_{}_{}_{}_)rYresubrKrwru)r( delimiterss rrcz_Test.method_namesZ %% F:sDL 1 1 F:sD$9 : : F:sD$4 5 5   rcdSr?r<)rEs rz_Test.s4rc jrfd}nfd}j|_|}||Stjdddkrt j|St j||S)Nc"jdidSNr<)validatethisrCr(s rfnz$_Test.to_unittest_method..fns! '''''''rc|tj5jdiddddS#1swxYwYdSr) assertRaisesr ValidationErrorrrs rrz$_Test.to_unittest_method..fns&&z'ABB,,!DM++F+++,,,,,,,,,,,,,,,,,,s<AAJSON_SCHEMA_EXPECTED_FAILURES0) validrcr6r r r rjexpectedFailureskip)r(rrCrreasons` ` rrdz_Test.to_unittest_methods : , ( ( ( ( ( ( ( , , , , , ,& d >I Z^^;S A AS H H+B// /(8=((,, ,rc j||jtj|j|j|j}d}||_|d|j|d|}tj dddkrt| |j dS)N)rvstoreid_ofc&td|)NzTried to access the network: ) RuntimeError)uris rprevent_network_accessz._Test.validate..prevent_network_accesssDsDDEE Er)rvresolverJSON_SCHEMA_DEBUGr)instancer<) check_schemarvr RefResolver from_schemar)ID_OFresolve_remoter r r breakpointrdata)r(r-rCrr validators rrz_Test.validatest{+++)55;-/6   F F F"8INT[8NNvNN :>>-s 3 3s : : LLLDI.....rc` ||dS#tj$rYdSwxYw)N)r-)rr r)r(r-s rrBz_Test.validate_ignoring_errorssF  MMIM . . . . .)    DD s --)r6r7r8r9r:r/rKrwrurrvrr)commentr~propertyrArcrdrrBr<rrrxrxsdgiiGdgiiGtwyy$'))K 4799D TW% F DGIIEtwyyHdgd###G===  X   X '8&7----$///(rrxc@tjdjdS)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<rrrlrls =   %j 11r)__doc__ functoolsrpathlibrrr rr!r#rjr9jsonschema.validatorsrr rsobjectrr4rxrlr<rrrs   ------$T     F   4TIIIIIfIIIXTRRRRRFRRRj 2 2 2 2 2r