m %Ec@s%dZdkZdkZdkZdkZdklZlZdk l Z dk l Z dk lZlZdklZlZdklZlZdklZd klZd klZd Zd Zeed idZ dZ!e!d Z"ee!d iddZ#dZ$e$d Z%ee$d iddZ&dZ'e'Z(ee'd idZ)eddei*fdYZ+defdYZ,defdYZ-dei*fdYZ.dei/i0i1ei*fdYZ2dfdYZ3dZ4e5d joei6d!d"ndS(#s{ZopePageTemplate regression tests. Ensures that adding a page template works correctly. Note: Tests require Zope >= 2.7 N(sDefaultTraversables Traverser(s HTTPCharsets(s makerequest(s ZopeTestCasesinstallProduct(sZopePageTemplatesmanage_addPageTemplate(sencodingFromXMLPreamblescharsetFromMetaEquiv(sprovideUtility(s IUnicodeEncodingConflictResolver(sPreferredCharsetResolvers%hello worlds!s iso-8859-15sutf-8s9 s test s8 test t PageTemplatest ZPTUtilsTestscBstZdZdZRS(NcCsxt}|i|dd|i|dd|i|dd|i|dd|i|dddS(Nssutf-8s's's-s iso-8859-15s-(tencodingFromXMLPreambletextracttselft assertEqual(RR((tP/data/zmath/zope/lib/python/Products/PageTemplates/tests/testZopePageTemplate.pyt"testExtractEncodingFromXMLPreambleGs cCsbt}|i|dd|i|dd|i|dd|i|dddS(NsPsutf-8sVs iso-8859-15sAs...(tcharsetFromMetaEquivRRRtNone(RR((Rt&testExtractCharsetFromMetaHTTPEquivTagOs (t__name__t __module__RR (((RREs t$ZPTUnicodeEncodingConflictResolutioncBs,tZdZdZdZdZRS(NcCs7tiitdtiitdtttdS(N(N(N( tzopet componenttprovideAdaptertDefaultTraversableR t HTTPCharsetstprovideUtilitytPreferredCharsetResolvert IUnicodeEncodingConflictResolver(R((Rt afterSetUpYscCst|iddddd|id}|iiidd|iiidd |i}|i|i t d d t dS( Nttestttexts1
tencodingtasciitHTTP_ACCEPT_CHARSETsISO-8859-15,utf-8tdatass
s iso-8859-15( tmanage_addPageTemplateRtapptzpttREQUESTtsett pt_rendertresultRt startswithtunicodetTrue(RRR#((RttestISO_8859_15^s    cCst|iddddd|id}|iiidd|iiidtd d id |i}|i |i td d t dS( NRRs1
RRRsutf-8,ISO-8859-15Rss iso-8859-15sutf-8s
( RRRRR R!R%tencodeR"R#RR$R&(RRR#((RttestUTF8hs   ( cCst|iddddd|id}|iiidd|iiidtd did |i}|i |i td dt dS( NRRs1
RRRs iso-8859-15Rssutf-8s
( RRRRR R!R%R(R"R#RR$tFalse(RRR#((RttestUTF8WrongPreferredCharsetrs   ( (R R RR'R)R+(((RR Ws  tZopePageTemplateFileTestscBs}tZdZdZdZdZdZdZdZdZ d Z d Z d Z d Z d ZRS(NcCsnt|iddtdd|id}|i}|i|idi tt |i|i ddS(NRRRRs iso-8859-15( RRRt ascii_strRR"R#RR(R$R&toutput_encoding(RRR#((RttestPT_RenderWithAsciis   "cCsnt|iddtdd|id}|i}|i|idi tt |i|i ddS(NRRRs iso-8859-15( RRRt iso885915_strRR"R#RR(R$R&R.(RRR#((RttestPT_RenderWithISO885915s   "cCsnt|iddtdd|id}|i}|i|idi tt |i|i ddS(NRRRsutf-8s iso-8859-15( RRRtutf8_strRR"R#RR(R$R&R.(RRR#((RttestPT_RenderWithUTF8s   "cCsrt|idddd|id}d}|i||i|i||it|it t dS(NRtRsutf-8uthis is unicode( RRRRtstwriteRtreadt isinstanceR%R&(RRR5((RttestWriteAcceptsUnicodes   cCs-t|iddtdd|id}|S(NRRRsutf-8(RRRR2R(RR((Rt _createZPTs cCs hd|R\RR ( RRR RgRRUR\t manage_FTPgetR#R(RRRgR#((Rt testFTPGets  ( R R RWR[R_RdRjRkRm(((RRNs     t ZPTMacroscBs,tZdZdZdZdZRS(NcCstt|itiitdt i t t i |_ |i idi}||_d|_d|_d|_dS(NRstitle of page templates;

This is in the slot

This is the header

This will be replaced

sP

This is the header

This is in the slot

(N(tsuperRnRRWRRRRR RORPRQRRRRSRRTRURVRR#(RRT((RRWs    cCs1tt|iti|iiidS(N( RoRnRR[RORXRRYRZ(R((RR['s cCsN|ii}|idd|id||ii}|i||i dS(NR\RR ( RRR RgRURR\R]RR#(RRgR]((RttestMacroExpansion-s  cCs^|ii}|idd|id||ii}|idt |i |i ddS(NR\RR tsource( RRR RgRURR\R]R"R&Rt pt_errorsR (RRgR]((Rt testPtErrors3s   (R R RWR[RpRs(((RRns  RhcBs#tZddddZdZRS(NR4cCs(||_||_hd|<|_dS(NRB(RRReRBtheaders(RRReRB((Rt__init__<s  cCs|iS(N(RR(R((RR7As(R R RuR7(((RRh:scCsktit}|itit|itit|itit|itit|S(N( tunittestt makeSuiteRNtsuitetaddTestsRRnR,R (Rx((Rt test_suiteEs t__main__t defaultTestRz(7t__doc__RvRRROtzope.component.testingRtzope.traversing.adaptersRt Traversertzope.publisher.httpRtTesting.makerequestRQtTesting.ZopeTestCaset ZopeTestCasetinstallProductt'Products.PageTemplates.ZopePageTemplatetZopePageTemplateRtProducts.PageTemplates.utilsRRtzope.componentRt!Products.PageTemplates.interfacesRt.Products.PageTemplates.unicodeconflictresolverRR-R0R%R(R2t xml_templateRJRLthtml_template_w_headerRARDthtml_template_wo_headerRFRHtTestCaseRR R,RNRttestingtPlacelessSetupRnRhRzR tmain($RFRRRvRRRRR2RR-RDRRLRRRRRRRORJR,RRnRhRNRARRRQRHR RRRzR0((Rt? sF            &S5%5