o k`v @sddlZddlZddlZddlZddlZzddlmZWn ey%Ynwdddej_ddl m Z m Z ddl m Z mZmZddlmZmZdd lmZdd lmZmZmZGd d d ejZGd ddeZGdddeZGdddeZ    dddZdS)N safe_reprFcCs t|dS)NFr)objshortr0/usr/lib/python3/dist-packages/trac/wiki/test.pys r)EnvironmentStub MockRequest) datetime_now to_utimestamputc) strip_line_ws to_unicode) web_context) HtmlFormatterInlineHtmlFormatterOutlineFormatterc@sPeZdZiZ   dddZddZdd Zd d Zd d ZddZ ddZ dS) WikiTestCaseNFcCsptj|d||_||_||_|dr|dd}||_||_ ||_ ||_ ||_ d|_ | | | | | d|_dS)Ntestz.pycz.py) default_dataenabledisablepath destroying)unittestTestCase__init__titleinputexpectedendswithreplacefileline_setup _teardown_contextcontext _env_kwargs)selfrr r!r$r%setupteardownr)renable_componentsdisable_componentsenv_pathrrrrr*s"   zWikiTestCase.__init__cCsttdi|j}|jddd|jddd|jddd|jddd |jdd d |jd d d|S)N intertracz genshi.titlez Genshi's Tracz genshi.urlzhttps://genshi.edgewall.orgttraczth.titlez Trac Hackszth.urlzhttp://trac-hacks.orgwiki safe_schemeszMdata,file,ftp,http,https,svn,svn+ssh,rfc-2396.compatible,rfc-2396+under_scorer)r r*configset)r+envrrr _create_env?s zWikiTestCase._create_envc Cs||_t|jdd|_|j}|r#t|jtr"t|jg|jR}nt|jdd}||_|jj |j_ |jj |j_ |j dddt t tddd d f|jrU||dSdS) N/) script_namer4 WikiStartz-INSERT INTO wiki VALUES(%s,%s,%s,%s,%s,%s,%s)joez--z Entry pager)r9r8r reqr( isinstancetuplerr)hrefabs_hrefdb_transactionr r r r&)r+r)rrrsetUpMs(    zWikiTestCase.setUpcCs"|j|jr||dSdSN)r8reset_dbr'r+rrrtearDowncs zWikiTestCase.tearDownc CsX|}t|jdi|j}|dddd}t|dd}z ||j|WdSty}zvt |}t d|}|rdd| d  d D}d d| d  d D}d|}d|} t|jd d } dtt||dd} dd} | d|}|| d| 7}|| dd| 7}|| d| 7}td||j|j|j|jfd}~ww)zTesting WikiFormatter ru​F)leadingzu?'(.*)' != u?'(.*)'cSg|]}d|qSz%s r.0xrrr tz%WikiTestCase.test..r=z\ncSrLrMrrNrrrrQurR r!actualcWsd|S)Nz ========== %s: ========== %sr)argsrrrinfoszWikiTestCase.test..infor4diffz%s %s:%s: "%s" (%s flavor)Nr) formatterstrgenerate generate_optsr#r assertEqualr!AssertionErrorrrematchgroupsplitjoinreprr listdifflib unified_diffr$r%rflavor) r+rYvemsgr`g1g2r!rUr4rXrWrrrrhs<     zWikiTestCase.testcCt|j|j|jSrFrr8r)r rHrrrrYzWikiTestCase.formattercCs d|jS)NzTest )rrHrrrshortDescriptions zWikiTestCase.shortDescription)NNNFNNrF) __name__ __module__ __qualname__r\rr9rErIrrYrqrrrrr&s ! rc@eZdZddZdS)OneLinerTestCasecCrnrF)rr8r)r rHrrrrYrpzOneLinerTestCase.formatterNrrrsrtrYrrrrrv rvc@seZdZddiZddZdS)EscapeNewLinesTestCaseescape_newlinesTcCrnrFrorHrrrrYrpz EscapeNewLinesTestCase.formatterN)rrrsrtr\rYrrrrrys ryc@ru)OutlineTestCasecCs"Gdddt}||j|j|jS)Nc@s eZdZdZddZddZdS)z+OutlineTestCase.formatter..OutlineroutlinercSst|||_||_dSrF)rr|r )r+r8r)r rrrrs  z4OutlineTestCase.formatter..Outliner.__init__cSs t}|j|j||SrF)ioStringIOr|formatr getvalue)r+outrrrr[sz4OutlineTestCase.formatter..Outliner.generateN)rrrsrtrhrr[rrrrOutliners r)objectr8r)r )r+rrrrrYs zOutlineTestCase.formatterNrwrrrrr{rxr{c stf dd} |r| ||Stj|rCt|ddd } | }Wdn1s7wY| ||Std|S)Ncs@tddtj|}d}d}t|ddd|dddD]~\}}|d}||kr0|}|r6|dkr7q|t|dd7}d|vsJd |vrKq|d }t|d krb|dgd t||dd \}} } } } t | ft | ox| dd ft | ft | ffD]\} }|r| ||||| } |qqdS) Nz^(%s.*)$z==============================r=rrS=rTSKIPWONTFIXz------------------------------ )r_compile MULTILINErbziplstripstriplenextendrrvryr{addTest)datafilenametests next_liner%rrblocksr pageonelinerpage_escape_nloutlineclsr!tc r)rrr/r.r0r,suiter-rradd_test_casess>&      z-wikisyntax_test_suite..add_test_casesrzutf-8)encodingzno )r TestSuiteosrexistsopenreadprint) rr,r$r-r)rr.r/r0rrfobjrrrwikisyntax_test_suites     r)F) NNNNNFNNNF)rfr}rr_r unittest.utilr ImportErrorcase trac.testr r trac.util.datefmtr r r trac.util.textrrtrac.web.chromertrac.wiki.formatterrrrrrrvryr{rrrrrs2   j