Warning: file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/ru.json): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 88

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 215

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 216

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 217

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 218

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 219

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 220
PK!9սս,0451c093eb59b6a0f6b07a9a9d3737d4b740cb2b.zipnuIwPK %{Q" sebastianbergmann-phpunit-3123601/UT5_PK %{QG4 sebastianbergmann-phpunit-3123601/.phpstorm.meta.phpUT5_͐O P~ OСRt%k++}owס:t9c{r[Jh0GмYK([HZI}7+2NTWOI=P躂})vi?;9AÐ.Y뵳p~q~ 7~bm*UqF3<_HA֫cIT1`JfPK %{Q_? &2 sebastianbergmann-phpunit-3123601/ChangeLog-8.5.mdUT5_W]S8}Д}(I(,-@;3mgJX$_JNbH:/ѹ~0OK(Ni&XRQ3fi n3BKZT%RVd.a3 +ӫ/\X[N_?/SvcVh'ȄiaX°ї:iboe Z,ÝFn:m%*|.}7SҖ͔fbZY/y'G(n/7vQNݥrc%ϧBϗ<;kHҘR<>y~[\El-[v3&Ed5CI;V0]qK$ۅV+}" zaj!޾`Diph0Eeڇ/;?'w;)n5mY0_Ķ晚}ʆ;h`744l5.:eZSIэㄽR c"V<[2=JA0(6RSqAR-H(gQJV)#ѧ!"ը֩ =! 5. N_<٬ fE*Wqx1b 7Ĉ%X;J]o?9}(EjPl ZNBw,ogj Hi n pyG3w]5ZwQSZhyzL9Gm'V9QK*DόG4:}:54 _}AZp$_iD8B?qUC 0@=G爝Q4k`'KUI=Dà \KEQpe]*040PXp!UXx}ZS|YVKf\f%zIՉa('6`v=5,p {^n;&<+6'qrNRaPbhެPnᓎ4MǴxMLe&ky~@ظ26 Y[8l +[{UA5`kPيj8V5[V?:CZUj=FA/55 PK %{Qj20) sebastianbergmann-phpunit-3123601/LICENSEUT5_T_o8z}=$,$k;ey i-%UzP oFT\`,Ƿ==>?'ko'uD F;v3ƔF;hN7Ock {?S.<?]@hhޅ`;8uxM u~5Mz0GIw4tHοPnƕ.zCz;~nBx׀d #APCh'2B;0]"uz8*;4%E١_Dg@?NH;K6<ء[Kbz,P%AvNdJ,LG&ai6MكYI \ W\Qf"J@ZV[%+2τ o 6)xRBk(uKCt #N@i^gX&Pr- >3eImrksK| i b $PqedZ\AUV&us ّģ( s"dWZ\y. L*rs91G*J:pM.Z|!kDkK"p$XdAsmeYf1g-ԣLRǰj-d0<#&y^kIt#+#ǻTK9f1ܲV1Rm 2'Y WgLSKi=C> xB,sE*ZFjqȂ#g-Nfa8H ٣$ GeMbdPK %{Q:r + sebastianbergmann-phpunit-3123601/README.mdUT5_Uo6,C;rIK$Ԗ5 X#K]CE4*cC}L3]" @!-Xb,Wx.K[vgBFu$oݫ_h;sgW O+|>wjS[ŒwR˦kqT0^cN_>|7mv< >ҋJ F2]FzRfy K#NOi9q;1/:x"y&|٪EZr lZNA࿈+ i?AFIrp7E6u$.ʢH!: [ M/>cs+QV(Jϝ#ZX"з3 LLc.%uPt+*D88Ÿ _%H$Fb܈a62Z*5]4]a Irl"k#PDgCRwGQxn-7¿o2"C#FOr9.IfPh01ȷ$|I(iRW`&=r hq \HIL+ 8:gU]1if6.f@|Rj˷EZᘖ_ͦpϐAXJ¸)N ܳ@:2F"MI68tqwR1e҄xE!2HG\=^s`j0m7oJ6X|icOPK %{Q+~T6 / sebastianbergmann-phpunit-3123601/composer.jsonUT5_VKO0+V{HV8PO-rl,EggQx󼼯g3s`~1R֜7t4Tp/avv !{ІbQ"6nA:ҊC{rwNÈh?<0M;yt` I"H}6jE3ڡ.ﮣutUfRRPS;H |v `FFhe~ JTM- 4Zנ.)4KSIϛ 6"mHU7)SSahq>ǫ~}`o\0k0<M;5Te >frE k.2K xS1¡:^U$I Lȃ-񢏓%Q fn;=lP;Pڏ A$,J^qBQX i}cAu5 "ŭI4dE x92hY!MIa= U3M?to'ڰJl/Ʊ"}Dk&D(ТVDBZ= KDm+LўU0~v^l%pb0XpvmVXOѿ +Df a"I-v@|'еb r|kH&R`A њaƴʒ.SAĖ^|e}q 7훝|InjmMǂv|ɕ_;?Ac o}s|Ì9N$HA"³2"%1Ùj:Kɕ`&PK %{Q9) sebastianbergmann-phpunit-3123601/phpunitUT5_Tko0ίZ%T(KD[KĠ:Z$7[=ہvSMt}lVľ_ĕT %yj{j4är^"W1mApBp &qʌL)ٜ fUq(5!Rn4Ƞ) C E.Y.E TuqׅقYX2wL+,-BY)Q9 Ԇ'+A.z ZKw4 -f~7FbOκQk37Jsa;7Obl?GK&Z*Uiy>VQ/;Ct?p1=inZ0->0'r&7:ܮH'3a1s%q桝tU idi!Ӛ݄Ir% QVYYJE$%@IcM :lJ~]jܘRo?5[ G͓=5 $e%P&?2JZjA(RVL44JkoYcYY Jj3TVviVv#g񶂟T0pI>(m5xk׵GmCƟVwxjȥ>W+jɬݞ3.BPK %{QWo*< B- sebastianbergmann-phpunit-3123601/phpunit.xsdUT5_\Is8WtSGr&SLLg\)[N!D$@[_?X$J\E}}qLl i|q|jgo5J@ '/"!׫咲gg/V}ӯ.> 䏢PaC Ui 2\"Q,!Z5^\F"YGo1 B@D(`Y,H?R-epTt|{5x-H!ؠ A1.+WmCiɖzjleQBE1Ṟ8棒|-?,ZXo[JEpUU%b%3I+[ZH2+fsҐŘc $@1gRK L{ #!/Ȇf$DaK&mAc4KҾ@Du0Bd p&l6kzFl)]Y{\`x@7(0T&X^/MWf)|!3 *|Yl( }nIs7V[s^JZ)(ڡl m=J;55/+l:ԽII+N y刼k%+$7_^.RwrE业X`kNwܩ&֭V*`Ѳg-a$f-{X@TZp{c|*d)kI`,☚С0f-W6'ϥhW*8U@,#}wwii8zdqIZlDnG1JTgvqmzZ[Aֵ9_ʰc.=xnbx'f@́?auo%ǪՊ qX;ߌXW|*{aHy7ռNIHdfyt7wd/=8dR]/t;e1`?fRDwZZ/rz^_2r7 >z?}iԿhg'Ωu j$W0@8G/")VN𵂴d2G\v|HN8btG531>3+$;.OHX6ک wYF1PDoZ-jC+\V+޳2w?1n ҥG筆*î|3')kN1Ѓijmi-ϲ4?f. 6XTםTa2IOc)XߖN =u_|/ܓėSݨogOSeyK5B{'P[ {1YkՈFZl1/4!ۖ[\]MLL/;٘h ,9v^m\~,M}\p_UxL]TkNS@,RzzMb8}\8bV֧rb6ќ?TyY$ܮKu?LweiBl#$* >d< "gqr()x{GUWc3 Mqst)woƵem:Pc 4NiŕKF0BY;БA5}=*4lU*W}=RJ:@~CS°N7>g*}O9bC\e.S|w#%7А {t\ώ6| K m|XҢA*(;Z2#v q8@¼VwCDAf MfuRPxo5$DZ 90Guz7 Ls]Rx N`(|$u@ZEj-?xjZut[inJ6˾]W}Ti G.Pu7vE D[uAVR%jvXgQ\kQ<>g>֎V7x=1ZoQ?-Ty}孍{`Jeooj`34Bݻgց233sSY=Zn8:}lg۽%HE&u$ ^H)"%ґ>$>΀'nHzQz&hGy9B'g8L~08v\L>#{L'ąg=wzrxtvy(v؍n <,&< fa@GX>;M]xs}£AG3 ~Ds0{;!7qhBׇȹ_S?ɽmmD`ǜmi:qP.sLjjS1̒ag`^w9™eC0V  ز{75`Bp6Zm l/&fA>NC g%q%`A _mX^8/_2pL]+Co[ƶ}^{F(%fx^-c uVG_x7d8!2icO%~~Cc=[CI8w$0-׏>zY瀶zG|(|B0i_D1;}ξgp#bAb0!rhJЃXH:xѽî?ETDلZ# s92m=8'T^Id*S,DMEV`0#जB*(9iRaq8$F7` Fڋnʶ铃l{[z?k'op{{}wl'h z&#:>6/???2 NcCȳ?A6C!x_Hl !uh3PaW>!:o41)%@; y+j_Ds4kt0s(Pd![ 辋8I?M[.Zw(h/%l=NTo`r0&wp#`(bX^BDd2Zhxlc/Q$ o)ݓ-Y3Fԙݴ>,SU}SF"D5HA =Yvu 4M|՞# z z>OxO`B2j5)\o #Fk)=Wb%:s|y2D|o+j"+OF g9=(/@qD4N0# {],:,tbN8n:( SBS`7 ШŠ|Ԓy@*]PQs9N -ͥRh/ P!+ҵh8RV_.#(%z OmP˭:eg LJrW1  3ғKfQ[23S5>!ϖ)FDGh?TW|`ia"S"@Sk*4<09e[29!][Du;Όwar5,?Er5\td91k+)/5e% dC[I3v;9oc\T RfkE@r ˣ'*HikxKíI!9_gLU$RyycIGRGugn$ cE9d8wȼ&~L :/aZJ?ʓu:T 9*Ev΋M`%[%!jיmÙ1 ۅ#uS\;` ̢wpL+s'`v?p{\-&4 J&z<G*dHF e,u YdkqS%Rl·p1XhIF@hu+WI)խuUqj`+Q82u}{|L@&{yqCT,d6Ff!9vqơ^NG$:b&5Z.VNe%j6'{,SM5_}Ň$'KI4aX^_ny Ml}22ҁGyLNWf)OU 飕 (FbPBVj:4d1^' eMjl]B[ӋFA(ߞ4&;_$vQFsr#UM[dh,5bN[Zf5ax8 "3)z#c <ĸ<->}^,)P^Ұ^G/՝s-~-Y\em͈7NjnwS 36d8;::WU z}nαk1w̯BZCL] pşwhK3^k-u,ޭqŏV?9D^%DpwQ5zSq_3. @}=AWJͽo2EI.B"k-BA@xx:Gp CsM5 tͷ&0xj̠U#fM%W%t ު̦.Aڴ[*FM0kN\ҫ+_^%4We9Z^0ZV\&d ӎ*ҵaX: kWJiuǣ.Z44Z|9˖fO:l UŸPk醱DHnEfף `BR9ѣ, c{]Eǝ>*8n -gFe.6Q72N3J97VIvFlTaTΟ RјM.5^3.%{i4J~*0,Ȓ{q;̔UL6'4nQ]5 cec1nvHrNNhޭH՜tէ]-9 \ߝljY_DaBn%VݤǓPB/?b+?  '3v<OɄnڅg0 {]GE ΟeC|h /̈$B]>HF(~*[.w>Joo?\\IMǮ)ϽҴʘI 뷘y*c̪w|z~p$ Ӟiv6&pmhfNfaҪAD|r<eVy*F204-c*-7ӶW7*_2{|mw}bٝq MEi2ފ}m}~z>[\^oo,Rq8)7W7leyjFrZho@Ӽ,"r}eN&υ?;\il |}vR5]sֱs޹qLDOB2aC̏R h!|d(%67Rb/z(!UOZx~Vr%e` U+8"&~/`~A-oZt:E"οOoN*t$G;k[k\9..) $s*1G;}1@H@Й[@ 9Slq91%0Wf6mw~5rF3J}X J[C k(oPk&[CH=:ǠHÜ_" x-]ϻx&U r_RgxdDv3"M5*Fߞ< Z"e)+vTD >ũNC2>vK.8~a:kg8- KXΥ8Gy 'vAvṐ>!Џ{Wa`k+%J.{I/Cwͳ ` %>u#"^ e.MX6hflylͰ Wc,?¼h6\wP<6惼cc2"u":kujF6]̯oNiU(rܐ8iwnBnz'Y.f>0ȾM)Hbɾoq9*zTV%AЧL(,Kuo]Cyrmؤ^ޗh+T1ɷ_XKK@#/K♺LZ%JPMϗ.M@i\g {\?&\|Nv%=qiA$s7+]S}"vGtL !Oj: /"kF8=~1!(dy:cyxOџd[ҝA`8_)J[GE& r7{;?8_]_9{ g9iW$~g4sފou*x%"Az1$UHiW:E|i08 3<~$5G;k T3yD!-5EP:ŇJa0 ='9J,9򔐼PNŧ&sb\i4+cIk\fۻV"+7vπQIb?& lt>_4HQ颻'ACFIȗre' ĵxY-!3P 宄%,Ҝq>Ct!tUnLaݎǐpA0cQgئh,K6Eq(%SVMv߹$hJ 6gnh8?]ulyOQ-:ŨBb{"flҗ/z 6Ѓ}LIH>00= [t[$VՃd= g=ݺPKh*܇.L۵YVB&ymҁs-mWM8 Tڸ&RӵOҗ:UI89,IiQ:+ΕZ̑,H yH܂YfwASN%eZ۬j8W6|,6je?؟&4P4TprȯnMHD#y 9$,WJ-66н**xo^z,x?{-zkvC9Ƶ-l,Ϣv`Y&V?(nl60WLrbBvO[|+.XR? i'&Λ`S3s M=3teWM*6LQ1 ɣ~hL l(O:9Ciuqe{ڸRotvl#f'U拡q:iFi +ۦfƛ( 2)3JZB* b>Ik3fجR.X*:&CjzAڲi5OZH[:эN?x-X(=*ҚUl@&K^u͒ZxW/3(ž5,Ԃ[ii- 2 ТP|f=~ZXTM`x9ϴG-۶ VB#ړj,f,N OwFz߲ $_W£gveMQ:mxBH52I~';eYm-gXu 5V 4,ݡR,@;2ę9VS2(V#aÚL r9G%a9.!1$^z{ g=|0.IO@J=y DD^D bVQVim@7w~bI wQoAjk'Q;! `M fӪrz!ԪV|9IsUt{ŋk!h??ϼ9eD~n8ϼɾ&X}G 5^Kg$M?68uQxu'7fN'$?V?IZ\;W%S߀ S;o:%]:z˃ÿ_]ݜ>;89x}=f~4X;}C嬑l(mq|~qrHm3>!2{8|:/9m[dYg! &#?a0 汀 \r50 Z!HBeމ*x20t;&输1. itM'^ڽOkw˼k~@A$djk{tC$0tL>N'mCW\ƹSۦ:GіX7YGqϊNO ;cJSؙd)-RϻcԻ tԬ"g"DFy pˬw=iYQ?>} ]~1.t<p;wo @^ 8/}`FP@OC7LMvЄLIxuL>k?]iPB ` P- ] ??PK %{Q7 sebastianbergmann-phpunit-3123601/src/Framework/Assert/UT5_PK %{Q[IqxD sebastianbergmann-phpunit-3123601/src/Framework/Assert/Functions.phpUT5_][s䶱~_AUʳj]NN|Ihx])%)ʁ8 #)]| `)k_VC6@&~mq 8+"[X~_|*<\%eLRoAQE2wgToů x*YWX\AEߔ_PE\`ʜET`ܤi総Er"-4aV e^Aٛ6]K=)a~t|zqUU+PE զ>Vjyo)ctR5ϋOe k]Ԝ\E^jHaQ@wh"]4h 5J=+sQ!bO#ፑqҠ Xo,.W 3#Vvm$|LG?o@j$y $f؆MgK oli$}qj)r5F,Uj֫bc(<ERV!a?la.|K&|f F?h[:sxAmqϮх 4q(@SqWoR yyv"=.QzVȊVlWuPS6*.o ^|U\\qMm[jsEMA;X]4'(6a)z{+xPXWu]tYtXH7{u *YFOMcsI7] ?{:Wwq}Ih|BDN&Y&h1q߲_ЂB$9bpK(40Kmժ1[[Xz2c)܇(|iվ!23}UǨLQ:b3l7o"f5ѷg*˓QDaz+}kXr\qO.6W%IIPE*؂G9,/`[bQxH_Um5j6Wo|} W,p_l~nRU>\Q'Equ_[U(pwQWw KXx`Bҧe xx(ЈY!t-p[-T.3ۧErKA$!12UG4> mJQ"OXmBSZ YҦΕ'" 9OeIn5\1N(ƙW./nHdQN8`0Y ;#4F×_EpmhgpM6BqMD0hs|"a#fd %INYrQi`H\Q|`df2COgmᕣNt]'w0fQLoK.yeq]S3+B=ۤK ҄p˳lH+G{J b gCsMtFXΒO6/ZlfGMq5%Ϟho_sU*XӡZJ;PJJ*lTplYeC#MERm=S1v$G$:"#xDNFGd4z>)@EcǯE-Q;mՁ`;* *zkk=vP{r;8Hm#1OF2 =W{QD,TnN|wthơDv8#Yiut(RWC0;Vtxz"eCN4>nvvʞLv8 IrJp3!]DcfgG2s 8'vl4B2b,6FXyHHU1wEHc#gBw4"Oh0#q8YɌÒxk0k"˫g`> b <' jZe$ԸpT;p+ ,=6L=_ $<: M]qء9v\ڟy?/~(EF#99~JY?Y&p8B1ЎH9S2V4u`4!N|hYf-]]mqA>*oN1mt-cDZEvJ5s(|w+ϋ9J3'⏺r3ZH 6A|gO.6+fw( F%y~Աt(ls~~[Qx S?KDS|%3RgY,.|Qu9 oSPADh" oDYۦi.k0If&vSV^vMO}u#ory=O{LQՇtt1-&qeB߾4 ?c yVVy#rur3QajHrj㻴x4~GaF.@e SO@֊o QP<w}њX!;ͷocϞ6^gg#ks|n6mV.}Z] p0G(2b^LZ`ɆG\U,r"ы|%)54 FyyXҬ.<.׈I,ZEE<|e|<~ÉO1qs0)Xb P=p|cK5Wh,peΨcF4 URbU"U7G MMWR#F7[n=\BUNmNX#̛haeV>L Xa Oe__ZA>#N hFI$*Kj&eMu%#-;mZd\_i*N)j۱*zV ]vY;ogSi c[v=L >ٵ`eeG޳Om /]+ k[z=\dA}feu w{ˀ>g_ VfDx'00{ˉ@v|%=.gnIrY]ŕc|%_.gx1k. myh5 cY*^RP<#àh\ e A_cIwǖdLqAu˜`BᐭEnah 0stfy(d+M Z ܛ\';˦g~+Xb30n\bDivM1ܚ $4ͷ|I^͞C K`0v]EO#^BLm# ]"0:wsۻIiPyKGHpg@܅S$u fP7ՆE?$ʂ%)ݣRhILAe-oȥx5v&x%CR=7KÌg&>|J=W@!'N͆ՔڊG 4l~ lPBν&?q՜men;ƒBy y%㝋7rkukhGDB7݅CU PīGi8lE_N(xRix1Ymz o"&eEAFoĞf8Em_]z]F0|N1̻ߟo8^ow0r}_E.)[hvg; ߟ5':|(?PrpR6hj3Ԃ[q%U[cguR/NT)"FSeƓ¾fSs;( F0C%~S:]d,c23.Df&S\C2FIb^+@ϸ?{ suI~e#4)bB9TWҥ&Lp~u0[ 7gįV XmL4]*幕gE# gQP4"n HƨXk̋nJ1730.seժ>*[8//} E_Kb7h_v1i_H]F.~kV5/?:Ysf$wɟCZJ #,.84k+)O7ilA[jbHn1߃@Z7ϖ7i 6Rj W0H6,.*p=8ng9ZT5*nҳ95_3Q4W]<ȑGUq| yVj,@33N$ZOo톐vEHuVKgY -Vh;uwYOgˁHk7&\7߁Ptw/ ;֒5eh)#@nwok=Zm/ <U${ 9C3#m>{-2SYovfS%4lVme>3(Bǜlp9'+6PR[<:e35[geWr<6O- 빠]W٦sz8eYх>ƨS}z5{eW tA@~:oͧR;&'(m{GN-D%"YtYo'Ss>C㤇>x?!ƧȝUoȃXrPZhST7W ~ b5Vo=0H6oH]d]됑a8 fygG7[1"ko+gQ (կl꬐7>psYtЎ.&ڜ_6 6:>!]:78 $ M^,MLUgd k7j3"#i/H1m.yJ[/.U;k^n}!yߢ\ͲV|\ &krސ1,;ksQL~v޸ezYVR ./) ߔpI[X ^*h4$cK;֍c 2OLdgd@)0?cE`!ooCl&ip f$p{P-̻B3 l^Sy{ +UT 'PK %{Q; sebastianbergmann-phpunit-3123601/src/Framework/Constraint/UT5_PK %{Q~yIJ sebastianbergmann-phpunit-3123601/src/Framework/Constraint/ArrayHasKey.phpUT5_UMO@W*$A@DժB|"E8Z;$wfNPh/%07oތ>e 9Jy(x$v{!"PKEdaiBo9kB9 ÁUsZ-53lZ:0>ws(cgޫ3-{W[\#D .T(=A8-I:BɄBwk)m-e-q'VW˕/6-'%.᧌Β0, aLv$KO{͔Â:v9g<^-&yvD'q*go04RiGBZ:]cJ5Pz$ۑ gaS8lyN&?f.VkjFdc + \ٰ;۰3|ij?J< 9'8~Gky"eŲ9l5ZХ!|FiYT p8ă~GdmR ^v# oem&fq\!CƆ&qY:aϡGoOx=n*ä(;@/TlcN\QlX\M2I{SU/59*Ske_5lԌ%s~sFB{8QNnD,9LX'hK|9XEp k(ud|@ YP,Z mPл+_WlGJX$g2VnA'՝)UQ%h[Ab2/^\jE6Tl0K"W-EĖy5 2$&~6vMqaٸ k8~pq9A4D (XP,%kIl776(O %Neg|,\`y&#l~)Gdrr^4bs []8ӢSu٨b͔Y)|uDO6DUe{=X~(a:n`|Y BTTgZ7|D٪dBtZe{4FC-9|-+ol"qTYD4tk82:nv;%!cւ!u4&˺+I%fաFx(lC񁬤}3B>3֦vqm _ %Ⴂ:ڮ,a̸Drى§oؕ쏒иZr(`Y}2n*^eY(TjGP1'n|E"}vRqiDUOvmiu LSv}pq 1>ّ籝^+NJT&hV'=yMπ̺7u_R݉_hY2|Q`/bQt[vٖ\Iu)ZipݒʻFԶC -iEq8mӷ>,?14ud1oklc%h<} wfDTANf8J1$ŀV:K.ոA Px,un; k.z MBwM #@qQߟ,bT ^d7_Bi>Ij:rEΞ*.d~#8|$?0; ̱(ϳpi8z1fu[rf"ws6b+m,KWDpbIڬ+Ca'BRckWq) +6- Dv|Pج6&<>PZѮ0xG/ pMRt7~s >F5ӣIQm<Ԟ]GKBX29.oc9! Ǻšnє>|^ hmä́D_͆6k a:a j,aiޓPӀ*R"82'b\z^/9?渗bΥ=Dz0b~ʯ^XQᨑN9i9 P^OΛ:t̞r#:g? vh:\?bgA3z;%݇hbMRY?6 yo8`Ft\s1!L O`oWiv7F雋}lܾSA$ߓwY/%>t4dia,cuHdCޑb{0o7AOy`oP8 &*m۠gp<~}|g VT``Z }^(<8\T1\sz[3-hE6!kgB5j;J;)Zk^]3; JkftpypV8P[$v=VAChHJ2.E`@c T@/L gٟ $x&pGJXmދ8T'FS-$= ժl6* 4Nl<ՇnO<5YNs.gnh¢Ozp%#ES.wx9 1e .KalhP2LLgX#)ThdI<ovh⇝~ +~rn]ܱ pHK USOLYw`˦ 7_zڹfPK %{QdlZP sebastianbergmann-phpunit-3123601/src/Framework/Constraint/ClassHasAttribute.phpUT5_Un@}WT\J! [hcOgY'P% *b{w.gΞ~[%daL/cE*EprMy+xhb R{t2^Sw͉*q|R[>:=(AS4 ʺښs( Tո ~?Mg3 \y)LK%c;s>ad+"'PPO"6H⽦㭝u?Sk8ƿR,[LBE{"B~3h/LV\#[ZoH$ Zw  ΐ1MuJuuu~Ts&WBzflMQèCs`pX-FM*baX$e.l)BrFxlr9,$$U_V6}'/DĜYp't2>?8VkgY#TA<:Y>v'|@@RbsX\wD3avS=Ѝ|.ro Ns,/-{{*0D *oC%WL%c|vM&p-aj?uxyuvO b{i)#LH}gguZD6Nn`WStƙɞ'Z:]htQ9hD@6mX`B&Kb(#Dƒ.3Pn"kE 0YYa VzMOၔoS؇=3{%Ǽ8z\ˤS E Moa=09h=맣i?20shύc&x~PK %{QyV sebastianbergmann-phpunit-3123601/src/Framework/Constraint/ClassHasStaticAttribute.phpUT5_To0T15Ah_זuCTUtߐ&\o M=;?i@dݻ{~- a0ddLiWaCxͥT-!)翔k8LG$hP nm{vω*उy(GHX;#@ PڬIFP(l#q~,mɗ݅[θ[p^\N7WޅQiw}W;kd{|50 ksݙ x'ZX ϖJQmĽ燵|! BMsi=R?4U%ZyF==6Yq L(O_;X*Q>_>.%.y akYUʖP6pAt~8;FŶmr7}1T U`F,"a [C0ȅJEfC֑z6m=:9te1s=4)aU\=hlCDƣV"jEQQ\i.vYt +.&8??۠W+[Y1QP A X`֍ Жbyd2Zs7F #c-n`X905_D)"g$œ^HYqʆfUG@<62kwKyw &`j|,9K\*'`Qew=;1+$yO7MS0S-i㚟6EpOUd?M:%qA'?$4x _<^/PK %{Q@=%DI sebastianbergmann-phpunit-3123601/src/Framework/Constraint/Constraint.phpUT5_Wo6~_q <\}.Y`H%l)#E%'0`C,3pӼ7kHy@ ͊ <^#FLj3!Ϯh.H_s'BZfIJxQ|3DQhPRp)Pdٞ㭅rޙ3p`n#J \RH%h.=<)ztӍ0ɤ]od) 2\ƹzȝ9ގx,:&WVV5B$'ΙڡT8|ʠP,wMDu; DF(2NDIy=J PJCrŪy[B7 ܲ9\홂xAbOoul+&%0GZSIxX{T)x@]fֹFcCNYF4-f)%kmNɃh\uz[d[C|:G\[2_ƨ^;~L07J9 !]eKq;b{0}˧}Tl >{AZmK[H},_eDJA"bǁU`u@lalhb_8:5ԄSOH"P@2_衵=TjQő65Emnmp\?WM&<i_LTlQK3ӣ~vPPqQi7R`Q:}(=6j;4f:r=B?<8pu{@jeiG%Mp2$ȺܣRl3{e#@Waw̒uC#vzI$QcTs{J2y˰-ݡXMnEro,|tpsLPK %{QC D sebastianbergmann-phpunit-3123601/src/Framework/Constraint/Count.phpUT5_V[6~ϯ80)8˲,nw[fza-3EVbGHri|w@m\s}6K2OuFrtLhz1 HKk ;cƑ^_ĊY'lRVg7P{X\<ڐK4%S1 eP2', g;)ww?yQ:0G{f)ޓUDL{rs[=)6c8+Y 2Tn6zs*P0M a`N[rk $PExś3oixgF 1y.p{iA~]A $3xȤyC? 8&&zҍpQ0^uT_9rK/;Ca-v,́ yk 3QGhqm`!M\{JR)KZ {i}nu]-*0FÁϫpu%7K>3_2Xkz[`c- *1:D]1-]2cء4i"ĿMˣw;!ت־}Q9C l#DbZ. g]JMԲWCu zE@΄-^ ;}{ iRPoW("dVavеʴZq% k0o[QE7l q-MGIIj֢=,ǥ9(`3ƘLsSBA+Ja{ڒ3ZA^8dlqdOrV qq FhcӸrafm\a:WN|򲿊r?0-/tf}BøCAG`7jW{u?PK %{QujN sebastianbergmann-phpunit-3123601/src/Framework/Constraint/DirectoryExists.phpUT5_j@iCo MZ(%!W#kyWℒw`?4UD̉|O һ7ӳ8cAjy7&2n>|g1W17{8BP>:D llh[W P;/Cv@S۔b: NZ+hQO3o6H:6eR8g`Hzwg]+['peRSC|ʵ qԭQ5QVƨUHIyAc|Y(7®PS ړ@dGcFO`@5Dl"zNu͎%f}iz7J&%6sX2m_0umzGg)9;8 ӁDRvQPF?[3TveRކT6Q@HJ!t`L^^G>5RUBY:DCnultJ6+]:o  Y i3ô|5Py+ #Si h *u1Q Co 9/ཱm2/k {"?{~PK %{Qh_H sebastianbergmann-phpunit-3123601/src/Framework/Constraint/Exception.phpUT5_Tn1}߯qQ+4j j6J򆄌wu+ { ˆ4m๝9s<$y4vՂۥ}L>@a )}3-nKa|s\1czä S]QDxY̔ yWٓ4TPJoJA"zz3TM3 *N؄,ܨ\sB:@ ]bjZI ފt1E=D[HZI10}9ed`3xΰ_jj48r]^ 7b,‰OzC7+"Y.Os-4bz>(Ή#䠀sy ͵4J1hPZ?' 7^w98تO퍚Aj_86w:Xb!<5agmtҜ7^tOIhpȬ5';PejĒ( b`|N5FL& i5f/%zN 7Yvv(A؁AImiW@!}59QheNJA~ycTݛ#9im ws_a{~G .φsOúyu/oPK %{Q;L sebastianbergmann-phpunit-3123601/src/Framework/Constraint/ExceptionCode.phpUT5_mO0SIT{;(ccEC&]%8[jg-b|R`[8CUT,ؑUB7}Dqc+\V\׊2[L#%4|BX u{眨>y] M`բ :RIԎإ e!T% [)\Wo3*BL5akErgj+eUO"-*{e旖_1tE҂9m$V^`=Fd<+k;_ ^^ۓVV!Bz}TθVy:er TK/eVK{$62m+$>E& s{غ"V;loѳ[DY3,{Z7|l&d`c[s;u|9!B.JnV7B0=+YIS4C[TƚaƔNIl LӭeyXyeU j7%TY[ܹPZ~b֌99']&_;-yC?d{܉4zEd)p-הF6!]agj#LIh=_]һ&] >EPK %{Q N6O sebastianbergmann-phpunit-3123601/src/Framework/Constraint/ExceptionMessage.phpUT5_Tn0 + mtź Llɐ$E%;v:ݥ8H' RB3ς81@& VL[P|-=n1a &3Uɤsۻ$%x\+ 6G-V&S(GiPfJ %'Pho-pZ]R͙ 3 wF؜NQH@):@MhZF+%΂ Â-ưn-@<@k:/ѻ\3 \[SX3p 9m?!= 5QSό}F։ų03f>iʪ[E10 vKwBSoC8ZV6\eOŚ5 l_x! W9'S-j8Qt`] *]J@ rOی״_+et`XNMJp-FLgI+!{چa\F״IEm]#+P*c\1g͠*Hw 8i71(c/Ŗ[3~s4I?G+ӛM@6@s ߛp4y9du 1`K.=T w} PK %{Q ]` sebastianbergmann-phpunit-3123601/src/Framework/Constraint/ExceptionMessageRegularExpression.phpUT5_Tn0+F K#8N)&hj%IlKW\^d^-b9o@3h^2a 9} -~]峳bbK127(F(l`WkZ)wv$ (My"ƴMׅFc(9 փMDHFrf L ,ËpmQh%KIi5B%g.(*T]*.x{㞪6#Qu y~sztqc9Nhճ mF[j }l :HxZM> [TLF[y%7~JuVARE Mnp)!KW8%fPD&طꖦϬzZTL=kS!{a"ٻMKu@7 {4_83 И׆1l98aB.4} >+: ]ְ[ż_.ߖsqmvd1\ˉTN E%jէ3[^ofnuh, ^#Ur!%*9Mޛ3Z|h`vg S'HR+/A8J4U_Yg[#yԖ+]Iϊ~f +u ߑ ('m@BǑWĬ<߶[KmQ&cXVWQ4ӧ찶yoJd0 e6Za߉AY L#Swp5d\D}ߓr$%_MC'^B \=pRhV6Dh,|J"y*c.55nso Ä na4Yf;q?#Oܻ@x@jvLߜ.bmѡ{/8Ov TZ:X "5z@XU>b*Ww--wX%־& ɼ6gU=Hz_,:-зv@&o+2NN;\TBj!6c,ء96(Yf ߿F~˲DJƘLмSPK %{QtWI sebastianbergmann-phpunit-3123601/src/Framework/Constraint/IsAnything.phpUT5_Mo0 <f-HPۭt,̑ j ${ ŰD|^nJԍ8"F/>Hb6)`?jCPAޭ w? 1#=(b,|A)k)bB[k*4 h ʖ)6NmPٓ}^?TZ1AiM`,ao!'F)TbVZ%g[/G{?. e,_EBV5'[%Ac?%e6I_d21QI5㩌U҈F>ۣ`-іtU)@T#>XEH1/L= \.]W0{p2;T#GQJx*9\{dE&xG,% Eap|& 㟶^L9,pĨyR{t2d?{mv7e.u!ɌNuҡID[lK,auUwJ#y*̇ PK %{Q'YGF sebastianbergmann-phpunit-3123601/src/Framework/Constraint/IsEmpty.phpUT5_T]O@|X!*'Q* *RUB,U{_q3{("%ݝݝyUTqZ LOT΢(R.K&|W89| !RX'OlVkj_Y[s )˒R]=* Q)SV UZ8՘$oBŷۅ ӹB8K,km+V&e4O=Xe+6ɥVRYzkIJdۜuZpzoiS03$AKq(I 4H`fuy FnpuB 5NN~Yh|pIai>ӇWƆm[j@ˌmjdk\Ȳ6| "K^I1ڦACk րGW80>9ƴ&= :#[z2/pU`0? _iefkWѱҜ;sa3N&uR(j#K[]#P Rln!fŎήh"C`gsap$o{=`cбv~B̎ CgVF]FCî4 2w^Öoϔ3)zFoU OʢA☓^TTXD֧(/pFDFdjOIXeG!T1q|5"h3n7<ï&+bYoޯֻi??_j.YCì[f t7REh6uI߽.ѡqAgtT'x ?0K Z!&eb@؇#K؂;L=2 ]ςɵ<#~4^p!q,$ӟͪ f_=g|4j(x)}4i1=,жq 2wzDdԼ^tF?Me(*qގNz#} C1wnR;>;n|{5q]c}oE;^ hmpCOO[-:PK %{Q1F sebastianbergmann-phpunit-3123601/src/Framework/Constraint/IsFalse.phpUT5_mRMk1ﯘC! 6ql(%-Pf^$Fلޑvf}̓>.BC!, [#?)Rڼբ|l:#@hwoeyff氧XpD*j*g@C'.0HG΁ @߀|RA>/!:B=X ~;P`͛ԽPN;< PCxQk2;Mʁ˺߿Q ( 4Q֣0%MzMz~W泀$=ٹ?SdJ3rBZ )f67Q6.zpa'z^>Q(}4/!7AۼD,Ѿϡ72Ȥ!2m6)PK %{Q{0jR6G sebastianbergmann-phpunit-3123601/src/Framework/Constraint/IsFinite.phpUT5_mRQk1 ~_APt[YIXalorȺeOe]_l$}>}Eh8d%ak^"oj`;@,Z|[YjA9$=|">{JSZЇ s`B|b{7!oQl, n:P '{NV:ͨz6ʪW#oYC7+Z/Jm(zƆVh E(v70S۴-G!ߤ |g!k`LyfsXUc_gj7\®FR6͇K?u=Wm(^ ]MjÛi^uEmv -:]ili q]huCrdth%D LX'̗B)8iY!ǏQ6E]P92Ce@UhNj5DAkW^始7l{JX%G2氒nA;յɐʑuX` -~ҊliS}"fYCz]|iJtktò>:D$Elxъes!sTNf 6Mf/[`vSLPD] 4Wkz#6UIΐTGp6%,x4EZrjy4̚HdR+°@k" 731XZcRh}^!^3 1𠐊a*I .8|prJH{Ԍ_{Ypqus寯0@gl)0kժzFEB26q`9*x12iӎ+Kd CǞsQ)^plF]K)蘤(2zl3Bf@y%c鰬[Re-㲧 2=d9\JZ¿zC0a kR~4M̴6[lj,Ck1vVese[ri1%Y#O/9,̼^mr*p[Us8fFMxXpطiHޛJ{닦&e޾֖?]~ް 1om?cC u@~s_D1Tx3"|YDZOȮF7zs2@rmg^c7Ib'ڂ\R;lF7#]<8wFܦzeQp1QZ~6 YISέۑc%M-5dQ=lT'D#?Xzz Խ~MW6t?,D{ܿnVֲѺb}uR S[5XuD9@NZ߽n Gr=\hFݹ:. wr2[B:̿Q棔0ɬoØxo%ΥRnb@!V̩ӣpDZy?bm38aیf.t])j?"#'o U;w. 4\t&ߐ1bT gjsioKqkH1+ #> f_qm7cNZD&g-USPK %{Q>I sebastianbergmann-phpunit-3123601/src/Framework/Constraint/IsInfinite.phpUT5_mRQk1 ~_APt]iIY`lorXeOvҮ/6O>K"4d&$k^"eU0eh#;b-}̵ L6T#Eהv{.x]i>0!tmup֐gmې(6sPcm}YeN:8 Cc$u/JUΡOQCY'am!?ۛe6/c+4pi=ṵz "V3$} YAKq ۞6'\;vzS%l di ,eǶ g˒}j[=QH]PjPAi~ER[,GWXmshb `ƱFUᇽ}ԅ;@MF7h^'_?xrdRsl-ߏ֌C?PK %{Q$f ZzK sebastianbergmann-phpunit-3123601/src/Framework/Constraint/IsInstanceOf.phpUT5_Uj@}W !Rȅ6M(mH7CXK#k[yWŊHH)T/fwΜ9s釪(cL݃{؞KN龐rY2Ƒ%.;qυuR(fJѩlT{[+mLy]EHJrmI*Y~_/*sp23׎3ZKW̭Mg})d[ dfW6fZCHN"nmM(a-gOHrH:/DY O)xt*e -A}k;%ďNmG (!ZԩӦ'J˵nc}Xev@;"mHo]5z}]aҬݢrZ i#ZKf͢^1 [em{[=;Zov689<8c?h&{zWvi"KnH#tK?I]=xsx.9>rqԟٝMA/cb)껂vyΓNMPK %{Qg E sebastianbergmann-phpunit-3123601/src/Framework/Constraint/IsJson.phpUT5_TN@}W6BiiPA"B"=ڻΚ!K.*%s;s̜| RL a0"kdbs4>,Ƃ/%O0 +hP N{;B H񴍹lEJ **ӦVjuUߞ$.|܏dRyt6 Ym19[9$ȅRt%JJ[Bs8]5K?jI2ϛP& K"UJk9ܷwhkh`ePYO!S #[3UwzDqл5eg|=7:lO-,90 j6Aߌ55#2ri;L.>.BCaKF9|?_WE Y:#&RraK5XO+3sHG΁ 9}'g yVA߆t@CtZ{t,כ&Swҡ'{V:}QdHʮWqDn!]h+[8d[ I7 Z@OgHkD12w;OkN*wkMKCKHX|Rу3[K]BFt#hRB }Nz][<1ªΡE,Уe&WI78(@IFWF摂O2l`\SY~T)PK %{Qɭw-E sebastianbergmann-phpunit-3123601/src/Framework/Constraint/IsNull.phpUT5_mRMk1ﯘC! 6q(!-f^$4qBH릡f>.>.BCaKF9ojQw@I paG5XOK3#:$sN}򬂾 b?hXp_om*C#246ORB tQdHʮWqD_'-Cur4omBc( Wck=(o\$~~W泀o$} ٷCK<ǝ5'\;1zSKHX gv~.꭯#lhp]_|_^T;Vh-Znsm(Q i]/26H[/fuĴauPI&R;[W| 0UBZXhvyQVfDL4TZx}.sGHD/E$ڍY'2N ?+pE7}n'Figrx @AYqBcyHߦ-dP2?W&w˔&&l.BC!, [#)mjQ:@,Zr[Y@9$=|&{HSR h㈹ s`B|f7!Tз(6sPkjmTŝt(p͛ԽPG+vy =RU@)eYKW^֕P Rh EI ܏8L nҝց|^),;I>By)DrǾּ4Foʸ]?el͇ٺt^zJoA% K]6/OkdN ;>fmi qY`vdh@8xD(& ?QlٔMp^?PK %{QKE sebastianbergmann-phpunit-3123601/src/Framework/Constraint/IsType.phpUT5_W[o*7~_h&! ABDn+ۄDGe_|sܸXdɒJTZD{Tutys2]qER1)yIp} LZdTiNg AnTyv(dN!DIYFxy K  Ey.ڤW6FnIP:l"K,֚-ɆPre@ђ՗/LΜ3 G\=0(:0{gVUIJ5ج1N ?(ZČ"*XSs)7 `%D'F:ѹ\P\\ڱ5xW* FH ?4@`O㚀<>xYxg<Af6'q/F8l-8_βcPe'֠{?0ZFi bC}8s8Gj9q[=4eT4hFC[kK藃bLza}ji<|4^9h-fKQ8/Je&ӾLsp#W2(2;o[ M"AϫӴ꭪^Sè6WW;yH|kv1yo7V[@)j;(\խ *,ɊEbk=4YN$jwWGU^ WsTj<@e/ !tZ#Tsa3 Ơ›yV Tt\yTZaXfD`בp1VK 7r wǵڏGPK %{Q_PsdI sebastianbergmann-phpunit-3123601/src/Framework/Constraint/IsWritable.phpUT5_j1)u6m64MhPYYZ4qBɻg=1=fa4ў~hJV̉|ˏ һ7lqԆ2A ߝ8D\`"6G rNiI6FZkA1u͠\ ht$]FJl)ELZ1lAie,ak|4Jc׋̩ R֋Y]1m}[{'9q| ֕5;Su*EiB:+۪،m0 >\f}M$q镗"tQW}nFW^ٯ $5768[C& <9JcyHߦ-dP2?;eJ [W6t$>e]2項QP(G)ZG2dڋv I)tkYCY { 9iK(i\dewN='BdS"`U6ksqڻ "hr)ƴwc\Iܾ'sy/jrP H"n:_w` #߶sE\rL'ix/ԣiS PK %{Q$0 J sebastianbergmann-phpunit-3123601/src/Framework/Constraint/JsonMatches.phpUT5_V[o6~ׯ8(JaHɤ| 7b &gI /n5N!×QJiBޔ%pUk.,0A)8JCetŬPru6^ׯooΔ–ȄdX`+lA'QH2tQ'UhjF{1啦,_)I6v$9$[#c>g=V7fݢ|U*JǿF~~Ѻ45-@Ien~ j1@aeH2%3\1 4wef1hywnņipPu:fFV6.D٬jTLp{˽4؈c/5ryҟ5aH6ZR1.Xk4(C!35gZuMi7KCJ['U҃yyv2uk[89,x[6pGܳTr8k W|;K]>M g%ϫn:; $X 85d72th+!T$+JSUC>dubB)P#g8ɔsRl+!O%*JrP# Y 4VϮD,2SRpV3 YO!v|(׈T{L\/mg0yB6Tc_* C"O{}~To&Tn{H꾣Nz&e}<$PK %{Qx)ZB^ sebastianbergmann-phpunit-3123601/src/Framework/Constraint/JsonMatchesErrorMessageProvider.phpUT5_Uo0>LоU]U[ 6 ΅X$vd;49 +:@{uHP:#uNspa"-2%gƁax;|Rҝ)Z0Z'Q72 K}e'Dι\Bi Bk#TRLbm2tRcSB=KZyw`Peu.AKIdV8`)]or #"U 39r31Zjtb ʵnCYg`q`#1/XskBqd6S,{UH~]WJJM1+.8 ZOij3n&& n|L&r:U6|*a37\AѺ*\BWe,Y嶶%M|h87[2 @ڻ?6B+W/9g/JE5N؛N=Iũ^BmL{dfvô{EwJ G Pp j_ddb)9?6qr*kk,]m 1UA("upRUt9DgRo'b;h">dP?CxvN߄:#Ӭ>951-z^@'~͸L,0)a6ؾWڵG^PK %{Q 4CG sebastianbergmann-phpunit-3123601/src/Framework/Constraint/LessThan.phpUT5_}SMo0 Wv%umnE("ӱ6Y2$:N?tM|벆SONIZscv̧ LT Y G` vd8!2OJn[ cKjBA:hig%09h%x4u e)v Xw{s ";*A+<*Lish|̽mD1'FTk~յPkՕ5C(Cg :(=:G at! 4jB+[CUtl eˠ+r# M_ ™N8(;wy|NL"Or\kqGm kZF2Kb^+IâSbW/(#5xV$laУ`  T:zXܷG8]X>b)W76#,߁>Dfix4#f#ti6ef[)7&lTW& j$B!4KUߩ9R{vpۛJ]~:K|?hȿ,ѧ]'rcoܳ^?PK %{Q2/Y I sebastianbergmann-phpunit-3123601/src/Framework/Constraint/LogicalAnd.phpUT5_Vn8}WL}lݬ E>ՅAS#HNȿl[p̙9#}# ϘơZp9Itq9| 7gڂJ_~Hac2p6C>IzcR'S}@euZi[2*bd( ;fc3dxno_sʣ[f $e.,&pvK'ܨBs@ :d;49*嵦+%N0}&خOsHW.}j#8`2f*$=ԇ3,)lOZE8G SbMq9Q.C VO3<8Cg`0K[ETgTllb[2jϲͰ+pZ~&)Dv tTvGs``WڪMK !u>hQW"iS溱űNnQ#[hp(Ha.@ڡbK$Q[_v5x=hQ juu;[,V+0 j7i*t&إJ?Ly5pt!)`j3EǺJ7)}zȬe4=g)јF)F}cnJm&r7L{=aub!khJ:],=PM932}չ<#jGWMY!/![uKty# HfzSPڷIe^$rg EY) cOKi-:w ; l@1}^&KmU#$ULkfܙ1d1iEB9wo/VdLa⩙/`r:SxZq #oO?}YpsN 'Jcx9ӆ3?ZVWgd^RY!,zAr6eJ[hMɝӏ )!%Ln={8!7gC,dACId*ٻ }PY.1q-Y)6.s#y A؛z;T)Ȗk_ cgCut\J\ʇ,p2MQqD _C͙ש6<`Z*MT ɝ yN-5 uC:0eCu PMaDkޞaH tcilF=ѩ` X=8#n,+ym7v{B Bp~,Fz0na61-(Ydtc\;]\8.|O >,λuv #GW1\]/cFK"kKQTpbv 8"ЪK}P^u 0B'qɅJ EH%LĢZjcJfW̳*$F %_{g@aE* LkJ%44d E q߁?~'@PK %{Q"0l H sebastianbergmann-phpunit-3123601/src/Framework/Constraint/LogicalOr.phpUT5_Vn@}W R%JH)T(j YU]3 =3s}X"ϙX-e 47$:=L[0mAeR1<& +k&%39r ųRi+9pU:յO}/y=[/h{͊94K̽o]h}]/3U{IAgUZ/PK %{Q3n@ I sebastianbergmann-phpunit-3123601/src/Framework/Constraint/LogicalXor.phpUT5_Vn6}Wb}ݬҴXX/45ȤʋȿwHI6uEr.g\?W r%85V n MSz\'pnB[1mAIa$e<\1c+I M{vMWѹUpe \UZ7̡!PzˬPrUvA7 gr#Y99 !7i(G"lbttWqy$`B$qfLdT!-#c巤rqBւq_,-mL{h'27pt`ǯs1 |\\J~0o&ܻ D)Zm6 <6~e$țxgOǫ.%Ӛ=߱ҡv|E4Zel2ܽ$6ٶCQ._5" ژ zv /*`d|4ڧEDw5eNr;Lz3+ў>$0t;&VO'քk҉5L]Fս+`R=WZ?(`z9.jCh5!B38G~h {ayg!2]q:6k+i'!4G>CC5s4fDjcx}%ގ=r RMZa;IE^-J۷5z 8<?&9E fY{ŏގ8k>ǣ:l];ѭ5 y,|kEϚ_+ t;wHi|lsԎ֫F޵&k}鎲=YJY[M+nQ!Uj!z%bW~4̳7&v#ܩchju_{yo!yBۮhb4809ފ'}:3\x?ZNcٓ,񖆗_PK %{Qt`bQ sebastianbergmann-phpunit-3123601/src/Framework/Constraint/ObjectHasAttribute.phpUT5_]Sn0 +x ]-HCݭtM  6G(~l*2#5-f7b^@-FPa[) h-zLqG6M;)刹!;a@_|qlJ`ϸ_VǧATVl; zˍdy ]4$*R֋RżG !~Y/=z)N~ڑQ"߶E‹yt`)Q4|(ϐ`Y(F"쁼ByO> %<@FTbNnopzCT@ӧSzeUg?ɲa=MgP.7A0EwKqgVjtk6\:!rW:L#8Y[gK^M|^%2 r4{\.T뉙?^.,mC+K>z=%L~VPK %{QFgCt5P sebastianbergmann-phpunit-3123601/src/Framework/Constraint/RegularExpression.phpUT5_uS]o0 | ,^׏ Rl0V e&HD'-&'x;W_ۺ u<恼Ѵ28~&4m'p+X|_|A亀,U ,|C(k* [nIA7ya5 h׾x 1mvFqvmc[Xla.PՊ`TFa;C5gypȍ*U Xx9sq,c(c2c"߷XJBGIWCbnU)5(pc,nqV~ |emhA  `a)Y}@I8cEڔ_[֓|;|FX/c&/:uI\++AB:Zir)1*yˀOV9nYJ&.fFi/]cc,#<*X7s*fv-=Rl3OW!?v_ԼcnܪqyYdQ#ͥs;&McD4PK %{Qi*4G sebastianbergmann-phpunit-3123601/src/Framework/Constraint/SameSize.phpUT5_MJ1y9-j*Pf6 ɬ*}w'kEs L2thSNx`P@nU~XYWҐz2= l=YIPgfpMPMc0m dʅ=q|C(C]==.2F#&mRL%tkyڠIJJceqOѣlVAJ 2R( t擀Lpe@o 1Nʰ~N93L a=-`y2O |GT.:oPK %{QN0TM sebastianbergmann-phpunit-3123601/src/Framework/Constraint/StringContains.phpUT5_Tn0 +C"mtł0 MɐŐ%ˎC}IL==R5U`lȌR|J˳౔ Y!o- .Ótܙ8K`$h+\.vˉ&`* ˒@*PڬIPW(8ߧw?gwWG  tJ҆0pV7&CN2Rb bCm̧Z1"׻hȶ/ U-A3 עj+%pVEGRQ㝃O-GkmH,1sD:LʿIU74YM*]GGҤk,;km2Ҧ5KܥÕA3oxskaB!tk#lcT8L.68кIyxxTU/8 ƞvH6xV{N{&m_6Qt=5X^q tۜ8<{$~Uj28ൄZ&0o't7h='- &ls˝UT{Dn{=ec[N߅kWo :81 8 s&Sa%y aƌܾwwk"7bV[&nu `29y'hg50]ikk&0 K1݃FPK %{Q !OM sebastianbergmann-phpunit-3123601/src/Framework/Constraint/StringEndsWith.phpUT5_uSk0~_q@:te%e1ʲ@sMtNRFd'n¦;}?cS7Pa)Ikzng7l~C4lO~E9_wR I m= P]yFZA٩MM L ZI4MeVf F}}\jAJ&)Zjso['J g[Z?qioݟՃ5!c~Z'%GG UE!( ݊`G4ب@۪RL42,+ @>'}3p~_oԎMab-8a-2r~\8]ׄ/ɥH3i6=o)'O/|Io침!1s_x?0_r9;8͑ ׁaSнx[)@̞6-q?1-}1qd߁|[5i4YxYe "&DPO*BR3*?Ψ@l%3#BAoq}Ї]+>r#: "f P[ q$w6[Grd %g`~t?T"!buhhA2EH(dGeFp(& :>嘃0n'GSqemc}F]Sphsnj,*!RD[*禞*C2]У#ghC<{ "G:TEaXb"LI&z;vDYt0D@ T dЎp<ɿu& Է2gشCi $"Wjmsl><[$~!(OM@Y# U.t{X)>/_8ê^:J-xRa<+ByLJ<~K޽x 5ˏ[foN _Z٬Lc:mЧ#.=,irlW녆޴bZs!J㏉`0Ftz0 UN$B7F_6'^jDc_R[m-ǻR>#ܞ^_Zo1Rk <|zb8}k[A_e5m!g؞aZXcqnf|o vHq|,RBt0Pi\j4zw73,)waQeølu,GnW!lNզ8L7FY?# bhC24ӘPk^ oKKOV+zגH[0 8TɒSJI > {YPa>RZZd`bm%n*: bk%:/0;q$T[]tQzɣʝiDYL2 }"m<]\&g'_aqgЂeZ#EpԫeCr2QCN9-FٷpĂYEN7Go{wz. tIӉE[S/7Te\zoNUY'K PK %{Q75U R sebastianbergmann-phpunit-3123601/src/Framework/Constraint/TraversableContains.phpUT5_W]o6}5<{m[`7-]Y\eR#);CÖl :y&Os9ʄuFF=l.{=:TZJdƄ\G:~SMF#RX'٬B)ze빷Tx_W6ڐK"(ԑP1e2beP%ڬZ)X`n#y\gUΥVXdY8i+]dnua"F}=%lsŵVO+CH.{Qyoi#VPnkֈ +AAyI$4Q{VY5oc Gsg[ޮ*?hYY9aEJO Xc۽z#CKj"Fn+E)G@qZ{lV_i-8>*Z=So.BEqHT4%l>t%%"< QK 8-1Ф  ۣ{k GO58 AdC4ͤ7G=[%Ly<yҡ5rbku6N@k 6 &Oъ]!?ZiU euմ Q8(mĭunmJdIk4EG[^˃ {4* 0r.YKNYX`i-Wu y-B=Ѽ/9 0_l##'2+L*-VJ[ [m4k! ֋[Y7]Bkm]xIV:&"2$nI4}`w_ \ac+2asK`ܚb*gzC{ڱZsw7PK %{Q )W sebastianbergmann-phpunit-3123601/src/Framework/Constraint/TraversableContainsEqual.phpUT5_VMoFWL' [Bque@s`ȡ-,%{.?$1vKy4ۡ(RN x,?ej0;9Z(>K<ٌ>~8ВJV~f*c轴(T[LYUMI 4u[5T`iǸn/!U^ :L<>\(rz60jR*ؚaVunA *T]?9Ko0̳8h݁awjN: , E;#VB&EcC;UTLJِ&g_5zL sR9ApYӟܦڢ12T9E7x7hP;O[ZQZ9q\pea>LqሦNi4]uQ /cig7O;~EpCpeÚUBV:pi+!XLG!_q׊m*4mrqbOÏQl$g3ֵ 6W&aH^an e@UwEθ ~1iKbDeXʸ; N&;WK:q>Cz %q{;*8TӹO 右4SPk&6y%}W'g٭ ;'jC@W}̭u+kmLA Һښ3jjVm4ocow7/nB؝*tdz.h}t.u9PĨ5K`nL[ʮAHUMO[V icuDy^BNm؉Z}Q5MќhxJȤh7lh)mEuo X3/QF }9\ѳ)sJ6Z?r[oFyFv z/mq"9 ƺd3(N7DPay9+gB٠ǝ/N%\;^t[kTy̹ UQ "v=%0=FoRM23TZOqN049M'Ӌ!X~lqǯuAaM*!+X+!Xwbq9vA@1t8Wo jxOő9FaAHZ/W^!Zx.QYP{k215烮GOnmB;Rű"75>QtK~ZӋ]IS_|ӄ椝bLDhYg/#di\'Ivq݅&YG1','ڈJ4~Z6uR;͠eUFߣr\U Ø)f^vdj_EnI6Lh(6!Kx"eYeL8#p[Lx 1v#r֡Hz]?>4IJn76ڛ8~V=fa?yLBB*\.?ܗS|K.pxpɅ4Zun v$PK %{Q6 sebastianbergmann-phpunit-3123601/src/Framework/Error/UT5_PK %{QJD sebastianbergmann-phpunit-3123601/src/Framework/Error/Deprecated.phpUT5_5OKK1W̱-b@ݢ R 2Mfl&Efz{oLj2˅y.r 7(OzY #gf簣epOr0FXYI >)^bMҡražIмjj,x\r ~jzT&bG%ccАs߈$YrZ.`)HYJJh?PK %{Q u]W? sebastianbergmann-phpunit-3123601/src/Framework/Error/Error.phpUT5_mQMO1ẂxKhb z#!;۸M;e!tY{iL{ɽ+d*kE:: ӻX ^xw RMW`[HK苝4&=PL ڞ@%B uG@ *4;Iښ %c{u4[S;*%A-d:%F jM%3<PP$cm3T[{oXe ]2<<o^| qP =FEMdLI.pR8{mc)dQ<6Fߚ?bkg'fvz61K&;L<PK %{Q"oF@ sebastianbergmann-phpunit-3123601/src/Framework/Error/Notice.phpUT5_5OKA )rlXAԢh cky\<\fAnGp)8FcpcxB )<Z!R~~ܗUEI;+yXV1fvd@ mq"hԒ~טJ6D%8m0D1z 6Tdo)6AO9Mxg ^^;i{fkGr)BLDQlO$7lKlc'F"j P_]Mev[<濝%hv~~R \Ig]yjPK %{Q<߆]!S sebastianbergmann-phpunit-3123601/src/Framework/Exception/CodeCoverageException.phpUT5_=AK1sE,[XZD ՛ l74dEN{ߛSl"dNV7dfSShl:y#&Pe-@Q-zxo{X䫶,zlBn9!: vԏ{on]F:n Ɩ&Udȏ%MdPϔǖrD.e6I>\Iri=SgC\ՑdTS>m:Z+4ƟV*>IS,]NLdWԏUPK %{Qp1] sebastianbergmann-phpunit-3123601/src/Framework/Exception/CoveredCodeNotExecutedException.phpUT5_5Ak@sR*=k[DZ(" edwClۙ7P(6. Ƨ{@Eva\K&i8{r֋Q%J&q0{j?]otdq2CdDO=+;V׎}| fG@Œ 8޲c)6y`wU|MP.쑀qB+[VE vBPk1drnk l.>c A*cӿ8 AVQ[0%2CWg2Wb 8)B|6pTri!X)q SZJ%Yh}[}"gU;ju Vw]6/1Nkh1(ߗ `N:tЗON8%3X@?MwDy3OgwV4s5R1&G|TXU.*)ɽ+{LbUfT(fX[` lyG=ḅ󨠟C95BU4ۭclzS`a/+৺Aʖ@fUj]b5S6M::"wg܅NڼarP;ݹ}\IiX5hoͲAc0!ӰT힜w֡pM3.b=/pK:FPK %{Qݘ,X sebastianbergmann-phpunit-3123601/src/Framework/Exception/ExpectationFailedException.phpUT5_K0s>jސL`G1U;6a{/Ay3cnںuh^EutM6J ȷUJx,gGlHFY d{B!x,ehЮ=je hF률-mg'6Ķ5Kq~>cDǵb)JXp-7B] RH=ͬڠo:1ih}eAJ+: Z>t@.iMI| 5'v5!pWYVF¢^$lUM.y9۱HkDBIJ iiPGs='GcIP"}l-凔%WzST]1|HcǺy)&f=&o4mHgg #[EpѐvRLʤKeQeN KV/hNoV05v%/܁0e/ln GE rC//lv~ ]]!_Hfp=8!򟊾ePK %{Q)R2Q sebastianbergmann-phpunit-3123601/src/Framework/Exception/IncompleteTestError.phpUT5_]PMO1ﯘ## *j CLLw;Nt.7c+gGI*St7I5&o4,jؼn><ɭ2gTaIB35<]uY`Yi9B<1-8'5uѡQH}̧t$MBŜzZxbFK+> >\doy*Q<ax5sICK[\;LdV.~ z)%hK{nmSPK %{Q92V sebastianbergmann-phpunit-3123601/src/Framework/Exception/InvalidArgumentException.phpUT5_}Sak0_qŬ״](t DĖtJF{Ovl͘02>{|}kW*pyrJ҂ve~%p?WC~[L Oߞ~iE9!d2g,'%4|AlpxO;4 9\]A$jτ6.6(8Q}z>Buh%Cb%e `h'ܛ$2QQyE 틙=8m[_%\{'NiBEFy}Іj9]rxkYsE;δus%QG_>hT-C_$X4 <"xPGy$;e. Œ5H n%bc xlk@r 70 E,[Rp41A\3oEJø3g9~汆ӣNr>M; s6Sz!lZ9OYob^4i)M-0 -B0x!"_m|}nޱ4{$eC ybX"w*e]@E܌Í2+pO1#AkPK %{QU0Z sebastianbergmann-phpunit-3123601/src/Framework/Exception/InvalidCoversTargetException.phpUT5_=Ak1+XTzֶRQ*"ho2&!]wjO70TYt$r%rGb2.` l | ͧcyЁ`'(0 vOr̤žrLF`Jaeg#HEP6BCP 3` 4Е>( KZԍ{o~=XtR@ MF@R鏒'Ă4@=֔v)*u>v!W섢C{>*΋Z5#GcѨ^eٲY5h/yp=n] oP\ Cq3 'PK %{Q12^ sebastianbergmann-phpunit-3123601/src/Framework/Exception/MissingCoversAnnotationException.phpUT5_5AO@sb$AE D5DfbNhw731wgvv!J,x%Tv4& ưIX!T~^z\#`DyxB޵{E[! x? Z#T"ĞiW+8_BCz@_nRt ae|,@S@II~P,#%@ *1QO2ZL/bif9yE9%2~]јsjH{Z2nkr +Jg7![$Cyf>t^ xRɾߢ9pfPK %{Q]N(W sebastianbergmann-phpunit-3123601/src/Framework/Exception/NoChildTestSuiteException.phpUT5_=Ak1+R*=k[Q[dYw0du)Se5 j"G}4I8Ԕ" oPW{}:G3#==*1)KF9t/5BZ ڇ>ұfP΀%.I|lw,*΄ݰZol5q:PnR:Z~<6j zZ8` J[M4+ 3ȡRwpQ2~)>u*ћ %YB 4 e׫֯j怉-1/Cn xat&RPK %{Q:t(I sebastianbergmann-phpunit-3123601/src/Framework/Exception/OutputError.phpUT5_5AO0 >nb $7$6-M"]N^}l"2M[Hf(fuFdPy\@TSQI,zx$޷=,E[iP ݝw6AsFg+I}E_At-mV#4(ccs2[iGS" 2ǖRDe6R(^=P); ju$֌ryJ=Q\ZgeȡʭM.Ac|mɚYgGț)vf,~PK %{Q>G V sebastianbergmann-phpunit-3123601/src/Framework/Exception/PHPTAssertionFailedError.phpUT5_mRK0+!Ye}tmVU3`xE (9g?uU9V^9ؑK7 ke=&еCh xY™YÑ2bgA/ؓ a y2HEPu Fe%.r^]rb[&Tlis?<Ut' !!I 0XtGgC*SpM6;Tl -%=|NS Z׊RU# ۀ+t9:n5" X'B_'Ii=!{8N%Ě'/Z <#CHƵc{F!Hs[*b}j98Lt7( f<HCgXBFm"3 kcAq'QZZ53DqHm>zxX+Izw]iPK %{Q9d'L sebastianbergmann-phpunit-3123601/src/Framework/Exception/RiskyTestError.phpUT5_5OK@slX+`4B'փ|3PbeLlF}&XlM!&pg(v$F\g1F`0 ,&U/ha iGsjd1tQdžvC 7<RQ#zT1Oe`*E\#9AБ&Ѿz,#&){\35~ z!%hO{N?v]PK %{Qi&L sebastianbergmann-phpunit-3123601/src/Framework/Exception/SyntheticError.phpUT5_S_o@ ϧRbe{c@JЧmBĐSKs`hw}I D}} RLrCL65*ht52acsV <|}xtod@g8-spTj}{g^p:f ƥB)0lK7*G#}e}9S3ð7RN1L:ܗ5%(D)QL2Rk%=F=ZHM +YvH$O{CԋJ46|Šnqjyprm2#RGRs#ЌD 'ӣ/;M&;Cim[bL4 \CՕ/Qn,DvlxI,!2<+/D?~LUVtPp zlqN3) a^:;2ǧ$G-TD0>ݢABɝf\D_|zp}H: 9 PK %{Qӏ1S sebastianbergmann-phpunit-3123601/src/Framework/Exception/SyntheticSkippedError.phpUT5_MPJ@|Wc[sEA&n,MMcM҂O 3~U6$LVl`T#茆B 'U9X$d<`YI|X\Of{"lgάYo*H)gie`7C{rP^}rBt>^̥LS*gȝ)mBpG=h9%WH<^[,͍}>tJZ*V'{>ee6B6XY8%up=ZċR:%KntRﶅ7{RE`T)PVUtN5Y7S GɳHND 'PcvRNI{k"׹zAqq(Ab(,͔)0"+v6^.RX=~h<#}.mBʕ_0TIlqpO:m}xBAd3ikHOAxße _ ZCl֐Vce@_脍hFoGK剮U!p8!D=U/ȼ/p0@5Z d/RC h} 0?rEjD^Er;_kA/Vu=܆Ԣް]3jU;4Tyii8\fu8zuQcEWG@I- ?|m{-m3Q}Qrh4qJ6ilwQZd+|/ ^oHQ>>p׎fkկ33*F(vSk]zȡ٭Cq=QXXuFkk9k ZEvJoh !%stW7Cm4&d"z.]ly=[.wBآ\Ҹ^wضV$XKY&Ͽ֨L)_ p[G,[]^crVC:)9m 9V*LXM+Ș&8OamƹIyÔrO.\Vם~wX\xcrZ`Ka ٨1g UymHY凪WSuFz }L]L'ee{f0[vr]qp&E`k_PK %{Q#9dB sebastianbergmann-phpunit-3123601/src/Framework/IncompleteTest.phpUT5_5Ak1+R*=k[iQ*"ho2̺$$.R;)2ofD,|%R~|.Zа#7b v^LaO5faBء7mA}1Xzz6!M/z C :BL{߾?j`4{! K?JC iB=:SҌ2hN&zfrBʭMnAc)[_~?PK %{QiE_wF sebastianbergmann-phpunit-3123601/src/Framework/IncompleteTestCase.phpUT5_SYk1~_1!us4iHZCLV;h%!w$Ջ`9>AR @^Iaؿ.28R+au('0\RgJW2Q ir* x( )@+&0[_ R֜(8TJyFOQ)V"@&,`Vl%2QQEfD 5fC+_/3D*C2pBu0j9Mғ xXs 8o+źIK*nG&h$|@& M d?3dҖCnnf:Bw}6:5Bo8bOM52yco%?AƮ Zr>tA,LW0Ƚ-ZtdB/ ]$9a$/r}b{ aߍN@3iUqVYP;N[ PK %{Q}#+R sebastianbergmann-phpunit-3123601/src/Framework/InvalidParameterGroupException.phpUT5_=AO1+HNP%7`5l^7V̨ÖJLE`B`Ჳ!;ky3`"4>( Kځ2[ tҠ@ &e'dgiGɓbEd(SO -]|JY;ОϠJ)yQE(OOվhTo2lYNoY5h9 3D߅屢I?oPK %{Q; sebastianbergmann-phpunit-3123601/src/Framework/MockObject/UT5_PK %{Q? sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Api/UT5_PK %{QF  F sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Api/Api.phpUT5_VN@}WC$A}%rR}ihmO)ήNHY;7f_̜9s{1S0LFXMI=؇1STnI-a0ƒpz0R‰͝qtzZi1B?KU:4-AB!Je_顰 so/<]9<; ca "$,F0& gnTC@<)hRsS2kScw*|~ah۞t/2J"[9Ra[D to{3cΏ(yHZR$>V N ,sf$/T S (!;T!q\Y"y] Wx#R> 2-*s(M5E0QÌꂨKx[sM@mwd %fv lzS Z.IEҤ (bn˳Y6bu9٪VƯAjh<(WAW\:속dפwh%6KP[a\ L~|;9J|y۱妩+e_$њո/yoQ/e݌ 帬Zl4;C֥[2[z\>S֫0[W8Zxyrn;Y0cqn3  s'l6Nuc-pxZBqJdj\)>[zlif+wrmȿZ6Y*{|q1 â%l(,`Kжpf8`BA,?gRCL>&pLiRxd^jnTAOK=Ia/L54Dzý=#՜Ihr9{hR̙m+dV_c{ӐMhI%)eX!=hlKORiKc8uRoy\^n s⨬܃{5Cd?:/-u=7(/(J>eZb1l;(F!/D W_D'B/K@k" ,Y|m98NoʯHC0 3遻NNNශA{OeTБT'f[fKEΪ#HAXR O05`U#&%[̰54#Y="7IDx͡a j2z'ֵ&xї q@6 pXhc&+P+GVuAoioD#[WpGEMJhmOi+(g ^Oe`d~S>FǸbPmAŊ;K[^Ua-OVDo[O5JA$Q?*:79Gİ-fL*peHZIx<[+$'6`3M<05Jt<>BMӥ+]Wv%zj@츹me4i2h@ :zvę,A]#K$g"c4;uYCBqy+5{ɨ@J預 [wߴC 1L`w^r Wh`Rrt9Ƃ/S\AIQA][q/@m,fyj{rJ1%y3 B9F֣D ]։Y][2mݬnf?QU*G{$!k ڣ-"B7F+CJ:dkDU)C u4.` .&}Zjp(_@mK`8w{ܺިq@8b3z+/XE-s?E=#^csb'qt|2LQ ϧH p= uc |.:8$>+3zi\e\l3ߩ.)Fq3C?l0s,>?Odi5N`Ml?PK %{QaM sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Builder/Match_.phpUT5_e=o1 :8Fs>jIMf IJqbE=~ImgNXY!"z{V7uUq9yMwLFc IևXۛGQSGrBOjE͝f"d%J܃,w +KS>,?Sˀ׌&E%GPœڸuk:-|Ac۩{^a>L|  ۛBeԑQCDVn &Lz֤g`,^ƙW=/~ ŻP˳CQs6jR[PK %{Q#AikV sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Builder/ParametersMatch.phpUT5_SMO0W]q**Ri7$4q&]vAB@ժK̛ތlg!'E KKj[.\uC+-_ c!3;pI5 Q/97٪8Aa.=7ԭq=iXEȱ;ICxv|$AevzhdRR@ 2taD'5XO*=y[>u[\\%T ÊȼRrՃ3mߑ2SQ,t {2jdXu,ŕޙQn3#LT1{ xȧ~2v]@:ٕ6je*h5pe25xKBR<FGiKy1=doiPE* 2 'ʘ\S~K̟|^>/k^tQPK %{Q? K sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Builder/Stub.phpUT5_RMo0 WC vmТ@[AtFg $;Vɦu9v,2'gOuZ4: gT!/%Uf6"|HXt Ch8%Y eiHmHb=DJbGc{zrm{W*;è2XW踓aÐ J#!cJb'1$1k0 6ӺiF]7![po1&RR1=)ZGLWOUV0d%Gѯw' cƬL'4e͔s{]PjW!u70ЦfNh5F"N`}Z_y@*crd:*!r[Ñb5چQl06ٮo4~~!wgQRgsoSxP|](&TCSQ>c|1Sn`&p{h#Z ^jU5,xy;Z/"1~ Bn10 XtȠk<6Tܟl6\+jrN :HB}ğ'*Eç|q݊d1K^fLWBE<1"fZWa4[K&$)hY \oǪ~V_؇OO4͠`bkzwϺ"|91ӟPK %{QE sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Exception/UT5_PK %{Qi9_ sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Exception/BadMethodCallException.phpUT5_uPKOA Qx@45Ao$;e+3B<5~]#X2]dIlC`\ ;@ݳ\Awsa0zR4=LW]` &v΁ xS ؐ*諐#T싩gռI-f%)wBZZ7<]2B:ףcC9b0ER i^})?ȸz셒GwlD;˹Q/J*Wzk%m*D_c9@LaΚ;#풤vbh/m?{ndPK %{Q}-Jw sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Exception/ConfigurableMethodsAlreadyInitializedException.phpUT5_ePN0+qnyVET*i:eolB'Kybqh/Kb#G'hRkP#7b_?yC% =TbF6 zQ;X:\RTs`BojY }R@t2ur}X Rc:Q &e+dcG&CjdiH}Txl(GTlWf}BڮWl22-t19{}/jtQxwv2 {/O*Fh-p-?B|L=-6v _G:77)R0):Hg)Jgz(ve?F-z4p!H uHU&YtRSPK %{Qt?i sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Exception/IncompatibleReturnValueException.phpUT5_ePKO1ﯘ## >H⃈z"1vM;˲1wgЃ&_{NC* q$LI6e0גd *27G|.@aJL-Mi:a7bTwWGGCiS2(gF>Vɻ3`;¦=,fOY'էR14*I^3hKQR3*LA v,GG'jd2CctR&qEuQ򶏖+mT4WAd[W$ɳORPz\ rݻ5Cљ*t̾PK %{Q"bB4Y sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Exception/RuntimeException.phpUT5_ePKOA xh 73;e+Lxj^XG0J8ȜH'" {M*2J _Aw3CXa2pi0gl&BM` FkAxH7`I"諐b E%؎/yGջZ1*.I0hkوQ vDžWsT¬I69k'gL^c#Y]%>0\y譕Jo[.,b $:kN*Xogr8k]n=763wSPK %{Qp/uH sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Generator.phpUT5_=m[8"njgyIvwv/d Cp 5j{mwTzm7L&mK%TU*?]I{eU*ngz^%SYRT(GﳴZ'NoG'")4+\\^'Y~*ųIGsh0ۼ~^ |:E|v[WJ1#lI*MqB}L m`wd誫B7I)b^1I+򆌼F%׸%p nm>pxxTXZ^AVVIFTpig0eVA1r~JKb%Svdu/+2 HHFnbL_/iZݢY_w~1I P 0ХK92IHn wV րLz7'^nm3֌(w윜qğlmUq]]e@;^U&(|* .rzsphg8} "ˆdF] $J*A23xFK*0wDwQ.| 1 L dOJ3(tOnn LlEllݒw,|p%hyk OhcE[H>P&S"B|AʫP}iWDAŤľԐVz9iU~ lb?;k7LN %B¨߉l(@Cp[u>VRړ{yܜvjB>&X=aġfGw"jac Vu\ӅqqFTWsp(ÒY5 ׂ(xe5DwK_r wts4s̔B:MjaV{=g=՟!LvJzҹ`m׫:5ϯ.nb/;6nH5 5B)[Y/ FW_g?w'~dmi29O=W/ڗ]lk^%dafvg&%]^S{Mm2Xeɒr`EVoTD sJȝD`l2'A?aJl bEoB5N'o>84kָ{ra4X(gHG*mUu,>Q'SM 1{@4;sc ]p7$2#bJʐ# dV;{W\k`$#yVGȷ/ x*84"Q16.ט_J>^m՘nX)[9IeKxe vXYUDx1Hcd&@ֺuQ=LFoܖ@5 #菄,2jr@gd\oU7 _&|={1j(N{-J.4T!3 %-@H2S Ik\Eѐ nع5@،V.p6YcSAѩnT߈\j2whCR&XBT{䗛HQNaM^(~g㿡v^+ߕ. ]*[v2rĶz| z9~9"{At7,SvA)nF=Xg+9E4xJ>KQ#F`;a&m1019}Y_ܲ3C(n[[T"DyȖ3p,(P *>CAuDXW7Σ:.w?$V l To)T*)0(d&C2kb0fOΞ }$?]<LaJ]ĮʉDfӉQsqPǭ, Ŝ_jPK[j4Qn5:5A8(M@@`oL OU;׌da>mC#==8CG띻k_g8hqib{Ӻ%-QWLq'di+Ώ!ȘP1ۣhb7ǁQEBi}SێPcWm^n+\Dxs4}7q:PHM~FRS;ݳ)bvm -m.98frJSKc:77hȌh{Ƒ+=` 4Hgd?5F#uES"CYw?̲#Ֆvx>V &c֝蜅|fw<| A w^IuXzHP8#<,Og:\$ 3OÍ|vMR1rtEFn0>p&^qR| hf4]`6u"0\u3R-iu5X+ѳG9Z8 Oa p(/J2ϷPfXa2}  MH71!C'M"_G;ί[sJJ]4S֨6upt7`Pc .hѩw2Ơt6X7aCۏTq)N+M! 5Aq,4n=\}W!=!tƘgN aM)gOpOD \旃@DCع,%N)>MM___df2}-aRqoF:n;֗Ԁ""/^Jq$hrhs66PX^3_~!-a=;IyK՛ݿ989ow;o'gyPԻURycQÔGgL9㽃8k'/ C:XT*]uE<6|&S @X4T?:ȕ?=OO?m ;r .B$J[P3X~ӗ<Low8ep|rpmou ʸNoNLm",l̾gz 9W3 PK %{QE sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Generator/UT5_PK %{QO5s7;T sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Generator/deprecation.tplUT5_RԢԢ"ԂĒZ`נx׀ WgWMk.PK %{QwZ|U sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Generator/mocked_class.tplUT5_%0C|EG+.х-R B^ (Ng6cǒ#>R%e鱢0GZ*kZm OF)OBn_p!OZкfւ+PK %{Q7iCMV sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Generator/mocked_method.tplUT5_uRn0 9L*tqjz٩T dd=Dy%A7;~8".L-r^pPd`M 9ŬLt Zl:ebVS rUړyY&_T2Qp{momSm?=; 6nm$GbI0 `q PK %{Q 4R] sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Generator/mocked_static_method.tplUT5_U 0 {e ŋ(LDbw'C W@֣Dh`lQ,)dd6$}mWPތ: @8Bu>K,]ud۝Z6s-ˋ&,` +4ܡ8c: PK %{Q]W sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Generator/proxied_method.tplUT5_uRAn0 +P X"5 qv؍*5BjgfǞjkBZRɵP HAUN%- uCsMܤ6(C6h'J竑B;l1⬪i3H5~T4qQxڑP·lh7X z*P8R1Qېx`ޣ''hc\/ mhֻ\oŻ3Wq ׼@4KCd?q\BQ ɪmJ# dCҿ~PK %{Q&Z}\ sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Generator/proxied_method_void.tplUT5_uRn0 Q5'S,$&w_Z %ǎV(%\ %IP`YTl2,M R74^Uj{1dm;}PK %{Qi7<T sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Generator/wsdl_method.tplUT5_RҤdҼ<ԒZĢԼZM.j0YPK %{Q#n9{I sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Invocation.phpUT5_Wmo6_$n}uXn,h~D $ehw$BITT@b^O.MgXP*AcRxї (AY`O7_UoA@˄qnKE1Cc;YC$| Aie(^ЇB%(1a + dgp|Ҫwja#Y$hGvsK0ɄZ򃀥O<~wdRJ-?egf/]nY^=\("/`2pfR3ϸD@Ta` U{TS0 SZٖdžXDs`6'LIԍi}1~|b4iNg!+F5P3`,/Dלg~(51^C".P3zepnO$8Fܤt5jJW3ࠌUhpjfmV%lVTnΈ- YQ9a[qڦ~bߜ7Ң\=o#fRO Hyӓ3ϢlK-31;,sD(\݊g|GDbJq{A074TR뇡˞C5tr ]Qa)Ruuoo$Gaa^36 7( \.GGs4$}O*W6[J/*ӚuHu7z,&o?uYNNze ?5Y9!Fn[~%TmId)&V7bޜ>M1tsFcߴ|n:I+?< ,ai $e {& 9cㅥju q{wq&ǁw^m0#-Vb ի!69BS%}tU)GMW΅wB=z6HhyR(nzϞ,9{w'N2S/ys;#a A_̪-aX555hz|v,z.% La'HG2<ё f }^ x =CF*&RˍHb Kb uV"oqѲ&l(!FQҕW]pΜ?v߹hzht#D3[~/'|N [Z{+t&PK %{Qزu%:P sebastianbergmann-phpunit-3123601/src/Framework/MockObject/InvocationHandler.phpUT5_XO9~_a$l*WBhUJ(;W7!כB{؞o9{% L@iBw툼% S$f)QɷLOqYTiF9r3UǍrcyas%$ 8OSl'*ф,pC ~D(mlO__(N&[HIlNp=W"!FOFAeNJ,$m|\\ol4q˧2ٷ|pu;O-=rF FL|MBrq E㬔 #؀D;K璆[*#_gd);IftIJ3?bRF?Б 0yw_؟dݴ"srwgukSKV0Ķb bi˕M̄hAlV6$0mm٘'BV^Tbf,6H]CʣD Jf#XrnA/m#gc2TzU0M}a18 ӔƤR4xerkL%>1 ZXDskPJ og Z^Z_!lcTͤ4VMs]NOcEB JQ6!d gdBCkvxsŌ+KYcU..Mϒ12uhG9$WZ03b 뫣hP\77^P3*^d[T"8i1IH;tR[Xj t}vF8w%.R)GUmf'dr%\1KB +6QG[*7Vzw4|TXMg5R:si{ fUySG>~t*RwA=]s8FlWͯ7ĂqprkRO+al 9!黯itB&}kPWg||DN7׿n..%Xܝ$9^G[`[ڼUmhyYbVlQ^tSk_PK %{QIhS sebastianbergmann-phpunit-3123601/src/Framework/MockObject/MethodNameConstraint.phpUT5_mn0 \v-tŊvdȒ!^JΏV7C4UJ-]~)LfRJG`Kx(ȂIe ̅'% |E1p6jCB{*mvN+a JlhJjAʚ h4 mv1ۻ](PI)ɽmD6*0P#jؾPgf`g%]&IߒZ6Bz6:#t??a3l1\Bn: 7+hbk>r*T > Uxd_BSx8 h0V8c2}hS[AX{7mkm[Ii_hŜ6Ic z~ۉ"OCSq:Kx9?;_o1Ŀo?Чs [CR%ʯz6H~?5rdХ3cIvh9yPK %{QGi+J sebastianbergmann-phpunit-3123601/src/Framework/MockObject/MockBuilder.phpUT5_Z[o6~`l '0`&i] w/uekHk/Xߒ@:߹|<$( ~9//<%NQ=Bi$PsX<@#yJ肌9S|L)[#9%(,h2őO ixeh10vř2W'X(q&IfX` L~℈Ø3zah~7I Ȑ9@,8N$IK z0Xy;>چ+QnߔGW,'w)+tDֳDB$ݏ St>~ZbeXVcs<3!7ʗo! `g&r)2_2~'b*oP`*fljg jrpG* j1H6['L\ {$LU$UE)6'2ogk~j7fw[8P)c+Sj1 gӒY@./BrZ*)g,t2S{pK!OR` U(<6WǔuoNaB0B쨄EpXwr6}Fe>I/7 M*xYIz#ҏP_~!\ioI'RN^s٭SflSν2s4)Wa :SI!`@5t˄lTlJ' \Ѕ!<`ߴ,Ψ2 SI'eװZub}WI [2g2u RعO#U/RGaɪ" O+C8:q1DՙdA3i$n@RN|NS)Sߟ7,=i.?~(o&( wZ3j" cZF!J#+ZhFTZ׈&^eW{zr^a[ R2=0%Tj|^ҚzmHvktöu2睢aeTP_1˳@f]%:}L!+` y= ͫ-#f*CS-(+U;ßCF=4Π$ .eF*CXA^ ]`^=*"eL6Fk)}-rC^-4FssnwBC;=.V.MjW {T վq\ojMx'7QUaWOZQ8SLn3"]Fpy7_^u9Sp[p Ot!uwY9blc\Z/ƚ^Dc-W7w*&QF`7 d#V֪pݡ%t`k NCŬ=r2oǶ쩝m"|x9PڵqnP `-@ oFݧb`fmGMbzGXm$AXWd;Wwkj77uF7]eNDV'#/"Vy4^97"m諈ʛfu \OvZW^&[U ;PK %{Q63yH sebastianbergmann-phpunit-3123601/src/Framework/MockObject/MockClass.phpUT5_TKk@WL!)664ZWbweQ[M$AWʼdC.v2]p/ @:/O?pS*5!f` >YL)]*ߐMs !˭S)HQYT6sB 7u߷;?fr`,+I*)l 12 (Ez(V-Z1{C6ŃO2 jB94ZoҎ\%6̤/J)J AHTY3Ʉ ftA TIZPԄ|53e҈5sg9&![#YruU&atN_NUvfY%l!8U܅  R 0c(BT48g4uϧAC9C1mw܉%*4^}<\^ |ynކȘE]>pd8#j7ł3)ʢ=(sĴѢ8nmNMUG5: ʨ!;N?wpZ`PK %{QBB +I sebastianbergmann-phpunit-3123601/src/Framework/MockObject/MockMethod.phpUT5_Z[o8~`SRn';mf ,@%:F mCBRd:/Pԡύ/GՆD4L~C[`0}r JM3-?OHc6qC|`q_i~ҔRk@Q =x>f9a+Je0Պ H4-@au,MBX-o'(n[bɢd4"1[7`yyHAQD ִVmf1,ן!; Jl44l+uݦ[fq$ 8܋< 'dQ`Ҍ^ohNXs-6#X_o8=:? )[eۀõ9;& 7y|`5$CVdF..a/&(gȍzoyeMmU)+zuE2jP=x$l3 )+*e=KH4|B*0;EJ>ZC Q4s]+؝gkJ*rV,^ӓnP*\@{kiY!%T]&Iu⏸&76(YMIA%W-JxIJø8{t=OIutsА<#,c`9:{dmW_*;HPArSh˭S ,<K jlC&eJyR?ba>+y>߿ sv]]%4V7Ϗ^jeMkpF#غ}ص+) \sGr\UB6]V~\-0.>ơz|Ǔ덬LՙUѴp <:ݹqE=kq}fvW[#k$- W Pw׈ҩJ#Za!BjH!ALTU`/n@p?2ܺi M_ KHu6+,g&zq4&#-^ߨF:j!T4:Xa>3kL:L28晴Rq]#[$Xb΋a܌QʞGɴޚ ՞`_m  ٭ 8#f&^p\?3wa:">MRX7BEב(僈Me_ܽQ"wHӻM3Ws0٩/k5*@Ydֻ%Cef ;oF׹qMtI&{HDCV# hۍӆoW֩z~b<s^ 诂FW-z^.>^;b 9g֖kNiQb5T11ZNT>J{S`x9Ւl.eޝ˖³{6m3m#_WOq k@z!g|am?vdLٿ/'GXv!By`%jTkSY\@qőxh,\ԽXG [Ŧ\OA,fոb{2S_Mr%baṡ>,A AHPa릑ҙUB9C̓N0d|k!i):'VߓCijc4Xi ci^ #YKk& '(ut^M1V8X=*'2(FzHSF"/ |Rb#} F8ӎR}uDw3YY/~F+&]dH=3)?4$%}Ԛ M#-nx%󘘌ղ#l.Y0<.O~zΉ[b}d"ͱ Dm-eUuU"y H/HUHVA\?47!G h&>`~Tk 7v`%k+;1qˇ@툤0YZMzKeLȻRblSL'EyU78 Gq4?d3E9V m:m^&(Zb*0[O-_M{7oo!;u]iKouٵ@10>'Gs/r%Mi:ARd-j)`_Ԯ{o-Bpbk[ަŲ!?k9/ :ow+ޜpƔROr]GS PK %{Qr I sebastianbergmann-phpunit-3123601/src/Framework/MockObject/MockObject.phpUT5_QMo0 WS -zmڭРڥX[@蚍" 4G$#0X'yۀt8N*8%h";[pPzj=6*1)c+?إ,eGւacP΀%.BRL}`Q &s7_ͮ U;ŰQ 'Mf4!"ʓQ,2XTTN0%|y6OyTU9n3Yq~^jK#]}i+i4eLBwB/zk(r<]ƶ љ3MyBn$ .EBJT} ֞h=LHn0Ȓ7pq3& KST0@9WPK %{QlH sebastianbergmann-phpunit-3123601/src/Framework/MockObject/MockTrait.phpUT5_Ok@SA nM͟4f0zٵT;%d/{7ˏqPc+I+9 Wl~9<5*@4?w{rY#">_ c톍8P0sg=PPwZnպ!$(+ܦ_Q*Q#"@b#`_1A-t8{)qdH7/b/s>PK %{Q'56G sebastianbergmann-phpunit-3123601/src/Framework/MockObject/MockType.phpUT5_5OK1slXڪEiQOVnl6 lEN6Kf{Ch-F$Ft337&Ae,#`tC3SQ :xX,E[QJ?l|nZ> xwv2ԏs/O:q =&(MnRtL%ywQSϕÖR@e(R& %Ƽ+㘢COD8ϲDQaV>K c oTR1ɸI^rBW !tf594BUPK %{Q@ sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Rule/UT5_PK %{QMDS sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Rule/AnyInvokedCount.phpUT5_Ao@s@j!"@iiE%[$CֻlA7iKE_ϼ[Zo'I|tQgsK  ] $ϴa),6I8E^w&8N5W -Bi Ő04;#S=m we(U5;ѸIHZ)fFGyL7Z;,`-"oV\SwTPSE|V> }|Jc!m~aW<=ǎF*44߄a4ߠ;9w]C~VOk \!؂/qdR9}0JG@Ѣ4T 6M/a*U)a&TPK %{Q;Q sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Rule/AnyParameters.phpUT5_R]o@|:QE+)PZQHNwDgRƳ3c_ }3$0y5[Vys)AGAD;TBvklL2 Wa]јZ|{GF0E[pdr`H7eڂZ/wW$d">{\0cjäks{G2w ̍`,IjmQ2(JoJ^@ ?S{gŽdYa'욾Fe#y=IA2;3ѴSiO,BngG^f>(I6x,|kg,钜S2a[Jԗϗa8.ۿ/)7g1l2cay fT9}+3ӿT}BȰts3|ҫ$)OOL)Bh,Kji;-ύTPoȱV]99/UQ>׋ު{o?Oh3-ɝd%Qh%)Ѽvfɠ6$K[Wc57KU6d D\ @>9"B$=_1̸ʤp oG-)Jq'+ZL+c]Ԑ.ÞgGF?J 9c9aJB>L1UI[V8 jBA:!o2x4ubքX:t\(Q$m3r#6NeQZIf~$n5b.ߚGIWn 0}dzOtJS,+ZF# xAU^JTƲLF'6hYj\&J-V$bntHbs2t@ݏ}ΥYw,K!0@z)@3Lo ̧_5O{0 7^0!+yJC,kj*MWR94e hTI( u#1%3시2n I`-@@לx&J pP\A5M;:?dAxF!YUR3 cPՀFpvޒ>Af"&)4?>rHwfX/WMs5sv!(}yMZ{Ru{o]atd5 nS_^@^KSݦH Pu>''5{p[`47̽D#X/:oN^%ˤ$$ygM7lLSa]dD:XxK^BU)v .^WU~ޥ^m^?vE7غVJ:|8O]FS'VJ;ںxkXz禡h]jGm#>}m?PK %{QW sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Rule/InvokedAtLeastCount.phpUT5_TMo0 WP v%ui]hn;(d8'N!}|. c|||| CY #$=ӼBw6FNGDg%,O >' ~W-Wf-3Pyp"0rb͐856FeۓKHkՂq?=JΏltQ V?66_v2/aY δ4I~o ^˟WY?pS5_;ܾPExe/EPK %{QWYx&V sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Rule/InvokedAtLeastOnce.phpUT5_}SQO0~ϯk V4=!M}iLS;-IK`~Ir;~jZ8=9-/g'q6d0_Ppw!'Ĝ\ I f a m삁B,Px\[T!Af"FA%πn!H[s McKTw{s5q?;JxP:NRB+Ma'F֣̈Fpqheổi~Y[ysk$Ib?Tu1K+S-0K%ˆABBgDVy0x%:X'E !+ )ti dX-$@c׶aDL,2M OFZRSeiB.yF ޳f?Oo)M!g[$`M Mix.58 Ρ!>ʱVC)Y5[nf1>+j[VǠ$&X0UήxsصvH)߀.s\8:ZHQ3⿜o.])ӎbҼO5?&OzoK-`Q/+/j;h>7︬燗^Y"`x婥?+;6&PK %{QlV sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Rule/InvokedAtMostCount.phpUT5_TMo0 WP v%uY][bv*P2q$CC(lL4䏟 e),ƎL d N#8_r+a L_~kE}N9LSH WhS5|t%7}A]͍@B^%HSͭBgP*qC;>DF,}xy A02'Ik f ~̝Dng=Ǻan,fNܧ/(g]0j/oZqN x#D6zX၊ [jY_pw5]*Mh([!X*Ӡ)yH*d&li0*͡f rI(, W'};Ԛ_ u־jI m7>?̰y~+A', 5vVb1o)MexOmZx/xE5GpN3T[ =.؟S^/HߓbooZ+tf+?z4TYns@6ʜ[걏UK8%.3x_ T\Sa͌'wL V:Q-?ܯ1*UNW/77FZo-86N:g𲓍#j!ު&jJoZ_~Fmh%@2\=.Y@otd͟EH);n_ kEg/x"PK %{Q]iZ< P sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Rule/InvokedCount.phpUT5_VnLS'%J " \UֻxkFi~pB+dzsf:/_E e)}pZя'ar]"г.ߌ#2`L 3ޠTx闺הaϹu )K^8=)&A[sut3۳OWg* 0J&ro')dljZ+ܑjnp)$Igwv[Mx.:XffeB[i(alkm:#v4*y*f#ӹpUMa2]가JPl@9j3OQ j-K%? XL8Rޏvz&tAmg⒨}t3Z$FNHkh M4ڷYxOO7l`,6Kzsi d֖[ƙicx7vWDR3>?d`\#: M{S"pip-zf5v q#7Y;V#ȁ;z̄k|aRƇ<^X gtcPnF]{Eu/f\ׂg4ZmL.)Վea8aў;YkY ]x7~6W Q| dE3j1nRYkxLW%ˊvV 45OLMC7:;`4tZVZ,E8!KV)9 ynBlA)i*t䭹wnsG 3m<͝\$Z/p-&$GZ.vu^*ϹFA|vO.(/= E4v=pyT$ݒ@^3da "UKq|S#kD49TujAPT$7+i~o=;E@t^aP~kyeQ#&AWn!m7ۧx>9[pTsK~Z ݕڋ~B)wXWɻ-KdlvߑQ% B }T&UJ ˧QRv Eҽ]l` $k+y۩x}tKUዶiLm`H)E#y݅1%4\ȾNafmj,i$?愙e3D, 0.#n.P.έ(5 ZqR\diN+%Mg-h6-r,itIǭb E%XO8ݷϋ"*U J`(';Fq+7<.jAiSP¬QLJ_y8.-vA8R i 8{E.Z'FjHi meHr)Uf)|;FgTqFI9 ^PS^A{V1G}6-5t<NYKv?zxsl7~'#Nl~?GzPK %{QPl?fC sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Stub.phpUT5_PKO#1 WaZ!*%RIqB[;o0^&jLTط$[ű;l;r0f;Q/PK %{QJFM sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Stub/Exception.phpUT5_R[k0~8CץF Ҿ,ZlIHqߑ;M6^,w9dk %F8L=9%iE;C6OfT+jk#0<~}|֊sAIeK,'%4|FnpuCϽq@5B5 HcwNkKhDPWƵї`*c߷/EQ-zTAI+9̽D*1%ZAL~8ɿYBIb$O݃chFxcgŝEw}[b[t,Eم^eB5v`iòaϨRa~E Af<}X&82Ø ^ oJؾZINR?hem?5IX혇P򺇊æPpIJ65޳5<"w̒^<۹TSS%>vD6etKmiNd 1_L`ݟ"u齽0c:*!%Qd݃.&+ Km4zJշ,Q}4kdlUo,,p#VBkq-7j|BM΃@3)K^Y5C$j ual%H}uc ːޗ h&A!ah+ܙJF9z֗Zpl#f`94v>b[%MdQԸ@їgA҄Vrm"wQb" 0[59ǫdTښJqka>/.N/b*s#૶j!#78fMn&hCJٿFRMt]_ho]nYx9^\Gs߬z}?lb,)oS_'֊U||Po8E I쾋$)2c=>v@DO;9IvhS+#8L{>^qNGDvS vϚ"nn]S߈V4Ixwq=]hWY ;m¸wH܋:icRZ%&r;/PK %{QGS sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Stub/ReturnReference.phpUT5_RKo@Ẃ&6 EF(7$^{CPLJv/^{^k Եrzvyɻ͛l [EJ*`KxP +Ϥ Gj1p폱[BCCϝuB5h*e IhJd5*mٗ,R [塠$ WvNXAIhkzj^̹'IݛՑ$vX̞Z]a▌Uݖ}x6HwQvz\!j6$bؑgTYR93Agr"pF9h Cdb;%1:٨X.5Nszqb-AXh.^5G q}|P?qQp`;dVi|6bg /.>!+oƍ|Jmx/~G-=WQs PK %{Q N sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Stub/ReturnSelf.phpUT5_RMo1ﯘR7U!JJ@GՅ[$fxmgP;coBԹ5__Qȁ4bU-+8oE *0>}į z *2) 1lGe-\SZRns'c@;F. StaYQaR:ʛx0.af1z%2 ɅӻOԼi8J[wP]=_|,ӈ_"bU2̬\&,u,dPhM*t dIt'eߞy=r A"숖#U6لMc~YOMniun(e +^^mgjz]#Ƕzby==p: +gPK %{QDN sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Stub/ReturnStub.phpUT5_RKo0 Wv,umbCأX[@阋-4Gɉæ$ߵU Z9L=;ҼCMv̧ L{EJdoc%<||a_KAIu+̕gRޣ6حuA;+kж=8V PFД5ɚKhkT ݧ/ehqCAAI1'$#̽F*0'F5[%޺ջOԼ^q_%ISwoz#իXo(lv%?l-x:Ǒ Y#0^,2\c"cV>5$#/Gb8ϕdcmvPK %{QTw r4R sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Stub/ReturnValueMap.phpUT5_So0_q1QX*[5=!!ǹĶ ;mbsǙPԓS洱W(÷Jy(UV BM*3b.<)E#k0P t=Ue[ 8.Vg@]RF[J:}z< ";Zx(TPU{: T``=Lh[NqjmrhK%ͦ$iH(FiBE3m> 1:fo\Z1m:(f|H?D⣰vAMWQfsbeN!V$m5i|.f[Iiґņ`^p~0P}BKL_,s?7`oMAf2\҃diuB(d)]~KUP%3Q}+y~>#r1CpN -l=E5v7wv3ׄ@:SBǷl̔zf:~C/0&PK %{Q7c2H sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Stub/Stub.phpUT5_SMo1ﯘ4BDS ZJ)Hh;ٵ-{%BwnRԪx<`td4K9Jo^_,ż9ZN@{({tݱRBl$S܍\3R\.ttGKa1 ``C.}QػBLSy檔Ģ :.Y:O>GC*Qqh*vjf{|ox$#ۍv49=[7 #%b^X1R*Y;/j@Qh~)>ky`9B~dԴκZ/-.~ .C#tU3eR†RRVy}oIrtB) p% OW:L8&5sM̉19Fr#w amOH%jw#FH_ Ȫe;LcDǀCgeɬW\.t%;HsN 9GyH0GyHQ#Y]-IMCnKOq:>=mPK %{QFOB sebastianbergmann-phpunit-3123601/src/Framework/SelfDescribing.phpUT5_5QKK1ﯘc[>Hz$f'a2ۥIls |^Y.BIvV1]]L|V ;uAhX ~Zs3; &3w2[BǝU`ݶ0Ԁw) {#.DFñOC3Cce3ҬVybWBĄ/ۜ;G%´*ίJe FNՊ+T[\o7q*@aa,`iQ\C4Z3;,I䕱dU.*XXH‘\RQ!ڋTWFt(OMD]{,1M􈯌I] E;Wt {QMT.WU ʅp,5u@jluo(äi -P|Iue~d//YIo4(KenCKWH |݈D#+cy4څ G\;Va<8. [^fnM!{Sڧ9,z M-qAp&DŕmHMܐP4"sa w)X.Q\{vg}C.؄#䝼W $[X-ˉ6k-5%kjfH+NR;$VCjcX񑎡hq;on׷5 l-C$ul`/cNը2d7ȽnE61Ynb&u@}W!0"2030yjƊĈqLX1Q$р+$ҟzԜ.( pRjWxM2g8|z"UhL%(( 9R3ZuJ㈈O΀k8jhg'21|;FZ@QKaleR5*< Dܫ\K(xW[CI8,\RG< xG`D&X̓ x$I ъʃq rP*]}iG+c kkU):+R:ODIĚ| cmh}h/ Dʴ AHøNf+ 9xHC7\퍗A0lZ l .A#vAnF$:yU3Fk5Y */VWYD2 yTPG1]pDp/yt jf+ !6ƈA9֐h0lr'S3%3'*\`t 1 VKҥ }˨q`r08hdZP;07ڳ ;j:?I"AhsMW @ LIM2Svٮ1}TO <;I"bɄtNP=Ѭ2;oV/YXqePJK8`M$Mt#JI)Uk?vѮy|gf vWv;;o30Rb7$бNL'CaN ۈl^rbN]3]1&[OBφՉ)v6茪/ZWv<~u=բW㞷֜v7nxx-]'@4FY#6?E;ih>Q_2n&"A#ˠ_m"`v֊9N.O82Z2DžV EFKԝoˇa˙y/U`6M)ԕ'>^W;Vp~Zt@!3q"z;%[QFy)֜F57_|H[mt^Qذu9\9]y)j{˛0?zLUA)]7m͡/*=Lͭs_گfI+*;<Oj]e^ U6Ư՝.GaN+<L)a$ !i5[r705@N`95 ^iulH':PK %{Q1S0.< sebastianbergmann-phpunit-3123601/src/Framework/TestCase.phpUT5_}kwF ث D2ewX1-7zJӇ"" 3߮~HgN,Յzj hE͊iB~n2ʃE "HoWITЦ;#tE&[܅Igo@%tC]2Yzʢe<Jr<`Hd7X(#@ g"˰Ê~.VYtQª_`zޟ_uarr4ퟜ }yz~6/A].Gxx:7az1{J 8"*$dRkPǢI,*5F:.-)Jy FfWۅ Y ;yX^Fsw;/4G>!$ 8NUb ֔PV]lT3@f^ p=y򳴸@s!Rur!5+qjiy9cם0RaWGr:MywԮDmK<,QB,wh x6!!l, R,1/(;iF '{(%$OށH:ғ|2d}~%XdbfB\ZMҸS&/n Epfa8Q(jl-}9|lC_VdPL]A)1=KKyg3#:R&c wi wtXLXhzm/Jhpsؐ$L]Mc2wwDu3j4\u!9w1|Pܶ[j W;_oC }OBrۮ9Vw2K #_!#@`egp-s3oI#PhQtE\[ &,VÆ>Y݊V-?;z:,}jw2!Vƞb{CJ *QBT]RPU;vTv;Oܚ1IlE0KjOlL]GqT< .QJ,d)YFnLH[M,)=v"`^0zүGW9*m̈)TjIƆkn4`Ijh$= D rG(/b04q!_I'xzK?4Kk^(usA@av>$})zz(- :>E%h>m!+ {w.=̑.Q󺓙b*c^!aKN=})5(4%#dIߌs^a[Ĉ,A7 7v(AÛ/Ø0Xy `"R걑^ޠYB]=YlvH<9$Sn0qk!Cy/T0Hl;=Ѣs52{;qXP9^]ȡxt7߽YQ9Z'2\v^UΨSAg ֮I-*TeiB;Kqj܅Y[7hkGߜȕu9J/H}9" 57_ڧRhoX,IPZB}VP:]_{_\#X=Jriwf2oY(w9fj8 wa9@nL-'[v]xru9>}jzpyy~鼽(ՅtYQ~~|9^vUNF APՐXQ";P(kIL md#jig4`7kkj꫃s=ܐy?IRzX^fs^U t IZm-CBV&]˘);PsKn-xk׽*P k/Hsr J<dz/H*|y` fvF;:\bacɯ]p}H3x&DR 0[j9x1 dr414< s42Spcm柕o PY_۬w t,Y11{h'tz/3艇0&6 GhjrfSDBB%IҤs:rK_"7̘}^{DuZ P'8:Nd'%wضx)1?y›ԡjv:.3rS'F&"~>yEE#8LzKW끱nF\Kkt`k`o/ "J÷hp9I*@vQ(¿_ip! 4&AcϿkՉU>~7:&Z6 gKĆ£(S5 >nQWe8>*Q'x9#|&ZtYi[i[(Zi.+",µk5]f]$+](P|WE0O~|#~5^YyLU MATCu ܁ *]]#5>oA|y^c4u0h8r{Y|tb~I MOaC !'l\?aMpċ[ȏXle[W#=Kgs1[Crmѡ$̈vKwt~n?M OX?WSQݹ'!\:\-84qF -` {U5E0XxՈӕ!ΚUAz5̎ 5oC;hp̙FA R[ŎTMWbF$Xn$q6נ'AG&+@We: 2>|UCqlbiI.L!'ch,,< 2tkC#̺&QFohE 쳓Jsߦe,/Rwpן\035iEI1FL;;[7^+uk“`YC]Kh#s鳆XU'3|[bE)HcBĘӷߍص.ǎ84g[_&:UȓGBr 7cϯ!u8+o pZ2CږWʄrb,hI F:N<*6xxuW'Iݴx*N[(!ɞ*wDfi[Iz=%m)ͻۤc[OSAPET G5L$u5f[4?f'=kJs[D5, *`L_ĸX2;ŭ]d[6{nGz-Bv,ù[3A6ٜ٩~!DzzV&oR'\ Ԫ6 Nn6(= gKg8-:\ Y-xaꧮrWd9dݥw&jhXB1n>.&0]B.1Օ's]eR|I;^tfmjq'ð Iۧ@4_@&nfHNyĔG뼪 JI?v zVF`$@AV*B_KZewXI EnDbnF U|> +& ccT^2uq3<x`~ֈfAP <Ë kn֟˳BKHdN 7Ƒ?b}ۆvjf!z -=NA =C1+i X 擳U0 C’>be}91ɉ5 k3 ǝIRc2O[E^q{ńB CQ05Wul4Ey \ɕ]񹁆ʣJ H>GLȭLBdso`ˡAyrK)qv4-Q\>g2~J51)WR )fk7ǻxJ(6EeӹPFS1$uZM z͑Lnp&)&V|-U4#d{~)^e0KKS͍\D$=7WI0,Z[RȢuuգ~&8*g׻(6,oT7Y9׽ò<\kW~{S'R/e1f2J.Tv "c]Edl7%gY qՌuk|'MngSݤy'(]Ѹ5ǩQ¾j^S?f}\pk_TVOӗg+̊#HqΕA&fxFSWP:\FǴ¬/*d,3= .y9>h ,J%;ŒUc?wvu7`/G.h2>_mӠ}8%%#i/ jqKGcD^x0;6R[cT.y4zH!5sxy`2ꍀ/6E8+._6Һ"uoQ*z мʇ<],\k5jq1rkT'Øb.àvwM^#(ג&0ezOFr,c睺b(Yew74Mw%"r s%29"O!J|rIlV*t<%U-txFH<ٽ$^Ҹm}]_(5EXǯEVRZ6<8HU᯿|1>TKh#eiYᤜ_JH צTCB9S[\Lh%x ]#\WMBӱcuڗۯHj}Ɗ8!8J'֛F.o=Y`gCo@eZRp<_iG0x e G(۫KdaYN.84Ufvt-"Lr *%4n8 }@1#E#|8sJ ͽ-aF bZ`8t3~NT$ #I<,L}saP,aYZsbĮ\ )cS of_lLZ30VǮʧxlߝ08p'Z*% VYa4{|L'Mxk\:9FȬFZ&RkVo)9w%r/NΏ'QT2Ǜt.Q㜷'b=M IĮy0*MAwasw,v+ٸko#AEeJ;^&-E*^G~'%\ :24ZŝBA9:fWBdϽ$1*~6:X7="7cp{ 4\2|SN s502PN^&G$u{1˺Cټ:ܷc K}FAӬm}UG3 X8Jo+_6O_LLߣ sveL,Ckyk%dP2Ιlm_sÐWq&;Û%2&X> @ੑo_cS*uFi1-Fu0Yxdv'E8՝ʟ2S5bzuy2cx|nx286 OVxO3j'?sLF@w݀JMBDYaUFal1=Kn?c=V$\#E;5B,dtC%o8| p/z2m<wafdEVIk_p>Le'K}WW׼) 1[篯>2LnQ~C%5bhýO~ߚ/Z2B)oCSb̿Оpf_{Z SF ң1& mMHQDΦD[<φb_~AJt̞&vB)MRL2{ *w!P{D\p Zjw ~Pk|ʓpFf|7'GaW0 ʝV5 ;\U9fX,ue=%XR5(SO } -+K:CVpH+S*=B&u;|gAťޅ-HĪ>8?ٵLIkT wҰֵ4>2Uj;U?:NWU|oɆa/ѓهt%0tFH@-ElAC7xG8S;LTUE,|aԀ#-CV1UploWG2A9 թ5XOrS=lY#-/V!49Cse!rZiQ5ҫF/n,i=bLm7DkOU513ߌjIJQwu/zRO`܉,|Yd_]b,V rU|hw >bğv .kHUW+]빩g2bJ9B+j$Kj<Թ514n/T2}fp%mCUA;_2o?4?9HFMva YFЈQ#{c;/Ah݆ {NEcfKFCbh ~":_P*5FטqS'(?b%3@u1c dYTvBp@t&FS";IH(0%hN~[ݳ|uػ:3Qd#րSpe(As~OgkAtj98H21̓8nHj0G(^hV'>?9~q CטwmHt`W.z$&UBl /Ty&dO G:e'P22`G_~6guYgh گn ?βF\g/K<]K84 sF,eq|5~^\ m*T\aYAcV`f* z-C?o n:FE`ՔiJdg"u[_=$`gug*r_}hwϼ/φgiŭkL\R?,RKAQV)GT K:|r 4΢>jgEB.d1xX \"oI9&4Z1UA1{oo|QLNx;2߶\F~XּHWͦI*"]_VbdB9lo,Fab?mMR-$T)Ç}Ti?@JI(ʛ>f+,M zD˺>`82G8wWoM_;&m&/'*_\xٟ>٪~PZczehzkeeSI&bāw-{|z,9d~a- ,C "Dy:Z ǩ\ĺ͵)ql;byy_2̜=|!]$ oh 8?guK.Y2ѾD{0w5^;ozf[̘ž9~rf3NUrc0`p%ߍlh䠠qW\Up;h<L""@\^葉)M#ܱlch9,ʻ94IEhݵHc<~zE<6ř|@Bg pǍ~ x>q2HIN_}wrLݦ2 |BlTaWy h['1q 擧17"B{͢# !fTCkv }iiQTHRuPJ_=S !s+፦X5}ի"K $?J)2I^gw^Pkr7mO(0ƯnѶύtMk>6hKGJRN7Y IUC;V˥LKK]"JJq"%_oV$wd`]XLRn rSlm`6jEEAt[xsY4#3 L+~r.[2SgtwXpN'=\Pп4KN|~tLWT~u0(Ge^wwC bbT薥>%fr@:« gK7W"\jaUaT̉%4a hm}3k<'ZX%DJ!Lע&df1&cсڍ M9&U2A?ڱ(o 5.َ} r UrlzNY冪X9c5㪪Jk󭲿I0Ûe7`Xy~dFV֖p3;kӸi0H<.'i^ٕ$u|H*TG zMZ2fWZtE7v-bvl^@ff.2O4ebx8_* {MO%DV+vXQ#hnYykN]y5mv1g4В~ޮSK5IWqМ 4nkR!W`9Az@C%~L3gN:٭LKWNQuTQ7GTFag#De/H=֠ r9R)?PK %{Q9 ? sebastianbergmann-phpunit-3123601/src/Framework/TestFailure.phpUT5_Wo6 ~_zZ5܏ڭV { P6hH$' #ر'NEH~s6 ('Ў~nz=\ZHd@L:}KIwEx Ca ~A3[-׾P b!"C*#TDpRKRvߏooٕGJX%3 s1Bnun"@12 靡6?nzܶOoѦ{LFD"\_x^_rhHQn)( מB(+abZ_dD3tkȌ^HrNK q"kp {mV;3r)yBwf_QkwY>Gq}8J2o'( zFF>]XjCj HyT䍪 *^p#?29SR?b|`BsIFO lv{a|T 1wC FG 7$ n:qZ45,Ӡ [6Gi`JY^T{ Mջ!ovkm[KX vbFqsY쿍22f`|z )SuOcMDL9im3a&epIAM*Pkv駧=avIA[ k>9HϛA޺iJ7`JO[9;X|y8iսթ-cu<Z4 ݡ&Nr;tusmZyUmL첷-/%{;y*\ n3/whU (r=-{8?u`|mHy̿cHbjt2lEhfܝ<tejN#iBLjۛoq;돦b@v(Oů趝`4 +TA[X:2xZrjʹɑ-ڠt5mυ%PK %{Q41Nq?m@ sebastianbergmann-phpunit-3123601/src/Framework/TestListener.phpUT5_o0Wn+@TMhJblvд}g~˄W@}sϦ0 by+7lϠOtY:ǻg%%.yܢ]Rpv*TOf-!6+rTPڮZ])U:N!UÚ92+Ν,G*$0t=[3l5Ēi*#@ca,<{B^ΨA6G&bB m+bpa9h+kQ\֞]QNCqЅ&C`١j連li䊇"Fw:~/婰z4K͂O7W-- * Ud:S۠09ee0v& shC@pv+:G62eK:vI'5eno-7yd\RC}sԊv#g2ˑB$7q8IcP: :1IZ%TT 9Jsikrj1/UZ{({msPK %{QT]ꙩU sebastianbergmann-phpunit-3123601/src/Framework/TestListenerDefaultImplementation.phpUT5_Oo@s!**@ $"R*ĥx(jv\+B:fgア}: E준X֜E!Tpg}f g\N`A+L ɺE"}]P78z3 ZT]@Vx]+wpI>)ĆjLzva1ͨ֨c9ɪSrгֶbS$r][Js;+A6eL^:B%fDȓܙA%2~|dwTa輵(-y_ #v+Kme:7 2OvYKqeiGX54y݀_q?xG} FrgtJ$7E%/CRV9l>rl^l8FrǠ'23 w0J?P~9T &<PK %{Q|Dߪ}> sebastianbergmann-phpunit-3123601/src/Framework/TestResult.phpUT5_=msܶ+茒;f:Ogz+h*YK|<*c#)Ymߟ] yNṙ'X?l "$ɔy(-?xw:2NHnüeO?L%46ApE!-0 ~$jiW*J#]Ś2IE}պ4 xAR ,߄EσmBBxG)bCD1R2/ q79|A` և{i!t3A=f:8ig+$+"'1^d?ɢ= [c'?&>Z,ذ?[^ia}sMh(7D'%w{l:HgB"|>"ak8E?p1qb4 Qz q>L'%p҇߮fdeS.[R#Wg%^#3`S h_0E9L0f #$.mmbB8KZxI`20h=yy$y$Tup hu!߅qRKGYccAVc$G'H>nݘDdE~?OYvVPɔ$DGs0$% Do/ `D $  -=U;V-LhieSV+,K\SY2EtU&W`l%@X%_$H 0:_roi$ 1GB eNO|>/*^y} 1!';`HX&O0ܿ'G]D銟x =-mSX78ЧWZ/{B ?oq;k`hdXt X`R]lڿ8bM{84`cPdq<윳3cZ 3sM0Fz!`7I|e)yT÷@ch#xtAuqWcMB̰IHU&)k 2#F]@{ UBD9c]}8WxP79 Ih;`;I|nfh')`8lYPL4|\Wr3cF+qkF |EC D3w/a_ѧsh|x4~&ס&%Z lwڡG1\"Y>"}:E.Am`z qn7$Ж_5ݐnW߁BvtRrC)QNILZˤp?c0y0`FNC<='rݦF&д3`붺2i$ #|A Fk  iw:KҨ/sGӮ+ʇ)' FjwLܩV#/aeM]d7&ghpk`,=`\`Gđ.Wj[c+"D[̮}x{ZbE;!?B/l6߇2=hZCF*nKӄ+%v+>ezlO btU\tScM #&ԁѲ';Ֆ ?eRΡ|,L:2!a曄P׭ajlgE?XpSȎHgjZn$ǀF#2 *TcvB«ޱǰ-yRs/@66uHo;+D߷cezךд$ IuYFڏ"OgUfN8<ҤKЁZ.]M_r;.7Wy!Lm۪U_J;c8{e! nV},hK@~ ;1@:fxldR׼bZ"(9vb庰ѫsqz\@+g'_xm}f7L" Y0mmG"R-=Az-jHL䇜Ԕ,+[O}4y=qu:qk'F:}o8UM!/<ޢ1v[DK1UgF1GcdbУ')_e\BÈRU|o"眙3'A֗r2TV/ySzL7m 3^_+6"}P<Փ#~uefva!튮rC-`zeyf A0*-B[&K" sJk(oٛ/u!YlS^]7;ʥ|#z+(ɂ&gaK3f#7^e,oq^-pV U_+:S4$VLc"g3.a"U 6RXJj3[3x?_߂@R,ٞliL50 Ψfms>zQ9Təs߉(i73IxxNjh)Tv񇿝D>k«851{4WQlWGFlM1o03d>$p5ρc}eR Ú>2A/rlQ6/iڹHִ^NQo"$*Ll(0zN#:rTxI];v(?]s֢;8r>`nZ^zrîy[X>@寳1<7 ^2W<\FJfqtL5Oٷtm#fUjm)1'os2ȯǺ)}wj;KQfN4t>o.VW7@ifAt/7쵾=XVw 8妲TlV HTLgIpj6C!{}2 x-G`оN-f[ن׌ +Ѭ9.;/[7uFwX{.ުs.xn~et%($eMLgt^[蒏Ϡ 7⿊#ۅ})Ve>XHwM< f0/- 7'= ~` ;ǭ zeFmt1->>aeYn3G7-u]~ʻ * f]9GmE-+Z#KwW7.ʿaP"hmhQKɟD;eZYcڬT'7ʋ5PAIߚNj Io3 KN{cubZ(fa ͤ }ViL7 6Mr;Y>(](.zSjgX+s {qa . {qtq~A?]Ox"= p.Ǎ6p*P[yh`}4ń`SBEBb]dh-(B$\uu:3$$ ǘ*Sw F_T(YE=d[>21{FGR!SNC_!K2)QBA)'xrRC0}%XpyavDQ_9wO 1x/ߩ ֲktu&a<F7j1Cgx*#!0C_0@ tHO#؛UZje7SY :z4JC0FfM_Ca@0[~p)~_\̸U qwS.~Xk?P3>C1GS:s< ~$T?*w%)C^=qֿd皁m6/`kZ9/Z,] 2&oM,e"lGKu f[<_Ҋ /m4qnV,}fZ} ̕ޛeE27?w\f4S<.!XqB>O}3oU~h a0hajްV[ A'X ߋZɀ0W=6R[ʀY\:GP] +,Ny]=& e^bXeᚗIbn1/_e2^ܾyYW&Ÿ0jS!3f6JR?al@/ G/o TLLhY|ey$?x1"1,bxoITOlSAMxU'&bͳd0f._w`l9{1U^,ÔP0YWaVoH 4(nvۇoO?\(§C JA|l|pD@T#[ô Fe#VRg"tEpN0]̶* |]qPO/EqZy5X[\8N*Poxtc8{Y8ͯo4 φl % GDcz9Y??C*iVME^g=:؏:,zIҟ<̲QF+<N>W~:[ْ׹wT27vMv}7~JruU 83PGe5b"cݵiL`JZX =']E "p7@8,`!%X&< K wcexȇ:\b'a?%,H%ܠLRp6a8_Vm'opX[$j#MnժKv5e*A=W< ٬A9h 1U-5:6 -QA^?O;P,< Fp{ZЃזv.y5SgxL^y--k &O.G"INhUƀfb'V P r{QȆX]/F GыMwKt XMKpČO7vU.\`r'.IZlwLj _儊;4%/TQ%!ԣ}j7<-컎(v|y<=ABO#z0C)otBdSiR;F,jRO;/yF!N !FV qaV^&"F}~S u#98kF4 /BsO )Uve1ue3ujJ6m&L3 W"Jm|D|iDƤh$F߾#LH_0Wf !}Azͽ/>'vG(׫J~葭<94nՌHju[҆ZJ糏׿~UpS>7FuQ"~,Y׸qȞbaH7d%~-6i=Re>f|yL^ h;K}O u!OML`R0Ldn`hZdLv''+@:LmC0&l+w@W x_ŚO3FB$#SPGbXNmpYӥ$r&k‡nh.sZ#B!x]EҨ 2Œ뼘Xے~m:1ԺF!$#I% Ks濜^}ӝkIP*͡ <ǰg&}ɒ.r!Xu&Jl=PG'"pq*٤H_U'QZLq<[,b4ʷl%ڊ)G4$a,(?f<2TL,6fXF UN јuDY|Cٌ1ku@iCdF=M_lw"aH *1b4iA|%pQ{ 22LOMmU1hL]:NϠ[Zu)n+a`Rӏ84愣<ՙ'G{_ϴͶm:wh=|)οO>o yW8r:/O1nͮ`:d|6aͰkOvy -J_]_쒩^"h刍|IS}ɘBSV'%*UN"x[5 (t}G[COYtkD*e);i}emosIv#vy09v|G䣳>*TVWbTގ»ut`sH-TN eqcɳǤ}aqL}jܢw ZX{8 fb[v3Tf wx*ޓ$4$x#?6;$-K[:",4WԺMSϴn[R<֥ Ċ@a'y_5 ]u_UozqL}Bo-X3rܽ y zK"գሑ5&84mT!ƊB?ϸV;0ؙ?{DziAw9!2^ї(60YW%I\]級8v!pߘE*G=zRY^?Bh΢紈LiF2:)!y^ț^n8\mE=]@'r 1@a.UftwVyInD u3)gHݐ=E9ַd΅nҚp~,}|2tM mGz#ι-ߑ5v:c2mk'$U$;\?O&Sӹh)ﮤ>U4enL|qגdxM ȯi.1Su'ۤރ=qBWj=<.Oj{`%FgڝlcgY+6QMn7L5y"F}4|COI)!~MD0(~=&`R_(`vpͻ HdCz޵j*n{7,Jv-0j[hRo#hN-DPK %{Q4ىE sebastianbergmann-phpunit-3123601/src/Framework/TestSuiteIterator.phpUT5_TO0&!HaZ iBhOUs!ٗjMt־'ߪe!,Ǝ4yhFpr&c1&‘}*0q9'= ųse,PETsrS(D8Ό-)?BUFap?/.o.=UPG hTJ0VQ'ܙJD)z'%J^WVk8ڃs 696T ZΑ̃DVؔˊ5'P4ʚRnOgʳ.]9 T%[&_(kT3F"$2Mj!U)!g.m+xx'>s3-l&fkIP~jׯ=%Yv{1{ݞbtBcT{d(TJ)6,Rm L5ūus}`'<7{'a^ ۣ5nܚU=q"P`\6 \eh%ȯKj-%^upσܹ Z.3WHh~7Sœog!5E ;qk~Y/8ܧ=n{soى7yP vw H7JFV}/PK %{Q'b/C sebastianbergmann-phpunit-3123601/src/Framework/WarningTestCase.phpUT5_Sk0_q$emkl% K^A϶, 7=)Nq\@a $-i0\]d NVJt_?s~ @Jj1p)1>zliګ&$yNJa̾/f*Zt"@%,ST +z`pc߷C{O"z# \b%Zg|B>tokΕVmX7;%RE /2=O%Mc]+!Vq:PF'QM>k  J>}΂ؐH}]з&ں3 aso% cKMuV' mks+#r)Vp``6I'Gd=8͉o.B&^x֛#!{=g;好˳t~X#ud -m;ɚRm`(EbwYgWyepv WVG-uۥqלPK %{Q- sebastianbergmann-phpunit-3123601/src/Runner/UT5_PK %{Q8̣5? sebastianbergmann-phpunit-3123601/src/Runner/BaseTestRunner.phpUT5_Vmo9ίJQY"H)\Q:zŻPt~3yi,$gc2K ~Q7fp}֬V3!O20:œ5)F0 z3).> m3Q~x`2H\jt(X͙Cqs w:eٙ3dALSX 3dTXW$s0˃ S)jV*^Ov[i4lsmRaxjz+fb520lZ? +EY0ZSdl0W(teŚ2iTH$* 26l2䘟Qx opX4Ȃ)LɿN1Pjq{|?z_0 ڣQ r7XcWwθ@{7CBpx7DߎF!G`|kQx7 PJ+b% Ya㏁$bÜYqV'@D +BS2lW=I5d Sf;/8i\LK eg(FzE!Ka{Z_SߘdHLf9 5x&B?BycqW gxyUk Gy~7O2D%xtryBeh^u[)^[ G]63Z^*/a 1) F qD,(?beʑ NnG%ɱ~W3 'si]O'fkWۣwj`ښ*h< /.ܶ:xh Me/|o ok)v1l"U\^{q(Q' GuW":6%bɐ PsI)ҷS)?u6wokt2}u)؇5YeЫڹqUlp7ڕ7S߯84vֹ|^\5뮛>AHLm%ŚaH,blt_@x($Y֬– x^&2b~u(c6+ϕPK %{Q?]מG sebastianbergmann-phpunit-3123601/src/Runner/DefaultTestResultCache.phpUT5_Xms8ίP;b:\hy\e:0-&FH2i~+Ư@nZ˳J9#/XBrɅ|8:it>6G>R4 >#% h|=cTrbZcЩH]Xmy*H>yaQ"|P02k,i( wJa9RXg,OU$$>zVs#`'N5wI0I'F,w3_kZ,_}"$YG%ep @,B=HD@*_P5SAjN;JQ8 K%BNo}FքIf_6*I6~6YJ@_T6>Ou:OkY$h?]=RQ(GJf2<LO:yk`1ԄVw^xb\UX źkSoELm (C@Iu pD&TJ D2.4< ,cfcOZF#:R|@3*>jۧsIZ 'm7 z8A,e~`8±ǽIc^vVkc5T:ZأM54Fâ\ kX/#x$"/Nm&#TMHRΒX7TX_c6ֲ2[[T;wCN 1UʅsV]vv=NCRRfU1F ԡC{7כZMu.W[7Zf"s)E ]TY-VP0t$`Rfot$1]vLqqA9fљi]@eS{nut{?: T^fC{;fM{ͮvK^*Oǟ~ny@MU;bNN,1 ti`ڧ@pjrpBN,xsH ۥl>y=Rb'X-=s>=ͥrglѴ |&B_hs45#Rs4V4cW]|0:JrqK$<ܴ5OS٭.Q3VU"#s9OɷBn8*w=mcg&C5٤􎷂eXaq/E0-$ⴰXV!؜n&4 ,yߊj* ~fb݇sF)qoIjBf{vUjX /-k60sVI9]K$1x3S¥AFW`zY}5ٶ^@aPʫϧ7ӌ=hnQ]\3k?PK %{Qm]*: sebastianbergmann-phpunit-3123601/src/Runner/Exception.phpUT5_EOK1)xnբTD՛ d;$.wwmxyfyU 'i!b.! oT!4yܼ{KPLX̤^;1-*)>3&r|`czajz. pMx#1z4\4RMBN;,3ߴ~_PK %{Q4 sebastianbergmann-phpunit-3123601/src/Runner/Filter/UT5_PK %{QċwBR sebastianbergmann-phpunit-3123601/src/Runner/Filter/ExcludeGroupFilterIterator.phpUT5_mRMk1 ϯP!ݰmIӴeJ Mz[[cꑍ,g3ʳɭ3X\|cO.Ъ:g*߯ϻN~  QoswzVn wcр _H2Ey]QmO/$#Pc,a?* {#!Ʉo GB=:,7_?mԢNGT8`*y8ƔTőyj:ƉJF$3Ыvf(,RZ=O?/zt(S6}AgȒ`+"amq雤 nl][FᡲkyO˳NF,)sD%U?Ϋy'-{OET*ٯ`sPK %{QWpQ? sebastianbergmann-phpunit-3123601/src/Runner/Filter/Factory.phpUT5_uSn0 }WpE:E`d݊ 0lE=5@t,ԑ I QiCLrx}KHIh(HmI!Y3\NUEB[#׹T)RPelI&P%5!Ɨ \J?IR9J.FnueqM .(}c ɵ(IveH4ڴ[![wsKmgjx6䒜ױ ]!E-jҼم"цfl swߝm0|74] ?=wx &C xz^c@;oѲL0ыP8'9q1ʧub -eR ҉62M[m.m-D(OaoЗD 2ؑR\Be6,Sz0s>kRTsAnm7.,6oÃFe]”~CamQ$Pmٗ7ızCa?'{N.vbIMPK %{QauAR sebastianbergmann-phpunit-3123601/src/Runner/Filter/IncludeGroupFilterIterator.phpUT5_mRMk1 ϯ!ݰMIӤ%iJ Mz[[cꑍ,g;ʳɭ3X\~cO.ЪO:g*߯/Nq  Qq3kh=+h@$ ᲼ծ6W]Б`1Ky=dB 7#՞mԢNGT8`*y8ƔTőyj;ƉJF$3vf(,RZ=O?/zt(S6}AgȒ`"amq]J`k G}u;eJ*te]p2bO).#-!° "8 ]#-PdFCt/?PK %{Q͕ J sebastianbergmann-phpunit-3123601/src/Runner/Filter/NameFilterIterator.phpUT5_WmsFί&8H.:野0Oq;7N t߻Inwy}qrc DKi==֏1ktpws`M˧/_206g-NҜ r2!DktPb|<}.# z0M(~|6P(:PL#2#ц8@Fk ϫv`BiX2>7L&F\i(A>݆`!ZN%Bt/yQD=]J2_FCoWc eg I>X"vD* 12%(U Z,rET$KD.PT L$\?B,!$w4hM,4 _ozR! &dGnK`9-H4utdz.w06%XLJxg`<"AO[[&Ͽsv,) K(l[;9J4MQ*ԙV4fcSU;E&-a޼CuY@=fo1#Abm/m@L}Nׅ|slwR3ͽw^,)VۧƬ40 nG)^g(`Ou2evuޟ*NL1H=mBW)?Jfٴ[3֙s~Ϛ]Sr*R]Pk(7NS\N&@Sa$igց7ifRf]p|fQJ~gM=01oZM7HEiƐjvGiUGwj.`}M-=%٠Y't%iNa>z"S<1fW[N^K2y ^HP? ~+%jZЈ`)pR (q.w8]v~PK %{Q~FwG sebastianbergmann-phpunit-3123601/src/Runner/Hook/AfterLastTestHook.phpUT5_UOMK1W̱-bo*[oB&IHf[ߝz0$oޛ.<&eId+Ljj\6-ehC;$X-VLr1Y2 ȝtfV;yZ34#XVD0/gNu`yAp]`b:fk4Y H.V4Px}/Ϗ ]ɶcpHFKAdROKҢx0ϔĘ]M;y;c`e_ߌd @N.+RF86`L(-`_PK %{QLX H sebastianbergmann-phpunit-3123601/src/Runner/Hook/AfterTestErrorHook.phpUT5_UNB1}YB$n`b ܙNi6)ݴ;Mm&Cr}9X6/|@;w|!fhFƭ.5D0/gNͩ)f!}2hA*\̝fi)mq{y~\uԑ[ͰN=V2B^b "zHwXd'1^WS3æ uzGBIP8#Wk,Ӷ0gA"xw<"4Cׁ h XБCjMH | C؎pԽ sebastianbergmann-phpunit-3123601/src/Runner/Hook/TestHook.phpUT5_5O]KC1 }6dpM]iisێr>rN'pdflCta33y.q 3aVl֛7a)liE)zej nΞǘA=A76cW@qؒ(]=*G+4|O:S #p>JFV_ڼ![AZ$A5jGE1~}++c~PK %{Q>P,I sebastianbergmann-phpunit-3123601/src/Runner/Hook/TestListenerAdapter.phpUT5_͗QO0)nRRJL BI.Ďl]5wvSHJ҉AФ~g}lCz\ǟ~Kڀ}C-z4j6^`yF<1=0_bx{-_K˚䋰6ɚ$?hQImOx|*2I728r#sF2X\_T^9QIqw6 >9"Ϙ $K>pD;Nf:T2RwQ wdSp$e'IB=kwGJ Ls?ȉc'!Iv^t #7DK[-K \.Wk2yfiф $1e;)iߵ~[~7ܜY&ܼ:>gSpPK %{Q̜U= sebastianbergmann-phpunit-3123601/src/Runner/PhptTestCase.phpUT5_܋ ff2i^73dg #u>,|n t`6 l_KIYeA癣OƖ 7 pH(k)yiL$1EI{s#`^>#u8tzATL1ب.WpE:G$ Uň$1XNY/ >Y&k }37z5ny^ f+jI!~rd ~'sGLŢ %j>.|\n4COSiE,2&d;hՀtbf(qRQP$(m Bж ^쬶ՃiNm w#!F7(\MW-sUw>AIj| lWs <ơA=+R{ H7lU~c쪧PaYX XkFVFu]d2"sbWYN;u-X,֤SK[9çi%'%Ğ #}o`D`Y;nv񲞗5>v!"V#Ǘ#^iQ UKӢwS#nKN}M:.q<,AC`Beh|5~݁t Gd.GWMOGmQht᠘papq=uN XlBa&TF&cpe΃(5]܃42Xܟws41ZB=i8tZw/|8(&d6b9g+|a6vنng-#Shۧ TE0+f%BGGBt\8(X7PIuO>tzЩK5+c|ˋ%IG|?d?y\D4T`vczN|xY=rw aY_,4Q)4*8϶Ul{ŝ1Jj~ək8З[ д_l2Zϐ &V"X9,uubbͷ W+<њm8ǂ$` /~P\& &_ylYl^Z`"GYe- N#%>V@`gv6z?K|jifj)`_wg~Of&@ՀO]F\& (M*B벒3Ba\vg :?1"i򕶀'x g( fѯ8gu߱fUQY0-H0Ϊ%m$H\`{@)w3 v%[4鰙PC@eh24K,%EF@gC8]-.V]  JgxluHV<&R_R zoFuxxGv$= {09#'2rB=XUуyE4&|)"L&Y6A*+Dе)*ny[ܹZCiVva5%ML7R>8Cڐ ?F֗}H8u / wTZax9:2֫&'Ɩs㰃iҥ&nCNt+!.`G*!q֠PuJmR4fM HII_ՕGwّ#ߡ#&x=XNpq+ j: 46ĉ3xՅ#2l=.4fP톥yxީG4;=2 W)#'詾F.qjAJ-7eh6;5)a(XJ;▥q@b-<${+A(Yr#`pxڻN9Pcr4Ұ;SlIy2!qV:RHA[ǝ,85w)D7-eidfuz1_#rx;ol4oGWbd`:98ٳ] Og`NFg 0t;2LFy@̯ojxڄ ^0Ν?U(J!~_^rM^ڸ}OV+hK8_GlD(&n D\#7\#PU5 N,v?.ѵ-2HНfqx558&lmn`E'Z7& 6Nܥ\ o[f%I=A۩ }ѩ[Z 87UJEUo14»^H,K;jU50= Wՠ$аx\pZlw2кv@fܼ_OOG7+ RC'8ZZTue:>G7e30gϟ̐4x޷ V@ڛ&ed,J%}}.尟VJu˘rpZx*oq,&ȤI/./m̹,X>2ZOe3 n/Gޠ{]Dt@Zyp5!R9q ~IPI1P=}a#gN9T[ ||vX#m&):ZܙOσ$j0ҠX<BwOx:-ee"vL3Pxɼ>q B`]IF?`U"yr-:}5 FC,?Ї;q"gŭKٞ6Vk-X ^v_`rvNO.zF{W]YW!Բ<zT'*k[s`@:gA٣0/~![h8:\][&/_%),oȏ0q_2 (x)&dt~huߴ LR͙0<¾#gb\0c *cR©dp<+\* v,ʷZL rtƬPyd~b8Εή{f Ea1{aפ̍*4G ˺ے,C3̢BJZT\HZtdA*K~6)bY0~wtB,"v V*aHkT7U "r3`IIs)YNqE6D0wۆ,yISZpP jtCvDZhlH1-\9itaUR\ ܩ}/,44|Ε gۅwϱ3{NteZu`D򌷷g9jCCi@5"P`E{lE4]&+mwgkTTfnCfZ2 |_^σ(Z2lʞtAOx>_|cr5_D(+ut_F#a}^N/: |.O|}D#T1%)k!f E:"/&jκtZVd}:ɬ*gSq!,^8POe97"AM X:"IGznلZYq5A=蟺fIG0Hr9wK>i%'|?=9 ÙaT[ZBuYܴ]-QV&yvm )]V]hPK %{QqNp%H sebastianbergmann-phpunit-3123601/src/Runner/StandardTestSuiteLoader.phpUT5_Xo6~_q+Xx{M.`.h7-,"2%T]c;Jrva/_ww4J!@?=cnS4_G׃.1B#Th IS^xp)BWk3 { 6B8?IZ" BKU走2QcHc4]qv]9t66@ 9ef1rdG:(@F=(F +͔B}=dyN&OG4vFk߬wS"ݹh\O.\7RYJ9c_X5a_n]K?mh~KKT'kIGCq.P%6i+#Ȥ-0\kT@cih8<t1pǔ3\jN4[Rb)5DWtjg12<SGW0a΍[ss<hל-41^R5j4;")R) uj^hTSD\WW~ycrWնwT[4w4aˡM\  B(DyoTNX_^Q_sBk]|qFGh)^qT79$ Zx jnnAFGЀ3ͳxXuH@M)Ivc2n3TbWpRѶe_Xrо?vAw8{vh ZzxGb8d|KZ3ݪ`2jlI%Qc\iȮƦ;xgYEscItݿ&2[\ҳKh˫ߑWTGGisqß$b_ 2TnMf]2H/h"{BrLя%rPK %{QY)n@ sebastianbergmann-phpunit-3123601/src/Runner/TestResultCache.phpUT5_QKK1ﯘC(JEADl 2vIHf[ߝV033g`8L4Βȫl#ɴ:>-gh?b <>>{#=(7c3՘UYT/Kߘ@ZwLīVdž|VA߄ԡpLww=X NZ`%I YذQ9ɐ Y*+:{OiZiጽP:Жr.% ʳv0Sy`:ٱl!б?*@%ey;FR^~ƛ2BPȯ`$ {ڑ(ցEG0؃R%wtpN E {`㿙#o{Q}PK %{Q+$I8@ sebastianbergmann-phpunit-3123601/src/Runner/TestSuiteLoader.phpUT5_mQMkB1_k~҂J>IH6)ݤBk. 3;ɝW$6FE 7:y *N6\jbB>la$`l@YpH!h?WJ0Aж.ig 5n<<#%"y:J8jRѥ I̩G^0v^u0>l 6zfD%\Rr|V[ 0Ĥ !*8!Q~JwLf2CQ?jޞbwі{%Ί?ȗBۿ%:Kc>/PK %{QKM c3@ sebastianbergmann-phpunit-3123601/src/Runner/TestSuiteSorter.phpUT5_kS8;BLQK2އ0@M * 7uTʱ‘ nI~Nf%`[V?s8v6D0;>o[^nd @q)qbxNNzݫ19$a߉d\;9x[R`yByRr.ɗ^(kZhʝѸ;MzPAvZOaOKw8>ik˳޸H~y &߬|\|h Vk<4JǑ wJ罓yq;SOgs >`Zw-4 eIgAe#k0Cg1.*T#/زԌO׷L@҅Hz3HJm< kQIh+t#yI*@cϗ "`M}o | u e4z2]O2சm-F[tܦX30N 0> +{85m#B,= "<ʁ#ؒFG$dfe"EB7@b"I% IrmU#*Mt9Dv8*x8CI,tȽN azt rlh?͜kC>E"Ne\(0-2<@%=>6" v"#z^T %ibmS'ފ:E.#;ksb j :&.!0_o.}DfF,&[JEjVQ],"הS>Snj^k=ƒyLs#e8mh?OcJ "M oo{M-#{]ơd)׎\H(P^Â^.FnhD 3^J9@eT"7S.Jcar;WzeHy^m0 %@1@0ZeRBHxEfs=h ]&$ҔTiNF-,R0S%ihjBUXi]Ben20$h$lL⎷ó&_~lۇېLJ(=gidG`FES:e¦ImC1v[ >`QlJͥY@u0roU8)UNi$Ui:\EᾰfDbP?á2[3N.\̷% P׬J*^#ϛ%^ܼ=(Di>pZW1ҿ'䠌Ek ƂyМwodNԉl06‘Љi;ZfTp,;%>NAy&Бh 3NBmɒNgdd $n@F̣͠66X2)6|Nc0'ɹtbu&Wr][O?CZYI=Ge(L!t7ӠJ/ pBu:5^5Pbn6R'E;Ff?z@TWԁPY Ę՜?#6FɖpTTp8t/x%ɫzkTYP;\XTRm/33eb|M[ Ŋ49:ӱMlHa'o  `UȫF.IW^h6k{e-~v@owK8IKv4m@VW+ňcmd&jm*=?iմLr,b9Q#{9׉=V"fэa,Q(#]?sQr3ftnOh/JŹk%[iu o,aӁ |E ?%LFvK&%HƐ,#|D\ZR1AKs4Cř̀ "8۷™[ }ӰIbUv|f)٬~ɠH@*2iH 〈"!!#&Ddn,] aS|RdJϤ"bQ9%XP!$T '=;>`* $A ]q|:QzI(q,znvtWĠh#Ԁ۠Ht'7 bss}9 /9}-^g}ݕ >@Wٮ+*J|RSp;vΒg1ï 3md)Y Hq7[[$ˈu ZOc+&|adk7Mx X0~JIYj1^ä)m8ԁ6U(`6NfLΉЩ ~HPFs=Q,[IE0aUYߒ_%MaScb>y T-Hy҃[!;)A)n,J,e;m[ۍMeu[?Rs nL\}uq|8_4 .ʈD>~AxyID*֮j}7PK %{QIE8 sebastianbergmann-phpunit-3123601/src/Runner/Version.phpUT5_Tmk0_q8`0+:$۾(98a؎%Ȗy;"- ( ]mLhvț8Þ= h/2''kF,pɵ\T5usvKJM)W`R2b*5e PjJ(\C!mevwuqoCUL lXX&` [aR!:/U(FzHF]p:RJT))OKa@ Psq"$'Z^ +>V{Ć+b"3(F\2GS*+!R)v3K*L )ed "vqў]"WcG^M-(ch 9ez2s#p%5P[@C e ÏyyNb9F颮HQ  uj6`s>Kv}88z?~ufg.qĺ[R|j~ {D&W/R5V-0;rwjBir?/r}B\s]JQ0v;{_=$qI1۱K`-'PK %{Q- sebastianbergmann-phpunit-3123601/src/TextUI/UT5_PK %{Q!~8 sebastianbergmann-phpunit-3123601/src/TextUI/Command.phpUT5_=s6@z*cM݌RuSg,]"dH}|qiŃH%6bwZ|f!>]^Bi:{t|WOWjd7^xI޼z6 g0ň荗fir|~F9"P V,0$xxO`AF8Y{YGdR =;?;>yvtȽ?}1W;/!^xߡ[n$ƞke)w>St@,0:,WGXDj JFqP街ta fI^H]r0Nҩ68_G+bx-/BWs1֡MU'3pRl% Ā!& qT1XkzAE`MabK{0{[tiXa|N||->1 ځW4ܘ{ѱϼAm'FXpUb=b&qm)6\G8%rAM,wdG,$DCч 8Mgx e&4˓ #z/ȌƇI g'\x>5zP?Yeo9 <['np1GrAgh>\ןc@D|UjBK20;6*API-jI6pJ&5/ OB[[ց}GH\s19{ aMʲބiy^Zt{s)yrV3+[EnLBQ2P[iw{XGQ6+E'3Jr}vBjXqD!͈@x9x "GrY% EQAAr)?$AVd c3edfd(ԧR T9!x\ꉌI(]iT29w|=hCtYsGa>?0棃#! Έ1f8"3tHn_A+*a'Z8r F =1o݁eg0uCNC ē8+ĐXnw kjR?YLVw/s&5Y:57N5V'V j/*s_w_cbVYx)% p~ dɓ81__\^P=s-`MUl;Vbm)D`RXߒi{[1]ȷOqzUn3y^G C,%ڼEveM4M4ʹ20S6*\TW*W>s *VO[ ;h=NEtgYp $_9`Y Hz7 `9E( [EU_'jgr$mqk+w匄$ddP<^sGqx7^q4˳WM`0cDb3\A2˳G-j`;0wyp٭d+,݅KEhkGyX2QS7 ~.]]vE[fkgȵo::2Ы$@|a|YU-2̳qAɯ 8];r!y^rD I6@@^]&©Iy PZtDI~ 'n"֎BT/8/^oV_f&B/]9Ly 1l;L<6 K"J[jo4ח@wJzKef$p~S#jzjF*M+eCvgwewƴ;s;o;3kG*E ϰ18Iz33{b;rװ*/M'wTNMy2r2֋+8Rp:ho[6X6Hj5futd,-- wՋSn;ǐ}I8QvK3}tʋnizs/9czZO!2GKJ1u)hE/s5eq^Áz 9C$5Ջi:[EQoZwɐRjK"#5شq-(87eշ鼀/* m~`{3L&͌Vwptkݘ zuf *F8Cc2ݧ9qkHBoAІ$^{+q o8%o*1)yi_" zH|DL*ذ[x9Fc9|8](?;f ԱtY..*Z980I&1D`^_qYcPV]:'shqUG1h[ ߗ1n|K(V૳Au#6~"%=hNԗ*:3^@MC3>ߓ 83Qbm3Q.xP.?^PmӶk\uecˆzIM|ǣ6{[+r9%ߟӁs£ԃi2y.cqUm !L^vjkU?WEǙْPnG9#56S)Z Yk8zZ/iKR$ܭEI斖`QTƹVLv c\籵b)rF bJl. %4ücIK+:eEFuBQ|宸y Vj/R߭YV$s.QӂF1i\mfՕkpVy[11qL5Y=[W~JVDwh-RK͚ 8蠰lHd6?Ij3co-:EX|p_DR_+fl'kiv1~%*7)pG*Ưqy:b;.Ro}-\kfjkRi Wqz]-K )3FJkX =8 ?,jfd湫 `<Lϕ,pXӒOՈ*ͦ$s=r'êVk.w3~ 7:pVdbI!nt/JJi[oߪQVun;0%[2eս}leOLl̎ڏr(Կ'ﭼ\m"-nzq) | 5LG%jtR!yV B,?c2ŀ朕tZu(R_+/MF< zl{@ٞtd/fK~-8h~I9!Ew^Gc:$C3y'T>ȀZzK!x6{I|!Io /gX;Seg܃_qL eͰvٚʻ҈$y4y!I_ْ {[?4~ŏx? ZR>Z7-O @\\<~yrzESQ bZ=5r;5jv}zv9RD^ĽIKk!Κٵm%ReWl_,N_5G?x}'/KԎ rr9R4! kM/(6|ŁO_4\PK %{Q-: sebastianbergmann-phpunit-3123601/src/TextUI/Exception.phpUT5_EOK1)xnբT, Mf?$.wwmxyfu"G}t7I֔Aޠ"`9[6XĤ\v^|i@G: hHK*bBJ#a7콭eV J`(7)[Fq-!O%`NYLAv)wY!9Ts\)|Y|%RNE# \RCCޒ@Kkʐ]Qv=.OC$XWڿi]PK %{Q5 05 sebastianbergmann-phpunit-3123601/src/TextUI/Help.phpUT5_Z_o8ϧlvSE.ZeniQGR}M͐,˒%WΏ3Ό8|L@Pź(;L>bٓ=򄌦\ ߄*C|zK! M7+6p?f4PgN( !;sHE̔I* dT<BX`}!X&ٻOwF@tm|4br|Rxuǀ@o, %ٯC w`2 bjyRX9$gCX%t3+WKUpm'Qe1g,$AK$X?əׇ tSJHE~$$sgȩ ]ލvDHR%²˽ K%FZms(L/لm ڠ$0ѪU,Rmp> eU`_mpXǥ*Xlᐿ]ۊHCQ$Z%ӂS.l415zl5"6k˨Kx;h _@)c2]eQU@j+?VxtY%}yn郡 ^`MJ-H| XhJ Jq9ㄎ!"L 4  9v`J &73$!967fǛ 2ut'u 8CeX]3<|f$ع'8N8X̼r<,(yFQ&pqsgrNdM'3t 9PV' "HZG6PnnUPv\K5iL* jT$i=&B,Ǿ0ۋ?^]\Y5Nm15uctNj %4*Yy<>?vcLdFS1K_wr1!@|I}.eh 3ؔ^}$mRU-jgМ:"D$xseT&\ GHQV3Z~nH1j OStӍ!9C ]? RTs c'(vЛOqmKblN[HbuƮjlcl<ԣԙ TP,fݕU\0<.oXalbwm^n ^(l~$Zmcr`?`3zrјsDYdTX.ilkmƁ۾`<_Fq-o"=Z !~Pكo.=lIcYzXx3a{ͬ AKmT ؉\L3><[2 "MsnŨ͜p mJ ޣ0W2rQ{6e7`& /mИx[U a|@rBXژMء[^ 9pƆl;x"+hx@wó~vmW*`qtL&5\uD 9a)7j٭v%[J2 EȔGSm\@:q )qTk1 Ͳ%X?Ic^1Qi`/QsZ)v^ڵ`@29n6ؓwc6'&Nop1rr6{WR><8)_F54@U W\(Fj&&GG;p=,:sorN\͔5Dls^qAcC}Rɜ$7`,7F"WZWA[+8 *> ;531. iqѕ|3r[\)y P#m;"U>n;5j}lAY:gnEda}yj>"!Qg϶"3G=ˋETj[-;+F}~nm9KW@N 5?n) Q1l@6,MW9kETh 1I+hӒ&[Q-|C_GG6ALw/WI7G,Wm sܡ2J w?u+y^IY_K?v݅@aG1R`IQQ6rNS PUlns¹I7iF?7ܕ S{a wHn`Ȣ>ݶ+\W K45/o|~ژcPK %{Qw[c :> sebastianbergmann-phpunit-3123601/src/TextUI/ResultPrinter.phpUT5_koFڰJ*RUj԰Knz cE,"ԒKZ]o璢d_șy,Ï*F>B̈x]>z{p@U2 1f /niz}4% ̓S3akL){?B@;s1Za(~d*A( 0>]l=;ݴ=<F(iIL i\#f47)UVqb6 YV-`M әOC"*t $(B: >pBzO:šE (_z l(rO|iA$(f: )P-$|w:+N) 6&t6z bMԛvl 0nġ44ogIvq 7o/(AbN6|9b?j1tO,qw=`02MS@Odc/ 5-r5|&PQ6k&&kZPDD"U]// h|&B|5O x*x K$bl(XQ10j/<8J ,dWU%6e[xY)3twn]H%HMԌiDQ1dfK2 Om`Y t_264,{8f ?Es K*5UCá[wڭ,]΋zh "؀~$j>~ `!>曺G1A6vo@;wǞ*qAŜ>(9!p$nu3/_,"m;?5gxͮ% \&Jk*W1Y4W,L&GZ!k,iG,qSKgDcAU@؂֋əN>tK2U݉Х(+M$Q!'553I -@m`7X)D-,\Pщ$.X~ z)a"1ګ|L*D W6žꬥAa=;@pv _a3pV#oXt,Bd[anL!j%p/a.v :&Ox7+B?]B0) = # hṢ ʘË%n\MP ?2LMJ =bK9}zx FAY->%P6sOXUؑN] S${Q**iuw*uPUQ gC IFm">'jCS46S.hZoG{e]`cmnڳqŝw szTo$X > ḑ+\%F kdwִTW+4[sX&KΫvW)OPphBs*$_L?rKȺZԢˊ/_խs׭PsLD]4PW8̐$2[rv]92<c.)¾qkMUIRF[E[eت9=9Sֶz4[hz|Ck|D=Gl0SWBK)Guhpz$z4TmNa`whh\2b{+! X9/_Z6uYn[Q2<֦>Ptp"]a' eưzpi"ǭ.Š%WxM~v_"}DM3rE[RM^bA?-h Jl J<)РGJQ62n3<3I^##Vfl&,L, 5ґl,l 5ґYxQra$ ((O5:r+,9tL* Nxa0448n$ZS#i8^ (&ח) %á9j|5SjXa"ާZ9dr"՞#x⽱JSVb9OSσfc_EB\5~|oOEPs+r{{PGl[Ieف,f-כv4[հkjU^YyWl>V-QuxGf8 l\WVUfa_-%%nSыO9@U癝#*$H]UL:]-Eci,F|BviFjgrss}3=8](tR߉t>'. T-߻ȵY55"GFcoy9=HڂG*> ׊#F]E.$OW{Qi)7߽fEV˜ʽ?6g~Ͳ4d̖I^w-H+-PY6̫N~{hN2;8jގwC,Δ N\ Vy<)}TA=G lkS "xT#ֵ \4u˼@o^pldff+ (q[v5J3*mm=q+ZОp[. S 4^ 9sϔP0#DzPVMb"'7?GkADW7,0׀x͚ {n A8z1#w<9/seNOEjV .|5]G! '~f# b>`!C<#$-HO%G6r I#J6IVYCҷ  RaP9R'xȳZߒA aݜFIc fؓ0 uBBb&1]4ŋCN& NoGdyz #f@] j= L-N* JG4{4J6<7aL:n;{!fN gbY & 'D>lLY{<0OӢWڒ'dTr(ڛ9>c> uKcSN2Lu ǓxBF| eq.(= XG5R,>Gcm0Ss:,0%tX ,xD{A6_ӆr4V -u7QA^Ge9.Oi}mQ .ߞ F: U=98r3pko#PZϽ4tvSɤĤY'fFR$(R~@owVTdp]a>Zn2i(qfЕfRDvWzYHуX+㝈TL*(t{'ذ':P7c>NI)ѥ+٫2lcrAzR16+~W}Hg<5P^Uscfe gbHU8pi@듙kAڄ :J ]S3$E/Ҭ%&&/R2-YHU̒1\"]]&zf5(}`}D:N5}a'}ך~?1.*T jM{9ZtN]N i O/oN Y-AEGw8Z1;KDx~',sBދUc}ֻ`EjɁY RYlb89 w V&I>t1YGcA29'E*SBOTyJz AcE"zh%<Tb&&"9$YP,I<7@I>p9:"C}^gY ^7Dёi{O/%Mshebf#:&k(hЯQ$a}+,#=$EVIBuܔf63j2Z2 eӷkҵ ]QPRr‹?ꅜMThonmeΐmcւvQؾΤ|(hfE}7{Eu sMЫعD$v@[kB~$Qs$^6_aO,O%ӽ'eUtVa_L4QJ—9},@ZDzn78 aW6AH^&aa2V4\d"SY=%/s vB'($3))ˣz'@muSiV( i/[W笷u9je 툃#"~s^&O,^m#+[V^±KѴx{Rb&P,wԦ(3;U& /8Ud-:G4^IF*6w7YXqA^@ļ6'K3NA:,aw]fPЅ< lZE134؞DGZ&c/ن=ōv_ջŊ_--0& c} NhSi)$] /'yNiENA"i9(zX" ctˋ;SQӨ3Lk~Aԡ#Mc4`F 0a.}Κm>OWIH4C&vCK:XX%)S\N䶷S4 igTs+OI?CbEؐiiFZCC:mc 2_fу* jڥٖܸԫ%yS 9ڎRn[j\ߘC =-BO2Mޟr81wSDCb)g.J 5h+Cc|8:L{~9A! M3;=;*rC:J,If Twʏ>=j`6Ѽ:]4c^GfCHd%s-?)7L?SKc9ڝCTm[5 T3hӐZ`kch!OtUkm3NctSa Po6\tD Re_D(@f4%>pv vVӤ;tcfL&«4$~+g+0!JI~PuTң"u7t%2TB J?.jq6r5zBU@}.Svl@xg U&:,/,kځ\q4+,%2eJC{altE)x~Ig|!`ngh0&7! !NWlҜ);dY0?kq@)۔j vUtX.bg*,=oiDx#'R R)i6v"Q6AcnBr*ɭ& gou 9|$[W:,W?[*?:{#5?o SZBl|/Fߠ -!=ަ2=[[=WϒG[Ħ6*(lM@]45ꕲQAFzę1=+=܎~""4t>x?\'!Tb܃cEb5@@T&S}Φ $~ˀ}5(z3571vo ktYrUf?K/uzN79r1 nLoI-Y{ 8~dKpnޮm~Z{ Sfbw+{{JED$f ;sÍ2ό'1d1.Y"K#zvdr%ݥQHT6(H Z!/gTEJh̗ N+?LkjAlWQ0@F t:^}gC6b .Z~A7ilbl" N3ayK.1rLC ֢t&kW}@.h ΔqnEl6l^ q(UFęH?(kN庯Yj&M\nl;Pwb8׾ ! \ (oHoTDvb;0 yvF@TAsҥnŬcv;RK!ܬ E)lzH ?5K  %j`Ԩ)]PvM OjL e >l(~*Q\ZawXyM' 䧎ܓrh"vD"%Kp;e]42:K}sΨ e)t/l;%  ]jhf`])pj JY嘇SW_:ua]JBHf!m5`TjYĠI6eP "I&i2Ũ |vk={ޞ=ϟUihcFxat`2IRñ^qMis*B[[ n=y܎>-n [Bz&{ `,bvuGR>|:Ip6f")?I`[$[e24D9$ <nGv'[u1kLX)4?&kt&}X(< tnQqؐab>Q `G/#*Ewt^'k?_H ˮ< ެ=K~ S$+-H$jTS춝b!f2G l>w#4y=MT4H$D 0໎"ydgAQI`hϮH#IVڰ,蠮V~2[isդC"-C]ALm5yg -E]K=R 5uTHW=5&ܧG:(x20 u4}fcl@I' s߸l|NK/G1>l_VqlN,:TYCn?a f(/6woެzS,m @PC@lGRu-P;u* :Pc:L}l[6ݢ ƪڄkj[ SM:B^]͡h)(rD]P=y-%TK~Mec$i s%c/+f% ߞJ[𭞥fؐUPK~ i 0;Yfpm^zk rߙliIn᧣߇1VŸ1ِκ zݿ< <ԂocmXBsBL gwZ1ai؊/¬֬4|«W;J3^zd⨧}c #v4~3^ߩ@ns lZq }Y]Kভ}l^w Y@;@"m@zx-G0v~5C :0R<::CmxAVMSɕ6UpSRmMay?lƫyp+smȭw1Vf-}:şO8~oLqsT WNEv,EW0slW]tQtr9-Af~@|r;@^[McsNR**֗Ź@dfbGWeڹY9hs WsاS BLF6-)0ڜ)V~vAk.%D)*F(s!*v] ˖+R|:4\Gy6NT)1ϞxyNڠs4KT[շAA%Ѕ- ćX_K z31x^kp GȂd.XUj}8jyj2B߅>pmj}SL }, "7S+ #bQfru_9AH,2(| k[AƉIPQB|&=|AU,t٘4w9So3T~{iѧo`!4 =be-KW}%+,n+go26#Ix?PK %{Q+ sebastianbergmann-phpunit-3123601/src/Util/UT5_PK %{Q6 sebastianbergmann-phpunit-3123601/src/Util/Annotation/UT5_PK %{Q%frKB sebastianbergmann-phpunit-3123601/src/Util/Annotation/DocBlock.phpUT5_k2?K'&G{=r@K?! ?>^hAi ƞ9d@^^H>f!dNs$]REؿY $g4L`╗Q zpΧlܗyrETtKǙL7){?]<69E{ڃ{b2ܳ0RF^/8yk/Nh L1 [y?uswft n·4IqUՋC?QIT`$4 Aޅ?7I9h2ldMgŸy4D &!iD䖬|?70)اM2,86rjj~:8kXQDh >2z{/8?}$8ZP,|~}Ŗ/FHF{aJe ,Rb[d336 tR' M`2ӛ#٧(~_'φg/>9"Vt.#Yo֚t.\hi[ _[*#w[L~K?1MG.ǰrI9qăhMc/75~xgo;w[=wOv KiJSaƀoDt|'K؝_]e=Ll=a^ՠ(_}}ς6 =nbڃpػ`B[FJ|=G'c 0rh9y)?|,6!O!{܄)aKk XvɯϜg܍jGa3q޽b]erʶa+> 8Ή䜃!w^LЍ!ͬlyZ0L((W.űho15z7W7(f汣l4QsM vr#\ <|v,ruf>fc~2\]\Vh=L.z_1F1Xl}X 2WΤ43j izN?"y}cOӞIfĎ5IkF{D0@Zփ"/~HwZ/0 v B?ƾHKL'm1uDrNQr57mX8x.k;R$/a?ɕM,w~g 4z9-NͱbhV \R)r ^%JBӂ(rO!aYFŒ`b}LA4&i5B<)f #*U:L;벇5ۯZ=6\m'@6ΆHy!40Ɯ wa zq'Tl;Čy\=8R' >P#9|ҠKBhCf-.ER#/jق)[ԠCR@&H;S3}8O?3JEFG USi4F&O%ն!PE舅4// |.BhДYq^g >+(kZRK* WPfjq1qck/]^Xm2XPMh'"L3aYL}L# 袲|qLk[m7v'7~rö(TCibm (`tz%pQi8+/-mw- >>)re`# -5Kj?be Kb0 莲UPGK:D]OQW\4q{0얥o_YLHۺ"7tN%6e~3> veC\ƏUdXA*fd$-0VU /KdR me4eBcE^)i&F]cp=EjM~JWx#?X,-kŀK,tt?]nYjjӏb~lh~/W/)˄$n0"y4_^Dzgz[Il"ԓ,^g &肑Οg}v~(j9]M,fe mA5I•IFtI]{eV@H˸Pbu!ڴ-ߓ̼_*¾:ˆeM-->8e䨨3]R9mA>5My !4Ke633"$wu١(gOX,1Wh+>i3˺;JFJ;tC&Xwr*LчZϴ",R=FH7Z4ȏ ANp'g9c-wjy nTyJ0EDvNxN}/rKMV -'Z(`"FJǖU~Ce}Gɸls 5h`iPJsY%}Jd{S)w0ziN*ְ/xFm3h?_-4MHYsܵudn3Ѭso"" 9]@6  u^S+1KQ)t4VC *ҠYeޒ)'i/$Hb<›0f(M悮+7A)2ʌ:Q26rȈ6'?+ ^#lxؒZ\vX991 &C5#,/f h/!Chpb>]S (&'[邑vi^n.O6_AoYq52$K5pbͿS%56 (ZL5[RrwBBvtN-ErxK^nI+R+HVf&E:bnJq@"qtHsFhl,mtw-o[ߵFgͿy&Mqv ɧNЛ{neXk= FAtOc[O1k!ꊚ1O\'[z^Zےzzyϸ yIoEE>KDQe U'E uR)tZzS/z+g=kquM`KJ&wA .dM̱ӈ,.m4?ζ~<\<T>u\Oj7胷ZoNϳkL.Ͼv5=ކΙ{|o؉Sa&4L6{WtET*R,]8ԞugŠF۹g6:au^ߘz(4ᇪzWd|=j:ۃɞ['RtftDyUaH%:&^("]ֈ*&   Dw:擾Tru_- 5tEHhmoщbvd*(1QJl_5r"m,c[{Ibmfnq 'Nib7Vm [&YsL_4ԶS] +įOHaN<{3mpjbR©m#m@*gQ$ӬPb`2Dpe3"]dd{vq&MؙX3 s!酘4W (D˺IB1U<><~25ryyp̪ޑBB!HEe`c\$2r&:oKVI2dp" QP`=4$KfRRFL՘D6dJ<3u!HR8͔n$ \"V&︧:HLx-<8 o dF?e9> 4J ?胕̹zOɕt/~@ҞXEz-v lSQ97~HUb&VZCCY:V@ǥU*v > ԥu! V)Ptݚ- ˨.t-%:OTO&R~vک:jsJ77Wq ^F] d ,$m Mʦݲ\o98xk[]_ʋ\ ;'diZ%}`?+WUDvӢ\6;PK %{Qvyw8 sebastianbergmann-phpunit-3123601/src/Util/Blacklist.phpUT5_Xo6Dn۾&#CD\(R );n}wӶhI$>#Y&$byjڙ$̜?oz .! .wB%jAn>|xaL؜˩$WL?TJrfQ y>(M쒑E* Uai u$׌%CP;(>ici,`Uzk,3|-?VbڀśuJ>M#ˇjP"ĝoB]P+d7ZPM!M>hZ` v !XVɒ RdK0 Պi/1η cvrŤl#担{k%;m [=%J[Ȩ⣍$֝hqOgmjNR˂YV G6s̈<>XnY*iٓ w;}vB&(LTg+ {|A:VSv6eq"ԒMeFI:&X^B 9'w\ /ON2/ȯG:WkXA]F#a,#Z `+?α\+uU1<ĞD%1˰9}>`U-x^`Iu;_~y)q9>Qbt` ŀh[Cp7i<Z^q7fLxd(TsK : Bt##BѸ hs(?߅A>R=VY&(ڵS]DPΫ3.L%A^;%\-z.u%R"GN+q7!YMWݫ]$"Nm֧.*hCQ6P}[jby]t>u-Auی8kYվ.ٚ ?ʚqĕ3 .Z%tAMl)ktu<0{U5վ^$3 .8O+O[3s \~lLԔ2=h;WJ( "be`K ^yޛiHFw!>N ϊd۷mڊlʫN(A^%fo ʏX27 󍎁13H`Л%Im n,֍~Bk,֍ֺ?܊[FonYhZFl[iA0cJažCw|@--hb8p2, "qz8gA5VW,3_/iSޝ64i(6ZB|[%rw8* Xw Qx|Yc?lJ~A;5ӻW8kx݊<$4NJ ٘ ݦ7'&tƦ2~rn4ݾ{\spFg吓¡k 6%IdL dC %U| sovתѪQeO 7<|3x͏slUUԨzu~Bǔ~dLy4bXx},6N71^o kj1RݚY ,CT3_٨|b1$-LEntܱ7'SNe,n nxOS[T=`ܵ[ZO *.&L}КU^ި4}2>o͇":*YJM~mWi)M̜s=ކ@<*3\v:~}p+}f@WڮW=>[_ iY0(FQzwBZOv z{Gqwhd@ZW[iWKAnUy̬k0Zej++ :bPK %{Qަn< sebastianbergmann-phpunit-3123601/src/Util/Configuration.phpUT5_=ksF+Y]H(ѹ+%$'%H%u,XEpE3~H ,R4%w߽Ahdh/Q}N0_PƫC +ا֘!@ <9Ncxiuq}L|yq.oqN yLQ<AxSvL ޮR^OI ьZ[D.PCKN c-qqQW?:Bs/ >oQU3>x =}o7`xB$~UezdλBև}] XG Jmى1f_ =P ݉;rH AIU{' ?-#thzXDqkhyK/F\uIN8ͽfqcH}au-l}|Q}K;8/$~ggX LÑTX#uP֕еd8NJލ^@f|.e;D_ I MahrHwU}(fgAJ8}AG#[m-4xzR^%{>Lje iLG ^|gKK Xu|LSm=mXY$cRHc+YOֆ \Ҭ,jڡFQq6Q3 lz!~o//??k2X,/ *kU(&Eˉf?6r|I&cGE6U';ZtF|R&mD|XKnڇqNn(|W+Hnݶ~ZSN^@& Z*n~ٰl -6-1yLV` '44A76*G/$X!L4#=)VAi,VQI1 f5[LhWڶF[L0>q\{z,xf+DH=2i]o:,Ž- jF-Y#(N2_=~&NI*_+T8DӊR8\Ĕ [$EO&hϢk^qY'3KɼNl֘Ll,BGnܱAWuΙ{" f^TrnI*8Neb^Rū$(1&PҬ* cw7''ۓmհM\* IU5YUfng|^X2K5<ϝFǴKk MF]r )Rx1'*AN޽Ne1-<"ȗ,^uSG,#d׿j)ȩMg{6-7gJQપ'B" c{$63jL"0m)tFYIW>$^y7c  +@Zu0TXQ-UX?@c" a{9.|ɚ~;z;75+ *1[2+&WpۓRW܏zk8e`E!ְ$*6ԫ]<2Z$s@UYYEvpğ(C%+- $0ҸQhyAEE ;Z\w&ECƓ@[Qf`gR7M@բl~ [ֆj E+H@9 &aµSШw&\CP- ;8pNO$ usv<[ՙUqOUy632`iqsPfAlWҙ:R^a6jl C{6:agLu~ \%LUIV߶zw1*S^:?[U CFxp`ah:|;8QuIzaz:dFK/?b$z!V<)N4pHRLgOgc?3IoMf(ٮ]dI>vErr(X`TM  R~8sM$4@[1yPv0G Y iq X٧8moZ[ ;#-AI32|*X~ߎėxʌe+qS fӗFm%-, naCU1ъPEq J D |gK׆pXHm>h#Ο0n'xT+ZP1f)Czm'[\(x嚞L;7Z 4ųu8SK!;h⸥ 4ì &\Zn0jo %%);i; ӮS[^8:=Lj{bb˧'|>rl?Qq v`p}{v~;9;trw92Sh jV15jo>°G>f]H*vϊkG5qCj ۚ:)Zi[EJuV7@Qa~nrt{w k*ÏZn/*LT᡺S~2EQ{_kxsPQ6ɳK2Fǻ2s/& d?f;-jW} N8`8a,4~E z]:xU8Ygx"@M-ϙ/n -'N : lOH!p}=L,=NҊVZjͨz)$($J4=PBQĘB?x:#=SZܦ"ΣO0!-u3i2ĊK>_mԠӝȪ Ѕ .syOF4]GeGE1;-y[sp{ HR-l;.ضn>nZx B-פn, : kv @ysPcxe()糝lT9aҤ[ ſxi{OJwiѝó-Tp\qwbm(u܅i%+KG2*kL*5"Y،*,WTs\ǗsnqŀR~z-6OJ8S'ezin܁kh{bGgh)SE#g"0OfAىya ~ގhB;T = t~sZJ?D.kꩯf0n/$ M_[HMBG6Gd'JM)]ڮ|&?mm-T˖s&)ސlт EU\v#HIk$,Gs_)i=VTWV}޾.as&UDUx90Äkab1}3KGv?}gcN@y| 𡏖ƖRBvrۜ=X́`IƦx,:8MQO) Z'C]S d%}aِ2wS-悌`>HTXW =4\-&5LAXo{i^#O _D =QhKߕ r~Ev=4N _8blG4'Ξm%Y)77ӹ6zz#וL01:'F˒yHZl)!4$16m$"4΄t 82~#W ̳k/l4ͱvR/Eh8VE$]WSS^%Ғ/E_Ozclz p!Ηhð4sތ2~ӭ~g`cׅ2-C4 ~-3=ӪyuIa:jdVA%=u/UĊ:~<诒8r*~gYG|Gc~ "?~20:@ar+"v: p<<9!A`f>PACQ]\u`h zX!0~Gڛ#= z$-&+d?9xp Hm8STX}}Me:PIʁѸxmgf]ܞo[>D_ U95Ag|A;`~30 "gTn3U"`+KatzֳaMuΜN_tb߆ 2Zj!_F| /an5VauxݢATލFnvr-yt@ya]q//eP"6]^Ik73u2sSXs.7]KooPK %{Qx-gE sebastianbergmann-phpunit-3123601/src/Util/ConfigurationGenerator.phpUT5_Umo6 _Arq}R'MkwvC t,̑ I')z!I=Jx93X-]Mf|uq<THD@{δ/R!_ #f`~C\1)!4%*܁'͙IeUbZ`2LpDB2 ,sM̦.TΦB Uc(MC̍*4GJcxlM1_Ȯ=*IHZ,EyEMME%bߒ쫜F"vV+A6G9.jND, ];J/*&nW%)\Wf]]XO???Χ00 ϦO3/Y2 2(j>LZڈZ,aPeUOq> J$GImn |T*i( ZĽRk]kKcc?el1&ȭ!i>Hͭ6T.E8r?Sanzs4ּX51~O#eO*GhM:»6$ȬTXh0Ew|ɶ 0{.U'MTUP;#:p4E6z QзrP;Fs[a{:. /"z͒܍bꁚkOM@knךּ{GշNu֋Q9v%i yFDSIT5]X6uCRE DiD1>1]pB?iJ8W~"f9I\{fVېn*yA&X5V-vopHfOg$\٫UV W_A}Uy-&~|ZHh)M ;5cU Mۯ𖀣p[zlW??bv*(ņV戹nm.|Z-ݙ!}f1N6pr]WơwUE_| K*Ǒ dog=̑@Rw__66-\+h XK$v0rPn( ߆v2+ZOB&F\^MoЃ)%V)gOcdx3r2Ѻ&@⬖NŠ[`..Qca8%णӣP9! ͧCB8DzLbXP}oqCtVoXizׂ-"Ϝ",'[4n>q8fB3l861/Q7`w+|PK %{Q#!>+8 sebastianbergmann-phpunit-3123601/src/Util/Exception.phpUT5_EOK1)xnբTDd`v[d)&> j2'Ljf< &R,Q%y1VIyxs{狶,;<"4C<&ڵ g MHN1ѢmO{/˷X t*^e0T%dPO+D;n쬒߂͛uo|كKx.\*/`rxxYK?<&Jp^ .VBkx뚾 UWc>]W@إ[@pYJEg-6nh{wQg>.nu7%G0>v@HZrW&8cҜfϟf)=Rܴ~3*''O){V!,Aװ:kl8Fe+8 k6^E8#jYENM©ii5uiQ-!yt@Z:NLd{Q/.7?z7;z}yu^!ޗj<^Ѕ\%#^ > ~ݛn:\ c'BBRw2yN!\X׏7KoPK %{Q~F9 sebastianbergmann-phpunit-3123601/src/Util/Filesystem.phpUT5_}Rmo0_qtV2ENrmNQ:4HUO?L[U %)-QnM ]Wq+4GXbWjt;h+- "gQĩst:a( Oz1\7l=ӈݏp:ac/427\cj!U:g71wd9Mh+lb_PK %{Q)G 5 sebastianbergmann-phpunit-3123601/src/Util/Filter.phpUT5_Vs8~thm24Mc& { l˱FHr,`bV~_$)ԕJPjSs[p IYJ9 sN@۸a4 R1ኊ*􁈞37P40W=&  e!8 XƻKsn4NڕA`I$DLgFd*D.BETZ, dKO[BnnZ-3c>xib0]qX8";6y^0$-DTL!'*f2)$$"Ei,ej c"&ibc"DdK v3k X jxGBLJ M|]nN4)BXܶbXR]:w%Y7m mͺk~ۡ\׭G7Z T: o㦂)< A)qO,+Glܫ.?#IӸ׋qktmYKvN +2arDX?{GM'vE{9 gs}9'ww3w:p;Ѓ`!A"藣X^Wf05[6,ӤY.IIV^su&JjІ]g\/~޽r QlI~oc;5Z7LPUޔHyؚb>ODњVU.{dY'TԨڤډy{Ğm1r/_XW% 2.ǰ}rG@oO ~GxyAϟw(|]]?LL{gz=gAKm 뙙hx&yCv^zG͙5M%Ya?7]fw. E}POVtU wֿ]^=Ng=6YmF7 JSsMg9-e %W^UX(bLVݤ=Eͻ!*{V@͞ 򶘚M/PK %{QCL^^5 sebastianbergmann-phpunit-3123601/src/Util/Getopt.phpUT5_XmO"Iί( Emθw&O@H34q9~U=/0 w/\Dz_y LqO%32^׿ltp ΅9)L$l+}FE 1Lu%R`IB+%fsLN ïH!9ýg[e3sf`4Ly2N R9:JTQф՝d c{3oFF[_R-#4} xL EzYHÕda#$0^Yc,xZ25EE( b-C7sֶ ߸bxm.j7s-5e?NEc ݟSL%gHQdEvFFroB$^Z=Y<ʳ}tFKq( 8|kIO=Y4e$G,ݯ(ظuѫ j$&56?z=hjZl@Fz.[@B_rno^ˢՆm^FB꘧wzC)C֏~PYNZΩV) 1OD).͖k y⫚w-_^dUPjD̷]rNW`,IJ"cл+Ξ;x,K{5t\w-:&NșcS }sy80rf?XNƨŪhùvRUBbo}Dlp<Mw7Uwq!Kud Q>xfG9VyQJ2o-.9NBG\R/=IgTW9};9jIkg`!u-F|im\%$̴8ł& & xHŃh&8W:^IYȍ5з.(`#bAsz]lr7*)^rÛܦOk>m3ǚ9i%{Ӗ޹,-+8k46KoW˯G#ڴmδCD-)UAR˪clQ" gֱRJ&Zl+ӕpXpĨ1vnvabƞnGa ֪hY0ߘb:m7eo 9uڅz\f?j󥕅ŒwͰvCӤ-$+fĞƑƭa:G,7*[,Q i7=sZGJw^o5PK %{Q1N: sebastianbergmann-phpunit-3123601/src/Util/GlobalState.phpUT5_W[s8~W(R] %[]L$3;zA!6{$`l3ҹ"#hBBq4TZD6?xJ]C73*є2cP4E^rN@Ӹ|2RQs9(O( rny>GAӄ1FBBO!i$XшPGJ _sپZNͰBOX ՞E&艪2JDH@фhD3[EYRI@%d"|k?QI#2e1lÇ',&?1eT-P,9R1Zj* Ƙ +RYAzG,vFvn Tȿn/E>jA WwN-}o6׿/{ږߵk[;ݶou^A8>$jIq^+C*!K&d-雨ޙ4D$aӳ3!$RKڣ@t=(-ez(<_bŝFb!*ru `ϡd.Ɗ&dJ&b&IL09EN/:EpL\'t._uny9+Z@L<^w)*SwV_V uU apZ @ppɆj6T*|9"X-jZ0 Ru[7Upm]~v GzvM^CKj\ ,HFrV'9T \B|Դ8hyGriPJ&eu:h mX\HE:iUFLn8tp:ǩ|>oYݩH.G?9rt*Mufy+ȷ D)z4Hɋj=OD~Y/\#A9 tÌo->j#fŊO%FOZ$=5t,Sm6{ uc H!2׸҆K\ي: aF[55hRr%vE@'*Dx@<۱=_)l c9ԭ?ݰ7 M/Xp 8BLpz\mԐNJh1IYhYJe4yhH,NJR@ev[a7˴o^(ztt |-ry7D|Uи9;B+Z18ܫW nHGC t63\yQ;PK %{Qp#.]h 3 sebastianbergmann-phpunit-3123601/src/Util/Json.phpUT5_UMo7WLQ^;v8 J>U P#\\)jGrYmԢكefߊUA0XgdnW=; O:tBӕ9~ a%ߍtx$ф:)fsJK[]"Q2|jCnŴ,R]쌼_9*\,6kV}*r8HWȇ J8 K,Jm[ȭ.MHG=(f[U:~;zk`a6rbx*ʱQ"=BMR!φ ,vB[a2 t;*^KCuʀm)}ժW;arG_pM`u_&ne?l(<`ԛdL,){ͤ`ZytN3o;gIpRA'$`7gcIzFTjHaO=_whڈ\fM{@P J*ܬ"FM}ǿOhrjp xg7Ri]ŎUɤ2h4YpZ0 =ֈԕص%[Z `*M "Upt"6C~Ts ?fit @Uo S dթ 7 oM|_ph%Ԃ$aRmPJS{9w;.>jx7Z`'gJnl+ZAnkbEL9bwQ1&^ nR1VhR$ zj =נ/Ql{g{fߨ50{Ae'Ex{AmIlPK %{Q/ sebastianbergmann-phpunit-3123601/src/Util/Log/UT5_PK %{QjAxat-8 sebastianbergmann-phpunit-3123601/src/Util/Log/JUnit.phpUT5_ZO:_MF}* TwWMi(BnR4l#i^vu,Ҵ-9w$Nb pFuIp}RF\$g`فH oE5fZi(JՇόF_/B؂WM+U960Ryw~LiH%,^PQ0R|#X(@CtN h< |=fhr$S`>쪿F :Sűwǡ$1_([Eptf8uDyuumD;]m"%E\ \,l,.Ѵ8#${?~|s=^Jˏ}u",Bu͍$X O>ɾ"E%L'dfȄUL^^^Z$ u-D 2EX˽**e劂9 `P ѨjA kv`j;:S>Gt6,{?!;ΝIVo0B1 끁)4Ȳ<ž ulxʐ1 K 4kA=$kׯ_[ JuWlrciꑍLV 6\KΒO,zrE<^ZtS7 -`0,U-!-VH K~fGWASF y/lǏ }]mQaD,ZmS!DӚKL.v{4J- 6KR[RD/N@$OO\ sPXT&!'HJ̣P ' F5RZCuشRM`Wu1C{cq{[RD4B=%)'[('LBիޔ rsxI|tl lYytl_,$<]XW$,䊔%䒊B?խ06Lu5OMBZѳ!ګJڂf_ xB,,_6]DCVBs+,MQ)K 36|jdwfv-mN{Knғ],|dmyHz]C嚬@Vj:nkbsQq]qU3Pgt=H3tԌuӝ*'<3XvkFUߴ{GAC>X++;  {NgpsǯUcKػuCѪ%:aeUFFGxR[y9nFBKrO i@X*' ɂy䃐2gݯMBM ZHim{ 4]9eS.;.z/"%nX&2!{!0yN80(<(06HI5FAaI\ 3jk瘟+A^A`[sH)A~* kѶ鴧Z\uX2yt-zFP'yݵ(5O2BIQ; JvRRϣ(]EΆP\H /ʰ%|7aK\#:z4r;79iMRr'muk1^5nuHmB̐z_539H;Wfw#C]Ɋna+~gK/\F2q{@-MO*ugxe ~.΁24hD2}2p:+Lnњ6B,uRǟPH-7=jԐRki%vqڴ_]^))op6ofkFWt`PK %{Q] -); sebastianbergmann-phpunit-3123601/src/Util/Log/TeamCity.phpUT5_n6=_IJ.dfz.M0"dڇ0Ȓ1CR$J R]mˇl1̗JPM:crqr Ϲ$S3Srk {Rq31[$!G`#B[T5gd1 l-lM"%&T,i2 Y([rx\^~wtjNYQI"IJsMct%D*.:`,C?2.cb=j%i:N/LN&w9W$"ɬ|Ͼ7!}+xFP_]D*í2]@xR KcS,DqBcRbd'X2QHçr?5D f!)G=KYIRS% ZRA47g&*Fz\k4O,ȔVɬT,B:(h/4NW7Q t%I/v|%*CKlL$=?CLy1aa^~f4b//ZT9@GO a$ \@FLhCj'c.WK(\S6Y j+_˞y~~?c:") Q^x:oSm8S lɅ.G8T SH!:.u; .G{֯=cl5-xq:MM>a֬j ]r;uűnmƋO Є! :A2g~iSsQ]6FC4PC)G?Z ۚ#9z| #&2Bv@55iM~UkQUe&ACDwoc~fŒS59CK/\>@h2:LV F^übk3tTRٺ;ݍT]5PaKp!7]cnkt+6 Zj'8PݝLel#;jhwC,~>}/<)KjKu#;ނw$C.`ĩ' y!خ %r֘7UPx.+[wkVE hQfřzSHw60Jr =JCVl\8P{U&k UUQ*G:>qͳsq3t_(, f8 8nTerv٤ȿpkZ ގz 82<N[akV: K ݙx(XjUTۍ}stӠ%^/ud 66tjGizHh)VrL6LGsSi U<#{xq {$MI<4$Oe XƂ*$+.H8b6$ZQĎBf\ZS4|`AYLwStܤ㑝n@2oM To9^HTup}^`:1 _{IEuշKt$JYcm0v [ Lӽ4`_'VɪJG|_9mNf [931 2a2h~熠\%{fҖ}an c[΁wWIۭ),x(R; [؋ט7*vԑ~Awo߾-Cps?PK %{Q/ sebastianbergmann-phpunit-3123601/src/Util/PHP/UT5_PK %{Q: C*E sebastianbergmann-phpunit-3123601/src/Util/PHP/AbstractPhpProcess.phpUT5_Zms۸_ʖLqƧ8w$y4I8S v_AJs)?X]<}5Y'dˆJ(-ygz0ujp}#ߒ5Wd#F3RxI~\\rTiNՆ A(w-l"e4cIeE$䫵&T,HC&l(Pc1$I({x9p} :\bÄNR+B3)hd*D[XeͷƼs?R ~p9ޒDc8xƚtFxg_ɕCT N9:ÿdNb$өD@E 8W>zwlIO9,/ u0>8tx(GĴQ؝ PdhA̩yw1¹8!:͚ +‘^ 't?U YU1}uy³)! R|ɢMKc.+ tZk-xO6"?ݥM6L+HTcڟ3PА(qa1<,v;jW""RuhU T#RL8 %`ys<ߥs0Vv*/ f>{& ~*kЄ}ƊM s: >\9D@SWb[ ƟJLeWw \EV lk64I"bU 2 {\Á\1Δ]꼱6|gN-KτxU h.)D@ C'զuF̷z-B fm;aa*P~K@#8u^wJ ý?$x䃿[gC j>[LgbFp.2u%Vڧ^x,RMY[vlO}`]sȘ`σ`"X 8-|J6N7\\䁃$ʅ.r`K(֠Mm i;<b-[4Vk k O jR^g4Mvxe޳ \h`Рk i 6OW76pWF*EN)fWa1_5ڞ6}r/8b%> u:TV<$3b#2e* SkEPdd^}|Tg5޿B rx*fjly:dz߿{y\-/A0'5q }՝lPG'DHR0iq=}ˑwXy\2Y_ פ8$[C :NXFm&ffR?NRP"cGU?+B$@/MHm:|o-^Mm5taǦx,C¡J` 7.ԐOjЦ&3fk8`=|VN=+G{ YpD<$ ` E\"bUT8-gm맺2+ߵz[& rzTќ{dc_+bA ~Eő@>d73 jM"pajp <[N55Rs [/l/mb r F7_@ƪ4ccb-sbRA{_~ݵHH5TԮ'eUm gHhίAiJ^tyT9P>\ ]#n l{QFjOrYu[g31ĹǏqQ#M\VJ/3 @ ߪq/B/I)!F 狦"8xc(^e2f+< `pxw9>aK|we[4誏$Wc/I{f&6=c/#T~JK٢=nS.NTѺYڝ 'E SEٲO>pZrͿx~-D}- _T@w'yt.F%ob:)f˴-BJ{߻Wttʨ1P։z=^0ތͳ!(9و+25󟺇+dj7^_f0TO֘|f>Vї qvπ<(DqE*|Hٵ-rz +oR )PaBgGRQ06C߹5T]On|--S gk۪Vy-roTaoB2{-ġovQ+zPK %{Q/@D sebastianbergmann-phpunit-3123601/src/Util/PHP/DefaultPhpProcess.phpUT5_XYs6~ׯΨC*ƶ8r&Τ4y4,@+ ATvߞXtBØ)kDhfr==N^ ܮ9oʔd W_0hp7<`&wLJx<(#_<fa1IUaebr@LԚ11g$n.IEgViidGf;\' 9qB}2lupPfvgD<Ï ӻ )7z]~yJh⃐+NhIP21xW"Z 7LENQ@l!UZq;E}Kj^$¿.# & +[a@tOLYC>K'4<$ _~R:hdF#>kdLCk-K8^Jf|u,Y0!Ia玁)Ŷ0\0mlK_.g(ѩmڒhTat?9vg&+ߟߗ@QIn-oae?# _9i!]45w^UUZ#&a#i[״nt/ԎOSDnQh?B"xTZ9Tg'/a¨j$r5)qAPK %{Q-5 I sebastianbergmann-phpunit-3123601/src/Util/PHP/Template/TestCaseClass.tplUT5_V_s8Pg2饡ȅ4镙40@GkT|| o%;^V(EPj sXRm7V9L]A0C F|q;y\>A~_T4 AJeeX]h/)Y*jRh䣜C Ȍ$k\ hMM f o/jsDg /-шlv(RNƋ`1hx5(L.8/"0J!CDₚunǝ }0*䒦dH 8+T, D*zGuU2 #sߧEuc:|1G+I8Sov8eV;`&VHcM KƄScxeht;>v<.fp\0Tm|Jk%B~=/P̱ !1RLJ+̀6p؟U(9??++Z7'w 07%f2Ś[ ׬1-qW9`Zmi8=?,{3m+nH?a!S9زlz1-~$v.'!طfs xuS|i=㔫];fzIϊMӦC{^ӣ޾{GlVоHZ'x|:х,OnF'XoL7bX 7:|g PK %{QbX J sebastianbergmann-phpunit-3123601/src/Util/PHP/Template/TestCaseMethod.tplUT5_Vr6}W 3J+VZF3';ɥ X[߻Hŭ^D,Ξ{bY2>}̼|StRz6T 0*n@-VT[]@g1C9El~7y>A6, $h"!25AI¤sPL,.H4WY$ 诚qaRtU(D.ф b@ @z6'=',@D?U/1W 6cJz"`0ct#^*mU*eB@D ₚen˭g\}0*fdH6 8+TqV{Lbm2QzU2)T96vc:}}oyȏN"1Ԝy{= /R^bƪ1ӒSYl0v^]0jFC} ˃ۅq/ߙ)t 9 琚vE.}+6>jgu.cq }٭z*Q,5^^ϗVfam_me縁+w-c`Sܳ3ѦF2#%F۱3'h%I+Vcbo@p_Y^0dP|~B, ,%XnN1b(f XD{ƺۦbr$2lL`B8@EBUN71$aǮ$T%_ LLge"|Dc`F))ѝh[I)6_jg^+xe"| H&Al\E,5 3ISYLCcԊS) v;]9qJ v O À@p#6Nk4z7:ڣx+. #?FǓ }M6]"4pNqfz ܠCTЮW`+(W#0U:{-3PƿQESYE\tc})N66Gwls@5W"k 86//6}шN O;uٚb{7eŞPEg(/CL5D(0KY+[Sb`,!.EHӔYR[zB[Rc<8I(xwho@m=u[a?2>Xw)%yUa~TkijX5X +E6Z{?#σo W)X] Ҽ2ʖ11 auyz+ sbYXe»<)yiX^8O?x &'y09O^rĹ[8}$U(YjUVF˾ʹh0*VfsF|97rH> :h+M?zpv-&L_WO>P:L?PJe< "-< o9 8:fl49ԸҏO` csUI['~룹ϗ$~g Y.U0_| |}maCRvW^ !7SY,4܏׉NoBg&Ht/楗92'q 9-1F69 YǮ3AF*MI{hX6 9X̉Sdœsn<9;%a;$F%qu(EZ|M l訕שϰkqk3Āa) TK'ۗϪ^d)Է6<vʶ5k%iY,J*یTE&ؑno+MJh!WrK]P4\Ng.?\!UX|=R~V67OX@>Z%WL6u ΓyU,?^_x."?iNx R IXfܔy4Iu#],o>-WWӺնzD.2N3OW;<=$moC!L% !׾(:QTuz4 =cDIlg5M}7o9S?eiu0loI\NF&AH {IJ O_ ݆Xy, ̋"g+龬s'$R2Y!CLSEc> &q2 6<< =wzrxtvq8uKɽ8@NF}N PES@4HuI({L23'O,{t@80F!=hУ>#ͮ'ѝc^]z Mk\p2 WKC?$2^DM?1(A)3A>RZJã.HhFtx>q⁥t?D)M"/`P@q{lA@I< 0E*$@ ɯO\/^KRyXJgdlͭ_|<8=ϗɗP{)ԧ:/$ՓK)a_lL#MP:M{F?Sm0M$7 m6$EcJiwh7sSBxA^8),8zx%4]$ ^su{>8CI5but44ݸ*xHT'ZƋ5m#n F4X,ph1H tY ̷Q͜yl 7o&Ȗl;OMx[g7hO*62<9=Bx,;Oro$Xi9qp{}&APz1F2fb:\-cLIEP/0HW^Yts|zV7~LP y' #Pa ԋBA_R6]Gx|gdSD)KpvКB{tՠS sվ)d0FG& '_r͒4Y4be)uteZfރC.tyĞK1}1 '2fapyBxm6'eW5`fTO F< EG@YT|!kGAT!Y@lP.g-oCOkshk)GE!:]M1o| 0![ѹ|ߵtNޒ^b9R5;1|٦,߹xgp 2EF餋 w CS;ȕ4gj 2e^PN]r8&% ROS/9UzD(كS OM 2YTAv->*2 (ظ$Fbxq5)&uo8R_źetJAVh-8To@* )ӷPuS Z.vm:ɟ`-.Hh-E;冦#G4: n޾%>u j H*W\E-cK ,V;/>[Loӽ=E({|{MM㲷( 0֮yt4]ޙѴ4sK1_cA6EK-$~\s뚘, mт&JCw i^H,pyJ ) ^__]^$d+aTהFEW"\) kYc*t co9ޖj>Rm&Jy\vIs *X /b!|P .#JՈDL- %߾ˈPzSbYj#-QK(NY'\_'ٮ$Itӣ=N " vb+NrXo;HğVeN j%SygϦNn"hkȬI>tRweR Q{wtbB(Am^[w&6!i00l1WcUmX - 7Q}>/OhԪ U,W: yʞ.ِTeǼ&^-U+IJaA/@UL``4l#,3שZF\hݖ5Z wͥԪa5.et`H<]5X+3w0%^ /;Y3 q#mϷAhhu.͙wuۉ7kJ\p8Ye[U; 'tYv;_6Hk$;BvҨ1d]mfb-G^uҍ2y@Mmڵ${EV '=h.,9 ~$Wf 1xET),IVKrc1\=WwT/*F9\zɇ>=̖dErC#pδZ,+2z99]Dp{lѤ"'hB:<5ϩuib-+Z usmefqU\dqYUKBVmQ9mhe E-Y:RfqpDR2!g*etn-[O~߶"b6)AM(Ae1 eY] nѿ(VfT,0B}KWe[35TxX|$Zku[Q2գ` T,H3Z{j;=ϩVUV1qWuq, QP6ϜSCa6U3Uתv7NDM| k4Ǎ; |{ٞvL/#ӎ#pv*fJ]y^ݾ@4M(śz}Kܡ^EWtV|i;0~B80$īj?|F:_ifWMXͥVV)3~˜)cޒWxW9ρHl)rLfm i&&#Q,_n0g fP8rJק Kr˥IKO/MHiR4mIjz+,KVr?y.CQ^Gb@PF}Pgx֋;/ԟFqA"_.`okN5⃙v òLb֭3]_| y#܊riҲ6F- GoĖmEC%=3R I9]`#9sw.s}~\,-פX%g%_G{st !r_A/w>a@it@#<3CFLt>gg (l|"\FN J LF.@ g2mt ^y׽n:0Z! d1la aQ sԇ{pi3wrCvp;tEzwbf@֍q1D|U K"_n 'H1%ps33L}Ӎ ~Vgai[Ԇ2#.aG@ *#p Q}%P; `-Akkb!Ϥs yМcD Tq%CIɃɸ{fpEhK5t|ގ _O1 D9&ç cySp^TL`oSsE0n~4w&MgneҞكIdrk?, @UBKU؂M-0ݵKfPB[|@}+otC@l1TmO/ic'n_T1ETdlݨp,'ơ %|>RGgE!R):@BzDKpcJ7`Ɓ"Gܓ\0ßPb "Py%e!/@nj`~ވ\>cv/ 혿!gȰ,Q p%9Gޤx}[Of F[Agׂz۱(l# LN lC,c*@?WCEHGT{J/@ W\*M꥚}Lg!ĈUybdE+y"RsZ!~FQ]9^0h!X(9L7i37VXcRm*X',?ޒmmsjoA!+IbT+7`T,8N\}-ѺZ_DA٫`k,GwԨxrp!<AM#FJICVm=I&[)m,QE* V-1 f֦J@ڸ|J]gۆss6h5'=_g!= _*]#JrFYxN"{(O"YEV.g<u` ^n(iۄ$Iƨ`FK~&p{|q~Uy?4`Aqze7p# 6Xs߾$p(:S+v:v -|"=sku1۔Ns?1.M͍s-H̍FIluto: ¦@l1bH0o}]/"mY*OG9̊O?QDžR`JB mmPPsM^$ i\. #}oy(DȒQT<- 2>;CggJ'7sPJ.Q\߽8!P6e r ,ݠr# 8-i,Z0[&wsE\;pnrEHeg4,xxJH(Ijaеύ>?5ZI(rOq,PY(ɹIC\ r'>{J?VՕp935z-p֝$+GKZH ܣE"٬C %FyFKPC bZ,$P)%)z"i}yPXeeyZdgJ>tzZrv)gJh1K\w;>'m+SR<~d_SG!n[X*O(xOM-};oUmt-fR=l%N|8w6Ӿ8Ӌú .^N69U`+]d\ *78Eӆ zr!h+iW`p%icd- ?kxkq/X# ghwȜI@aelDLѪZO'x5دhKZZP$'SS8ߘ뎖w*w&m3yT9zŋLP{̱`To y?>VsȸeE2Bt>R0q8#o]cJNPTA**J2<آ*_=Bn>ХI@~hI.󽐼tLW4h]n̥w2/!D L=-Kt'QY`KT_ K`2^ iI$0©p$ 5*b6歱@9BV))VrSP2APg-( %.B/gFU`G XL+r̝l g݉(ЕmLޑT1::7O"N?|#5BJVy)!ma@i* aS%ӞJ%i 5dV`Ik]hh GB:ذF"‚OXnM_Z9֎`x|p =97$!g~?PBz ԍ~)Qcx-$ר(k}'I ^G87IUpqt\kj%|0EF۲)Iw٭'[1fuLPeuF,_AU;fԅ#,6=nP)QrG3T.bqkִ`8Юc*ɑQ .P͑d"Zpʉ`u,xEn Hؗ&۰Ư?5D‹mVhqgUα?~ĭp}[_]F;k͢ʴwc垎jJ#< o s\0M9O_ ҉+}p؅i[ʞJ U͹ún)G:pܨω+L6~թVk'@0pIeyX"$=L,Nxˇ e'pPS h*IG/1OI#1.컓@Md;Իcp ]~ѫG|?vyz>~+T2]N/DPK %{QS!E sebastianbergmann-phpunit-3123601/src/Util/TestDox/NamePrettifier.phpUT5_Y[s6~[mI%R̴;9:lfڬNӣHH†([m AJ,_$||or8ŜBr˅D_OfONiCZє 1([_}fT> jO5Yb!)fo1RTkQ$<>HnZi,sHYR&![e|%)N廏)-`@ U, ItGހ"+xLQBԳDJeϒ'"ͫve~ ;,͸g}LrJ٬ O g\^)gO4) ^`Q!X&Ar[ oswIS*(ٖ[H㴢!PDJ~al}s[.gKF@sts ,,XJzWbw3 X^© c}Ĉr酵"6+1oi(u/ʤ(eE dD}Mi+R!mѼ &P$=|}~;PUp8~}=xB'ЈfYɖ2jT\( ʬ;@67hUE>O!A Vhx9/, !Zk$%/"XM e@6C&g&>pC"0=Po2Gbxd˽ 3SezT/t([{mnqccNUJ*q\lی|D ,GPWճJʖC!XEs1[C_UTԡm 8/!âEfDoe>z?'չ :[3@vҳ ضPb QASضUt>|@.Znxv'Pm~&q?c4P2v:yŖ0Y4V_ˀo})ǭgnN/D%.+_ϽJdiB(iz?x')Keڴ~EZ2&Wa0_ͣx%֋$aM Bm&V[݊#*c{©.&:<0i83ŹC2bu7yӉ]Q+*ħ: N rkƗʦȇL/dlv;؆ڜ{FOxЏ=@j€jGA6lbKac!`~JPPK %{Q D sebastianbergmann-phpunit-3123601/src/Util/TestDox/ResultPrinter.phpUT5_Xmo9ίpH_W5MUEf V{e{!~3g3#XeOkkc&`uy<'>#PeZp; M1Qm8=S%ɷw(Dy."f>qdQ|0 aBBIK%(|[q|ոufA YSM\B\f+`r(rZ%·ؙt´ N[Po.Pf -+%i -jZ;/&XqMoT .;MTODy Pqap}ԏRKk! b 2Ψsʅ<>7(!3,uL,stX?aIΗ1K&&Y,[[k+>`*r 3{1l: R pJ fױښ~FkDMcCMkxRtčon׬CaZ^ }g7x{Of kPj'T Rx$Ntw J+\08$c>>ֱCKX\d`kMpX5:;Ac~#\#wwU6ʇH!z5ao9RʎBܓN$>Gؑ~{+-J2*.A|mC}owR8.P/,<%gp+Ѐ YI/\މYV8]gtOݙHǦl(ufƍU.N0 G_jGb˹ dH񁘄Jl}~,r[!^|r2&huT.*/^CQC(I7\},&PrUb.zQtl; Ֆ6eRjك^HY_`>PV8>xNLk3< 9r4<~v]b;'{)cҬ.@#+ka:bP5p.!f:+s!΃S2i93w%9LE䳳H#Y }4IڱUҷZ / L656=ÀOäG"e04* : {qRvj7{̏xwlwQ8&lvHݣwT[ e{] 9U(e_IPW̤ӛ7!-`vX?4qT{@p!NMrm2 GA#jgZ|p$20dCEAz) Ș[ ,[UgG S.MV;KaXw 9-<6~?B!s?0 .F MiPK %{Qű?j )E sebastianbergmann-phpunit-3123601/src/Util/TestDox/TestDoxPrinter.phpUT5_n8_A-Oݦpt1&M `,6Y(*~~~dJ"eiz-yṅ*E!"b/cmS9iBɊdhA"3)C Ƅ4s?cď'Lk?чL= El""$閒!?QDg@0^$t3]F؇ ވ}WQ ghg($\yp6`8ϒs}܊5R~SLoIgK Л>Lϳ SѥT> =qr\Mk PgyԈaDOc/ˣ<1~҂x W)s  eU$nS)X@O &c?eܿ℁1ͷs?x4)œDmQJ5z!0D"aJܴB\=]3Fұ ܯ Fqpf G9;khr8O6~DnQ%p4gMD/<[So?z>-d2Di m4[%!M`[n5Fs65d=RJhдONe~9 $q}Ā?cvWH ̓ ktf%Hr12-zDo<_ɃvH|{a)R;B:mȺ1v "\'-tss۳]*Yn4`?Ҳ4xt]pKxcBŠqޓ*m=ErcEc" OZtF+~^@ʓ(.s:͗ǡt5id.hOl:t;.9g=h%>!kl Y 1?0$]/ׯQ}լ(EI1H|6E^Z%N8l%Nx %";sxJj%ʵQ7On+UG#jQf\+QM5H҄'?ʷP%N8UvXVF7h닛/ëo |?F7#=lZF42~ ii{d`8t$HGqu2<= [Ԭ fRJ9 mUy?V˻#(*X]|\ZP/ԷNĢ>J-hyZ*_b"v?+-&{zM떷j`ܪ-`_0[%aFa wەuK,0+Vɡ/(k:EW@N#zu*Z=(}W0? IUf-_$ǝC(2Zwx륐z50`|X_ye$3WsLh $ogR9*ȝvYQ\ʁ7ZԺS-8ː Pcgjg4O 1Ӎ*0q#ڪV˝י` e9 FZ.|cAw`+@QΎyc*Z*<<6)_R#E kܬbNX q4wPUU XqU 1  -~+ /=xǍ=L3{afaX5TiIeEBӀd_W~*141-765ՋicfAA;Ou ,a ' (~!yq57f=+50E>jEzͯKmI{buEww *xjHQ?f`Q?ܰeDg/M3I۲ږbl殲 u}ǎl kro̕ͽӗI2ANWXkES{w*.7WԊCL ^:+ ICRӻp %|K0uI"=!_qhNRgLHgl'v&A#Σ@\>R!W3Oi[ȿw*׸=+u%!JTSk?-C̜z:<" Wu _+z'r?Ԟd Y浏t?O4>nf)ڽziPK %{Qzi>$H sebastianbergmann-phpunit-3123601/src/Util/TestDox/TextResultPrinter.phpUT5_Rj1}߯Ҙ6WPiv;T+-Ҭ/{gd&z;;2gtv5Th8JvߎO餀 JPC3!0{iО&11.[=CJzTx| A{ni0_#>Cl S94R[3/w7Jqc&AE:I3V&n8OEBu=-i1uFjaLn1洐+KBJImQdmTsmb%%9-t1$eVvPᯘzdzA ůdkz&p+9iWabOfr4j0u rU3(\#1Q4L3L5 -$>Z+,k;xeP`zkQ<P C? ; N<Od_-VZ#KoPK %{Q G sebastianbergmann-phpunit-3123601/src/Util/TestDox/XmlResultPrinter.phpUT5_XmOH_ڮ\UPr)!A U"ؓdv {l?3;;켯?cr6JެcC{nB+â)-2{&\% ldtNIE~irY|BqH=OE9 ΔT٣1v1mk#4ɶKH@<70BJ 9/[C]+! I8hK!A5Ō } 1Y[M*@"FND(̚*Zԃ^uYWMIM~__A'3x"NY Ļ~`J,6 w} SZz4h'!K2B0)HRG0JhVl]W2d>{?(,KرY )7Or#{0+.rwop|5CIZ9$& dwpW:Hop4aVd{MGà=7MxnP^lNe{4X\)Q0*?r^mT& {cC==*uH 2^ufPzFܟsDpZ7csj+1>1cɽ%i8f 0($%K@1 |RhY&^ձo׈Y(bt*kCYSBi q4(2 GJ \<۞8)g [Z$El"/S͛s&B^U)̩˪WmrGc7)LC:YȘͪ|p>'n>"l]q<*M9ٰyٛdVp,+!l6x9F!4ȝׇnɠ;vDo]FVN!gaJwߕkE 5r-UPU ./ ( ˻B= wClKӬPK %{Q7p@C sebastianbergmann-phpunit-3123601/src/Util/TextTestListRenderer.phpUT5_}SYO0~ϯPġ}-¢EB,xT9Τp˞T+RJReu<31Pa)IZZ? xnZipm ^cN9 KI Mg8C쒁PPGMdkNMa*J h(86WuwqhQ#C#`fId Ĉz+8!x!OYֽ ~)HxAW<4>;тKe7}pٴDXAjK!_UYvTZkgا2U7|Ʒ}ǾnեKX.A<=Fקv^rҮ*L3Mp{m4dBM/!=ЏmZIrbjv}1I[LPj:iQ) ђ6)257"=w,<QJyDQ8Ib5*r} Sjcܸ\u.i?C!V:ٸ9yVP''YrN9yv*#E$TȖEw,ݢYN|"$;t,Asx)~9;|WCx }BNncN{[u΁9IwsFؒ~@i3;PK %{Q{d oH sebastianbergmann-phpunit-3123601/src/Util/VersionComparisonOperator.phpUT5_Tmo0_qL_LLELB0il_X8 ߹sӗs繳3~kk J8daiOޤiJm `Jp{exM3SL wFh c]Q 1P#Rt]9jOui\#4zV ['q>\>8UDj`!<dm2ԴCȽi]T@F}hѠl= eB#+:-Ԫ#ҡ2BD}!\AL*`i$A&1B5gi 2M)Ҫ:O9% Y6:`0@j<SiʦM^?Hjn}Nv" 8u&یCS9hjxxt Ic 4 OlJmId1Fv"[0OAKޏ=EV0uYxr~cot,Fd8`oIU1ol[]z#\;/zn7PK %{Q!b !2 sebastianbergmann-phpunit-3123601/src/Util/Xml.phpUT5_[s:_f9Ŵ\v ̴نLd-@YY0>]/2IbKwD,dA$ՍڭY:8i5,yJG^^;&VL-)hʃ' hÍ@,ށN'wF: \Іc~ -dj)mJCql_̒$l408(f$iDqn2[5AYp}T9 2/]P2|Ne{6J'SvVLoAklH][܄jt֟=ZN5?Qf5N#KO'ؿ7302`濸7zEʜ5mCI-ȑ4\F\SAw2ǨQE3KgPN4gUZ2Hw%WJDZg9BYmBc>_7l7nI4%v U6 iraY@&[ g%{gk: ڽ]z3[1Mk$w[z-muj!2)I~,6Na ޮ2^Nh9^hPXuHq+zFDRQ!;[Yd+HLcw1L7U+ʯv *ux8g'B\TdPg~ǟc:`b&2qQX9u0OOM{$8vq,\5# [4%Ccb{d|@ @p?6hlV@.5} >jiRѫGM~!]t?FrLZJ oĎW8~A'[uG#Z=T,bd'-x<uDXjG,ٜTv%?Rn^"ɧ>b(fL.wp0Zb_.ğpd?U.!5 9XՔ`I5Ie&rr돓U1d_$GCCwYcj.0;*9Ŭ&ɿ,z76q+l%h\%RxעR]Zs|=kTd=>M*R~pCg3 L/dy{L6\lX5YV0Y\Vʲ$xy)x/p(z&vPT7[6%9ڙد (LNMv0ƾa<9sv]irUO?9^C="9Ce'a3`X=&CKHQ;dGՙf <: 4M{jsoկÑQ` JDQ@!Pf1#?^! `16fm m&j.|4ϟSkݶí DKF,_U$aNW6Eg})Q3f$$(ֵeo:`Gk{ORh+$8*QLE28UV;ZΠ?E66Ұ"}YHuCңN_‡eYQejhPnA2/c]:f(QٹV%*5aT}.#WW le]7R4ݑS '}298ڎcڕctñd+l nKt1UCtDƞ7WECi7 /Hzu]rq8$U|;kk_Cs3Н!?|mNKjr+Z.M5,.|JȹoXi6#}XeK@^]Ацlr5)!=oQp5Z]E)xdƝ%ܟI$ ;XDuIKdV'ͫESo `ӇCX7oRչdjm@8B1hl:QI}b [])~l+6<5L-Re+ZhDPK %{Q" sebastianbergmann-phpunit-3123601/UT5_PK %{QG4 Isebastianbergmann-phpunit-3123601/.phpstorm.meta.phpUT5_PK %{Q_? &2 fsebastianbergmann-phpunit-3123601/ChangeLog-8.5.mdUT5_PK %{Qj20) sebastianbergmann-phpunit-3123601/LICENSEUT5_PK %{Q:r + K sebastianbergmann-phpunit-3123601/README.mdUT5_PK %{Q+~T6 / asebastianbergmann-phpunit-3123601/composer.jsonUT5_PK %{Q9) sebastianbergmann-phpunit-3123601/phpunitUT5_PK %{QWo*< B- sebastianbergmann-phpunit-3123601/phpunit.xsdUT5_PK %{Q& _sebastianbergmann-phpunit-3123601/src/UT5_PK %{QQ3 sebastianbergmann-phpunit-3123601/src/Exception.phpUT5_PK %{Q0  !sebastianbergmann-phpunit-3123601/src/Framework/UT5_PK %{QXV%: w!sebastianbergmann-phpunit-3123601/src/Framework/Assert.phpUT5_PK %{Q7 .Gsebastianbergmann-phpunit-3123601/src/Framework/Assert/UT5_PK %{Q[IqxD Gsebastianbergmann-phpunit-3123601/src/Framework/Assert/Functions.phpUT5_PK %{Q; hdsebastianbergmann-phpunit-3123601/src/Framework/Constraint/UT5_PK %{Q~yIJ dsebastianbergmann-phpunit-3123601/src/Framework/Constraint/ArrayHasKey.phpUT5_PK %{QkJ hsebastianbergmann-phpunit-3123601/src/Framework/Constraint/ArraySubset.phpUT5_PK %{QH msebastianbergmann-phpunit-3123601/src/Framework/Constraint/Attribute.phpUT5_PK %{QG qsebastianbergmann-phpunit-3123601/src/Framework/Constraint/Callback.phpUT5_PK %{QdlZP ltsebastianbergmann-phpunit-3123601/src/Framework/Constraint/ClassHasAttribute.phpUT5_PK %{QyV =xsebastianbergmann-phpunit-3123601/src/Framework/Constraint/ClassHasStaticAttribute.phpUT5_PK %{Q7NH m{sebastianbergmann-phpunit-3123601/src/Framework/Constraint/Composite.phpUT5_PK %{Q@=%DI ~sebastianbergmann-phpunit-3123601/src/Framework/Constraint/Constraint.phpUT5_PK %{QC D wsebastianbergmann-phpunit-3123601/src/Framework/Constraint/Count.phpUT5_PK %{QujN sebastianbergmann-phpunit-3123601/src/Framework/Constraint/DirectoryExists.phpUT5_PK %{Qh_H ۋsebastianbergmann-phpunit-3123601/src/Framework/Constraint/Exception.phpUT5_PK %{Q;L fsebastianbergmann-phpunit-3123601/src/Framework/Constraint/ExceptionCode.phpUT5_PK %{Q N6O sebastianbergmann-phpunit-3123601/src/Framework/Constraint/ExceptionMessage.phpUT5_PK %{Q ]` ԕsebastianbergmann-phpunit-3123601/src/Framework/Constraint/ExceptionMessageRegularExpression.phpUT5_PK %{QzEPep[I Qsebastianbergmann-phpunit-3123601/src/Framework/Constraint/FileExists.phpUT5_PK %{QGJ 1sebastianbergmann-phpunit-3123601/src/Framework/Constraint/GreaterThan.phpUT5_PK %{QtWI sebastianbergmann-phpunit-3123601/src/Framework/Constraint/IsAnything.phpUT5_PK %{Q'YGF sebastianbergmann-phpunit-3123601/src/Framework/Constraint/IsEmpty.phpUT5_PK %{QzF sebastianbergmann-phpunit-3123601/src/Framework/Constraint/IsEqual.phpUT5_PK %{Q1F hsebastianbergmann-phpunit-3123601/src/Framework/Constraint/IsFalse.phpUT5_PK %{Q{0jR6G sebastianbergmann-phpunit-3123601/src/Framework/Constraint/IsFinite.phpUT5_PK %{Q㯳c1J sebastianbergmann-phpunit-3123601/src/Framework/Constraint/IsIdentical.phpUT5_PK %{Q>I Vsebastianbergmann-phpunit-3123601/src/Framework/Constraint/IsInfinite.phpUT5_PK %{Q$f ZzK sebastianbergmann-phpunit-3123601/src/Framework/Constraint/IsInstanceOf.phpUT5_PK %{Qg E Msebastianbergmann-phpunit-3123601/src/Framework/Constraint/IsJson.phpUT5_PK %{Q_h۸*D sebastianbergmann-phpunit-3123601/src/Framework/Constraint/IsNan.phpUT5_PK %{Qɭw-E ݿsebastianbergmann-phpunit-3123601/src/Framework/Constraint/IsNull.phpUT5_PK %{QrdI sebastianbergmann-phpunit-3123601/src/Framework/Constraint/IsReadable.phpUT5_PK %{Q2Đ-E sebastianbergmann-phpunit-3123601/src/Framework/Constraint/IsTrue.phpUT5_PK %{QKE sebastianbergmann-phpunit-3123601/src/Framework/Constraint/IsType.phpUT5_PK %{Q_PsdI sebastianbergmann-phpunit-3123601/src/Framework/Constraint/IsWritable.phpUT5_PK %{Q$0 J sebastianbergmann-phpunit-3123601/src/Framework/Constraint/JsonMatches.phpUT5_PK %{Qx)ZB^ 1sebastianbergmann-phpunit-3123601/src/Framework/Constraint/JsonMatchesErrorMessageProvider.phpUT5_PK %{Q 4CG sebastianbergmann-phpunit-3123601/src/Framework/Constraint/LessThan.phpUT5_PK %{Q2/Y I 2sebastianbergmann-phpunit-3123601/src/Framework/Constraint/LogicalAnd.phpUT5_PK %{Q?I sebastianbergmann-phpunit-3123601/src/Framework/Constraint/LogicalNot.phpUT5_PK %{Q"0l H sebastianbergmann-phpunit-3123601/src/Framework/Constraint/LogicalOr.phpUT5_PK %{Q3n@ I sebastianbergmann-phpunit-3123601/src/Framework/Constraint/LogicalXor.phpUT5_PK %{Qt`bQ Ysebastianbergmann-phpunit-3123601/src/Framework/Constraint/ObjectHasAttribute.phpUT5_PK %{QFgCt5P sebastianbergmann-phpunit-3123601/src/Framework/Constraint/RegularExpression.phpUT5_PK %{Qi*4G sebastianbergmann-phpunit-3123601/src/Framework/Constraint/SameSize.phpUT5_PK %{QN0TM Asebastianbergmann-phpunit-3123601/src/Framework/Constraint/StringContains.phpUT5_PK %{Q !OM ysebastianbergmann-phpunit-3123601/src/Framework/Constraint/StringEndsWith.phpUT5_PK %{QnGe ] sebastianbergmann-phpunit-3123601/src/Framework/Constraint/StringMatchesFormatDescription.phpUT5_PK %{QFhO osebastianbergmann-phpunit-3123601/src/Framework/Constraint/StringStartsWith.phpUT5_PK %{Q75U R Msebastianbergmann-phpunit-3123601/src/Framework/Constraint/TraversableContains.phpUT5_PK %{Q )W sebastianbergmann-phpunit-3123601/src/Framework/Constraint/TraversableContainsEqual.phpUT5_PK %{Qx[ sebastianbergmann-phpunit-3123601/src/Framework/Constraint/TraversableContainsIdentical.phpUT5_PK %{Q{( /ZV  sebastianbergmann-phpunit-3123601/src/Framework/Constraint/TraversableContainsOnly.phpUT5_PK %{Qsə$I sebastianbergmann-phpunit-3123601/src/Framework/DataProviderTestSuite.phpUT5_PK %{Q6 sebastianbergmann-phpunit-3123601/src/Framework/Error/UT5_PK %{QJD -sebastianbergmann-phpunit-3123601/src/Framework/Error/Deprecated.phpUT5_PK %{Q u]W? sebastianbergmann-phpunit-3123601/src/Framework/Error/Error.phpUT5_PK %{Q"oF@ Hsebastianbergmann-phpunit-3123601/src/Framework/Error/Notice.phpUT5_PK %{Q}GA sebastianbergmann-phpunit-3123601/src/Framework/Error/Warning.phpUT5_PK %{Q: sebastianbergmann-phpunit-3123601/src/Framework/Exception/UT5_PK %{QZYjR Vsebastianbergmann-phpunit-3123601/src/Framework/Exception/AssertionFailedError.phpUT5_PK %{Q<߆]!S Wsebastianbergmann-phpunit-3123601/src/Framework/Exception/CodeCoverageException.phpUT5_PK %{Qp1] sebastianbergmann-phpunit-3123601/src/Framework/Exception/CoveredCodeNotExecutedException.phpUT5_PK %{Q!L G sebastianbergmann-phpunit-3123601/src/Framework/Exception/Exception.phpUT5_PK %{Qݘ,X 6#sebastianbergmann-phpunit-3123601/src/Framework/Exception/ExpectationFailedException.phpUT5_PK %{Q)R2Q %sebastianbergmann-phpunit-3123601/src/Framework/Exception/IncompleteTestError.phpUT5_PK %{Q92V 'sebastianbergmann-phpunit-3123601/src/Framework/Exception/InvalidArgumentException.phpUT5_PK %{QU0Z A*sebastianbergmann-phpunit-3123601/src/Framework/Exception/InvalidCoversTargetException.phpUT5_PK %{QR+Z +sebastianbergmann-phpunit-3123601/src/Framework/Exception/InvalidDataProviderException.phpUT5_PK %{Q12^ -sebastianbergmann-phpunit-3123601/src/Framework/Exception/MissingCoversAnnotationException.phpUT5_PK %{Q]N(W U/sebastianbergmann-phpunit-3123601/src/Framework/Exception/NoChildTestSuiteException.phpUT5_PK %{Q:t(I 0sebastianbergmann-phpunit-3123601/src/Framework/Exception/OutputError.phpUT5_PK %{Q>G V 2sebastianbergmann-phpunit-3123601/src/Framework/Exception/PHPTAssertionFailedError.phpUT5_PK %{Q9d'L 4sebastianbergmann-phpunit-3123601/src/Framework/Exception/RiskyTestError.phpUT5_PK %{Q=@1N i6sebastianbergmann-phpunit-3123601/src/Framework/Exception/SkippedTestError.phpUT5_PK %{Qf4S 8sebastianbergmann-phpunit-3123601/src/Framework/Exception/SkippedTestSuiteError.phpUT5_PK %{Qi&L 9sebastianbergmann-phpunit-3123601/src/Framework/Exception/SyntheticError.phpUT5_PK %{Qӏ1S G<sebastianbergmann-phpunit-3123601/src/Framework/Exception/SyntheticSkippedError.phpUT5_PK %{Qit.] =sebastianbergmann-phpunit-3123601/src/Framework/Exception/UnintentionallyCoveredCodeError.phpUT5_PK %{Q JcE ?sebastianbergmann-phpunit-3123601/src/Framework/Exception/Warning.phpUT5_PK %{Qkt=A D Asebastianbergmann-phpunit-3123601/src/Framework/ExceptionWrapper.phpUT5_PK %{Q#9dB Fsebastianbergmann-phpunit-3123601/src/Framework/IncompleteTest.phpUT5_PK %{QiE_wF &Hsebastianbergmann-phpunit-3123601/src/Framework/IncompleteTestCase.phpUT5_PK %{Q}#+R Jsebastianbergmann-phpunit-3123601/src/Framework/InvalidParameterGroupException.phpUT5_PK %{Q; Lsebastianbergmann-phpunit-3123601/src/Framework/MockObject/UT5_PK %{Q? Lsebastianbergmann-phpunit-3123601/src/Framework/MockObject/Api/UT5_PK %{QF  F ^Msebastianbergmann-phpunit-3123601/src/Framework/MockObject/Api/Api.phpUT5_PK %{Q8q͕I Psebastianbergmann-phpunit-3123601/src/Framework/MockObject/Api/Method.phpUT5_PK %{Qψa(T Rsebastianbergmann-phpunit-3123601/src/Framework/MockObject/Api/MockedCloneMethod.phpUT5_PK %{Q!O pFV Tsebastianbergmann-phpunit-3123601/src/Framework/MockObject/Api/UnmockedCloneMethod.phpUT5_PK %{QC Vsebastianbergmann-phpunit-3123601/src/Framework/MockObject/Builder/UT5_PK %{Q}"O #Wsebastianbergmann-phpunit-3123601/src/Framework/MockObject/Builder/Identity.phpUT5_PK %{Q, eW Ysebastianbergmann-phpunit-3123601/src/Framework/MockObject/Builder/InvocationMocker.phpUT5_PK %{QX  `sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Builder/InvocationStubber.phpUT5_PK %{QaM bsebastianbergmann-phpunit-3123601/src/Framework/MockObject/Builder/Match_.phpUT5_PK %{Q}kCV dsebastianbergmann-phpunit-3123601/src/Framework/MockObject/Builder/MethodNameMatch.phpUT5_PK %{Q#AikV gsebastianbergmann-phpunit-3123601/src/Framework/MockObject/Builder/ParametersMatch.phpUT5_PK %{Q? K isebastianbergmann-phpunit-3123601/src/Framework/MockObject/Builder/Stub.phpUT5_PK %{Q Q ksebastianbergmann-phpunit-3123601/src/Framework/MockObject/ConfigurableMethod.phpUT5_PK %{QE nsebastianbergmann-phpunit-3123601/src/Framework/MockObject/Exception/UT5_PK %{Qi9_ nsebastianbergmann-phpunit-3123601/src/Framework/MockObject/Exception/BadMethodCallException.phpUT5_PK %{Q}-Jw psebastianbergmann-phpunit-3123601/src/Framework/MockObject/Exception/ConfigurableMethodsAlreadyInitializedException.phpUT5_PK %{Q濷+R rsebastianbergmann-phpunit-3123601/src/Framework/MockObject/Exception/Exception.phpUT5_PK %{Qt?i Gtsebastianbergmann-phpunit-3123601/src/Framework/MockObject/Exception/IncompatibleReturnValueException.phpUT5_PK %{Q"bB4Y vsebastianbergmann-phpunit-3123601/src/Framework/MockObject/Exception/RuntimeException.phpUT5_PK %{Qp/uH wsebastianbergmann-phpunit-3123601/src/Framework/MockObject/Generator.phpUT5_PK %{QE sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Generator/UT5_PK %{QO5s7;T Ysebastianbergmann-phpunit-3123601/src/Framework/MockObject/Generator/deprecation.tplUT5_PK %{QwZ|U  sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Generator/mocked_class.tplUT5_PK %{Q7iCMV sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Generator/mocked_method.tplUT5_PK %{Q 6[ Òsebastianbergmann-phpunit-3123601/src/Framework/MockObject/Generator/mocked_method_void.tplUT5_PK %{Q 4R] {sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Generator/mocked_static_method.tplUT5_PK %{Q]W sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Generator/proxied_method.tplUT5_PK %{Q&Z}\ sebastianbergmann-phpunit-3123601/src/Framework/MockObject/Generator/proxied_method_void.tplUT5_PK %{Q VVsebastianbergmann-phpunit-3123601/src/Framework/TestResult.phpUT5_PK %{Q1&xmV= ejsebastianbergmann-phpunit-3123601/src/Framework/TestSuite.phpUT5_PK %{Q4ىE A}sebastianbergmann-phpunit-3123601/src/Framework/TestSuiteIterator.phpUT5_PK %{Q'b/C :sebastianbergmann-phpunit-3123601/src/Framework/WarningTestCase.phpUT5_PK %{Q- ӂsebastianbergmann-phpunit-3123601/src/Runner/UT5_PK %{Q8̣5? 'sebastianbergmann-phpunit-3123601/src/Runner/BaseTestRunner.phpUT5_PK %{Q?]מG 0sebastianbergmann-phpunit-3123601/src/Runner/DefaultTestResultCache.phpUT5_PK %{Qm]*: <sebastianbergmann-phpunit-3123601/src/Runner/Exception.phpUT5_PK %{Q4 ǐsebastianbergmann-phpunit-3123601/src/Runner/Filter/UT5_PK %{QċwBR "sebastianbergmann-phpunit-3123601/src/Runner/Filter/ExcludeGroupFilterIterator.phpUT5_PK %{QWpQ? sebastianbergmann-phpunit-3123601/src/Runner/Filter/Factory.phpUT5_PK %{Q/K sebastianbergmann-phpunit-3123601/src/Runner/Filter/GroupFilterIterator.phpUT5_PK %{QauAR sebastianbergmann-phpunit-3123601/src/Runner/Filter/IncludeGroupFilterIterator.phpUT5_PK %{Q͕ J ՚sebastianbergmann-phpunit-3123601/src/Runner/Filter/NameFilterIterator.phpUT5_PK %{Q2 ۟sebastianbergmann-phpunit-3123601/src/Runner/Hook/UT5_PK %{Q*K"M 4sebastianbergmann-phpunit-3123601/src/Runner/Hook/AfterIncompleteTestHook.phpUT5_PK %{Q~FwG ʡsebastianbergmann-phpunit-3123601/src/Runner/Hook/AfterLastTestHook.phpUT5_PK %{QjYM H ?sebastianbergmann-phpunit-3123601/src/Runner/Hook/AfterRiskyTestHook.phpUT5_PK %{QJ !J Τsebastianbergmann-phpunit-3123601/src/Runner/Hook/AfterSkippedTestHook.phpUT5_PK %{Qj3M `sebastianbergmann-phpunit-3123601/src/Runner/Hook/AfterSuccessfulTestHook.phpUT5_PK %{QLX H sebastianbergmann-phpunit-3123601/src/Runner/Hook/AfterTestErrorHook.phpUT5_PK %{Qzc"J sebastianbergmann-phpunit-3123601/src/Runner/Hook/AfterTestFailureHook.phpUT5_PK %{QfTxtUC sebastianbergmann-phpunit-3123601/src/Runner/Hook/AfterTestHook.phpUT5_PK %{Qֆ#J sebastianbergmann-phpunit-3123601/src/Runner/Hook/AfterTestWarningHook.phpUT5_PK %{Q. {I sebastianbergmann-phpunit-3123601/src/Runner/Hook/BeforeFirstTestHook.phpUT5_PK %{Qz D sebastianbergmann-phpunit-3123601/src/Runner/Hook/BeforeTestHook.phpUT5_PK %{QkXM+: usebastianbergmann-phpunit-3123601/src/Runner/Hook/Hook.phpUT5_PK %{Qxᤸ<> sebastianbergmann-phpunit-3123601/src/Runner/Hook/TestHook.phpUT5_PK %{Q>P,I sebastianbergmann-phpunit-3123601/src/Runner/Hook/TestListenerAdapter.phpUT5_PK %{QrvD sebastianbergmann-phpunit-3123601/src/Runner/NullTestResultCache.phpUT5_PK %{Q̜U= sebastianbergmann-phpunit-3123601/src/Runner/PhptTestCase.phpUT5_PK %{Qz* E sebastianbergmann-phpunit-3123601/src/Runner/ResultCacheExtension.phpUT5_PK %{QqNp%H sebastianbergmann-phpunit-3123601/src/Runner/StandardTestSuiteLoader.phpUT5_PK %{QY)n@ tsebastianbergmann-phpunit-3123601/src/Runner/TestResultCache.phpUT5_PK %{Q+$I8@ Isebastianbergmann-phpunit-3123601/src/Runner/TestSuiteLoader.phpUT5_PK %{QKM c3@ sebastianbergmann-phpunit-3123601/src/Runner/TestSuiteSorter.phpUT5_PK %{QIE8 ysebastianbergmann-phpunit-3123601/src/Runner/Version.phpUT5_PK %{Q- sebastianbergmann-phpunit-3123601/src/TextUI/UT5_PK %{Q!~8 qsebastianbergmann-phpunit-3123601/src/TextUI/Command.phpUT5_PK %{Q-: Nsebastianbergmann-phpunit-3123601/src/TextUI/Exception.phpUT5_PK %{Q5 05 sebastianbergmann-phpunit-3123601/src/TextUI/Help.phpUT5_PK %{Qw[c :> Fsebastianbergmann-phpunit-3123601/src/TextUI/ResultPrinter.phpUT5_PK %{QN5Ii; /sebastianbergmann-phpunit-3123601/src/TextUI/TestRunner.phpUT5_PK %{Q+ ,?sebastianbergmann-phpunit-3123601/src/Util/UT5_PK %{Q6 ~?sebastianbergmann-phpunit-3123601/src/Util/Annotation/UT5_PK %{Q%frKB ?sebastianbergmann-phpunit-3123601/src/Util/Annotation/DocBlock.phpUT5_PK %{Qy8 B Rsebastianbergmann-phpunit-3123601/src/Util/Annotation/Registry.phpUT5_PK %{Qvyw8 WVsebastianbergmann-phpunit-3123601/src/Util/Blacklist.phpUT5_PK %{Qp14 K]sebastianbergmann-phpunit-3123601/src/Util/Color.phpUT5_PK %{Qަn< bsebastianbergmann-phpunit-3123601/src/Util/Configuration.phpUT5_PK %{Qx-gE zsebastianbergmann-phpunit-3123601/src/Util/ConfigurationGenerator.phpUT5_PK %{Q8Y#; y~sebastianbergmann-phpunit-3123601/src/Util/ErrorHandler.phpUT5_PK %{Q#!>+8 ͂sebastianbergmann-phpunit-3123601/src/Util/Exception.phpUT5_PK %{Q”) 9 Wsebastianbergmann-phpunit-3123601/src/Util/FileLoader.phpUT5_PK %{Q~F9 sebastianbergmann-phpunit-3123601/src/Util/Filesystem.phpUT5_PK %{Q)G 5 sebastianbergmann-phpunit-3123601/src/Util/Filter.phpUT5_PK %{QCL^^5 sebastianbergmann-phpunit-3123601/src/Util/Getopt.phpUT5_PK %{Q1N: Bsebastianbergmann-phpunit-3123601/src/Util/GlobalState.phpUT5_PK %{Q4E3F Usebastianbergmann-phpunit-3123601/src/Util/InvalidDataSetException.phpUT5_PK %{Qp#.]h 3 sebastianbergmann-phpunit-3123601/src/Util/Json.phpUT5_PK %{Q/ sebastianbergmann-phpunit-3123601/src/Util/Log/UT5_PK %{QjAxat-8 sebastianbergmann-phpunit-3123601/src/Util/Log/JUnit.phpUT5_PK %{Q] -); sebastianbergmann-phpunit-3123601/src/Util/Log/TeamCity.phpUT5_PK %{Q/ }sebastianbergmann-phpunit-3123601/src/Util/PHP/UT5_PK %{Q: C*E Ӵsebastianbergmann-phpunit-3123601/src/Util/PHP/AbstractPhpProcess.phpUT5_PK %{Q/@D Qsebastianbergmann-phpunit-3123601/src/Util/PHP/DefaultPhpProcess.phpUT5_PK %{Q8 sebastianbergmann-phpunit-3123601/src/Util/PHP/Template/UT5_PK %{Q̜bH 3sebastianbergmann-phpunit-3123601/src/Util/PHP/Template/PhptTestCase.tplUT5_PK %{Q-5 I >sebastianbergmann-phpunit-3123601/src/Util/PHP/Template/TestCaseClass.tplUT5_PK %{QbX J Qsebastianbergmann-phpunit-3123601/src/Util/PHP/Template/TestCaseMethod.tplUT5_PK %{Q2KitD sebastianbergmann-phpunit-3123601/src/Util/PHP/WindowsPhpProcess.phpUT5_PK %{QVW 6 Wsebastianbergmann-phpunit-3123601/src/Util/Printer.phpUT5_PK %{Qέ@ Ksebastianbergmann-phpunit-3123601/src/Util/RegularExpression.phpUT5_PK %{Q\v3 Qsebastianbergmann-phpunit-3123601/src/Util/Test.phpUT5_PK %{Q3 sebastianbergmann-phpunit-3123601/src/Util/TestDox/UT5_PK %{Q. A*H sebastianbergmann-phpunit-3123601/src/Util/TestDox/CliTestDoxPrinter.phpUT5_PK %{Qp H sebastianbergmann-phpunit-3123601/src/Util/TestDox/HtmlResultPrinter.phpUT5_PK %{QS!E 2sebastianbergmann-phpunit-3123601/src/Util/TestDox/NamePrettifier.phpUT5_PK %{Q D f sebastianbergmann-phpunit-3123601/src/Util/TestDox/ResultPrinter.phpUT5_PK %{Qű?j )E sebastianbergmann-phpunit-3123601/src/Util/TestDox/TestDoxPrinter.phpUT5_PK %{Qzi>$H sebastianbergmann-phpunit-3123601/src/Util/TestDox/TextResultPrinter.phpUT5_PK %{Q G sebastianbergmann-phpunit-3123601/src/Util/TestDox/XmlResultPrinter.phpUT5_PK %{Q7p@C $sebastianbergmann-phpunit-3123601/src/Util/TextTestListRenderer.phpUT5_PK %{Qz#M3 &sebastianbergmann-phpunit-3123601/src/Util/Type.phpUT5_PK %{Q{d oH 8)sebastianbergmann-phpunit-3123601/src/Util/VersionComparisonOperator.phpUT5_PK %{Qn7J ,sebastianbergmann-phpunit-3123601/src/Util/XdebugFilterScriptGenerator.phpUT5_PK %{Q!b !2 k/sebastianbergmann-phpunit-3123601/src/Util/Xml.phpUT5_PK %{Q`B;% B y9sebastianbergmann-phpunit-3123601/src/Util/XmlTestListRenderer.phpUT5_PKz=(3123601e3b29339b20129acc3f989cfec3274566PK!^0 0 ,ced5fcf7667f5237ab4834b12ae264abd452bf8b.zipnuIwPK P" sebastianbergmann-phpunit-6775051/UT^PK PdM/ sebastianbergmann-phpunit-6775051/.editorconfigUT^u 0D=lA4ܿ3ѳPK P6Fr0 sebastianbergmann-phpunit-6775051/.gitattributesUT^KON-RԊT.̜,2%9Ÿe@2IyE\\Zz )ii@PK P* sebastianbergmann-phpunit-6775051/.github/UT^PK PuI1JZ < sebastianbergmann-phpunit-6775051/.github/CODE_OF_CONDUCT.mdUT^V=6+;\U.AA8 b JIR${_7C-6D͛G~ $ 0C/Y 7j߰-*7 c((6CƇ TBn TozD~vNE P9rќBfXƐ 9WGҥ&?X/ةh2a b?\ى D]r%b϶XǮF..p~_ 6J 2լΙ0&"EX%EgJkt@>NQ6j"o(Oe Vv3Rjs{f[']<,ty̪SѼ@eItv_ۋ[ozA$0P,G?{¾_oHynડI}jn̑QN"0G ^ k%VqO(L^mmk -OA[<3fjg=ڵ\4Jcs^jE OuJicL-sNF)DSV=UXq}8u?@d"D >6gK8sC-ҼDh[^ q/Vm22"O|7#C' -i[E{d0ɜ;X[!ZP94 :n@ȣ9<8B:D2!"m|^238Fmks80VInm Gz!}H4aQl꽶L CÛRpxxߠXaԘ"gj |})(0K"I/ 0PUuEAtuœ\@:\XDct_[C6o$X m(g,o *׍?9rBGCGpB%Z| 7 b!DۂXhqh|'Ԛujcw.\F6~@9? +wUrvmtK gg XFrϤovCP?>??B\:0xKtӀtN>>>箻xPs]}M?PK P01 9 sebastianbergmann-phpunit-6775051/.github/CONTRIBUTING.mdUT^V[OF~Ha+UUS((bc{g.,BJFdg廜D;SԶщ?oEqrr<wMR~cHEtwrD#6:BH⏧˧/瑱YTZQ}]f뒐'e P1_m'qg] kL^ԩ~h%'!FG,~l "BJq33GiNlH4ξ$׈㶥hSNL> HVHsKcl1$& =Սn U=3D3@Qq0 RSOp\v:A ròvn$|yyEI(o#8>NT^-4.r2~ ݂u VAc`aZO❋]AU@' !-KH,nК) @ d ΙuFst>42@Ūk9>w}K-nh5&0av6h!HƀPkvRY`|ff/@qup&zHY(FBr d.ziA4Jd1~`sXB49ÎėA#q45i\ΐjp-H["#0M f篙Mfsjc OtxO3)L.y΄tdJ/R#2PDBӧ:{k8:\ fAB*Ra8U[zZ0}X++.Khe6V| wϊbZAw}NT $ ɩn02DAjRdWGcH"*rw븎q5$&ߡݻ+PL|" FBVip򠸙+)eQ-o l!bYMEJFg]H"ZsroD}BUm)$(>3nFcew<,[;4DUBb.ϺFqꑔnq ,:6M%N/e,:e"āVg|?^ptoYN.8SxOS7g:w©4*%':LN_PK Pq=A5 sebastianbergmann-phpunit-6775051/.github/FUNDING.ymlUT^ pgDH*ؿwˠ9 omv/OΦ M7)}gHSPK P9 sebastianbergmann-phpunit-6775051/.github/ISSUE_TEMPLATE/UT^PK P5X sebastianbergmann-phpunit-6775051/.github/ISSUE_TEMPLATE/BACKWARD_COMPATIBILITY_BREAK.mdUT^Un@)rI:GԆC@ ༶'$ Sx?8ۨp|}Lʲ,q 76/+?Ep+v =Zl@h&X֊JT:— ۢd:ūY n"X4d}0äH Bc8Z3{1 <){h7nX-ŸL8أRz OЋ+&=;g=gY̨=ǒY6]a>'Қ@CY>Zlp J:`-Up P&`374G3CH%DgUh0t"9n7p1R;/bS5E#x@,K{a`.6BwE,ħt9oQD]<+Đ@bO;v4U^.TigLL+_=|=\s< >kK;o [K0v? wP/.+yKINRpa[< I=x nN3Z}sJfJYeC}۝'W&Hh$!A?{PK P*Fe? sebastianbergmann-phpunit-6775051/.github/ISSUE_TEMPLATE/BUG.mdUT^TAn0$ߍAHmϴS\\QG.)ˑTgCeYX~5ܣ#υZR9DyPE4Y,_fVqZkKTpFNu-<) r|6sRj3?5Ay5&bxsKω?;(]]tY\3cm1v(&$ ?x4 I\ ؞ֶ6't1ࢦQh"x /ƍ62FL v?4wdD=2\ΓNMtWC4 m6tCIk31j.#q0em,9XE ֔l,CK 2qҥyq`5\HJ1NSxW&>UXn9"O|PK P@ sebastianbergmann-phpunit-6775051/.github/PULL_REQUEST_TEMPLATE/UT^PK PpfbO sebastianbergmann-phpunit-6775051/.github/PULL_REQUEST_TEMPLATE/FAILING_TEST.mdUT^1N0 Fc'^! bۺmIHJ'+r\ ,#?=1to/#묟Y*CO` ŏ eiqQrԳ-d(yU\T]]k9|dT?u^99^9e<„{V "* ~\b Ixq gUPRb/n;g[SzHm%#7?sԋ\}dJ31(}"?,jc4M<~SN!㿇1PK P!F sebastianbergmann-phpunit-6775051/.github/PULL_REQUEST_TEMPLATE/FIX.mdUT^Ő1N0E{s'}@P m((x[^{mn в4Vi;ۂ'VfLgVϘSil˽ fPEiy5L%؄oBFIFQJ)"8<^g3,+AHqrNvx@Bv/'$/Ƀb8\.7;K@_c讝ؔh^e,&Nfiӌh"ȝݽ^}PK PNN sebastianbergmann-phpunit-6775051/.github/PULL_REQUEST_TEMPLATE/IMPROVEMENT.mdUT^E10{byХ<Gvd_"x/$h޻,ޯ'ieabV'\fDYV1hA;S{7J:c9J|޾veяF-if:B5>\ݵy;PK P _N sebastianbergmann-phpunit-6775051/.github/PULL_REQUEST_TEMPLATE/NEW_FEATURE.mdUT^M 0D{Oq `#Bi((9?DX9].Idāv 4y <"ȃhc12)/r$h/h68IRhF;KQ+}}Ln]' =WLA't^ң(Rn4WeAS¥6 PK P4 sebastianbergmann-phpunit-6775051/.github/workflows/UT^PK PZp^5: sebastianbergmann-phpunit-6775051/.github/workflows/ci.ymlUT^XYo6~_AKNS ډ:ǃ(D*%d*EL,\ !`)S;_;,*ArPHN\Y2(HJ,Q3>gje 4R''8Y3غ=V2WL8FjWJ A@/fQ33Tf@o/KB(e5T ]䍃ZUCvlEXH̅| ͛eyj:S^1֚3MJNѫ˳S)2ǁ?W)\Oʅ:WC\d2HxL1;i.J7rOлQ)vi^ru+S#qޅnjZ`@wq\dHihnwsU,ӡS jp 5ٚ>r*LI2e"7Sk;ڼާy̔_x  vtw瀤ăז):n2#^Aj60H=7*<7%"MQ9'D`#q*^I"q? TRϟ9WnY,}h$I̸HL*:|OElp~p~}]f`7Rx'~C^+Za=3j13RY-z7Q@a:#;#-I=F^~U&OIi}4&`s 3(P00u V׮6w-rŨjH2;_]˳8F=D{Żˋ'WWӓ㳫(zdc iGDA'Ӌ/ ᯛWu}L 97֧ '7 fEm nF;}ޱE䠾x*`Lq᪒,A!?;h͸Kce[ziاnpa! a#v~m@hێmن>x3QŌ=>\z{}ϮPK PU, sebastianbergmann-phpunit-6775051/.gitignoreUT^mAj1 E> gH%ˁ$ؚSml$Uڄ¬$/=q'NeUF{GiͩRQ拢K_Ed?Ųh}W2W7`a? 0&*sy^p8 .:/jV*!RK>YF-+w3E*WbyTb4b޴Ӵ9{C7xSPK P_=V. sebastianbergmann-phpunit-6775051/.php_cs.distUT^Y[o6~CCb$d V`肶# E$;R6:Ewn`j83Vsf `~ڀkMrj^,guXNe UO.O \/JW6:[QT3=\j@_Ǜ|XَjMMprTkn;a5ܥ~xrs˟A}럽{4P gv[3B~ꢪȂ-1h!~5 7Vr1p>H'Y'FPcBS,ĝ2/|;j[Uc,6捒-_|}0|q54gV0 +IQX.T߃uuu]tCnx*!^~_OԦSK.5Vib~iByzUëTgeH{T>oZD?sOKbR zP5Zs0%-#deE*OZx u9oO%c8,+m3GR39?Zgz{91t 샰aXڧq(vŃPk!q21 #U݃T> e#a/Cc`O@2?G=4jdD|iW2mUX%ah'TNϵ,܉O fAN"EnO~ s}ڕ:rbi#- G-V- }|DΏR2ɤ{{6;2';jAe]pZqFٯ/ަ1m01w 6k#(W9#Z ]A֝`\F S0]{NoZGF%foҎ}>#x̴ˠ /79Suͭd .+tD/y佰&ƒIn)Vj;8$_w\Dx4ɫ6%($:T}`7sD0af (zN(:ի ]P! 1h4k݅%=24O5w4rCeC5ΈH~OWuɶ{csՕ]9rN +hK/Y*%E4q%O / 4)%6  /n0Z1ѐr>vJ^B8:l^>]1-<g>G)m7Vh db햌;TN8bgCg g K{&CBJ"xbڄh9G2ܽ]qeFdh9BGP-fw3jG&`[yѰ>ma Tb ZT֧D:zTZe'Ӆ;ͣi0Gu?}/ W )> "1UNaJe5CGbMxnŞP)UoߥKRiTa8.Y0~쑮%-v.tD;?FA@^xpSyh9-L[2yDw4<ػ+zznonml6[̦xy58^ӫ=  >οwߍmg/hsv66dsv`s |j~zhhB &=ăB$pr@ fY!!x*NFS $G.5}BI%x]%%C\5qt>ĥv2s~}p$@YLXxp>:=}K ;%SBQok+ԇDNP:%|,:kƃIR1!TXvL\Qeo[KꣂUXx;U*<TaJ2r0zĮԦG*(^F{ݴE4C&櫔?+WȧwtZLN],,=Z(Cҳ2蒨C/*}Tنx<5?!ơKcG 3! pv`DX.˰ 5M8g%Dr !O}Ę;\]oOx Gu#r9%Қ8f#ũA8߼y8`o_rD>g>!/C 5kF5eHD=mO4w`~°MǾbwyb^@8kB:[UD) LOuw>ʿ9R:fPxgpJld6NJ'}øh%j ,J}x[B#s"{%7 >(ϣpξ`R%rG1w/-! +jvg&^D7Ajq2{uF,0i pآ7oV;-1vTc45n*fVv޿RCOKR9 |5ǫS-FZ0; ]<eޖ y?XZ@?9_E2g _b^#l:T3Պ{03^?/r:ĬҔ%Z~VLi e[A>b(nτ!3÷㗪^jtZ zS Z;MsR"%Z:B]1ҟow텍4F:=j%F, F'kZU9x2m.}W {7+vnjSw-+BPV{HguqNv"t톲{cT!Y:P2f9UEFTz]V!T{ͦ= X\@n#޾1z* ZH6(j_8Dv=l|;::?n,]gJqRw j /BfdZ"٤Զijn$)eDvW=R Q^`yķkrѴ\w) lXs@ ,D`{)-UWX$memUR(-V -~,E$ȯ)3aá*{OμN"t*@ܬ.q9_3!vml1-&uХ9zw8Q7 ]Iv|E!>PU\NK;YS._.իK @>sҫPʳVU\IF fFkvz;eF͵y[DTfhr2N*q -W6Wc#uU+"LL\){T~b0-Thm9ARs3i02B|Ra|I<$M\-y1U|>+,TlM;IHP/]̯eL)ˈ >:dy'LzT>}hDsFHd¡\Diǭz [ 7or(ͯs º:}0_ѷ,^0Ft_~Q,**a]qi|އk/C4~\RPJKġ6`.3d}a3˦73KEܼ!*ńUznnʇѤ[zYϔPn9,Q,3IcdFJTxwN6nl>jeFe$t]4&9kq9ܚ̩eaZzv|xh2K^J^TN ,6$ِw蓳'*NoPK Pݟ<e3 sebastianbergmann-phpunit-6775051/.psalm/config.xmlUT^0BI `!逸;V8ڣ;kQe6Ia8|,kBAp$ DLHr&ЌZN7RW\)؋'y̨#fT :pcHPO9"WIR)*> T3qfOw'!^hѰ'(m vmJ=q|I9|K'0l67.i @waHd}JwF"YYITi4 'VA7.] q/]xx?̕N-%؝ 1:cO ̕JG/+GUTN+ٛV~3Gҽ{g175@o{m=*|Fj? ~/д6ڮΕןlz>hmQ+%E\>5N Jb2ۦ^s7O}1Z[sW]|dtPK Pt(< sebastianbergmann-phpunit-6775051/.psalm/static-analysis.xmlUT^Mo1 ऽ! Dm z5z, R`N~ly 1~y̞^vk c?[]ugh>=>>_,!Y7Ɋ-@r ~[ђ©gcR+!$t6l+D;}`P^A7:J)ڶ!2*&'hnY[ ƪiSU\7;G<-$˶ DFBcv pAFmsi;! 4'^\KNy8f5:V蠿Uz'. j[8dvh_`4P.;e|#Mk+p{)ЧArXp1k"쫝⻧v5#0[z=fq; 򆯯WҩZ?=3Co\i?f6PjwrUAPK Pz8V 2 sebastianbergmann-phpunit-6775051/ChangeLog-8.5.mdUT^Vr6}W`/q'D]|{Υm>D($${,%:5ݳgwH\-) eħw4ʋt$Z ciykc/hNԤI:j Y(l,x*ة_(' ^LNT )]޼/Wi[]EU+JKH#r:"zb8zQox6T$/hZֆψKow~W8mh@XAn"an^a2?i0"nNazŸy/7qsib- hCyéVSD.Ŭ>Y@{4otfRo0 ܊xyB8 6h/T'Ӆ꟝ ^XѺfpe1 -)|X61ƱC.Vc+NLq&p?]| l fh+oq<#O4ay Ju+{@G*,E^X/Xk?xÃo^qoƓ)ܡӿ>/jgVN:5-g#z xq6(Mܭ̸v\u`ҩ}]!+ai$2 _Yk '| Z_YҮξ5HPK Pj20) sebastianbergmann-phpunit-6775051/LICENSEUT^T_o8z}=$,$k;ey i-%UzP oFT\`,Ƿ==>?'ko'uD F;v3ƔF;hN7Ock {?S.<?]@hhޅ`;8uxM u~5Mz0GIw4tHοPnƕ.zCz;~nBx׀d #APCh'2B;0]"uz8*;4%E١_Dg@?NH;K6<ء[Kbz,P%AvNdJ,LG&ai6MكYI \ W\Qf"J@ZV[%+2τ o 6)xRBk(uKCt #N@i^gX&Pr- >3eImrksK| i b $PqedZ\AUV&us ّģ( s"dWZ\y. L*rs91G*J:pM.Z|!kDkK"p$XdAsmeYf1g-ԣLRǰj-d0<#&y^kIt#+#ǻTK9f1ܲV1Rm 2'Y WgLSKi=C> xB,sE*ZFjqȂ#g-Nfa8H ٣$ GeMbdPK P:r + sebastianbergmann-phpunit-6775051/README.mdUT^Uo6,C;rIK$Ԗ5 X#K]CE4*cC}L3]" @!-Xb,Wx.K[vgBFu$oݫ_h;sgW O+|>wjS[ŒwR˦kqT0^cN_>|7mv< >ҋJ F2]FzRfy K#NOi9q;1/:x"y&|٪EZr lZNA࿈+ i?AFIrp7E6u$.ʢH!: [ M/>cs+QV(Jϝ#ZX"з3 LLc.%uPt+*D88Ÿ _%H$Fb܈a62Z*5]4]a Irl"k#PDgCRwGQxn-7¿o2"C#FOr9.IfPh01ȷ$|I(iRW`&=r hq \HIL+ 8:gU]1if6.f@|Rj˷EZᘖ_ͦpϐAXJ¸)N ܳ@:2F"MI68tqwR1e҄xE!2HG\=^s`j0m7oJ6X|icOPK P U+ sebastianbergmann-phpunit-6775051/build.xmlUT^\_ϧ<ףv^&@[rwER hyK*I KR?%J{Y݇ݵ<f8H|y*Hn>~ /dBan7屬($G{XyHV&Q̨o7J=(ABO7_| 9KJDsEKL#I} 9B ęJxe/ XQ28 nsFM"㸔;EU& <\=̤A%9淛OAԿEzim"r†q!u(m @L%܆Ь#+X*ABZrTB. m&MP.S]CM-ΣXtŏECX~zKR&Y 脲D$|A2FDd1Q}pθ.P[wpd8 Br]^msZɂ Z `A!sv3uD xǍ(4M{^MMy$Xd<0K6hF w/s W T (351)6- S ;켴ʡ\S F3Foug.դUP URÝwegqda Ls(D0`E"vzp֟4P?7lo|s^RY2MRgh_ܱbb%jL H'MJ~"xd1H# Nj鋭+$cm.J]C|tY. Lo)[|&ho陥j.+%aGrT@wP;&l ( 0q]hw`Tm Q>P+!vȑ6}MȫoU͘^GRUJ\ K188 3W$BJbHCʙ' d$avyN/霏㐟?E_dMlE\ecͰTf͉_20J0XXs./#Uz E2 p*iO~cSC_@鵾etsTwµ=[V͸?ΛjӈZ@G^Ms&eEYP S>z.pO%yw+ia=ミhd~ݤ4Nmd%P6qŧ4]DҢ: ]4:?kTH۪kvQI`}m$S\?}= 9zHi'J(PQ}Mȉ;;SAnͳbog3Ka7%>QZ^9zڃEMb}y̪^B&3@W?WkK{a. &i+a'pS;CF}w}CPK Pvwr3 / sebastianbergmann-phpunit-6775051/composer.jsonUT^VKS0+29vvZ`ZfhO td{mXJrH߻r ~{ד9a0e%NMt4TpYBf?AYEuN:Қa\I4D۱NU$T#eÏsHךfC]D& ߩIc*˜^CJ0gWJF8-T{>1X|W9FJ T0풚ILd9b5I:3KH`jS)Pk~a`k\00?vv8[VOX R3Bԁ6r̔cupe|/Pj$Q&䮃}CHPx5ڀ=1D*!+ȼËO +c;1xAkl]YΎ&kb`_.C(&8Wc=2E*1cЭ]na=EJj]b+gLa洚6PE28 zzzAcSvQpmn~[dm9M9QW*>04< Z3!VYW1u>z8Hn?WAtoǗ\wW;2hl~?]͔Bb_ +BxVED1VQ/;Ct?p1=inZ0->0'r&7:ܮH'3a1s%q桝tU idi!Ӛ݄Ir% QVYYJE$%@IcM :lJ~]jܘRo?5[ G͓=5 $e%P&?2JZjA(RVL44JkoYcYY Jj3TVviVv#g񶂟T0pI>(m5xk׵GmCƟVwxjȥ>W+jɬݞ3.BPK P>+- sebastianbergmann-phpunit-6775051/phpunit.xmlUT^SN@)a^LMԘ7ndg|{Z Vlf«vSzP[`.<0ڼG"KR\ųZW1E5Qi{|y_5lr_(3ox01V-ުzKb1!YKH."Ar_0*[ZrԔ{z_Rȱ.{L(+ކ0ų` I'J@[xԾVuuKPpGd7!5k.5W91Ct>riVTqexʍuɤ66CgKt$3/}$1NNs?a춯,5A+E`.}Mo2Ko a+GPK Py[= B- sebastianbergmann-phpunit-6775051/phpunit.xsdUT^\Is8WtSGr&TLg\S!D$@[_X$J\E}$㘒ŋ"@~}⏷~7F(|7{~H߬VOOO˧KvXNx,?ByV<)DWsFiFXhxq$^THga(eks" #HJ@Jx1]Sm%UCA,"c(\V7-*ʢ4b(c-qHG%Z~Xj28DJJfH4F{%V.T.gePWȥ!1/Ǯ\4H00cM 6G5FC$=i_ H–Mڂ~h m}>aȂk%_!y&MZlS"(!J>  o2Q0ax/өL( _2|Wf)|!3 *|Yl( }nIs7V[s^JZ)(ڡl m=J;55/+l:ԽII+N y刼k%+$7_^.RwrE业X`kNwܩ&֭V*`Ѳg-a$f-{X@TZp{c|*d)kI`,☚С0f-W6'ϥhW*8U@,#}wwii8zdqIZlDnG1JTgvqmzZ[Aֵ9_ʰc.=xnbx'f@́?auo%ǪՊ qX;ߌXW|*{aHy7ռNIHdfyt7wd/=8dR]/t;e1`?fRDwZZ/rz^_2r7 >z?}iԿhg'Ωu j$W0@8G/")VN𵂴d2G\v|HN8btG5Oc|DWEgV.I|5]tMeI]D@ISG4vߜZ9NV>Vܽge~c&FiK[ Uه]HgNR -לb|3g&Z&eO5i ~El]m߯;1#$yBed+:S-];"z$^'$/RQ9LICs?UWڮNOu:/=4%@m)}dU#~Liż<@>܆To[jr9vUP721eCoͳ1 Xr޽,;Y]=gg)ל#`fYNgqѩpɭONDm9MO-I#]~ :R-PS UVPf\kkSߌktX!K?th ܝ,R!RU3`nW!11Awˡ##k {UiL<8jyUHGN{2 2u5Ha9to?0&G} ?Yt诀s15I هlP=]Bt ߕxؔNV ӳo&>bG3?{i<ӈ Ћs 8e \s]Slb0ö{iƛl,Awz lʑaPu~4Xd"ErZ yl s0 )xiuE}zG"Ko!5 O1kA''qgm@D,D.E7BUfUQw?5w=H)%eVG;',qUqy!5)12uУ/A>$L;| ƓNjHj8^#sa&2Co@vȝ>QpIԩ8~Z~D մra9l&--l}O:d"!"̵]* /n:ֵ8lzKժཱ΢׸-뉣8y} \}(ozcޢ~Z[|%+.a5neya㖅cNtm[0QN;v:^/%g q:ơyO﮳\p#MnCp}m5Ҫk8Vо{i2/SFpxoPK P& sebastianbergmann-phpunit-6775051/src/UT^PK PQ3 sebastianbergmann-phpunit-6775051/src/Exception.phpUT^5AK1+xnբTD 7Af`6 lߝxy{mKaYF>eooj`34Bݻgց233sSY=Zn8uUױζwuKKċLH*{R EJ#}H,  }om69C2!Eq aF>s="gM0v?46sE(\yEwxwh/ Ki:8t C'Cg A( =g6%.<{ 7v>3p$w ^<_( bwI4si>o $wS¾x:'N$|s <ضE v)`؝N;S7R;W1qPOsv |8bYq e1 'oѺ ت,hswjԝF6̀h״?(Q ȪQ`LjsKjxIaj*4 8[59bFox0!6~Rς1 ?o|h1o|ڷ%i|q?`JK2=8 8]+wW?1|a{F?~)uI4Yl9 L|yI-[[gx2~O5s67Y\ (ˤ=Co%!ܓx #øw ve#=qCA+ߧB=*'uн> <gD32FZ3F1ċ=v)"64Q٦t$ >DhЎƆ.򪷼I"S!j*|w(p.'BVAܧL{k$ن84rh{!oz7^t PvO|g;X;y;8p{G;3Ё|At=6t<d9trφaR6xCv۴5&2`h/a? G ?L~8+ $z!=p13,:=IzqYEsⳔɝ]LA&d.s \# XLGB ~vCmN]L%*`8! A#ry#tF٨:geϟqȟYVh?'Ҏ@^!ڳ1x"AoZaAA3 < NIFMS"mqh:%ǩ7"1Q%㯅TS  p *dEVB 'U K Ś|d{D)cJr՗_LR)c^P:Fa̎o\9s*Wt * ! &.Q< 78ǡQdBFce500{](sEٚ`E=Q"tD̮/ڬDFRl3Q7Ь4Z/cJEjoRduk@U0XaT=NL]Dm?+D#n+^A"? mfE17-tYjqqN]\qho($T a/D\y69dsT8i)FZVmBq&ChDvv QJ/t贇 fe{@3GeRiUG. zAɻmҫϪ2WoƄUMPG޸8,x EYF!dasK/)ԻVS.:ОCwC*#E]5#ָxó94Qo4vg*xL~~̦gٗ[q:XUX7KFּ#^cߖ/JP_TiĠQYVϟ{؆I .(mxV+SY 9^3T+uSW_!IRM%87PDj[B[a̰tQоӕYu}BqEsh%%h##U? YLcIo|u+f<;hP36t6Qigʷ' ΗsQHU7m90LeQ~B~eQ[i9T],G:TdHi>6 +aTj+t󕇢cIsGbHz%sށ=MX'Ej՝-b?zl?n@ш^fB5b*! kҌ[@T6_Y#,M uS1^nVԸD)O^o DyFny[p˱ KXJƥZ5hc װPhmUZ譚4\4ز|nn ش[霚1Z k+윅`IW.Yӱ1ecSomlqa7jr$TpטdKUnXMSA<.&FB{nn⪌A*dz H2wNz.yLWKy%迱g3݊%HiݷX/ r!xӖmⴖٵ6i:nMXgx&d'N|1.+OF|_>'KDn m+W4(ыbug\_KW/%oYnAp;&/ݔmŒ xw5ήjv&||^f_q%s,FxlePdt&Lڽx+#w+(a\cզ魀mď.b3(hT߄ Unm=hFjߣ*pE6*2iH"uv1C]KO؞!REۂ5`!<|UhM{j;?/Peg u[ʖf7B빑JTՆ5IY$[@0TTps hwY{6oiM)makw!Fh/}X$qo ߈un0I QqݲÖJk?'=p؈ 02M-nKFoP\bwaЋD~3Ǹqq*]7<# '=ptޯ &Y $2sǀo54\cA . N|kB Z52k Ѵ\BzUBlb$M˸bú%ʸUNSzYVU- աneRA 8"] Vw<NsI˗#li6P]Z UK掙n+ԍ֪]dF~=j,K?؀8 &$ =:0g5K_\֋+\~9Vr&lUk0Ex,sa9CęS|iaԡ!mgVuNܮF% 4{r{XU?j }YqIUA7Ȓ,yLYŴmsB/ISUqmbz9čp"y[( xjAsz`n3T)AKLqKq8گr.gOqW_OB,svh[ غ%y-UnMbjnF jķ$P%Oyalc-ʱȿ,V\K!H"KAwN0#tr6 F{s)4 ɈkoR @+¾8ЉϦ  2Rhmr|Pm\v>䊪 e;C oh; )edh7R~-.*pE (@U[}bzAl9Nw+"AMtI\3 )b)oȰUV^ӓeUuZ{;O^ 'Wt5zUq8Ñ; KdN~zlA‘RCv]`$Nbe[)TrנI"aT_.ZSiڝ`4q).ek9ۀ6nvq6NNhޭH՜tէM-){ ND UïQ[h5b9oy.nLxq\(Vc'Wo/O%Z9.(G^GY7/7CZj3)x*_ke<^(PǤ^nN#ώ^5jS=^m1/ Qd^7/'Mmz+kbL3}O'zT<Cӄ. ̴<̙BZBZ[QooU/ӧw˘ Mer2'yV~ 8o^ߪ^Om-hZf@O@Pg+-q2aY/XNUyn:vN{7LHIHsaQJ[a-Df@5F*BeoPТ]2Z$^+Jyl 8jY䓔,U/-Dv{nS%h/I4) *O_Eb: s,` /L^6Q?B F`EͲG*NRz̧C*#IN*k<%$/S)/ XP'>Oߤ5 ]@ӨȤ/xF>x!k6v,j/zQtݓ z #$KW9TdX,yϐ(rW.vnoi8!tMnLaݎ7pA8cQgئh,K6Eos(%SVmй$hJ$ 6gnh8?^]wlyQ-;ŨBb{"flҗ/z(6Ѓ}B1IH>00= [t[$VՃd=g=ݺPKh*܇.L۵YVB&ymҁs#mWM8 Tڸ&RӵOҗ%:UI89,IiI:+ΕZ̑,H EH܂YfwASN%eF7۬j8W6|,6jeS?؟%4P4TprȯnߚZ=}8-F#rHy˯*(E("xGRc)6ڨyҷ[_¿ ƮOPGG[>-66н:*x^z,x?{-zkvC9ŵ-l,Ϣv`Y&V?(n|>2WLrbBvH-Am,rp\ӂ`KMǙ8ɄOtMYVɫ@OҿX w&Ҩ Q7|PZvcb6~}HىmbhheQ+@ʶ$e-J!,L"V.؅?}H0<ڌ6+E\E3z1@MO1Q[6I ߑ+Cz??K|gCEZם 4vq˳{5אyL~᱖WG-;ߖLA墳YuNqᬆ|ט$Ή{Tg!ʏ>g"}P'E?$T~ +(J; ژ: z1!oEE;dŷ" "A'G=i m;)w?z^O "O~ϾYËP o%z5Eسz7;eZPw >- ceAZ/>OkK 86eVAh~wqDۯbĜ0/5(N0!=+kzdi[SE9O;9):lo9wec2dlȧa%Jf l}Fޑ'̱55w9Po> $E0t `Rp%9(D́7v ܏$؜Г XX>' q9xL"~R[U%&")H믥wOhʽscvO Gt|]+z x׶88\s?DDt߉- ]$k1V{V7.۬M].ǥX/^O\ A#)=hZ S#6"WpG 28q6k(~¼oXOO-~cLb=Ԅ*9p1P=Q01kJP3Ql)JSa4l:o Ik15XE5YKrR㐯qH—G\єP~Si΀^^Г&#p3Ӱ(ieڤJwҿa!Rϰc]p45^4.0Lx%p MbrS0#PNfnߑDz} "ٯ* =Y"?Ec&Es VmzbT)Lۭ |MU/he@Ѳ!xcY5Pp RCN LvL3H!* S}F"0q˸ ;Pf ~xI' ӗ^ŞGA6/.ͼGÈGp&iyCM?DS2ã=jNI\, :eok,pxv/ Q@Nn}ŜMI~OZ\;r@COBzRJVCFQFٌ x~Ǘ4oXxMz^fO}Y0I~(  !oq=*}Իy}q}yt|r+MKy\67(&I*ÌbCu۞Cu géӇE@"y:Q̆4b/p+ ||Rt44HhHH" E;2">oOg';#dF!(E ;;vƔ3CMSZwϨwgYCǞd  FyKpʬw=iQo>>ߌ~]d{1 .tݧ=[h7ï @^(}`F2FҰLC薷Lq|~ oxͲL>?]hPdA ӗp(P ] xPK P7 sebastianbergmann-phpunit-6775051/src/Framework/Assert/UT^PK P);D sebastianbergmann-phpunit-6775051/src/Framework/Assert/Functions.phpUT^][sܸ~TqʱS'{IR-mI>j`4< %Ӹ$$13b l__h7]Fs*z_<٫?~}\&eHR|}z f?.*epqBY}Sg93$/j:M8},elI*yBUg/#xv{7gDŽm]DUth\+]BN*^koqm5ʵΏEITi@4o$ͫC܉,5zM0hR[7L>]S /1|+3 :YkgxFzwE8\A_5~_Ewy2g!cE/_~"|Qq]ΞTJ\;Y7@: ,J겪n˯^}}2WKJrW_OiåK xa*\k| 3Q6W 26qj3qeysfyK ^3&8#L`8yL2)~:" !,f3aaS 7$%*bLo6IFeh%(})AN4V7IUx6%b":FiN2Ȅcs.{3i\fCZJ3_`=rz?F2({SvUMx.Pk>9NǴttu2Lט5d!J"\-j%3!A gyHz`uh~H#2P#ER).Af>vu Lp!ȩ mc:ɵh [>fP -ߓqBMllyh7r8䘶&RW5QGb"Œ+1OӕSjʪ{K[%ٯ]kKt]]A,ɪF\="L!"X>MWO3iQAoZ8v`uc~ cQ=HOb=M:DAS ѩGCŰN".'qLyEC8v2mvKu 3, 5]u|)@nc 2 xA{_0% ϐH?аHvu6i*?HK8IAFXl?ߝW-Qke:Eȴ(R0?-Ҳdl]/&:?]̗LФm;:J:H@yh/d"[]C XGܽ*EV^bsWKAKC ltrPLoT~vJtC)l=ڠ@ L[1YCiεRoUr3+!myܲl7q`ڷ.нq,7l|e۲t^͓Ȳ$$ R9PFSCU=s6BkM~~Xl}^YEe)kRݱ cK9!!ٺPeD)56рʳ(AKF~l%WxkUV8G.[!v^O*ScdRkH)`n!0viH+E 9֤h:iS= Ck5VX8\1- SM /JaD = 90Ai< hE7l&Mḛ;uH糚ph))hE gHALI S K ԺR0 Ta;QFhETp0uВ8TZD3$ G,s3TDɠ.,H!)ZI^M:Dx$);ox=#[\G[%*wCc2wtv57=CeЭkDd&o>F'6-vu^̦}~Hp w,]g{O1uz;&6MzrJݻme]*x LSHA WdpC45OΦb#B0zQ'M|s2Je.]Ny b~:zGs nSTa^1CE9O,;I7%tzC{9H2;a"27_U«':O<Z4vurpj:y^ } g&LRE.Uؠ h02H>)he`%aoVK@OOP%W":sC?aiWu }Uj1\'fIĿe`Ҫ9hlG_IɓVܓCk< Ǫ) ~ɵk= .`")4P%.y(|Į&}j%IT1Zm6EBaPB ep%,;׿VR2UP}/ qESe < dJ/\G<S((yH@0qS,<`Dxbۏ 4)r-p8Es\ zE%@mξCʦ97F)*B6 ^JiMq/0Jwuh o8dQ:fGSq 8!b㥓63H,FSDH{OzK2ǁs9D@\s@ ׌``Nz‰OM}8p(Ds8ɐlF'D8O膕9!CmY>mI%@–,ў2Q,mr0$o`S' D}$PT؃JgQD,tJR*9%"=9X`H'YH4-C-$`\G,;/煕e\/v>ùŸr'ʚPFc$Q0>-/=cI6))z^ːS#[P|3GPK٥rC{.W8)eH]?JaG/v[Y}æ0 S"c#&yۥ˻R hPy}IJ/5!J>${N0L$#YʮHDCL==o*Ja1q1XR+7OhumhYRiWJм*0_>[ӌ ݃n}_Fj:#mKr|G+\-9Y08^ENVEUbV VGw &3ld tڛaAVG i4< G82Ũ3={Rt(9iSLeݍ#F 팒jh^]3v_P2QfKspaoLuzuY2Aodwd.l4>:]4hlU4]"Y?S3"[u*Bat|]t%U`/)SUߐE /Ab:Y-e^ąeGSB @_AxٚeȒX&ϔ*DgP`PK P; sebastianbergmann-phpunit-6775051/src/Framework/Constraint/UT^PK P~yIJ sebastianbergmann-phpunit-6775051/src/Framework/Constraint/ArrayHasKey.phpUT^UMO@W*$A@DժB|"E8Z;$wfNPh/%07oތ>e 9Jy(x$v{!"PKEdaiBo9kB9 ÁUsZ-53lZ:0>ws(cgޫ3-{W[\#D .T(=A8-I:BɄBwk)m-e-q'VW˕/6-'%.᧌Β0, aLv$KO{͔Â:v9g<^-&yvD'q*go04RiGBZ:]cJ5Pz$ۑ gaS8lyN&?f.VkjFdc + \ٰ;۰3|ij?J< 9'8~Gky"eŲ9l5ZХ!|FiYT p8ă~GdmR ^v# oem&fq\!CƆ&qY:aϡGoOx=n*ä(;@/TlcN\QlX\M2I{SU/59*Ske_5lԌ%s~sFB{8QNnD,9LX'hK|9XEp k(ud|@ YP,Z mPл+_WlGJX$g2VnA'՝)UQ%h[Ab2/^\jE6Tl0K"W-EĖy5 2$&~6vMqaٸ k8~pq9A4D (XP,%kIl776(O %Neg|,\`y&#l~)Gdrr^4bs []8ӢSu٨b͔Y)|uDO6DUe{=X~(a:n`|Y BTTgZ7|D٪dBtZe{4FC-9|-+ol"qTYD4tk82:nv;%!cւ!u4&˺+I%fաFx(lC񁬤}3B>3֦vqm _ %Ⴂ:ڮ,a̸Drى§oؕ쏒иZr(`Y}2n*^eY(TjGP1'n|E"}vRqiDUOvmiu LSv}pq 1>ّ籝^+NJT&hV'=yMπ̺7u_R݉_hY2|Q`/bQt[vٖ\Iu)ZipݒʻFԶC -iEq8mӷ>,?14ud1oklc%h<} wfDTANf8J1$ŀV:K.ոA Px,un; k.z MBwM #@qQߟ,bT ^d7_Bi>Ij:rEΞ*.d~#8|$?0; ̱(ϳpi8z1fu[rf"ws6b+m,KWDpbIڬ+Ca'BRckWq) +6- Dv|Pج6&<>PZѮ0xG/ pMRt7~s >F5ӣIQm<Ԟ]GKBX29.oc9! Ǻšnє>|^ hmä́D_͆6k a:a j,aiޓPӀ*R"82'b\z^/9?渗bΥ=Dz0b~ʯ^XQᨑN9i9 P^OΛ:t̞r#:g? vh:\?bgA3z;%݇hbMRY?6 yo8`Ft\s1!L O`oWiv7F雋}lܾSA$ߓwY/%>t4dia,cuHdCޑb{0o7AOy`oP8 &*m۠gp<~}|g VT``Z }^(<8\T1\sz[3-hE6!kgB5j;J;)Zk^]3; JkftpypV8P[$v=VAChHJ2.E`@c T@/L gٟ $x&pGJXmދ8T'FS-$= ժl6* 4Nl<ՇnO<5YNs.gnh¢Ozp%#ES.wx9 1e .KalhP2LLgX#)ThdI<ovh⇝~ +~rn]ܱ pHK USOLYw`˦ 7_zڹfPK PdlZP sebastianbergmann-phpunit-6775051/src/Framework/Constraint/ClassHasAttribute.phpUT^Un@}WT\J! [hcOgY'P% *b{w.gΞ~[%daL/cE*EprMy+xhb R{t2^Sw͉*q|R[>:=(AS4 ʺښs( Tո ~?Mg3 \y)LK%c;s>ad+"'PPO"6H⽦㭝u?Sk8ƿR,[LBE{"B~3h/LV\#[ZoH$ Zw  ΐ1MuJuuu~Ts&WBzflMQèCs`pX-FM*baX$e.l)BrFxlr9,$$U_V6}'/DĜYp't2>?8VkgY#TA<:Y>v'|@@RbsX\wD3avS=Ѝ|.ro Ns,/-{{*0D *oC%WL%c|vM&p-aj?uxyuvO b{i)#LH}gguZD6Nn`WStƙɞ'Z:]htQ9hD@6mX`B&Kb(#Dƒ.3Pn"kE 0YYa VzMOၔoS؇=3{%Ǽ8z\ˤS E Moa=09h=맣i?20shύc&x~PK PyV sebastianbergmann-phpunit-6775051/src/Framework/Constraint/ClassHasStaticAttribute.phpUT^To0T15Ah_זuCTUtߐ&\o M=;?i@dݻ{~- a0ddLiWaCxͥT-!)翔k8LG$hP nm{vω*उy(GHX;#@ PڬIFP(l#q~,mɗ݅[θ[p^\N7WޅQiw}W;kd{|50 ksݙ x'ZX ϖJQmĽ燵|! BMsi=R?4U%ZyF==6Yq L(O_;X*Q>_>.%.y akYUʖP6pAt~8;FŶmr7}1T U`F,"a [C0ȅJEfC֑z6m=:9te1s=4)aU\=hlCDƣV"jEQQ\i.vYt +.&8??۠W+[Y1QP A X`֍ Жbyd2Zs7F #c-n`X905_D)"g$œ^HYqʆfUG@<62kwKyw &`j|,9K\*'`Qew=;1+$yO7MS0S-i㚟6EpOUd?M:%qA'?$4x _<^/PK PoI sebastianbergmann-phpunit-6775051/src/Framework/Constraint/Constraint.phpUT^Wn6+ ہ`zm6A" 4ؕH)RdI{(bIǙ73o?Y 9S8Fi^Jԛwr%R#)2Ͽ~Cp"k3ӆ3Lxóڨ K&CHKEƷkl6G9ځ1sC:+##Z׾O]ZjzZvTR'L&AI\#}UaN*I;ϔi/1lYБ2;~ol;!v 4ѽκv;\4?x{Ui+]b"/9BjFW"kW}}LnoY>#dU:>9>4?ii%MkKUOOIt&wbVs@cV26Y^͖czۅX/ZSeʚ9QY:DYmb+.`uɄEi^杙}7X5^3(H%_ۑީڿ%AÑpjK !Rrj=Op`9JolqR^}6;i=U,r:kw\۽d@_&b/ٸGudX*O 4&CNsY^*-3zow"/ﰜcF`i䓃7}7PK P D sebastianbergmann-phpunit-6775051/src/Framework/Constraint/Count.phpUT^Vr6+n2jB9nqmf6S;h P%M4ܐ盷YQ,xʌ3;dFӳѧDZZT3>/%.6…?֕S\/ID>fZ@T#Ac tbZHdưC%hogEכG-n;TwB!U}iķs.Gb\YXeIWsϺeYݯ,f[}^ARe|gqkހG}$ǼbpL􁩜&%RӨ:md%쾸ޡe6s8T@̜ ol$h3uө0y |g1W17{8BP>:D llh[W P;/Cv@S۔b: NZ+hQO3o6H:6eR8g`Hzwg]+['peRSC|ʵ qԭQ5QVƨUHIyAc|Y(7®PS ړ@dGcFO`@5Dl"zNu͎%f}iz7J&%6sX2m_0umzGg)9;8 ӁDRvQPF?[3TveRކT6Q@HJ!t`L^^G>5RUBY:DCnultJ6+]:o  Y i3ô|5Py+ #Si h *u1Q Co 9/ཱm2/k {"?{~PK Ph_H sebastianbergmann-phpunit-6775051/src/Framework/Constraint/Exception.phpUT^Tn1}߯qQ+4j j6J򆄌wu+ { ˆ4m๝9s<$y4vՂۥ}L>@a )}3-nKa|s\1czä S]QDxY̔ yWٓ4TPJoJA"zz3TM3 *N؄,ܨ\sB:@ ]bjZI ފt1E=D[HZI10}9ed`3xΰ_jj48r]^ 7b,‰OzC7+"Y.Os-4bz>(Ή#䠀sy ͵4J1hPZ?' 7^w98تO퍚Aj_86w:Xb!<5agmtҜ7^tOIhpȬ5';PejĒ( b`|N5FL& i5f/%zN 7Yvv(A؁AImiW@!}59QheNJA~ycTݛ#9im ws_a{~G .φsOúyu/oPK P;L sebastianbergmann-phpunit-6775051/src/Framework/Constraint/ExceptionCode.phpUT^mO0SIT{;(ccEC&]%8[jg-b|R`[8CUT,ؑUB7}Dqc+\V\׊2[L#%4|BX u{眨>y] M`բ :RIԎإ e!T% [)\Wo3*BL5akErgj+eUO"-*{e旖_1tE҂9m$V^`=Fd<+k;_ ^^ۓVV!Bz}TθVy:er TK/eVK{$62m+$>E& s{غ"V;loѳ[DY3,{Z7|l&d`c[s;u|9!B.JnV7B0=+YIS4C[TƚaƔNIl LӭeyXyeU j7%TY[ܹPZ~b֌99']&_;-yC?d{܉4zEd)p-הF6!]agj#LIh=_]һ&] >EPK P N6O sebastianbergmann-phpunit-6775051/src/Framework/Constraint/ExceptionMessage.phpUT^Tn0 + mtź Llɐ$E%;v:ݥ8H' RB3ς81@& VL[P|-=n1a &3Uɤsۻ$%x\+ 6G-V&S(GiPfJ %'Pho-pZ]R͙ 3 wF؜NQH@):@MhZF+%΂ Â-ưn-@<@k:/ѻ\3 \[SX3p 9m?!= 5QSό}F։ų03f>iʪ[E10 vKwBSoC8ZV6\eOŚ5 l_x! W9'S-j8Qt`] *]J@ rOی״_+et`XNMJp-FLgI+!{چa\F״IEm]#+P*c\1g͠*Hw 8i71(c/Ŗ[3~s4I?G+ӛM@6@s ߛp4y9du 1`K.=T w} PK P ]` sebastianbergmann-phpunit-6775051/src/Framework/Constraint/ExceptionMessageRegularExpression.phpUT^Tn0+F K#8N)&hj%IlKW\^d^-b9o@3h^2a 9} -~]峳bbK127(F(l`WkZ)wv$ (My"ƴMׅFc(9 փMDHFrf L ,ËpmQh%KIi5B%g.(*T]*.x{㞪6#Qu y~sztqc9Nhճ mF[j }l :HxZM> [TLF[y%7~JuVARE Mnp)!KW8%fPD&طꖦϬzZTL=kS!{a"ٻMKu@7 {4_83 И׆1l98aB.4} >+: ]ְ[ż_.ߖsqmvd1\ˉTN E%jէ3[^ofnuh, ^#Ur!%*9Mޛ3Z|h`vg S'HR+/A8J4U_Yg[#yԖ+]Iϊ~f +u ߑ ('m@BǑWĬ<߶[KmQ&cXVWQ4ӧ찶yoJd0 e6Za߉AY L#Swp5d\D}ߓr$%_MC'^B \=pRhV6Dh,|J"y*c.55nso Ä na4Yf;q?#Oܻ@x@jvLߜ.bmѡ{/8Ov TZ:X "5z@XU>b*Ww--wX%־& ɼ6gU=Hz_,:-зv@&o+2NN;\TBj!6c,ء96(Yf ߿F~˲DJƘLмSPK PtWI sebastianbergmann-phpunit-6775051/src/Framework/Constraint/IsAnything.phpUT^Mo0 <f-HPۭt,̑ j ${ ŰD|^nJԍ8"F/>Hb6)`?jCPAޭ w? 1#=(b,|A)k)bB[k*4 h ʖ)6NmPٓ}^?TZ1AiM`,ao!'F)TbVZ%g[/G{?. e,_EBV5'[%Ac?%e6I_d21QI5㩌U҈F>ۣ`-іtU)@T#>XEH1/L= \.]W0{p2;T#GQJx*9\{dE&xG,% Eap|& 㟶^L9,pĨyR{t2d?{mv7e.u!ɌNuҡID[lK,auUwJ#y*̇ PK P'YGF sebastianbergmann-phpunit-6775051/src/Framework/Constraint/IsEmpty.phpUT^T]O@|X!*'Q* *RUB,U{_q3{("%ݝݝyUTqZ LOT΢(R.K&|W89| !RX'OlVkj_Y[s )˒R]=* Q)SV UZ8՘$oBŷۅ ӹB8K,km+V&e4O=Xe+6ɥVRYzkIJdۜuZpzoiS03$AKq(I 4H`fuy FnpuB 5NN~Yh|pIai>ӇWƆm[j@ˌmjdk\Ȳ6| "K^I1ڦACk րGW80>9ƴ&= :#[z2/pU`0? _iefkWѱҜ;sa3N&uR(j#K[]#P Rln!fŎήh"C`gsap$o{=`cбv~B̎ CgVF]FCî4 2w^Öoϔ3)zFoU OʢA☓^TTXD֧(/pFDFdjOIXeG!T1q|5"h3n7<ï&+bYoޯֻi??_j.YCì[f t7REh6uI߽.ѡqAgtT'x ?0K Z!&eb@؇#K؂;L=2 ]ςɵ<#~4^p!q,$ӟͪ f_=g|4j(x)}4i1=,жq 2wzDdԼ^tF?Me(*qގNz#} C1wnR;>;n|{5q]c}oE;^ hmpCOO[-:PK P1F sebastianbergmann-phpunit-6775051/src/Framework/Constraint/IsFalse.phpUT^mRMk1ﯘC! 6ql(%-Pf^$Fلޑvf}̓>.BC!, [#?)Rڼբ|l:#@hwoeyff氧XpD*j*g@C'.0HG΁ @߀|RA>/!:B=X ~;P`͛ԽPN;< PCxQk2;Mʁ˺߿Q ( 4Q֣0%MzMz~W泀$=ٹ?SdJ3rBZ )f67Q6.zpa'z^>Q(}4/!7AۼD,Ѿϡ72Ȥ!2m6)PK P{0jR6G sebastianbergmann-phpunit-6775051/src/Framework/Constraint/IsFinite.phpUT^mRQk1 ~_APt[YIXalorȺeOe]_l$}>}Eh8d%ak^"oj`;@,Z|[YjA9$=|">{JSZЇ s`B|b{7!oQl, n:P '{NV:ͨz6ʪW#oYC7+Z/Jm(zƆVh E(v70S۴-G!ߤ |g!k`LyfsXUc_gj7\®FR6͇K?u=Wm(^ ]MjÛi^uEmv -:]ili q]huCrdth%D LX'̗B)8iY!ǏQ6E]P92Ce@UhNj5DAkW^始7l{JX%G2氒nA;յɐʑuX` -~ҊliS}"fYCz]|iJtktò>:D$Elxъes!sTNf 6Mf/[`vSLPD] 4Wkz#6UIΐTGp6%,x4EZrjy4̚HdR+°@k" 731XZcRh}^!^3 1𠐊a*I .8|prJH{Ԍ_{Ypqus寯0@gl)0kժzFEB26q`9*x12iӎ+Kd CǞsQ)^plF]K)蘤(2zl3Bf@y%c鰬[Re-㲧 2=d9\JZ¿zC0a kR~4M̴6[lj,Ck1vVese[ri1%Y#O/9,̼^mr*p[Us8fFMxXpطiHޛJ{닦&e޾֖?]~ް 1om?cC u@~s_D1Tx3"|YDZOȮF7zs2@rmg^c7Ib'ڂ\R;lF7#]<8wFܦzeQp1QZ~6 YISέۑc%M-5dQ=lT'D#?Xzz Խ~MW6t?,D{ܿnVֲѺb}uR S[5XuD9@NZ߽n Gr=\hFݹ:. wr2[B:̿Q棔0ɬoØxo%ΥRnb@!V̩ӣpDZy?bm38aیf.t])j?"#'o U;w. 4\t&ߐ1bT gjsioKqkH1+ #> f_qm7cNZD&g-USPK P>I sebastianbergmann-phpunit-6775051/src/Framework/Constraint/IsInfinite.phpUT^mRQk1 ~_APt]iIY`lorXeOvҮ/6O>K"4d&$k^"eU0eh#;b-}̵ L6T#Eהv{.x]i>0!tmup֐gmې(6sPcm}YeN:8 Cc$u/JUΡOQCY'am!?ۛe6/c+4pi=ṵz "V3$} YAKq ۞6'\;vzS%l di ,eǶ g˒}j[=QH]PjPAi~ER[,GWXmshb `ƱFUᇽ}ԅ;@MF7h^'_?xrdRsl-ߏ֌C?PK P$f ZzK sebastianbergmann-phpunit-6775051/src/Framework/Constraint/IsInstanceOf.phpUT^Uj@}W !Rȅ6M(mH7CXK#k[yWŊHH)T/fwΜ9s釪(cL݃{؞KN龐rY2Ƒ%.;qυuR(fJѩlT{[+mLy]EHJrmI*Y~_/*sp23׎3ZKW̭Mg})d[ dfW6fZCHN"nmM(a-gOHrH:/DY O)xt*e -A}k;%ďNmG (!ZԩӦ'J˵nc}Xev@;"mHo]5z}]aҬݢrZ i#ZKf͢^1 [em{[=;Zov689<8c?h&{zWvi"KnH#tK?I]=xsx.9>rqԟٝMA/cb)껂vyΓNMPK Pg E sebastianbergmann-phpunit-6775051/src/Framework/Constraint/IsJson.phpUT^TN@}W6BiiPA"B"=ڻΚ!K.*%s;s̜| RL a0"kdbs4>,Ƃ/%O0 +hP N{;B H񴍹lEJ **ӦVjuUߞ$.|܏dRyt6 Ym19[9$ȅRt%JJ[Bs8]5K?jI2ϛP& K"UJk9ܷwhkh`ePYO!S #[3UwzDqл5eg|=7:lO-,90 j6Aߌ55#2ri;L.>.BCaKF9|?_WE Y:#&RraK5XO+3sHG΁ 9}'g yVA߆t@CtZ{t,כ&Swҡ'{V:}QdHʮWqDn!]h+[8d[ I7 Z@OgHkD12w;OkN*wkMKCKHX|Rу3[K]BFt#hRB }Nz][<1ªΡE,Уe&WI78(@IFWF摂O2l`\SY~T)PK Pɭw-E sebastianbergmann-phpunit-6775051/src/Framework/Constraint/IsNull.phpUT^mRMk1ﯘC! 6q(!-f^$4qBH릡f>.>.BCaKF9ojQw@I paG5XOK3#:$sN}򬂾 b?hXp_om*C#246ORB tQdHʮWqD_'-Cur4omBc( Wck=(o\$~~W泀o$} ٷCK<ǝ5'\;1zSKHX gv~.꭯#lhp]_|_^T;Vh-Znsm(Q i]/26H[/fuĴauPI&R;[W| 0UBZXhvyQVfDL4TZx}.sGHD/E$ڍY'2N ?+pE7}n'Figrx @AYqBcyHߦ-dP2?W&w˔&&l.BC!, [#)mjQ:@,Zr[Y@9$=|&{HSR h㈹ s`B|f7!Tз(6sPkjmTŝt(p͛ԽPG+vy =RU@)eYKW^֕P Rh EI ܏8L nҝց|^),;I>By)DrǾּ4Foʸ]?el͇ٺt^zJoA% K]6/OkdN ;>fmi qY`vdh@8xD(& ?QlٔMp^?PK PKE sebastianbergmann-phpunit-6775051/src/Framework/Constraint/IsType.phpUT^W[o*7~_h&! ABDn+ۄDGe_|sܸXdɒJTZD{Tutys2]qER1)yIp} LZdTiNg AnTyv(dN!DIYFxy K  Ey.ڤW6FnIP:l"K,֚-ɆPre@ђ՗/LΜ3 G\=0(:0{gVUIJ5ج1N ?(ZČ"*XSs)7 `%D'F:ѹ\P\\ڱ5xW* FH ?4@`O㚀<>xYxg<Af6'q/F8l-8_βcPe'֠{?0ZFi bC}8s8Gj9q[=4eT4hFC[kK藃bLza}ji<|4^9h-fKQ8/Je&ӾLsp#W2(2;o[ M"AϫӴ꭪^Sè6WW;yH|kv1yo7V[@)j;(\խ *,ɊEbk=4YN$jwWGU^ WsTj<@e/ !tZ#Tsa3 Ơ›yV Tt\yTZaXfD`בp1VK 7r wǵڏGPK P_PsdI sebastianbergmann-phpunit-6775051/src/Framework/Constraint/IsWritable.phpUT^j1)u6m64MhPYYZ4qBɻg=1=fa4ў~hJV̉|ˏ һ7lqԆ2A ߝ8D\`"6G rNiI6FZkA1u͠\ ht$]FJl)ELZ1lAie,ak|4Jc׋̩ R֋Y]1m}[{'9q| ֕5;Su*EiB:+۪،m0 >\f}M$q镗"tQW}nFW^ٯ $5768[C& <9JcyHߦ-dP2?;eJ [W6t$>e]2項QP(G)ZG2dڋv I)tkYCY { 9iK(i\dewN='BdS"`U6ksqڻ "hr)ƴwc\Iܾ'sy/jrP H"n:_w` #߶sE\rL'ix/ԣiS PK Pf` J sebastianbergmann-phpunit-6775051/src/Framework/Constraint/JsonMatches.phpUT^Vo6~_q(<{6Y-hڽE@'Dj$e'Hʪ$[im|ILޏeV@3cݗhLi>R#ߒ:/~Pҝ Y'_l < JTyj+meiuyo&s\rTT9m%o^,,}eYW I !2)@8^vҞ$UiS+m Y私Kk8 xDN7ן j$cT͙A9TBu [fS6y[eaey!jM]f*9[BW܍c~c2F;?? gh(KUlWF$㬋b< ̄\Tr9뤨 `dL;vꚃPyKoGPoz4~H{z?^g 2J(}K'),'םggƜ 3-vH!г ,#T$7М2&1g*'CaOd996)HԶyiGY) Q ˫6ʴ/8&-5C2_P,AnX,p>3zGcbo9ܒx&:z<,72xb)W76#,߁>Dfix4#f#ti6ef[)7&lTW& j$B!4KUߩ9R{vpۛJ]~:K|?hȿ,ѧ]'rcoܳ^?PK P2/Y I sebastianbergmann-phpunit-6775051/src/Framework/Constraint/LogicalAnd.phpUT^Vn8}WL}lݬ E>ՅAS#HNȿl[p̙9#}# ϘơZp9Itq9| 7gڂJ_~Hac2p6C>IzcR'S}@euZi[2*bd( ;fc3dxno_sʣ[f $e.,&pvK'ܨBs@ :d;49*嵦+%N0}&خOsHW.}j#8`2f*$=ԇ3,)lOZE8G SbMq9Q.C VO3<8Cg`0K[ETgTllb[2jϲͰ+pZ~&)Dv tTvGs``WڪMK !u>hQW"iS溱űNnQ#[hp(Ha.@ڡbK$Q[_v5x=hQ juu;[,V+0 j7i*t&إJ?Ly5pt!)`j3EǺJ7)}zȬe4=g)јF)F}cnJm&r7L{=aub!khJ:],=PM932}չ<#jGWMY!/![uKty# HfzSPڷIe^$rg EY) cOKi-:w ; l@1}^&KmU#$ULkfܙ1d1iEB9wo/VdLa⩙/`r:SxZq #oO?}YpsN 'Jcx9ӆ3?ZVWgd^RY!,zAr6eJ[hMɝӏ )!%Ln={8!7gC,dACId*ٻ }PY.1q-Y)6.s#y A؛z;T)Ȗk_ cgCut\J\ʇ,p2MQqD _C͙ש6<`Z*MT ɝ yN-5 uC:0eCu PMaDkޞaH tcilF=ѩ` X=8#n,+ym7v{B Bp~,Fz0na61-(Ydtc\;]\8.|O >,λuv #GW1\]/cFK"kKQTpbv 8"ЪK}P^u 0B'qɅJ EH%LĢZjcJfW̳*$F %_{g@aE* LkJ%44d E q߁?~'@PK P"0l H sebastianbergmann-phpunit-6775051/src/Framework/Constraint/LogicalOr.phpUT^Vn@}W R%JH)T(j YU]3 =3s}X"ϙX-e 47$:=L[0mAeR1<& +k&%39r ųRi+9pU:յO}/y=[/h{͊94K̽o]h}]/3U{IAgUZ/PK P3n@ I sebastianbergmann-phpunit-6775051/src/Framework/Constraint/LogicalXor.phpUT^Vn6}Wb}ݬҴXX/45ȤʋȿwHI6uEr.g\?W r%85V n MSz\'pnB[1mAIa$e<\1c+I M{vMWѹUpe \UZ7̡!PzˬPrUvA7 gr#Y99 !7i(G"lbttWqy$`B$qfLdT!-#c巤rqBւq_,-mL{h'27pt`ǯs1 |\\J~0o&ܻ D)Zm6 <6~e$țxgOǫ.%Ӛ=߱ҡv|E4Zel2ܽ$6ٶCQ._5" ژ zv /*`d|4ڧEDw5eNr;Lz3+ў>$0t;&VO'քk҉5L]Fս+`R=WZ?(`z9.jCh5!B38G~h {ayg!2]q:6k+i'!4G>CC5s4fDjcx}%ގ=r RMZa;IE^-J۷5z 8<?&9E fY{ŏގ8k>ǣ:l];ѭ5 y,|kEϚ_+ t;wHi|lsԎ֫F޵&k}鎲=YJY[M+nQ!Uj!z%bW~4̳7&v#ܩchju_{yo!yBۮhb4809ފ'}:3\x?ZNcٓ,񖆗_PK Pt`bQ sebastianbergmann-phpunit-6775051/src/Framework/Constraint/ObjectHasAttribute.phpUT^]Sn0 +x ]-HCݭtM  6G(~l*2#5-f7b^@-FPa[) h-zLqG6M;)刹!;a@_|qlJ`ϸ_VǧATVl; zˍdy ]4$*R֋RżG !~Y/=z)N~ڑQ"߶E‹yt`)Q4|(ϐ`Y(F"쁼ByO> %<@FTbNnopzCT@ӧSzeUg?ɲa=MgP.7A0EwKqgVjtk6\:!rW:L#8Y[gK^M|^%2 r4{\.T뉙?^.,mC+K>z=%L~VPK PFgCt5P sebastianbergmann-phpunit-6775051/src/Framework/Constraint/RegularExpression.phpUT^uS]o0 | ,^׏ Rl0V e&HD'-&'x;W_ۺ u<恼Ѵ28~&4m'p+X|_|A亀,U ,|C(k* [nIA7ya5 h׾x 1mvFqvmc[Xla.PՊ`TFa;C5gypȍ*U Xx9sq,c(c2c"߷XJBGIWCbnU)5(pc,nqV~ |emhA  `a)Y}@I8cEڔ_[֓|;|FX/c&/:uI\++AB:Zir)1*yˀOV9nYJ&.fFi/]cc,#<*X7s*fv-=Rl3OW!?v_ԼcnܪqyYdQ#ͥs;&McD4PK Pi*4G sebastianbergmann-phpunit-6775051/src/Framework/Constraint/SameSize.phpUT^MJ1y9-j*Pf6 ɬ*}w'kEs L2thSNx`P@nU~XYWҐz2= l=YIPgfpMPMc0m dʅ=q|C(C]==.2F#&mRL%tkyڠIJJceqOѣlVAJ 2R( t擀Lpe@o 1Nʰ~N93L a=-`y2O |GT.:oPK PN0TM sebastianbergmann-phpunit-6775051/src/Framework/Constraint/StringContains.phpUT^Tn0 +C"mtł0 MɐŐ%ˎC}IL==R5U`lȌR|J˳౔ Y!o- .Ótܙ8K`$h+\.vˉ&`* ˒@*PڬIPW(8ߧw?gwWG  tJ҆0pV7&CN2Rb bCm̧Z1"׻hȶ/ U-A3 עj+%pVEGRQ㝃O-GkmH,1sD:LʿIU74YM*]GGҤk,;km2Ҧ5KܥÕA3oxskaB!tk#lcT8L.68кIyxxTU/8 ƞvH6xV{N{&m_6Qt=5X^q tۜ8<{$~Uj28ൄZ&0o't7h='- &ls˝UT{Dn{=ec[N߅kWo :81 8 s&Sa%y aƌܾwwk"7bV[&nu `29y'hg50]ikk&0 K1݃FPK P !OM sebastianbergmann-phpunit-6775051/src/Framework/Constraint/StringEndsWith.phpUT^uSk0~_q@:te%e1ʲ@sMtNRFd'n¦;}?cS7Pa)Ikzng7l~C4lO~E9_wR I m= P]yFZA٩MM L ZI4MeVf F}}\jAJ&)Zjso['J g[Z?qioݟՃ5!c~Z'%GG UE!( ݊`G4ب@۪RL42,+ @>'}3p~_oԎMab-8a-2r~\8]ׄ/ɥH3i6=o)'O/|Io침!1s_x?0_r9;8͑ ׁaSнx[)@̞6-q?1-}1qd߁|[5i4YxYe "&DPO*BR3*?Ψ@l%3#BAoq}Ї]+>r#: "f P[ q$w6[Grd %g`~t?T"!buhhA2EH(dGeFp(& :>嘃0n'GSqemc}F]Sphsnj,*!RD[*禞*C2]У#ghC<{ "G:TEaXb"LI&z;vDYt0D@ T dЎp<ɿu& Է2gشCi $"Wjmsl><[$~!(OM@Y# U.t{X)>/_8ê^:J-xRa<+ByLJ<~K޽x 5ˏ[foN _Z٬Lc:mЧ#.=,irlW녆޴bZs!J㏉`0Ftz0 UN$B7F_6'^jDc_R[m-ǻR>#ܞ^_Zo1Rk <|zb8}k[A_e5m!g؞aZXcqnf|o vHq|,RBt0Pi\j4zw73,)waQeølu,GnW!lNզ8L7FY?# bhC24ӘPk^ oKKOV+zגH[0 8TɒSJI > {YPa>RZZd`bm%n*: bk%:/0;q$T[]tQzɣʝiDYL2 }"m<]\&g'_aqgЂeZ#EpԫeCr2QCN9-FٷpĂYEN7Go{wz. tIӉE[S/7Te\zoNUY'K PK P75U R sebastianbergmann-phpunit-6775051/src/Framework/Constraint/TraversableContains.phpUT^W]o6}5<{m[`7-]Y\eR#);CÖl :y&Os9ʄuFF=l.{=:TZJdƄ\G:~SMF#RX'٬B)ze빷Tx_W6ڐK"(ԑP1e2beP%ڬZ)X`n#y\gUΥVXdY8i+]dnua"F}=%lsŵVO+CH.{Qyoi#VPnkֈ +AAyI$4Q{VY5oc Gsg[ޮ*?hYY9aEJO Xc۽z#CKj"Fn+E)G@qZ{lV_i-8>*Z=So.BEqHT4%l>t%%"< QK 8-1Ф  ۣ{k GO58 AdC4ͤ7G=[%Ly<yҡ5rbku6N@k 6 &Oъ]!?ZiU euմ Q8(mĭunmJdIk4EG[^˃ {4* 0r.YKNYX`i-Wu y-B=Ѽ/9 0_l##'2+L*-VJ[ [m4k! ֋[Y7]Bkm]xIV:&"2$nI4}`w_ \ac+2asK`ܚb*gzC{ڱZsw7PK P )W sebastianbergmann-phpunit-6775051/src/Framework/Constraint/TraversableContainsEqual.phpUT^VMoFWL' [Bque@s`ȡ-,%{.?$1vKy4ۡ(RN x,?ej0;9Z(>K<ٌ>~8ВJV~f*c轴(T[LYUMI 4u[5T`iǸn/!U^ :L<>\(rz60jR*ؚaVunA *T]?9Ko0̳8h݁awjN: , E;#VB&EcC;UTLJِ&g_5zL sR9ApYӟܦڢ12T9E7x7hP;O[ZQZ9q\pea>LqሦNi4]uQ /cig7O;~EpCpeÚUBV:pi+!XLG!_q׊m*4mrqbOÏQl$g3ֵ 6W&aH^an e@UwEθ ~1iKbDeXʸ; N&;WK:q>Cz %q{;*8TӹO 右4SPk&6y%}W'g٭ ;'jC@W}̭u+kmLA Һښ3jjVm4ocow7/nB؝*tdz.h}t.u9PĨ5K`nL[ʮAHUMO[V icuDy^BNm؉Z}Q5MќhxJȤh7lh)mEuo X3/QF }9\ѳ)sJ6Z?r[oFyFv z/mq"9 ƺd3(N7DPay9+gB٠ǝ/N%\;^t[kTy̹ UQ "v=%0=FoRM23TZOqN049M'Ӌ!X~lqǯuAaM*!+X+!Xwbq9vA@1t8Wo jxOő9FaAHZ/W^!Zx.QYP{k215烮GOnmB;Rű"75>QtK~ZӋ]IS_|ӄ椝bLDhYg/#di\'Ivq݅&YG1','ڈJ4~Z6uR;͠eUFߣr\U Ø)f^vdj_EnI6Lh(6!Kx"eYeL8#p[Lx 1v#r֡Hz]?>4IJn76ڛ8~V=fa?yLBB*\.?ܗS|K.pxpɅ4Zun v$PK P6 sebastianbergmann-phpunit-6775051/src/Framework/Error/UT^PK PJD sebastianbergmann-phpunit-6775051/src/Framework/Error/Deprecated.phpUT^5OKK1W̱-b@ݢ R 2Mfl&Efz{oLj2˅y.r 7(OzY #gf簣epOr0FXYI >)^bMҡražIмjj,x\r ~jzT&bG%ccАs߈$YrZ.`)HYJJh?PK P u]W? sebastianbergmann-phpunit-6775051/src/Framework/Error/Error.phpUT^mQMO1ẂxKhb z#!;۸M;e!tY{iL{ɽ+d*kE:: ӻX ^xw RMW`[HK苝4&=PL ڞ@%B uG@ *4;Iښ %c{u4[S;*%A-d:%F jM%3<PP$cm3T[{oXe ]2<<o^| qP =FEMdLI.pR8{mc)dQ<6Fߚ?bkg'fvz61K&;L<PK P"oF@ sebastianbergmann-phpunit-6775051/src/Framework/Error/Notice.phpUT^5OKA )rlXAԢh cky\<\fAnGp)8FcpcxB )<Z!R~~ܗUEI;+yXV1fvd@ mq"hԒ~טJ6D%8m0D1z 6Tdo)6AO9Mxg ^^;i{fkGr)BLDQlO$7lKlc'F"j P_]Mev[<濝%hv~~R \Ig]yjPK P<߆]!S sebastianbergmann-phpunit-6775051/src/Framework/Exception/CodeCoverageException.phpUT^=AK1sE,[XZD ՛ l74dEN{ߛSl"dNV7dfSShl:y#&Pe-@Q-zxo{X䫶,zlBn9!: vԏ{on]F:n Ɩ&Udȏ%MdPϔǖrD.e6I>\Iri=SgC\ՑdTS>m:Z+4ƟV*>IS,]NLdWԏUPK Pp1] sebastianbergmann-phpunit-6775051/src/Framework/Exception/CoveredCodeNotExecutedException.phpUT^5Ak@sR*=k[DZ(" edwClۙ7P(6. Ƨ{@Eva\K&i8{r֋Q%J&q0{j?]otdq2CdDO=+;V׎}| fG@Œ 8޲c)6y`wU|MP.쑀qB+[VE vBPk1drnk l.>c A*cӿ8 AVQ[0%2CWg2Wb 8)B|6pTri!X)q SZJ%Yh}[}"gU;ju Vw]6/1Nkh1(ߗ `N:tЗON8%3X@?MwDy3OgwV4s5R1&G|TXU.*)ɽ+{LbUfT(fX[` lyG=ḅ󨠟C95BU4ۭclzS`a/+৺Aʖ@fUj]b5S6M::"wg܅NڼarP;ݹ}\IiX5hoͲAc0!ӰT힜w֡pM3.b=/pK:FPK Pݘ,X sebastianbergmann-phpunit-6775051/src/Framework/Exception/ExpectationFailedException.phpUT^K0s>jސL`G1U;6a{/Ay3cnںuh^EutM6J ȷUJx,gGlHFY d{B!x,ehЮ=je hF률-mg'6Ķ5Kq~>cDǵb)JXp-7B] RH=ͬڠo:1ih}eAJ+: Z>t@.iMI| 5'v5!pWYVF¢^$lUM.y9۱HkDBIJ iiPGs='GcIP"}l-凔%WzST]1|HcǺy)&f=&o4mHgg #[EpѐvRLʤKeQeN KV/hNoV05v%/܁0e/ln GE rC//lv~ ]]!_Hfp=8!򟊾ePK P)R2Q sebastianbergmann-phpunit-6775051/src/Framework/Exception/IncompleteTestError.phpUT^]PMO1ﯘ## *j CLLw;Nt.7c+gGI*St7I5&o4,jؼn><ɭ2gTaIB35<]uY`Yi9B<1-8'5uѡQH}̧t$MBŜzZxbFK+> >\doy*Q<ax5sICK[\;LdV.~ z)%hK{nmSPK P6,V sebastianbergmann-phpunit-6775051/src/Framework/Exception/InvalidArgumentException.phpUT^}Sao0ί8i WڮݦV4M} QdVX4{l4 q>q}kjFXY%iE;2 8rPFXoOs"3‘Z5\)vDPe4 ; .QcB]v:iPplp;Q-A|%yOXVQ'uDz-:#8/&{vv}p; hAwP̑=뭰[Ús(ځ]X7W2 #ވFmշEE!s1dҥEAf=X ]76NaS #_3kVlMSpȲHՠʜaz+ʂܥE1#ȑc GrL+-Sz%(kdhjqL`01B(t)SvW4>|:zmm6Vܵ^R45gՉ G! :G/Ȏ337hw M?9&dL PK PU0Z sebastianbergmann-phpunit-6775051/src/Framework/Exception/InvalidCoversTargetException.phpUT^=Ak1+XTzֶRQ*"ho2&!]wjO70TYt$r%rGb2.` l | ͧcyЁ`'(0 vOr̤žrLF`Jaeg#HEP6BCP 3` 4Е>( KZԍ{o~=XtR@ MF@R鏒'Ă4@=֔v)*u>v!W섢C{>*΋Z5#GcѨ^eٲY5h/yp=n] oP\ Cq3 'PK P12^ sebastianbergmann-phpunit-6775051/src/Framework/Exception/MissingCoversAnnotationException.phpUT^5AO@sb$AE D5DfbNhw731wgvv!J,x%Tv4& ưIX!T~^z\#`DyxB޵{E[! x? Z#T"ĞiW+8_BCz@_nRt ae|,@S@II~P,#%@ *1QO2ZL/bif9yE9%2~]јsjH{Z2nkr +Jg7![$Cyf>t^ xRɾߢ9pfPK P]N(W sebastianbergmann-phpunit-6775051/src/Framework/Exception/NoChildTestSuiteException.phpUT^=Ak1+R*=k[Q[dYw0du)Se5 j"G}4I8Ԕ" oPW{}:G3#==*1)KF9t/5BZ ڇ>ұfP΀%.I|lw,*΄ݰZol5q:PnR:Z~<6j zZ8` J[M4+ 3ȡRwpQ2~)>u*ћ %YB 4 e׫֯j怉-1/Cn xat&RPK P:t(I sebastianbergmann-phpunit-6775051/src/Framework/Exception/OutputError.phpUT^5AO0 >nb $7$6-M"]N^}l"2M[Hf(fuFdPy\@TSQI,zx$޷=,E[iP ݝw6AsFg+I}E_At-mV#4(ccs2[iGS" 2ǖRDe6R(^=P); ju$֌ryJ=Q\ZgeȡʭM.Ac|mɚYgGț)vf,~PK P>G V sebastianbergmann-phpunit-6775051/src/Framework/Exception/PHPTAssertionFailedError.phpUT^mRK0+!Ye}tmVU3`xE (9g?uU9V^9ؑK7 ke=&еCh xY™YÑ2bgA/ؓ a y2HEPu Fe%.r^]rb[&Tlis?<Ut' !!I 0XtGgC*SpM6;Tl -%=|NS Z׊RU# ۀ+t9:n5" X'B_'Ii=!{8N%Ě'/Z <#CHƵc{F!Hs[*b}j98Lt7( f<HCgXBFm"3 kcAq'QZZ53DqHm>zxX+Izw]iPK P9d'L sebastianbergmann-phpunit-6775051/src/Framework/Exception/RiskyTestError.phpUT^5OK@slX+`4B'փ|3PbeLlF}&XlM!&pg(v$F\g1F`0 ,&U/ha iGsjd1tQdžvC 7<RQ#zT1Oe`*E\#9AБ&Ѿz,#&){\35~ z!%hO{N?v]PK Pi&L sebastianbergmann-phpunit-6775051/src/Framework/Exception/SyntheticError.phpUT^S_o@ ϧRbe{c@JЧmBĐSKs`hw}I D}} RLrCL65*ht52acsV <|}xtod@g8-spTj}{g^p:f ƥB)0lK7*G#}e}9S3ð7RN1L:ܗ5%(D)QL2Rk%=F=ZHM +YvH$O{CԋJ46|Šnqjyprm2#RGRs#ЌD 'ӣ/;M&;Cim[bL4 \CՕ/Qn,DvlxI,!2<+/D?~LUVtPp zlqN3) a^:;2ǧ$G-TD0>ݢABɝf\D_|zp}H: 9 PK Pӏ1S sebastianbergmann-phpunit-6775051/src/Framework/Exception/SyntheticSkippedError.phpUT^MPJ@|Wc[sEA&n,MMcM҂O 3~U6$LVl`T#茆B 'U9X$d<`YI|X\Of{"lgάYo*H)gie`7C{rP#1)\$XZ5ͼ:JH;cg+E\"× b!HGRP>xLiAGBbftm0)WZipYqN88 aeć v(h/IQ/gӉK ~,ٓ㍰L€4e΀Ȣs")zſRJ@r"9rFڻ^ٽZƣ!!+jt袰4WlGÈk`QXTJa,N i09*W~ɐ3t@$!f\ #=wG yͥ!= {U7/Pg>(cB'|X hL|R^]y|_SWMcZeQ h_tKHB"5Ԁ黟~+\ PpvOa3.pXDvOWa.ɹ#* `_m- i{e[3q*/- G?j"Ux~Rz볽ٶx3oD_TplZ T48w%qAp4kgwQZd3|/ ^eUojHQ>9pf^agnT) edGkezȢ-C8,Fkk9k bEvJoh}t!%stWWC}$];dh$-]'бز){쁏<>Ero{)8٨-ڮue!.layokAokblτT7lawy!By1A묺vu+S<4ั`΋I|+dL\nSic'x\qn'0n0eO1 ?h :p`:NY# X_/u?QoѪ9l*׵! eڅTz }L]M'ge{Ϧ3[62Uq)E`K_PK P#9dB sebastianbergmann-phpunit-6775051/src/Framework/IncompleteTest.phpUT^5Ak1+R*=k[iQ*"ho2̺$$.R;)2ofD,|%R~|.Zа#7b v^LaO5faBء7mA}1Xzz6!M/z C :BL{߾?j`4{! K?JC iB=:SҌ2hN&zfrBʭMnAc)[_~?PK P)HMoF sebastianbergmann-phpunit-6775051/src/Framework/IncompleteTestCase.phpUT^TKk1W`; :& NchCӛhcVZFvLH޵E0O:R䨭"&y YGTscd19<=tOdC`+ҢTyhkWBTdž/[O¼dr9X!tsOb1TԖWft?E ŰRrd5c+ÅפQrO;N*%|Iq݌AB,PK$IOJQ.͙P/'-Qc Dm%YiKEyoiZQG(Y)沠X? '}h?Hn'@^cdpDNcXf)J+jvVu&a:SNk tKt-ȅk Xz9D#pÅ =Yuc?]v.?{Y l3"н>Tk" b,l{"ّ#>iGU%i#Ꚃx/<&E] EcIޞa$| aߦs+ ~_zSV;oPK P}#+R sebastianbergmann-phpunit-6775051/src/Framework/InvalidParameterGroupException.phpUT^=AO1+HNP%7`5l^7V̨ÖJLE`B`Ჳ!;ky3`"4>( Kځ2[ tҠ@ &e'dgiGɓbEd(SO -]|JY;ОϠJ)yQE(OOվhTo2lYNoY5h9 3D߅屢I?oPK P; sebastianbergmann-phpunit-6775051/src/Framework/MockObject/UT^PK P? sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Api/UT^PK PN! F sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Api/Api.phpUT^VMO@W!Cm/Mq<ٵv )wv e/ͼy{1K20LFXMY{o{ _2ST $=a1ƒpz4R‘9PDx\Pli fF!#H)Di8 KJ@ 8*0"rLbS pF:Dzߓb&Lx~1V@)dZ)RBd=y gJ4ʵRFj~i`, 3VQÌڂUQV@=C\ZuHmw %UKn Зɘ {-FV(b^2/sru1٦Zo^ELEEܠ|2_>8x[nw6j ܒIQD̗H7F!f_Cqck%(Q^a%y$@иUo{[nREYNRvݸ{Q˲ޛ]}a贺tCfiqY kv%\gPK P8q͕I sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Api/Method.phpUT^}RMo1ﯘCn@ĹP‰EѬw5x6 3$ʁX!_6BC!SŻY0oM@ψ,VS`Kжpf8mh N-ˋ}NՖ{prfί} @auT). aMAaz0^4K/EXz7ƇZKحm& Ccj_Gb(L1Z899B5\klA>O䣂ov"ifDE1:+' a Ikc2}FLJco+4hYG:D*xIDxΡ` zpj4S Ĥ!4RH٫%0ub Q]-XSX=}V]$ |k0xxCCRtb[9iD#e=c(L˪ F7:rakՓ񱉶uR֫ [/sҤfЦÖQfۢ`{(¨F*pqz[R`_FgΈ ،!Gq<(#=Vo+$Ʈ]ſt[LM\ S]b]S}P $ku sz~bYt4KHjF7X.ϱP-#6Eծyjm]x#TNtI)֥98rMH܀TZꅺ^a_xF"1ruhaΆQ$[=iO+uB Nz˙gzUBFBCr{o7W<PL8MX<=4z5y]@jAT%aM%>.+JJ )P*BAR(5,8ŕGG{TDyJ=VmDr[jI#qO˱ [cr;bӚl}LrȨ}3LA{jxO+Чi#.嬪BMb`iwbEQSĸ>x}U?٥^ޤx/vk+*EV4oU"'PkInڸ::j\/Pz ;uYCBqy+5{ɨ@J預 [wߴC 1L`w^r Wh`Rrt9Ƃ/S\AIQA][q/@m,fyj{rJ1%y3 B9F֣D ]։Y][2mݬnf?QU*G{$!k ڣ-"B7F+CJ:dkDU)C u4.` .&}Zjp(_@mK`8w{ܺިq@8b3z+/XE-s?E=#^csb'qt|2LQ ϧH p= uc |.:8$>+3zi\e\l3ߩ.)Fq3C?l0s,>?Odi5N`Ml?PK PEL sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Builder/Match.phpUT^en0 ~ vH[ Xn Zc.$HT`ػRKNj`Zo?1%0"Kb#r߿Vs ;=#&0ӗ_Z/; s1 ;J |ɭUK5!CqLĻQdž|VA?4po!:BVڪɈ3f\'鋐e?JCITR^u'5wf45>&#ۻRԎƽf/<3]D(ll=j~:Fώ1u݈Z=E )}Pc i`O KTf#kT>1%AO*D~&Rq^]z}q$ZyP?^(C O#rvVxqPJ{PK P}kCV sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Builder/MethodNameMatch.phpUT^eAo0 <EmY+tDllIf>JqbE=~ImgNXY!"z{V7uUq9yMwLFc IևXۛGQSGrBOjE͝f"d%J܃,w +KS>,?Sˀ׌&E%GPœڸuk:-|Ac۩{^a>L|  ۛBeԑQCDVn &Lz֤g`,^ƙW=/~ ŻP˳CQs6jR[PK P+}|V sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Builder/ParametersMatch.phpUT^TMo@W̡RӨĢꉆRZ[$4^%]53ͦI(_ly7}CMBV /{r_帀1ܴA#{LwZ gFbB%j8%{ۡ0u9vB,xUsa, J07ԍzi>cwTyJ|tP˨ jo9̝ V7). 93]̯X| UM({觠hV/grԞHOvܹh69ݑe2 P,5ǻWRIޚN2$H:pt^-wOvފk.5u t!?1lq&Rr$ O\OB6RܧkF`' cƬL'4e͔s{]PjW!u70ЦfNh5F"N`}Z_y@*crd:*!r[Ñb5چQl06ٮo4~~!wgQRgsoSxP|](&TCSQ>c|1Sn`&p{h#Z ^jU5,xy;Z/"1~ Bn10 XtȠk<6Tܟl6\+jrN :HB}ğ'*Eç|q݊d1K^fLWBE<1"fZWa4[K&$)hY \oǪ~V_؇OO4͠`bkzwϺ"|91ӟPK PE sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Exception/UT^PK Pi9_ sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Exception/BadMethodCallException.phpUT^uPKOA Qx@45Ao$;e+3B<5~]#X2]dIlC`\ ;@ݳ\Awsa0zR4=LW]` &v΁ xS ؐ*諐#T싩gռI-f%)wBZZ7<]2B:ףcC9b0ER i^})?ȸz셒GwlD;˹Q/J*Wzk%m*D_c9@LaΚ;#풤vbh/m?{ndPK P}-Jw sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Exception/ConfigurableMethodsAlreadyInitializedException.phpUT^ePN0+qnyVET*i:eolB'Kybqh/Kb#G'hRkP#7b_?yC% =TbF6 zQ;X:\RTs`BojY }R@t2ur}X Rc:Q &e+dcG&CjdiH}Txl(GTlWf}BڮWl22-t19{}/jtQxwv2 {/O*Fh-p-?B|L=-6v _G:77)R0):Hg)Jgz(ve?F-z4p!H uHU&YtRSPK Pt?i sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Exception/IncompatibleReturnValueException.phpUT^ePKO1ﯘ## >H⃈z"1vM;˲1wgЃ&_{NC* q$LI6e0גd *27G|.@aJL-Mi:a7bTwWGGCiS2(gF>Vɻ3`;¦=,fOY'էR14*I^3hKQR3*LA v,GG'jd2CctR&qEuQ򶏖+mT4WAd[W$ɳORPz\ rݻ5Cљ*t̾PK P"bB4Y sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Exception/RuntimeException.phpUT^ePKOA xh 73;e+Lxj^XG0J8ȜH'" {M*2J _Aw3CXa2pi0gl&BM` FkAxH7`I"諐b E%؎/yGջZ1*.I0hkوQ vDžWsT¬I69k'gL^c#Y]%>0\y譕Jo[.,b $:kN*Xogr8k]n=763wSPK P1wH sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Generator.phpUT^=m[8"njgyIvwv/d Cp 5j{mwTzm7L&mK%TU*?]I{eU*ngz^%SYRT(GﳴZ'NoG'")4+\\^'Y~*ųIGsh0ۼ~^ |:E|v[WJ1#lI*MqB}L m`wd誫B7I)b^1I+򆌼F%׸%p nm>pxxTXZ^AVVIFTpig0eVA1r~JKb%Svdu/+2 HHFnbL_/iZݢY_w~1I P 0ХK92IHn wV րLz7'^nm3֌(w윜qğlmUq]]e@;^U&(|* .rzsphg8} "ˆdF] $J*A23xFK*0wDwQ.| 1 L dOJ3(tOnn LlEllݒw,|p%hyk OhcE[H>P&S"B|AʫP}iWDAŤľԐVz9iU~ lb?;k7LN %B¨߉l(@Cp[u>VRړ{yܜvjB>&X=aġfGw"jac Vu\ӅqqFTWsp(ÒY5 ׂ(xe5DwK_r wts4s̔B:MjaV{=g=՟!LvJzҹ`m׫:5ϯ.nb/;6nH5 5B)[Y/ FW_g?w'~dmi29O=W/ڗ]lk^%dafvg&%]^S{Mm2Xeɒr`EVoTD sJȝD`l2'A?aJl bEoB5N'o>84kָ{ra4X(gHG*mUu,>Q'SM 1{@4;sc ]p7$2#bJʐ# dV;{W\k`$#yVGȷ/ x*84"Q16.ט_J>^m՘nX)[9IeKxe vXYUDx1Hcd&@ֺuQ=LFoܖ@5 #菄,2jr@gd\oU7 _&|={1j(N{-J.4T!3 %-@H2S Ik\Eѐ nع5@،V.p6YcSAѩnT߈\j2whCR&XBT{䗛HQNaM^(~g㿡v^+ߕ. ]*[})!+[`g>)#:4{+q:FhDiPyLkXd~2VqEkvrnb}Q`G7#0[ PO&@TP~d6~DZ!ҋ6, {u 00D N ?TCx\DM9|pΞ@ kKrQ{ٯ-Tg=g8m҈ 4^4:!Yqg̸q6^WD\ӗj>L'\\g^&8o t&s04T]I^.r2$FȄY03b M`҆ s3׭s,@[8:s=S+` '<[\\-š5\X|dD~]{pϽ5'S^k n\ktx'/B0bDvӄ)1AG3#>0 D3 $#3YVja]UլظL(ސ!_&,?ڸW$M*‘mx kCVQ5WDx6 ۗjkP ]ǰd0hB2 :o-LZ>t~ݚUR5F٬+ǽr#NpACN1Aƺ ~3( 4(LAuZi  ;fy@wB`\̸ Q 4202o~ih,b [ZtJ)Z!V$#ܹ̽"_9-bQ禍* (v=4Jc9 pz-UÓ5e}DHa].;trıc ^Ń7=) aC3vDnKkvdL<qh=v~7/p]|N(ʌv׎SZ9H۫y ihEkp]뜎QXz]âf ;xjD&S'2:16P~0ဈrdG&;sī:$=!l]ohVIs8B^==~0Tay֔& 3} u\ÑE)b76V-<@ÓZSD:E.5(j̀j^@:Pso耑' $M$C*. .?k<7Ww3G PX( /8Xضa=6q(n% 0%3R/ޗjpBK!Aj"Ι5_-;u2t!+#&JT{wC贕*31oG/|ì<( T18uxetEd,?Tj^MmK4⡉%˖(EN Qu!`zKR aQw42ZaJ0C񎖅(-Wd$JG#60\{+=|{vPD2`?E57;}spr:؋N_vN(󆡨w! O Ǣ)'dΘr{q Y?OG;;_A~./"%u0Tx!ꊸ&mn=M`XhIu+kz>~ :w"=B .\nyKfƱ4/y06/q"qDx}Lrf:PK PE sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Generator/UT^PK PO5s7;T sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Generator/deprecation.tplUT^RԢԢ"ԂĒZ`נx׀ WgWMk.PK PwZ|U sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Generator/mocked_class.tplUT^%0C|EG+.х-R B^ (Ng6cǒ#>R%e鱢0GZ*kZm OF)OBn_p!OZкfւ+PK P7iCMV sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Generator/mocked_method.tplUT^uRn0 9L*tqjz٩T dd=Dy%A7;~8".L-r^pPd`M 9ŬLt Zl:ebVS rUړyY&_T2Qp{momSm?=; 6nm$GbI0 `q PK P 4R] sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Generator/mocked_static_method.tplUT^U 0 {e ŋ(LDbw'C W@֣Dh`lQ,)dd6$}mWPތ: @8Bu>K,]ud۝Z6s-ˋ&,` +4ܡ8c: PK P]W sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Generator/proxied_method.tplUT^uRAn0 +P X"5 qv؍*5BjgfǞjkBZRɵP HAUN%- uCsMܤ6(C6h'J竑B;l1⬪i3H5~T4qQxڑP·lh7X z*P8R1Qېx`ޣ''hc\/ mhֻ\oŻ3Wq ׼@4KCd?q\BQ ɪmJ# dCҿ~PK P&Z}\ sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Generator/proxied_method_void.tplUT^uRn0 Q5'S,$&w_Z %ǎV(%\ %IP`YTl2,M R74^Uj{1dm;}PK Pi7<T sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Generator/wsdl_method.tplUT^RҤdҼ<ԒZĢԼZM.j0YPK P#n9{I sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Invocation.phpUT^Wmo6_$n}uXn,h~D $ehw$BITT@b^O.MgXP*AcRxї (AY`O7_UoA@˄qnKE1Cc;YC$| Aie(^ЇB%(1a + dgp|Ҫwja#Y$hGvsK0ɄZ򃀥O<~wdRJ-?egf/]nY^=\("/`2pfR3ϸD@Ta` U{TS0 SZٖdžXDs`6'LIԍi}1~|b4iNg!+F5P3`,/Dלg~(51^C".P3zepnO$8Fܤt5jJW3ࠌUhpjfmV%lVTnΈ- YQ9a[qڦ~bߜ7Ң\=o#fRO Hyӓ3ϢlK-31;,sD(\݊g|GDbJq{A074TR뇡˞C5tr ]Qa)Ruuoo$Gaa^36 7( \.GGs4$}O*W6[J/*ӚuHu7z,&o?uYNNze ?5Y9!Fn[~%TmId)&V7bޜ>M1tsFcߴ|n:I+?< ,ai $e {& 9cㅥju q{wq&ǁw^m0#-Vb ի!69BS%}tU)GMW΅wB=z6HhyR(nzϞ,9{w'N2S/ys;#a A_̪-aX555hz|v,z.% La'HG2<ё f }^ x =CF*&RˍHb Kb uV"oqѲ&l(!FQҕW]pΜ?v߹hzht#D3[~/'|N [Z{+t&PK Pزu%:P sebastianbergmann-phpunit-6775051/src/Framework/MockObject/InvocationHandler.phpUT^XO9~_a$l*WBhUJ(;W7!כB{؞o9{% L@iBw툼% S$f)QɷLOqYTiF9r3UǍrcyas%$ 8OSl'*ф,pC ~D(mlO__(N&[HIlNp=W"!FOFAeNJ,$m|\\ol4q˧2ٷ|pu;O-=rF FL|MBrq E㬔 #؀D;K璆[*#_gd);IftIJ3?bRF?Б 0yw_؟dݴ"srwgukSKV0Ķb bi˕M̄hAlV6$0mm٘'BV^Tbf,6H]CʣD Jf#XrnA/m#gc2TzU0M}a18 ӔƤR4xerkL%>1 ZXDskPJ og Z^Z_!lcTͤ4VMs]NOcEB JQ6!d gdBCkvxsŌ+KYcU..Mϒ12uhG9$WZ03b 뫣hP\77^P3*^d[T"8i1IH;tR[Xj t}vF8w%.R)GUmf'dr%\1KB +6QG[*7Vzw4|TXMg5R:si{ fUySG>~t*RwA=]s8FlWͯ7ĂqprkRO+al 9!黯itB&}kPWg||DN7׿n..%Xܝ$9^G[`[ڼUmhyYbVlQ^tSk_PK PIhS sebastianbergmann-phpunit-6775051/src/Framework/MockObject/MethodNameConstraint.phpUT^mn0 \v-tŊvdȒ!^JΏV7C4UJ-]~)LfRJG`Kx(ȂIe ̅'% |E1p6jCB{*mvN+a JlhJjAʚ h4 mv1ۻ](PI)ɽmD6*0P#jؾPgf`g%]&IߒZ6Bz6:#t??a3l1\Bn: 7+hbk>r*T > Uxd_BSx8 h0V8c2}hS[AX{7mkm[Ii_hŜ6Ic z~ۉ"OCSq:Kx9?;_o1Ŀo?Чs [CR%ʯz6H~?5rdХ3cIvh9yPK P ^)J sebastianbergmann-phpunit-6775051/src/Framework/MockObject/MockBuilder.phpUT^Zmo6_"Na6MMk4E@KU&Uk;-[۵@%uwׇw%ď1'<\$D}?h8 `. 埗h$@x~]12=%|2Ô"[{! 9HN 8F>K2b`X\rpB)h "e8$@HN h.X}DiP<#"f=4g?C|IdHB@ zώ$%1)!$;~aD1c!iw hrn0Gx(Ŭ짓 6 bxpsψ@ )cb738F.^  q3@5Fn>EKdK*63JSbm}9#*Ś5q*O&YgL[\ =l*Hٜzr7SP5>5 t%Nv@\<)cKSj1 g N4Ijc`ekˮB2X* g$t529P{tQ!O T ,dU=moNaBa-Q $<#J9l.۔hF.>$Qp{$*YfEu\҃{I2 고[M'8;)LPI[%0sԁIWB +PI섐kaM[:u Ex6El6%vE=ta!27-K[j}2ڤsײ۬ :5r}WI G2ڣwCeRȹK#UGaɪXtvJs=#!Nc&n 8g H‰;2 Lg~>`޷x?Soޘ=3=N@(@V |B'DP]hoaHkv=Wyzv]/-ɮPFFSN>ChN}֠ mך#hu|rWNy+KjV/'aL5 `9oKU Y=QozpB^N(Jb.KiJrsoR5X]+Ru2j݉\"u{5 NnF7U]Ddii)oMA[8 uՈEU+U?:ba›q2sg$`2t?U!_QE1($7{q %Q<)EřVqw$8bF!/_ 1`tt(z|XP)#U'MZI[W숂[b_]No4[1t]!|yv;[y? +<]~…uvw(ٲMq\5&oZgf%OZQ8瀨&UG.t-ͼ[&͵,O@ wOjP<;剺K̍y`jimfϜ@Ik4z9Z,x[#z|saeS! 71k4}V)Ԥ _ݣAa![JqohigK%DM5,`9vSrR07DE܊ktk\1&Dm50*`Oq$` slpX1#ْkmbG{lDv2gl-LTwrUnmW6YWlUhKW"mD]KDR\\{"{daYMzkVԮ~EJ}1̬鷮f6ILk_M|sPK P63yH sebastianbergmann-phpunit-6775051/src/Framework/MockObject/MockClass.phpUT^TKk@WL!)664ZWbweQ[M$AWʼdC.v2]p/ @:/O?pS*5!f` >YL)]*ߐMs !˭S)HQYT6sB 7u߷;?fr`,+I*)l 12 (Ez(V-Z1{C6ŃO2 jB94ZoҎ\%6̤/J)J AHTY3Ʉ ftA TIZPԄ|53e҈5sg9&![#YruU&atN_NUvfY%l!8U܅  R 0c(BT48g4uϧAC9C1mw܉%*4^}<\^ |ynކȘE]>pd8#j7ł3)ʢ=(sĴѢ8nmNMUG5: ʨ!;N?wpZ`PK PIma h-I sebastianbergmann-phpunit-6775051/src/Framework/MockObject/MockMethod.phpUT^Zmo8_n%.NM6Hq`mjKD' 7CR)> bSҿlhEswV_:9$ˤ dМlN83M&z т'4%|iJ~+ʱ7h 1;V<ﳜ%#jEls'%'4*XZtkʓ,͊QIحӳO_P/)' q3m9m—,/m1P3zI cj29 f,yoNg Zɕs\&?$3fNYK"X7IYҕ\'XɢJ3sa98av'6ѷ[0ހSg*wdgTKO*?>2_ЎXpCs2d7+յz97yr5"] 2&W0D\tF}zZLye+,eovR^n7!yGXOK=DފIIths *d=gs4z"T`tʐ|6cYrV;-.>mH6ɚ}U3(e.ͷi$dY|+&tR}aˍ#{#R\O2'8)^O u@y"8H [q;):K`+ppqVb2a T;$Wi>91mA7΢lk D- U/ޑi$)2 BG?7O S؟e<^ >|ppxқ'/&'ǰ{Z}ؾl0 =9t4nPerwdz6-"p46n+ll\nՊگlVz5npfÀMo6R'r7$VBH2v~KXԽlq~Жx*߬ۊޱ!0o#-@i\k 4ui`gͪ&DoڕA ]OO.׃ĜTV# CȔ)`= *kגU@X͛Z.FO/ jZ'09 (yU;j-޾ZI\Ld@&ſ_^0C KTnO H(:Eių h̹{w TmCUr qONj(a2B_]4c\A1}E$0-A0D3GhAHJ 05vH膇Sz-K dAœ(D܍Ũ*,@Bo'tAOKZJ4D   ( 1cwlE++y2tˎ 8#75bWѡpz`A9ݮ8i!i6n؊ߓ64vЏ|{9kW NRVP)J$%0i*~-aIɶWۤ?y?BNt8h,K[Cot$m>'Gs/r%Mi:ARd-j)`_Ԯ{o-Bpbk[ަŲ!?k9/ :ow+ޜpƔROr]GS PK Pr I sebastianbergmann-phpunit-6775051/src/Framework/MockObject/MockObject.phpUT^QMo0 WS -zmڭРڥX[@蚍" 4G$#0X'yۀt8N*8%h";[pPzj=6*1)c+?إ,eGւacP΀%.BRL}`Q &s7_ͮ U;ŰQ 'Mf4!"ʓQ,2XTTN0%|y6OyTU9n3Yq~^jK#]}i+i4eLBwB/zk(r<]ƶ љ3MyBn$ .EBJT} ֞h=LHn0Ȓ7pq3& KST0@9WPK PlH sebastianbergmann-phpunit-6775051/src/Framework/MockObject/MockTrait.phpUT^Ok@SA nM͟4f0zٵT;%d/{7ˏqPc+I+9 Wl~9<5*@4?w{rY#">_ c톍8P0sg=PPwZnպ!$(+ܦ_Q*Q#"@b#`_1A-t8{)qdH7/b/s>PK P'56G sebastianbergmann-phpunit-6775051/src/Framework/MockObject/MockType.phpUT^5OK1slXڪEiQOVnl6 lEN6Kf{Ch-F$Ft337&Ae,#`tC3SQ :xX,E[QJ?l|nZ> xwv2ԏs/O:q =&(MnRtL%ywQSϕÖR@e(R& %Ƽ+㘢COD8ϲDQaV>K c oTR1ɸI^rBW !tf594BUPK P@ sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Rule/UT^PK PMDS sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Rule/AnyInvokedCount.phpUT^Ao@s@j!"@iiE%[$CֻlA7iKE_ϼ[Zo'I|tQgsK  ] $ϴa),6I8E^w&8N5W -Bi Ő04;#S=m we(U5;ѸIHZ)fFGyL7Z;,`-"oV\SwTPSE|V> }|Jc!m~aW<=ǎF*44߄a4ߠ;9w]C~VOk \!؂/qdR9}0JG@Ѣ4T 6M/a*U)a&TPK P;Q sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Rule/AnyParameters.phpUT^R]o@|:QE+)PZQHNwDgRƳ3c_ }3$0y5[Vys)AGAD;TBvklL2 Wa]јZ|{GF0E[pdr`H7eڂZ/wW$d">{\0cjäks{G2w ̍`,IjmQ2(JoJ^@ ?S{gŽdYa'욾Fe#y=IA2;3ѴSiO,BngG^f>(I6x,|kg,钜S2a[Jԗϗa8.ۿ/)7g1l2cay fT9}+3ӿT}BȰts3|ҫ$)OOL)Bh,Kji;-ύTPoȱV]99/UQ>׋ު{o?Oh3-ɝd%Qh%)Ѽvfɠ6$K[Wc57KU6d D\ @>9"B$=_1̸ʤp oG-)Jq'+ZL+c]Ԑ.ÞgGF?J 9c9aJB>L1UI[V8 jBA:!o2x4ubքX:t\(Q$m3r#6NeQZIf~$n5b.ߚGIWn 0}dzOtJS,+ZF# xAU^JTƲLF'6hYj\&J-V$bntHbs2t@ݏ}ΥYw,K!0@z)@3Lo ̧_5O{0 7^0!+yJC,kj*MWR94e hTI( u#1%3시2n I`-@@לx&J pP\A5M;:?dAxF!YUR3 cPՀFpvޒ>Af"&)4?>rHwfX/WMs5sv!(}yMZ{Ru{o]atd5 nS_^@^KSݦH Pu>''5{p[`47̽D#X/:oN^%ˤ$$ygM7lLSa]dD:XxK^BU)v .^WU~ޥ^m^?vE7غVJ:|8O]FS'VJ;ںxkXz禡h]jGm#>}m?PK PW sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Rule/InvokedAtLeastCount.phpUT^TMo0 WP v%ui]hn;(d8'N!}|. c|||| CY #$=ӼBw6FNGDg%,O >' ~W-Wf-3Pyp"0rb͐856FeۓKHkՂq?=JΏltQ V?66_v2/aY δ4I~o ^˟WY?pS5_;ܾPExe/EPK PWYx&V sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Rule/InvokedAtLeastOnce.phpUT^}SQO0~ϯk V4=!M}iLS;-IK`~Ir;~jZ8=9-/g'q6d0_Ppw!'Ĝ\ I f a m삁B,Px\[T!Af"FA%πn!H[s McKTw{s5q?;JxP:NRB+Ma'F֣̈Fpqheổi~Y[ysk$Ib?Tu1K+S-0K%ˆABBgDVy0x%:X'E !+ )ti dX-$@c׶aDL,2M OFZRSeiB.yF ޳f?Oo)M!g[$`M Mix.58 Ρ!>ʱVC)Y5[nf1>+j[VǠ$&X0UήxsصvH)߀.s\8:ZHQ3⿜o.])ӎbҼO5?&OzoK-`Q/+/j;h>7︬燗^Y"`x婥?+;6&PK PlV sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Rule/InvokedAtMostCount.phpUT^TMo0 WP v%uY][bv*P2q$CC(lL4䏟 e),ƎL d N#8_r+a L_~kE}N9LSH WhS5|t%7}A]͍@B^%HSͭBgP*qC;>DF,}xy A02'Ik f ~̝Dng=Ǻan,fNܧ/(g]0j/oZqN x#D6zX၊ [jY_pw5]*Mh([!X*Ӡ)yH*d&li0*͡f rI(, W'};Ԛ_ u־jI m7>?̰y~+A', 5vVb1o)MexOmZx/xE5GpN3T[ =.؟S^/HߓbooZ+tf+?z4TYns@6ʜ[걏UK8%.3x_ T\Sa͌'wL V:Q-?ܯ1*UNW/77FZo-86N:g𲓍#j!ު&jJoZ_~Fmh%@2\=.Y@otd͟EH);n_ kEg/x"PK P]iZ< P sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Rule/InvokedCount.phpUT^VnLS'%J " \UֻxkFi~pB+dzsf:/_E e)}pZя'ar]"г.ߌ#2`L 3ޠTx闺הaϹu )K^8=)&A[sut3۳OWg* 0J&ro')dljZ+ܑjnp)$Igwv[Mx.:XffeB[i(alkm:#v4*y*f#ӹpUMa2]가JPl@9j3OQ j-K%? XL8Rޏvz&tAmg⒨}t3Z$FNHkh M4ڷYxOO7l`,6Kzsi d֖[ƙicx7vWDR3>?d`\#: M{S"pip-zf5v q#7Y;V#ȁ;z̄k|aRƇ<^X gtcPnF]{Eu/f\ׂg4ZmL.)Վea8aў;YkY ]x7~6W Q| dE3j1nRYkxLW%ˊvV 45OLMC7:;`4tZVZ,E8!KV)9 ynBlA)i*t䭹wnsG 3m<͝\$Z/p-&$GZ.vu^*ϹFA|vO.(/= E4v=pyT$ݒ@^3da "UKq|S#kD49TujAPT$7+i~o=;E@t^aP~kyeQ#&AWn!m7ۧx>9[pTsK~Z ݕڋ~B)wXWɻ-KdlvߑQ% B }T&UJ ˧QRv Eҽ]l` $k+y۩x}tKUዶiLm`H)E#y݅1%4\ȾNafmj,i$?愙e3D, 0.#n.P.έ(5 ZqR\diN+%Mg-h6-r,itIǭb E%XO8ݷϋ"*U J`(';Fq+7<.jAiSP¬QLJ_y8.-vA8R i 8{E.Z'FjHi meHr)Uf)|;FgTqFI9 ^PS^A{V1G}6-5t<NYKv?zxsl7~'#Nl~?GzPK PPl?fC sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Stub.phpUT^PKO#1 WaZ!*%RIqB[;o0^&jLTط$[ű;l;r0f;Q/PK PJFM sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Stub/Exception.phpUT^R[k0~8CץF Ҿ,ZlIHqߑ;M6^,w9dk %F8L=9%iE;C6OfT+jk#0<~}|֊sAIeK,'%4|FnpuCϽq@5B5 HcwNkKhDPWƵї`*c߷/EQ-zTAI+9̽D*1%ZAL~8ɿYBIb$O݃chFxcgŝEw}[b[t,Eم^eB5v`iòaϨRa~E Af<}X&82Ø ^ oJؾZINR?hem?5IX혇P򺇊æPpIJ65޳5<"w̒^<۹TSS%>vD6etKmiNd 1_L`ݟ"u齽0c:*!%Qd݃.&+ Km4zJշ,Q}4kdlUo,,p#VBkq-7j|BM΃@3)K^Y5C$j ual%H}uc ːޗ h&A!ah+ܙJF9z֗Zpl#f`94v>b[%MdQԸ@їgA҄Vrm"wQb" 0[59ǫdTښJqka>/.N/b*s#૶j!#78fMn&hCJٿFRMt]_ho]nYx9^\Gs߬z}?lb,)oS_'֊U||Po8E I쾋$)2c=>v@DO;9IvhS+#8L{>^qNGDvS vϚ"nn]S߈V4Ixwq=]hWY ;m¸wH܋:icRZ%&r;/PK PGS sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Stub/ReturnReference.phpUT^RKo@Ẃ&6 EF(7$^{CPLJv/^{^k Եrzvyɻ͛l [EJ*`KxP +Ϥ Gj1p폱[BCCϝuB5h*e IhJd5*mٗ,R [塠$ WvNXAIhkzj^̹'IݛՑ$vX̞Z]a▌Uݖ}x6HwQvz\!j6$bؑgTYR93Agr"pF9h Cdb;%1:٨X.5Nszqb-AXh.^5G q}|P?qQp`;dVi|6bg /.>!+oƍ|Jmx/~G-=WQs PK P N sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Stub/ReturnSelf.phpUT^RMo1ﯘR7U!JJ@GՅ[$fxmgP;coBԹ5__Qȁ4bU-+8oE *0>}į z *2) 1lGe-\SZRns'c@;F. StaYQaR:ʛx0.af1z%2 ɅӻOԼi8J[wP]=_|,ӈ_"bU2̬\&,u,dPhM*t dIt'eߞy=r A"숖#U6لMc~YOMniun(e +^^mgjz]#Ƕzby==p: +gPK PDN sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Stub/ReturnStub.phpUT^RKo0 Wv,umbCأX[@阋-4Gɉæ$ߵU Z9L=;ҼCMv̧ L{EJdoc%<||a_KAIu+̕gRޣ6حuA;+kж=8V PFД5ɚKhkT ݧ/ehqCAAI1'$#̽F*0'F5[%޺ջOԼ^q_%ISwoz#իXo(lv%?l-x:Ǒ Y#0^,2\c"cV>5$#/Gb8ϕdcmvPK PTw r4R sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Stub/ReturnValueMap.phpUT^So0_q1QX*[5=!!ǹĶ ;mbsǙPԓS洱W(÷Jy(UV BM*3b.<)E#k0P t=Ue[ 8.Vg@]RF[J:}z< ";Zx(TPU{: T``=Lh[NqjmrhK%ͦ$iH(FiBE3m> 1:fo\Z1m:(f|H?D⣰vAMWQfsbeN!V$m5i|.f[Iiґņ`^p~0P}BKL_,s?7`oMAf2\҃diuB(d)]~KUP%3Q}+y~>#r1CpN -l=E5v7wv3ׄ@:SBǷl̔zf:~C/0&PK P7c2H sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Stub/Stub.phpUT^SMo1ﯘ4BDS ZJ)Hh;ٵ-{%BwnRԪx<`td4K9Jo^_,ż9ZN@{({tݱRBl$S܍\3R\.ttGKa1 ``C.}QػBLSy檔Ģ :.Y:O>GC*Qqh*vjf{|ox$#ۍv49=[7 #%b^X1R*Y;/j@Qh~)>ky`9B~dԴκZ/-.~ .C#tU3eR†RRVy}oIrtB) p% OW:L8&5sM̉19Fr#w amOH%jw#FH_ Ȫe;LcDǀCgeɬW\.t%;HsN 9GyH0GyHQ#Y]-IMCnKOq:>=mPK PFOB sebastianbergmann-phpunit-6775051/src/Framework/SelfDescribing.phpUT^5QKK1ﯘc[>Hz$f'a2ۥIls |^Y.BIvV1]]L|V ;uAhX ~Zs3; &3w2[BǝU`ݶ0Ԁw) {#.DFñ>Y9HA,%ЕD5o;}I%VtZstchKrZi o4<pzaO=A0~O;^?6Lv&{toOisZ&AߌxI$;rq$'Mh 0>#+2yB]S''vJ_Ӽ`Ggz`8 G28=íwط h-EVk7PK P8M8 sebastianbergmann-phpunit-6775051/src/Framework/Test.phpUT^MOO0 >p&DŕmHMܐP4"sa w)X.Q\{vg}C.؄#䝼W $[X-ˉ6k-5%kjfH+NR;$VCjcX񑎡hq;on׷5 l-C$ul`/cNը2d7ȽnE61Ynb&u@}W!0"2030yjƊĈqLX1Q$р+$ҟzԜ.( pRjWxM2g8|z"UhL%(( 9R3ZuJ㈈O΀k8jhg'21|;FZ@QKaleR5*< Dܫ\K(xW[CI8,\RG< xG`D&X̓ x$I ъʃq rP*]}iG+c kkU):+R:ODIĚ| cmh}h/ Dʴ AHøNf+ 9xHC7\퍗A0lZ l .A#vAnF$:yU3Fk5Y */VWYD2 yTPG1]pDp/yt jf+ !6ƈA9֐h0lr'S3%3'*\`t 1 VKҥ }˨q`r08hdZP;07ڳ ;j:?I"AhsMW @ LIM2Svٮ1}TO <;I"bɄtNP=Ѭ2;oV/YXqePJK8`M$Mt#JI)Uk?vѮy|gf vWv;;o30Rb7$бNL'CaN ۈl^rbN]3]1&[OBφՉ)v6茪/ZWv<~u=բW㞷֜v7nxx-]'@4FY#6?E;ih>Q_2n&"A#ˠ_m"`v֊9N.O82Z2DžV EFKԝoˇa˙y/U`6M)ԕ'>^W;Vp~Zt@!3q"z;%[QFy)֜F57_|H[mt^Qذu9\9]y)j{˛0?zLUA)]7m͡/*=Lͭs_گfI+*;<Oj]e^ U6Ư՝.GaN+<L)a$ !i5[r705@N`95 ^iulH':PK P0.< sebastianbergmann-phpunit-6775051/src/Framework/TestCase.phpUT^}kwF ث D2ewX1-7zJӇ"" 3߮~HgN,U݅zj hE͊iB~n2ʃE "HoWITЦ;#tE&[܅Igo@%tC]2Yzʢe<Jr<`Hd7X(#@ g"˰'-0XyU(rGPF Ta4LvfY Ep~.}pxnQf}%8TH֠@E=V4ƪJ]t, bd19`dx]ؐE]hng}3'_"3煇O4X2=f=3|w:8%徍[2>[JTPQ0FΕΝhB9AV`xAX̔hzugk,! lZr_1Ae쀓G4+5O˂ۚ==`1iٞ 87 uџsihN=K3j⊦c 5yv(+~hI5hw SUXo3t5%U".w:,3?ՌM5eYIv. >YF3r+-Z-}9|lC_Wdp,]=)3ӇY%{cR߿T̈f&Tn廴NJ)>֯,\K64ZKU9zlC|oՀzyASuU=.#WmxÝ.9$?.Pv+Pͱj'[ېMySܶk?*Eum%Pu23JW3oI#PhQtEZ <f,VÆ>Yj-(\,AX {P +ͺ&P? kԍur8Hܱ9~Tm1!3,f)VM{,+X`68*}(g%~f[,e)YFnLH[M,)=w"`^0zү?W9*m̘)1TjIƆkn4`Ijh,= D r?(/b04!_I Z%}%5E/\z9 W0;N>@==Ζ qfc~4ShJ{a4C() a}jzpyy~鼽(ՅtYQ~~|9vUNF AHՐXQ";P(kILld#jig4`7kkj꫃s=ܐy?IRzXfs^U t IZm-CBV&]i17Svw斪Z֮{ UB) I6Lf(]S e2atVhpA%r|t(r:f&LnUpFX` 5!cЭib0'Lii4'x61kid@埕o P_;[oLK=3`:=^N^ۇ7o>_dԽbwjI PWƏ46C] ,MVF[:5~ׯ(74(}55/(am*ʿ@BNl ]p3_1L 3'⩻md3%p<}{~>/30&6 Gh>̦D֍KA=ϓA':rK_#7̘}^{DuZ`P'8:Nd'%wضx)1?y›ԡjv:.3rS'F&"~>yEE#8LzKW끱nF\K2kt`k`o/ "J÷hp9I*@vQ(¿_ip! 4&AcϿkU*t[al<aUxTRT]g&Xć 4j ^VGeOgdB\.=+o+14uE 9mŁ{\A,\ Vnu@rۅwe^,=W5FTI5TA 1N\mHx͗5FPp,Ǻ1G'םe1d, k(+%7X|/;{/& w~Wܷgl[\bLGU!?Z{[Wmѡ$̈vKwt~n?M OX?WSQݹ'!\:\-84qF -` yU5E0Xx׈ӕ!ΚUAz5̎ 5%ކw!̙FA R[ŎTMgbF,Xn$q6*AOFLVxTK+'۠5;tfF2 `6<1NfMLJ9u7~7reloTs6/[GaE$~g~PWu"K?VD$}s!1f{2Y}4o~J4Pr7`X.l qVmFo(w0;MnMShC ŞB?VJ\Eɑ8xX?{}br0^0;p=0nIDM0ޫ10W@^$ʧC GL"t$,3IH@pA&7x ]sH"p>bR,Y͏,2?̥ l}LۣJMѭ5$adm`ʰLGV#AƇuh߻_4M "M5߅5SHO=Z, .>  ݥ ![~f]vJi(7lhE K]ʹeLo2YV;8L$L Q\7 m\b1)^(iggȁR7'oĶ-5w9wTƢQ]z5!թ<1`淝t}.ÿg=ӈWuFMۍ~eyrDkNvIY\@/S"S⣛wI1DzbeHj /& ccT^2uq3<Wx`_Z=͂1v߇26C?góυ'4؜En# %.-5 E9iDKZzƯ%A #`P`̊FZV˄!c#̂yXF{A_8rMErM~.Ú%/qg.8(WܞG)!:pP"HgSG͕:9͐|^cwwreG|nYEpkaEXtf7<5874Mfy9;yAO9L+di 4&J u7:!l&qtxO Ǧ#bô Ed)|} ˴ԕZnp&})*V\-U4#d{~-S<˰,-w4?Jr$/l[ߜi>$'°h,NlI!#ՎF}⨜o$ڀQ^E|~ Ps/V_Lp$ҳr5N"o42m)-XUi\z! ,y%*c1@FQvջo7&Q'm]_[K;M*Qe 6,%HyT@u5M48Faw|^ouUN6d[M#&E뷓헎Td:ϕvul1o*o]Gz:zV_ km|$K{vvQQ.|KRQ2MǶT ^[|.籹u^j 1J.Tv *c]ETX3 q z5~G[&MngSݢy .hll`h q*lZ&ԏYqrz Q +j$*F׷+5麔 sh5hNٻ_+ E>(ep^|~+}­V6gxZ#0F:lQLeCN:8uIfk%[u<]%rSY̽%ƒIdCWWnqnPRagD:C)CϽ.i zYU|!]q2^gOphvieQYhkci\Yk>np?Қ#b + sW.[_/5RYo0_|G2>H缥{Zf8)9),TQ-qZ6xfNw+YXlDd(?dʋWTdwh_n"BvEH_tIQݜ5vz:|:\e.)CrG^^! W+S)$n:bòH!K::c( 8ٍŒV/l`cʊ;ݤ^ǔhz@'Gh?8QDj^m5%PQd0=/Բ."2R#) |aخP*6TR'Ş"jb]rF*j0,NjE[%3ll4n)-p .3AMkeCz#=FxAQÐV5 \G1]xTک\r!F!%RUi5=wJ}%y V+łgQ) _1?sF m[EK(E3mhV[Z  ڻzU`ߞ7mP-q6ihHϖ qȗ)ϳ! 7fO ;&L<ߵ ]Ԟ>k=#{ 2]/I$tpuypIJ(bn=uD.@cf@ʮEwHeuf1 b%r9;T oNs{ޙ%pHDµgIjhfE|bDbNSzzj B*0؏h@Ь,m.\*_!ȩX uMrKmU 7b=fVѬk׍*y_B\?+iU kԲ5C-;A̮ڞ8]?P- =#E6hV$քs|,-cQcO?B@,x֐"$(uثb҇ΌVAO,|lZ,FjY,n!g BqfPg37A }z䇫34l돥:tK E4c Fval1딽/dSbB_Fp ?ʒ=yҪ*l Alº'Rndl Ib]ZS2լ[OKW|V^FFU'P,le_NĒ| >dSAe0ϋʈyCQ:wb}:#o%`ނ6T2!KZ۫YؕQsJiyk+j@шV!*GRj{VG N{+X{Hτ'ة .Lq^2d:(UX?QRKJ%63˛aJJ+V+dJV)^7"5};zRo]bDH,UR2F^d.mJ6PJHDt=%^-]K*6V-hՊbWznKphe|)ffPnFʚYV4nvo_}fpp%Fqp^VO;ed*,!Aɉ2jK d%]1W#bj m8,ZRl Zj4$֙h8)hl:;T#?RB|tGn(<ʬ"dUyIyJ$)$JiGgVkm4U$S$ Ruk?;WGë<*Lg2|4X\ eF'w| @7§3!JZ.Lj  )L UZnO_} DZpɂ0ܐVEn^N@^tdϸ1Z0ul *™ʰ& ;㴙$E:fO$jIA;}YWgrLygZ( UI0f׎I|s-'*_\xBٟ>J~pZcԢҵrzKhe$jG=q]K~Z_@GY_xX.fBgtЂrzUfQarq*WnsJ\.3,(/.ouW藽aD] NfR`HDI?1Z`nMϙ;l}@"K1ڗhOb#"}][;ޣVw3fZ^sњ*1nll0owk8TF6b4rPP縫wvN*8 `4] KnquPpa ]^3MS͔?w14Txܢg4ڃϥ1?i="Mvwt"v>Ngu "ԯ1ø%]ꨛx)TU;@|uޗh谀]&IbVN9oD/?EG@b)r>B 'i2S!aH4U 2QAfL፦z ō|U@yÀ%ʁLl $/3ҝ+z FM#>8rF)um)h[If4k2qjxfQiU_i¹KP @5><#R:7km ZX mm)m)9ޝ4FPm46ñ<؟n{ f1 f}!x%o^epzW&vdnA yj odWʒϞLtOU"QĪrU/0Zm=\r' l73Kq5Y`Lꛁz63^:L\+ղ}G`|gij, cݣpn:JYoȱ 89?|)աq}Y\GcR葟8 CA g$uTߏ<𑟶Z2+,{T\%aQKN ȚJv(fl$gY::^+*Qt,gzm̾*uKp|Й;阎ayQ&|bʼHz OCij>#<ݲ4G$LGGxuXaܕ,` _+r5J6/XPb!K[ VGGq}8J2o'( zFF>]XjCj HyT䍪 *^p#?29SR?b|`BsIFO lv{a|T 1wC FG 7$ n:qZ45,Ӡ [6Gi`JY^T{ Mջ!ovkm[KX vbFqsY쿍22f`|z )SuOcMDL9im3a&epIAM*Pkv駧=avIA[ k>9HϛA޺iJ7`JO[9;X|y8iսթ-cu<Z4 ݡ&Nr;tusmZyUmL첷-/%{;y*\ n3/whU (r=-{8?u`|mHy̿cHbjt2lEhfܝ<tejN#iBLjۛoq;돦b@v(Oů趝`4 +TA[X:2xZrjʹɑ-ڠt5mυ%PK P41Nq?m@ sebastianbergmann-phpunit-6775051/src/Framework/TestListener.phpUT^o0Wn+@TMhJblvд}g~˄W@}sϦ0 by+7lϠOtY:ǻg%%.yܢ]Rpv*TOf-!6+rTPڮZ])U:N!UÚ92+Ν,G*$0t=[3l5Ēi*#@ca,<{B^ΨA6G&bB m+bpa9h+kQ\֞]QNCqЅ&C`١j連li䊇"Fw:~/婰z4K͂O7W-- * Ud:S۠09ee0v& shC@pv+:G62eK:vI'5eno-7yd\RC}sԊv#g2ˑB$7q8IcP: :1IZ%TT 9Jsikrj1/UZ{({msPK PT]ꙩU sebastianbergmann-phpunit-6775051/src/Framework/TestListenerDefaultImplementation.phpUT^Oo@s!**@ $"R*ĥx(jv\+B:fgア}: E준X֜E!Tpg}f g\N`A+L ɺE"}]P78z3 ZT]@Vx]+wpI>)ĆjLzva1ͨ֨c9ɪSrгֶbS$r][Js;+A6eL^:B%fDȓܙA%2~|dwTa輵(-y_ #v+Kme:7 2OvYKqeiGX54y݀_q?xG} FrgtJ$7E%/CRV9l>rl^l8FrǠ'23 w0J?P~9T &<PK PD ѧ}> sebastianbergmann-phpunit-6775051/src/Framework/TestResult.phpUT^=]s6tJɌr+Qd, !f'9G  $7UG$/4 ~ܮADI)-xQO[B_pjz`'$a^2_>q` "q?| 4@%vȑ.˃bMe$">j]aI )eo"6!!<{#w~vrA1uX! )ǸXfe 0PDý4 ]^ CSJr4ϳ{viTPn/Ȣ= [c'?%>Z,ذ?[^ia}sMh(7D'%w{l:HgB"|>"ak8E?p1qb4 Qz q>L'%p҇߮fdeS.[R#Wg%^#3`S h_0E9L0f #$.mmbB8KZxI`2޿0h=yy$y$Tup hu!߅qRKGYccAVc$G'H>nݘDdE~?YvπVPɔ$DGs0$% Do/ `D /$  -=U;V-LhieSV+,K\SY2EtU&W`l%@X%_$H 0:_roi$ 1GB eNO|v+<haQVYI$>GQ b35[8z %$XŖWq./Ai킹%mØҒ?b6Hp CV>`8lYPLZJυi*j焐wBm%_ v8!dNH'.'DD~$^}+ۀ`|UCG7qb9 @s56շ`\#H$qL8f 1Xc HH^F};vm]Q>L/=O 7U0OngNy {,l")01C[[mKgIk;$df s|4P:ݲ]`9$ڒgv5 +Rܱ? vpItxLf #4>ܐAcr'gSqX&\&,[)Ӄf{L֨͠kMa6 >٩Mq͇(uf/`y 0$nSK=ghN?+:BvN >Sr3'9K5rUuY?eT:^n]?nɓ{qOw/Cz3U0^ -cֻքh$ٔIZwW440~}z(?52sBN&DD^.rYp@޺-L5Gk9ݭqF nbmw9l`aj31R2Vk%̕+[ap3nG` |g G3Xclݹ, ҁ0 cu Smm}К@ &>$ׅ^ێZ9;]geaȒik;9jYY kU @g"?䤦LeYxXz܉[yf?._;-{b֧nRyv&lD%"B^v<3y?8#=I| [9u!4 !U6,B1qΙ9+?o¿4Uh})/cKhGL1穾~30#΁hc+7j #1=YaiA߱"u:o4.0JRY˶ -8$Eo.v[C9j|lƞضvc\5[[,CN9g8Q+iqS?N.Nߞ}r8ex@.J]/zލSxALs^v{qĿLoœL>=n f8AAiO'P 8mW&># R-aSP\;PdM!l BVĦ$-G׵#U6g-#S 憬E'7p {T:CM!/%s(_mTd6wKxdiQoM-}K'߆:Z1n&x X6IBs6'Zɣ69U8|諜wyō6Pj(ˏW^֢r2}?FP'pyK%3V[ ITԨؙmMG9X]R+/xKXiHpi|`Zzzr'~|يQC5mDCWnzuC f~Lz^kh5m{3~_n*AfaЀDZT~&C(L]nEEȂ;Qm>R i. mRZ0vzʫFK2ͧ0 ?M`^7ǽZf[Qu @Ҭ:u v t:"db?z0b#T9?va3's"z{ `ƌۈ|mH;͸߈̚3"qzSl|wzy%~r:璋vWM^IBȈ,[gO畅. +p#8]طbUӍxN` |1kA {psY SK?-Y "G4* QpW^R:Asfu{E:W7IU.5<*;4Xz+%/,*^p>m+s|_>ȶ89n9<8MFB`camQk1P%Gښh T9`݄f, p=^Ǐ9a6?neuX.5jK;EMm)+rަ9iᠮ[V]Va09j+ji_dbY=P߼qQ DŽAo#EZҎN!`^)Rf8)^@h) ,hM?^eHYh^phPmsBq7 [ 'n&`MHJ[eja>@Um ߱29eJ -vJFNXH BO8~;[,d+\ł˓W&WA͈V{"\]菱{\FNuoXˤs/0nE4Qj>s/V A"HOƘŸ GWGzެj׊U/s,щ֣P024 l €1 ޷L)WbƭRk7ZqGM8bwKt' e^bXeᚗ$1o h/mak^V WIZ0jS!3fvJRalO@/q /6Gψ &T,,hYzey$?x1$sXоoITlS&IMxU'bͳd0g._7`l9{c>}w¢%(CXyQPF/i>V>+sڀbPQgUTE;a wA^i(USMONx잇`/ޔ&!;| ِm7w$LYaNب^Nk9OJk{Y|۞ZGUhgvO@f( ?H '_+:Ny]l\wd>nH]H'n څqg!pktDgm=2P{{MDnBo0pX!B`ɖ u(vN"8@4 p2K m qb~{Eb1u0& t£cn-`45êU.op 9r`ef AΎA{>`6)gg `gK`08&gÇgC&iѰih9> 804bI <6y;B z%fy`bdϓ#o 䌄lY;eX|bPbr9IrA/:44 Su^SH1ɻ3 $L!yU$ET544z[E$F[[Zi[Ɉt=_XŠ&zl]$ >Nq髜Pq;ƥ$"$n^O'}vE !Fʮ d12CiD#:#uA\_?n W'WEFtRpŭpb/L]ߌcm9g'p~TJQ7bȝ)foD`HhLG/; {X\Rם\KW6KojzjbH}%GԿM5ZnFr-p_Y`+3cټt? I!98o ]B;:]v@9Cӧ8a`gzi;c--s.PM~)#r":-th]Gf귋_?pܩ{")k>]mx?1;1qےRdRO׀{``j St#`n sq`D4x) * .!ܵ,V`j~BhtD)em^U`"ǘϋr2տuɋq<0 h-ģ7Qaœ_L@*8a7H0zC8;AK73c 3 !& OܔhM!Q]@:cuV5&#;SL, xκ.'[Q);7M EF:mBX2~D@Y]76.m 4ʪ3`@hYdAK{퐽M5O^W0:qEC--io얦0GKP`'EIL=y;}"gA! „X^("mT -<}{}~ Uʭdş\:d9pK$ŖWz:EM6RIZeRyΛ@!4,~x#B/}ߖ P> x_řO+J\$#SGbXNmpY&ӥ$r$k»Ao.sZE@CH9tmĴSؚKbb2g{eXP/*kLFd*,͕t~zy9pV &Wx`vͮ'ʪ `GC"܊i!*rFwf6y  ?\N#ROjR9쭌2:-HWuMӌ/> ~>[x&cvnuz?dXS3z#kJK@Nj#%L3T m.85;)\|+]|vR*a|vP!Lx;LCׂj4ux`L%]e!huwOdI6`{8GJ6zSe@xS\O=tV`DU[f}3EǬg'P:*EЧ?Onfl?/ΰ[ā܌)^GMɒv.*w &JϽ64-%h}AEI F@3TMc (h¶*1$w>r%2M珥6 D|*Lm}4_J.\p[Zu)n-a`RӏzcQLI@Qrۧo3|c;nD>'w>)Kx)Cì,G&`= Q. /E K5]2+pB/5s)~ۣ[hJRt_Dq0H8}{e֏0T\1c߶HJ^f1_Wَ,0 :Tch7 rmwti-Y5V-z:W S.֭sKA*l/?뤐9.]<'f0PkLP?B~iP3Lp7[п"W$!(qcKұ$]#΂I+XoH Y4La VkW*[<;vikTQZ)}<$O᫦pN*Mo n%sQu#%kVV{:OuAo)Czv8b}m*T[\fo+6C -ss=m]D!by rjnRX4G z'L8^O(Ol2mKn[o.*^6N;6q:Hts߆cZ, 0(i|;>f: *3k~d23sO *$wI.09hB*Oc^>?ϸWY={ǡiAw;U=!a:ߥ=>!^&06s˅TtnJhs1dxCMLȯXQ~?u'jOm@[f)5X- oYb|ެMOɃԄ\%F]{V]4/e205%6j;6ŐҜվ n3ke,/\5!I_+Mcb~EO OXu'7MJ4o ؛ izHH굻 ~7/,Jmd^N$r/i>ƌoPK P4ىE sebastianbergmann-phpunit-6775051/src/Framework/TestSuiteIterator.phpUT^TO0&!HaZ iBhOUs!ٗjMt־'ߪe!,Ǝ4yhFpr&c1&‘}*0q9'= ųse,PETsrS(D8Ό-)?BUFap?/.o.=UPG hTJ0VQ'ܙJD)z'%J^WVk8ڃs 696T ZΑ̃DVؔˊ5'P4ʚRnOgʳ.]9 T%[&_(kT3F"$2Mj!U)!g.m+xx'>s3-l&fkIP~jׯ=%Yv{1{ݞbtBcT{d(TJ)6,Rm L5ūus}`'<7{'a^ ۣ5nܚU=q"P`\6 \eh%ȯKj-%^upσܹ Z.3WHh~7Sœog!5E ;qk~Y/8ܧ=n{soى7yP vw H7JFV}/PK P$d2EC sebastianbergmann-phpunit-6775051/src/Framework/WarningTestCase.phpUT^TKk@W`;1: NhSz)j$-vȊ)%6I^3c?Vy B<ѼM,DpwAJKaqi JC1,1V)+pL0e7s8GH ,gP6h^mTl}UJjkM;j}9P:C<$&8kù"ʽI%TO"JZg5IqtVXFخA}؃u,Pk$7XFQ"ͱ) o"W-Nz>5u K56CW#>0C_D Z+ع+L[u=jKbUxT._d1?q׷Rm[D b\Y{9H pˬE $^eMe7;cɭXX2Pk"m8ۿ4A˧'}tsإf8=FȐmF'\=qm/""}^D^dKblQ^Ӷ3U~!,;.xLrDۢOMG<:n_PK P- sebastianbergmann-phpunit-6775051/src/Runner/UT^PK P!OP? sebastianbergmann-phpunit-6775051/src/Runner/BaseTestRunner.phpUT^Vmo9ίJQY"H)\Q:zŻPt~3yi,$gc2K ~Q7fp}֬V3!O20:œ5)F0 z3).> m3Q~x`2H\jt(X͙Cqs w:eٙ3dALSX 3dTXW$s0˃ S)jV*^Ov[i4lsmRaxjz+fb520lZ? +EY0ZSdl0W(teŚ2iTH$* 26l2䘟Qx opX4Ȃ)LɿN1Pjq{|?z_i0" ڣQ dH4 %è׿tzPݻv2Fk@#^ =@T}oy팿}o;UT[m!7Ac`Ӊa08$LOUX vefS zida9M ?2¾E (\<>O"f8̹A7Nmr xaEh*]}%jY6ƙ D~`g<9e': Ckwxl?2XH(>6:lS_Wk s <ɬ<oD@(ql"0*A j(Q&@#Nv5Z n+V {hkfQK% R!&èb=YQ׻Z92 :96R^yᄻy9یr#j{TY ,[[VB{GŅ]To6-mm޲q<. V[ꖑk08%ꑗ!ȺJD&D,2;0JvN68Rv*姎^m;\ϻZ#1Eݰ=t4[zXzp;7 F&p^:W`ڋfuS'顭X0iE, ۞k05`ښTqX҃؋DF|`yl9f?PK P?]מG sebastianbergmann-phpunit-6775051/src/Runner/DefaultTestResultCache.phpUT^Xms8ίP;b:\hy\e:0-&FH2i~+Ư@nZ˳J9#/XBrɅ|8:it>6G>R4 >#% h|=cTrbZcЩH]Xmy*H>yaQ"|P02k,i( wJa9RXg,OU$$>zVs#`'N5wI0I'F,w3_kZ,_}"$YG%ep @,B=HD@*_P5SAjN;JQ8 K%BNo}FքIf_6*I6~6YJ@_T6>Ou:OkY$h?]=RQ(GJf2<LO:yk`1ԄVw^xb\UX źkSoELm (C@Iu pD&TJ D2.4< ,cfcOZF#:R|@3*>jۧsIZ 'm7 z8A,e~`8±ǽIc^vVkc5T:ZأM54Fâ\ kX/#x$"/Nm&#TMHRΒX7TX_c6ֲ2[[T;wCN 1UʅsV]vv=NCRRfU1F ԡC{7כZMu.W[7Zf"s)E ]TY-VP0t$`Rfot$1]vLqqA9fљi]@eS{nut{?: T^fC{;fM{ͮvK^*Oǟ~ny@MU;bNN,1 ti`ڧ@pjrpBN,xsH ۥl>y=Rb'X-=s>=ͥrglѴ |&B_hs45#Rs4V4cW]|0:JrqK$<ܴ5OS٭.Q3VU"#s9OɷBn8*w=mcg&C5٤􎷂eXaq/E0-$ⴰXV!؜n&4 ,yߊj* ~fb݇sF)qoIjBf{vUjX /-k60sVI9]K$1x3S¥AFW`zY}5ٶ^@aPʫϧ7ӌ=hnQ]\3k?PK Pm]*: sebastianbergmann-phpunit-6775051/src/Runner/Exception.phpUT^EOK1)xnբTD՛ d;$.wwmxyfyU 'i!b.! oT!4yܼ{KPLX̤^;1-*)>3&r|`czajz. pMx#1z4\4RMBN;,3ߴ~_PK P4 sebastianbergmann-phpunit-6775051/src/Runner/Filter/UT^PK PċwBR sebastianbergmann-phpunit-6775051/src/Runner/Filter/ExcludeGroupFilterIterator.phpUT^mRMk1 ϯP!ݰmIӴeJ Mz[[cꑍ,g3ʳɭ3X\|cO.Ъ:g*߯ϻN~  QoswzVn wcр _H2Ey]QmO/$#Pc,a?* {#!Ʉo GB=:,7_?mԢNGT8`*y8ƔTőyj:ƉJF$3Ыvf(,RZ=O?/zt(S6}AgȒ`+"amq雤 nl][FᡲkyO˳NF,)sD%U?Ϋy'-{OET*ٯ`sPK PWpQ? sebastianbergmann-phpunit-6775051/src/Runner/Filter/Factory.phpUT^uSn0 }WpE:E`d݊ 0lE=5@t,ԑ I QiCLrx}KHIh(HmI!Y3\NUEB[#׹T)RPelI&P%5!Ɨ \J?IR9J.FnueqM .(}c ɵ(IveH4ڴ[![wsKmgjx6䒜ױ ]!E-jҼم"цfl swߝm0|74] ?=wx &C xz^c@;oѲL0ыP8'9q1ʧub -eR ҉62M[m.m-D(OaoЗD 2ؑR\Be6,Sz0s>kRTsAnm7.,6oÃFe]”~CamQ$Pmٗ7ızCa?'{N.vbIMPK PauAR sebastianbergmann-phpunit-6775051/src/Runner/Filter/IncludeGroupFilterIterator.phpUT^mRMk1 ϯ!ݰMIӤ%iJ Mz[[cꑍ,g;ʳɭ3X\~cO.ЪO:g*߯/Nq  Qq3kh=+h@$ ᲼ծ6W]Б`1Ky=dB 7#՞mԢNGT8`*y8ƔTőyj;ƉJF$3vf(,RZ=O?/zt(S6}AgȒ`"amq]J`k G}u;eJ*te]p2bO).#-!° "8 ]#-PdFCt/?PK P; hl J sebastianbergmann-phpunit-6775051/src/Runner/Filter/NameFilterIterator.phpUT^Wms8ίе9>ܘM4 tCc&J2ۘy&vW|B2s e;ۂTYyCQg8|{3&t|3cb8z(uoI@Uk:jԪ5E,7zrf 1f=1";/I[".v-ګd!.Nܩ86~KmZNE5u_7/PK P2 sebastianbergmann-phpunit-6775051/src/Runner/Hook/UT^PK P*K"M sebastianbergmann-phpunit-6775051/src/Runner/Hook/AfterIncompleteTestHook.phpUT^mPMkB1WZ7R[d^h&$R߻5dgwvf2Km&范Crs5H6/|@;w|)uf`ƭ.5#D0+g^Jx{< ">01oZM7HEiƐjvGiUGwj.`}M-=%٠Y't%iNa>z"S<1fW[N^K2y ^HP? ~+%jZЈ`)pR (q.w8]v~PK P~FwG sebastianbergmann-phpunit-6775051/src/Runner/Hook/AfterLastTestHook.phpUT^UOMK1W̱-bo*[oB&IHf[ߝz0$oޛ.<&eId+Ljj\6-ehC;$X-VLr1Y2 ȝtfV;yZ34#XVD0/gNu`yAp]`b:fk4Y H.V4Px}/Ϗ ]ɶcpHFKAdROKҢx0ϔĘ]M;y;c`e_ߌd @N.+RF86`L(-`_PK PLX H sebastianbergmann-phpunit-6775051/src/Runner/Hook/AfterTestErrorHook.phpUT^UNB1}YB$n`b ܙNi6)ݴ;Mm&Cr}9X6/|@;w|!fhFƭ.5D0/gNͩ)f!}2hA*\̝fi)mq{y~\uԑ[ͰN=V2B^b "zHwXd'1^WS3æ uzGBIP8#Wk,Ӷ0gA"xw<"4Cׁ h XБCjMH | C؎pԽ sebastianbergmann-phpunit-6775051/src/Runner/Hook/TestHook.phpUT^5O]KC1 }6dpM]iisێr>rN'pdflCta33y.q 3aVl֛7a)liE)zej nΞǘA=A76cW@qؒ(]=*G+4|O:S #p>JFV_ڼ![AZ$A5jGE1~}++c~PK P>P,I sebastianbergmann-phpunit-6775051/src/Runner/Hook/TestListenerAdapter.phpUT^͗QO0)nRRJL BI.Ďl]5wvSHJ҉AФ~g}lCz\ǟ~Kڀ}C-z4j6^`yF<1=0_bx{-_K˚䋰6ɚ$?hQImOx|*2I728r#sF2X\_T^9QIqw6 >9"Ϙ $K>pD;Nf:T2RwQ wdSp$e'IB=kwGJ Ls?ȉc'!Iv^t #7DK[-K \.Wk2yfiф $1e;)iߵ~[~7ܜY&ܼ:>gSpPK PοW=Q= sebastianbergmann-phpunit-6775051/src/Runner/PhptTestCase.phpUT^i˞7<=yywMVAʖAI%cd0|YGO~Ż@( N͹8[a9 V 9R -dgAu&>{ g1jx6.[lJfys`8O| i7gӌa4 Ox"703sY=4B} 6J}d\MhFlmc#1 B\?mjssB `_ 2O7 P?*? >2D~(M$M85z Y̟' : {f$^_2@!ZP5շf=O{pw^$xGQ`2^_ `8~Ɵ< e YC;7 GQ2樅9 8FZ' _z?'lcIg5|O1^01 j,!0~ ߯`O$2P: - q&ϼY\rrII>U'%5/p/X$@e/}0CG%=X  Sm@0A7 H8= M%`}>3GT1GXáVЅuD5VXyA͕ W( G1;fK0 Ran`Lbhɧ[glipc1?A=ԔGJnN ů__0|8`@gWJhC~7>3`SjE Ksc@ +wsتsv!ɌLx'{$*b4Ð$XB)mj[Lz #g28(|3a<oAU~J*o7Ct"©v5 *(M\zTFycMm/SB(xhiaYlNOІUI]; fsG}"R,W*!y{{x8VM(!Vt%\ Pٹ,R H!;bx5p5.>AT)01;D覐z)tLk:3h;/&n5$)`/f.ܔQPK@b*X@Ut2 C+?yee hSM͢PPԗ8L^w0r?z¦RO· [ADݝZt9ލHJ3(iXXuIzPb+MSC5x"Y6P3[8X>Op+}㓊~qk`_YT9i=;= o' CPEF`vPE@pmZɧ[tݽWbW@+YEZWfں L5x@(,m DWL`E>+XeB Y}s?dB4y ŒԾCZX(Z"X.5C^zgNF7 QdQyouN*e:`FP5|h(պ 6.yޘYؚZiVwB,R+t` Uvb*R̙8ss?o1 p81kU>`.L.?r?wU`݊xכ٥{obTj^i03{ÜI*:V ϷR-WcXt[(S{XG4o*mǡ0NM ?EQN$$GX⁵IK my9q:Ҙ! y{Wt벿"酕eʝ&@ܛp벧 r{[iآV.ߪ r䲂[SMirDz6X(pe|ݠIűB&[BYha;j#u҂`$(;.p[D \Xo* LХvvd4]eZV(1e ~M;HRG_8ֿar Q*3G6s`yiL\_OgIihJeSE[l:(ҹEqxҰGypvJ[U1-Ԇ*ʥsr_RfGyL/Qi_Is OCuȤPZ^ !Jxįu^bs#Q"ߡX_f^"u FP5v=NE"Lӟp_uQA+&*X*4ǓoqNDw;nAǚbS?P- QG[uQM[ѬQڛ;m!Q@ LА4s8&7P]Ynj'XD;mNmP iyYIUwquCouG |׷bͭPgC3:u80ߞ.w{3y/`4'X.1%I4 yzK wި_hp>&hk%ub~MVEU$!h0w^W^s?1<^mM$sR̶j$}vPQbl%\V(U*TLeK29fUِZq6%Cݏufʍ$غe^B'yITH y wWh9F9;&{IE];g_]خ8*jJ/[X,"V^t$ ,rw6xsZJFN@K_%xp..3"HзھMs7G}kFe CO]<s%jSnk(u:ROvAħq8gq.y`ޏi~Lo&ߠ=KɓR2gwȑΉjTo5eF 3'QCGl$gN mڐ3S->ZI{q : iu҂)fAgBմ3 9Y56πOue9N9Ԃz,jGfFsU}7ײ@\|Q-n6<wGYc r0b¦'eB$N4M*y ]XMGT$,LAÍ55 5E.~7tYmZCmzXdP#s?Yu4v%o!*} ; i!:u L}TY>+h\vk G&tt(}8I?bB@:k_Bpz8n~Fz<_]9nX䧏~'&ZmW56+?پ +G`3 Zy8J%^^|_4v>LƓQz5)5y**b-Vc [{)<[( fw?Mo%9S{-ԁ[r&:;1HLh9t[{NeVn80Nx)BA]nҳ1JpZ)6^Rq-!YL;=:IYLNj0LTqD$mE3.q:= ]~C5}/z&l% Ux$ 5*W{Cq}u -[':v\ƕ8_7&AW̱Y?jMu O7a_y`xK궙H}(t| 8šZtY[(Q3n̕w )J]0|h%Jj.j[OCPa\l宅W=%}4l8K!8^ʢIp 񆢕8^ݻMO;ϝj-/}I2/tl+]iGWu5]*nsQ]lsG͉q|%24q g10ZCjġ7]_!*ҦY, Bn nɐ[/l(ܨnG ޱ٨(->~xlb7|N%5)v4|%l70mROO1Dz ;̦ r7v0nɱ+6cT ".P|h|Vj?B?hxgp68/mw߼Oˀ/.KWgIħgV)8յlHk˪uU|/_PK Pz* E sebastianbergmann-phpunit-6775051/src/Runner/ResultCacheExtension.phpUT^Vo6~_qXjC495$Mm")Sc#-9A#u i Ղ۹h>~huߴ LR͙0<¾#gb\0c *cR©dp<+\* v,ʷZL rtƬPyd~b8Εή{f Ea1{aפ̍*4G ˺ے,C3̢BJZT\HZtdA*K~6)bY0~wtB,"v V*aHkT7U "r3`IIs)YNqE6D0wۆ,yISZpP jtCvDZhlH1-\9itaUR\ ܩ}/,44|Ε gۅwϱ3{NteZu`D򌷷g9jCCi@5"P`E{lE4]&+mwgkTTfnCfZ2 |_^σ(Z2lʞtAOx>_|cr5_D(+ut_F#a}^N/: |.O|}D#T1%)k!f E:"/&jκtZVd}:ɬ*gSq!,^8POe97"AM X:"IGznلZYq5A=蟺fIG0Hr9wK>i%'|?=9 ÙaT[ZBuYܴ]-QV&yvm )]V]hPK PqNp%H sebastianbergmann-phpunit-6775051/src/Runner/StandardTestSuiteLoader.phpUT^Xo6~_q+Xx{M.`.h7-,"2%T]c;Jrva/_ww4J!@?=cnS4_G׃.1B#Th IS^xp)BWk3 { 6B8?IZ" BKU走2QcHc4]qv]9t66@ 9ef1rdG:(@F=(F +͔B}=dyN&OG4vFk߬wS"ݹh\O.\7RYJ9c_X5a_n]K?mh~KKT'kIGCq.P%6i+#Ȥ-0\kT@cih8<t1pǔ3\jN4[Rb)5DWtjg12<SGW0a΍[ss<hל-41^R5j4;")R) uj^hTSD\WW~ycrWնwT[4w4aˡM\  B(DyoTNX_^Q_sBk]|qFGh)^qT79$ Zx jnnAFGЀ3ͳxXuH@M)Ivc2n3TbWpRѶe_Xrо?vAw8{vh ZzxGb8d|KZ3ݪ`2jlI%Qc\iȮƦ;xgYEscItݿ&2[\ҳKh˫ߑWTGGisqß$b_ 2TnMf]2H/h"{BrLя%rPK PY)n@ sebastianbergmann-phpunit-6775051/src/Runner/TestResultCache.phpUT^QKK1ﯘC(JEADl 2vIHf[ߝV033g`8L4Βȫl#ɴ:>-gh?b <>>{#=(7c3՘UYT/Kߘ@ZwLīVdž|VA߄ԡpLww=X NZ`%I YذQ9ɐ Y*+:{OiZiጽP:Жr.% ʳv0Sy`:ٱl!б?*@%ey;FR^~ƛ2BPȯ`$ {ڑ(ցEG0؃R%wtpN E {`㿙#o{Q}PK P+$I8@ sebastianbergmann-phpunit-6775051/src/Runner/TestSuiteLoader.phpUT^mQMkB1_k~҂J>IH6)ݤBk. 3;ɝW$6FE 7:y *N6\jbB>la$`l@YpH!h?WJ0Aж.ig 5n<<#%"y:J8jRѥ I̩G^0v^u0>l 6zfD%\Rr|V[ 0Ĥ !*8!Q~JwLf2CQ?jޞbwі{%Ί?ȗBۿ%:Kc>/PK Pg5 q3@ sebastianbergmann-phpunit-6775051/src/Runner/TestSuiteSorter.phpUT^kS8;BLQK2އ0@M * 7uc+ GZv22%-;an[p/CmiM>qMh L)s)ߥě?o8 ajv 8H|ѻ߁P k=sJ[>l62rV< KZnZvzs+ kKN&a@f }!"ׯvbi;~9vvB<nwgV`]ފ9R BУ`v {n@~0W~#IR3P[TT ɃIJז;a.  #RRSX˜v<|+ 'S ǁY?>뜷o.䘼=|'~wvug y;:=M=^"+L *]Qpд/7:,\_31<X8)z6iỽӫΰ6~{} &l}]}i ~5UC/Y2Eֿ3}8N=*8"m!q; )slCyTOilp&~|m'hߓ]n#hs^T 2&8NvB2EDY |v1rDx LF̱'g*Ur1cۖH^Y+ Fl)Tg()2*kr@+,2D+( 4&!Js2D52x?hɒV/3r[PY"oQ(&T՚v+Z&ECVь3T-x 8:ʕ kiO%&u3J:+*C-:t y$\6<*X"aUUݦG;L>:*Em@kmHʟ[ Hc-nHf3fEszS'iTڀr\_gphm,EPa(GRhA9g#H^-(ͪL,:Ւ Tⴺ;1S7nL؆r(K-C( 8#f3R&i;rTõhsgݲxOU./.?*kU@9ʢSUz> '5GsC_6%6_zBK_4#oӫ'DeJ}1N A!Y);03n#lGE #L7kX8׭ȻMF5ϕLu-#{B9U4F׺H A J,8 >>$Ɩ=$(?Rb+X܏r] x}Q1F`F m^3Ө!B}u[NZiKZ+F h+7.l]I&vbEˑ8hqVﹷ,sen --UtƎO`:K!oQI)7s3y7y{Q:OI*эqT|YB_ymdB|YCnHKR͗TJܑ !Y #|D\ZQ1]Ks4Cř̀ "c8 ™[ }I|Uϖ*dMnYAT8 eҐd \M(DBjCG&L1wɺ hæ8'%RdJoJytLsJBI/5}`1=ũD  lI*$DA0-HҋF!c37Fw{ <G[mvEk?t@ȶ []$qt|_X dע%JZ]) tͻ\D'ѿ~]?wF-p>PE}BlsœIZH)x"YFS 7āfM(yS7`XkK_K;q:/իf#ȝ<[ԆYMt;[jVH*CjԸ j )Msb HV .E[Zˏ45k0XV棜*GUh>UNpjhě932yuTDVـQى4)0Z^icNDc`,ߎ6_WFČ$+ [L?H&evCWοPK PME8 sebastianbergmann-phpunit-6775051/src/Runner/Version.phpUT^Tmk0_q8`$mWu,0FI}Qs,Pd#IqKB7}-لԃ.ONbSleK`O!V py2@ȧ[tw3k}8Ytޯ<`Alv[qN7BmGE4`~I x_l"zO*5kDH#42\ ͦ 54N2 Q" "XWH^'32ŏHmmGśEy {2> Z/(7$ 6>frPh~]fbby:{qAμ9uS+*>c0'z"(9,p~O.Gs.Pc0^i*QW{/!^xOߡYG&3:G%|M,%gX~L|t_e6P `VX\F ]xyiSaYZO8l+Џ7 `s{V>xIR xj013lL{h-eb/C'5(} L qy:xxWtƴ`?hM8-NtIBqNܤ:J]T'N t<G7GUـi.:%X¤._lR/ `@g\jR0y \ ZZA[3\xflk:uM#L ^73}OKm##xP$Λ7-lxh1.cY1̓Ձe'FXpUS#br&m77&9gG7\;X~ C@*(6[#07`d ԁgf7Ϫ~L8N@㻪$@4ḾL3eC=8(n`&HE(eyѫRw'655mIF&e0 oqVfZ"I`h>n^xA'yvK`ں͋כfaP$p\yN? 9,]%0;zX&c7Qh1UzXEٍ͏&v $!`c@ 08"xtf[ i͟X X@s†7G+al[9,,{F'xE%ߡa2'IɬaGO߅pJy<(Y{A4D} 2 ! $"È>fF${ӫO>dy?m^1?72Zpz7np'w|GcQ3dm<\&c|iB 20Gă`Di`U#FyIOBaĭђtFawܡlC|!IP.M6E7gb͙&nEo9bF0J- 7rG)ͬx|˒\[Jd+C |WdXѪX߳bk2# cx'ʦŇ_ϯ+&%HxF/eG^:xXpT3*FR''ө U {^!%AyAGnO=9}}~SfEO TZY"Iu| S'&$?M_Tܪ-<&b c|߲I9?RH%1'D id 9 c~88(=PG'yC^+=Óˋ˫חJ~g I[gJ -wŃH\ [73oˆ 6\%M/O-L`= xH$W[8. CƹrqLq=un!ѕUOm(kYXx'g^XBw^?{;s ـثg.p"T&$nP7G g]uIint>DKoe>Ms.'Dɧ:p>nB`_5Sv ԫ3[}"1cz{ÃFsC\)W ;T2yyIa*E>l϶iӜ65g! ^kq0LKW#7lgqh=vW.0wa6om䂄$ddPL~UZ*"WD$ژF~xy ` VW{ /z8[Fp6~sӨE @Aᮬ1o`hv+ަ&JwdڑKč!~s|_aЫ"vVjg r)R,`k'F.To7y;~8Papd`'aSXt8dD+n 0 `dy*QZUUK˟ũ"g&Reop).lcDKjrfH`hˮM]tӨ" SQfSe&\ۗ =!5mUjRnjx2Ou!.Mi'"ڙ qqx{qiLA_Eo-#ʉo]"O,k"y^lZ5g)d=MUcMֲ1U,N#7+}RpAEܛytj9.5ͱL;1Xިo+[+sTkUEŝ[#hU0dF7"#0 jۤnkm>,,'$gk g CZ?W+ME_@*k`MKz]ɉ iCE7 Lw̍hFFݮϵBn5w>_ i:c2iYKVo&တga&l Rnq5Zܰ1!޲$RC15NO___^7[,Йo{n$ٜSه*@v2:zЀY _5gԫS_C*8եq2X|ˋ/9gaڍRj:+TbS Rc҃RE#Xaܶ3՞Kɰihͪʜlc}1 /1u2{v \Wu1b'cIrǝ6Y+r9%_Ӂsԅixcqg!۔L='5U?\jfA5-썒,B56R&7z'-[Z/i4|˦q[2=-\DYrk\~ b!BĊkvvFpQjq-.0o`~nz JKٲ"Msj6(Ю|\2<+E\[߭[V$s,QÂN1imfѕ[p뱂11q5Y[<[7~J V|o[V)ś5>n,>axl~xgZY3u|qaؽrH^Wh3낝sb̷Mk[QާQG1~03qSz[opڕJgML?rT-kY5]EH򰦴v {y-oyIf^* 3vq˸* -\/o"b po4 d=>*qZ<:L7缚DKe]a<7{7/s $XK< K'`f' ̑uW*4' ݔ5Yօ٠U%7T6̑2e>h>yHfOVi'*ѬF2ƒ)Hn q"tp}rǿeK,]^jR֪7FX;_0"_ z"0b\YUqʲM /O812WB= 9ZZ6y74OE$qM5r)L |WŚ:m^ Ŕt ђ.6k'hh3^d̛1_1>U4,w𬙽01B%`q;c[{Q;V2g,پhT/"Y6YѵQ^[*FلPE&#MI;)? XYY @55$E[6N|#cEY Xt0<,F,NUXӆ>1\)b>O_Yp`[ǺM׵d()m}NըsۉYlh-N)x+Gxbsv8~SqUtʓʅ&9 8`Ytt8V^HNg=*]1p`jh_q39feMd:Gu*#^ FIAMkuOg5SCFNZPOk_}+ӹ),hcͮ'* >5_'z`j3n6 ;T'\0B٫3)4"I.MV@c4RWdoL^rr°G᯿b_MG3;<:̳oM )(˫7WoNώ?\\c\yTԄ}qzFqߺ/Nn]<=ޞ_Md#qc.2Zgv|:ƔRJ*Ɖ>7v|"2ӟO[9xz-NpE%t/#O/:p( |PK P-: sebastianbergmann-phpunit-6775051/src/TextUI/Exception.phpUT^EOK1)xnբT, Mf?$.wwmxyfu"G}t7I֔Aޠ"`9[6XĤ\v^|i@G: hHK*bBJ#a7콭eV J`(7)[Fq-!O%`NYLAv)wY!9Ts\)|Y|%RNE# \RCCޒ@Kkʐ]Qv=.OC$XWڿi]PK PN  05 sebastianbergmann-phpunit-6775051/src/TextUI/Help.phpUT^Z_s7y<#)vO8u&7ʤ3CR+6rKr-u$wZ?9SgjE@;z@P({J>qrų=g\)߄*C|xS M?k6p4HgPBv"13F$JhfC"xb T95\Ƈ$o-w/̨! IQIjXH`$2U/b:g:Wv̖ӻ{{^pq{.T/﹚W2a`3 S1Ύ`iѐ4 S de˂~' nV$QrL ere"g'QT4ֆ\^2_߽''GHD&{{q~|n:~z4X?'" =F&xnc(7ٷ# dr#괸wGKѦ 5r;{UR90@72B_:^t~e1<$AK$Dɹ9nr S?{sfZsW]0Tv<#?ሉ6;Ӝ<ɂ+DnB60D@25Ij*ܴR#9.f0 MrJs N[kǣX* Ke6Gk hiym"72ygKJ@Κ(UEt !|ĴEO jb7RZgKE}#d4*)'[ E3<%b@ywJw1l9-;@!P.}O eI3B ͆hBmv<24bDo|3PM!_jITao[ ؅ut,n&R/nR0Q7LV#,ZZ.#%ӤU,V_{1PXK',S׃f D G@xEbs<}\lӵ3ӵ3Z̩6nUρ)_Bkb2]$Q`8ڵStT,J^t\ͼO( JRTU! _\|P\}3PCWen2B&oH6L>غRup9O\H˽k ol_GU1ޥa2_V]y[❬$aaWOq)XZGYU{cŨ)\?NI 0w8B"H]2͕Kts̽8o'iu/&]SF~;o!i][&N\:*n]mSYKrѶu3*WGBjc EJ ץs==iQy# 0Qh]meCLh̻I,s2_*<NvuNqf8Ym^wC?}3Pk?*(zZvF3Wa4;i ڪ5 hd&e [T},@xF~^=wmeϥr6[t0 aTA—Dj'-#ÉJZl¦xdYT7,X5nU$m&@q_pGD'r.L$ïuz3dKHzHM?)6q%618A-Yw7`}nO2ns9y"ew%ke K({4iya.8|c` ׈Y8f mV[\gIw&LuǤ01 ^Xpc)~˚9;[@U-y4q_0W2r|>c?U@+aovИyWU+ab@ BI~ wylv_)w2:H5F HK{ó~n4Ut\(M0ǹ킁 h愆!%V7‰R#2L+9n$C#}qZ4qgTwg@)eoE4ݓ{J8X,NqDv c 'q?f _ O#f\M/_ u8ӂ%l:M@# Lp-Exl_ZaY|A~9q63א .U-Jq W,JgrL~(rmF_lj1˰R!a} y$_Ps!!M"?p6R5ާc yXS㫖̧:APln\M6/ч}FKΟmOG3}rDn񽣋˗}S_*Ovl׌6{Go'냪I j`wm o ?M˘4 @QVjENh 1H+(h6ԭ;RaXc߬ߛFGiPhPGw'mNP Y\%EC 8 [{Eﰖ?=̽5LJE3N7?ը敋uDbDȐXH.MqXYb殃MI a}pǗm Y ϛNŇAJW#ɿp9Vfԯ{PK PW ::> sebastianbergmann-phpunit-6775051/src/TextUI/ResultPrinter.phpUT^ko6{~ĕlv[Pn v=ԅAKt,LH)m _zRz- ͙:F>B̈x"y wpBu* 1f V 7 `\dy`~"~)EssGX(>yq#5A4 ŏ,_'SG(*b8$=d+./&WӉ %K8A[̑IiB| 5<y2B>\P!@p""q[8!krd!!{ sP"&ܑ &. ~≌vEa>w?IeMஉ$}V8Th2)O !8'G?~Ce| d?lANzU]/ h|&)k<@UlBzI{"P Pw|aD_D@q&8X<ͯ K$km9ʶ<*Rgh ` &jƂ4yܨWt23%O'߾5,/U[dD UvZ V=tÏfdj B"CMp1p͠vkc*+j)°?ȿ6eib_" ք XȭjlL=e9"H"#ݱʞ*`PEgP djb'I[5~coZuOY,mAkF4'-j bB2ק ULMy2SѨVcHEfZc.iKܺY"XP"vFr,dAŤ弩$}:ݒ wUUy"t)! Jf2I}SqP.gnvc %l0$sAE[ĺ`z)c[ 񣄉`By^ʠyzjL6[Zփ4 KHiuFX<iAczâ{`*d-CuV'Cg Q}@ۧlw!+Ĵ1yK-0]BowZIIh}EIFܶ+fEH0S^,_v㪴ϕVnJϕQgnRj@N\S0l̒])y}Bǒ]ŽGoؘ2 y܋RQB%S(ЈjU8;lnO2h!~f?AנUO 1w@bh4,hl,}ޫM_V{"#zNݝ$T 'cTzĨ4wnRؙ"JjekkdIy* ! NC=9PhN@Y둲itGv@uEՊG]V|nXtZ'c%(^I6ʿrU$a&x܋,vܕ!3K76r;( iz[$e_tU抭9ӓ9jm,QG5Qχ=>gATS@C<?`;uxn/ށ͝rTgߊv8 G*W1jJαЀEC~W#[ anu X~Ղqsjw{p6y9 >1P(3L'zO9A]X$` oo+YobFh6jrqh!\ES \o ((;5( \FEvz$yp(Z}h^G ؋02KGFދ05#KGFsFɅy<șLOLlБ 3|>&&88|A(3ޝcd!.ẂQT~jUb7ZVd9sr|,C}X*R4"':(*]U`|z4S*ӯvkd{V,*6Z$mo_Sڃ>b[xBO,d1k$ٚXk)Z8Jdjju'00CaM(rA_Y(UU[JVK\B]4 mr8FΓ/GTS˩`IJt0ZƒgXNҦtJ'vPN*T[P\ǷWW"׮]ZԈ9u/A_ i q\) S(Vzy/jewm݋NK95E\4}|/2]dP@8+@,7&m9`LM"*jqY9WV2בl9.eK+zs(D+@9 QMHؗ0iPI:֫<~n7:d$:TE3ި!QTYdMeQN?좥@Y ˂Gd%&E!>*+#l)(iѯ|ꍛޯۭ{78{0~05NnNN]_ntpLV3T5$~D`7X4Ak2rx_1eZ͋7`M>GPܐvǧB;W^m,Oi~ yA&)\ԃ~NR%mA`r J󚠓x/g:>9\Hԥ"_RF4GtK#ve\ѽ/Q- \@YfإIqєΰӄ#ɖ;nm*Sks+͢)[E+dy@-, DsfRhHGY~ ow 4va.^ Cm?Ya;P x+,JуV:ȑ&T}*ظotJͩn8#!3KAگV,שڰ ƭb>)Ac VNlIQ;pK7`cC[xuV-˦"*<^,hGP_>ǫ9ׇ[u"Wr+=[Ϫ?=n8lڅE }8 )T5hy+H:1Uxok WUYIMS_[G´Hep^_*OsSIwhP0{E+ |A۰p4} gENaPH8`S$=eXN*[+ܥ[m<%*!rOLGbya-6ͱIYv=yHюxG~ ^G׋phc)=+lWbelCʺ2oEפkg$i1?Խ\!IM^\Zhmvte%?Ӏ&mŔl[tҏA4q㧊A̢bCzx|[{"1IVہ:ʏ)/ |da~ι}?)r %2XI A8^9c"=99v B1{F!Wi|*O2Cq3,<'34!!,P{NV0wWumy7y?=s# s.厠T!yG~ ^ O,{\unN#/[F^صJѸxK{(K9g) 0a98ZQɢA{* 2Jb#0lEnhQ,e8ʌPoa+K9@NA:-miW#gT Ei׼8b^t"hܛ=tϵ!|Nvf.swkQvʕ _T`>Gh-,`cPGAۯRgK7V\X£d d_Ƽ!kxX>k8$-ia9@ExCc l$dͽ%Z_JBF ?FqXQj9.=dNn{U#mLzm"8T3,+\}3]j>mPC$z]dAgD4p۲*Op @@TՄҰf*0+qgis$0]<>X*"R`=`V"2s(OinXSyڏw0?4Åm/QWd(oA5AcLu>g. L7JDQ)J-s1/Vֱ;r6_oR{y$(mI5[j r׉<&=ŋCڋ,KHp^< X]잺|ъ,T|N|ЅjEN?,񖒩HxA×=ye9flJH4~t^o"tl.wЪj?3}&T'"%xX%E6[? {yt*8gW=.ۜ^=؉D#=S{U~?vss_Kb/[yNz%R9>8tCmYy_8U &̈lo˂%(߀z ^m~/yCf.lzo3޲b]{~q,<:JI%\͂(=K_#WLqjђpִa/҃UrJC K*]QGH="lRe㏦v-YA4 K ;U?tKlN/g6RlHec=skXG|fx*6Uq7["mm,iEIt3RΦo D-QAm_:\UFE(oR FG#z\ >0Zm@H{OQ |nAĈ#ȺcvDr0ɐ *!/>wqwxm*RI6 1eT&࣊KLth l+mr jee|VV 4(N(0 P-;Y,LKdQD? Z'1Z$!?d٬(n{?o 'SlE!T>c_ɚg"k~y4!N j$w*zП%OkenSPij+)f:6JӘEGw.b@vGǵXǗ]75yE5xqY:U}aYu1 VP8Or>K =k1tKŶYec_GuU"2lop2_zsv/ dC(G_YegU@98iqSF*?\{e@ZvKTrWm #5w9BƑ]ܤB^zԫorԲBXI=")hgPOs)U>[Z]zO:>)"8%7S\J  \V(#UGw-$ԻԦͣTz#Ln+'g[e5wqu']ϼWMM&vԂ_?T+|dC|ܩ[dm|eҠ4S"dtB$1_(^tqճ34wrqaFxc0 1%Ү@oR1p3{\EʝN'.Nv۱e"uZH/D|c#p\#_G"G$و E$y$[eӲ]cj, Qšd٫]gÉE*aBh]F O9EA%LLEKc\AWuN+-9;A%KCbۺeFD70rh<ɂ9e2_4ɚc1D--vAAP!f2P}5`-^cSx1.S}}"ZAdGr qN,6r k8jn-6 sS_mp#Yzu'bx=C[Rhu=bP7uj :Xg:L}Z6ݣmIʄk[jG-SM}V -jwq4pMftAųߍ/TŧTK[iCIrә!B# !\>>BhZ[|} kmSyPL1uVh㓃Q弓ߙRq0rѰ% f>ݘ4|?tnagy4jNԑ!Jޞ!"]b4qF͌3#?"4Zm~ϾLWb~Ua[WHjoȔܯίa8VPS3Ga Iә#BËiuԹIyRڐԦGڤ*P,+?UM5jj4jɞVWᨤ/ZBÇzcJÇ_ hu~5 t>mkphj5VbѰ4Ivbia/{(ӰótcSZո4+'[|ï[}δhUtvt "MRN冃*wv"` sčX٣<i .*u=/,>FM_ +=eX-]"4YOi7հi΂9]ERU[ɣut܎k+kyyL񸀖uh"&D=pً(yfP 0q?{_9EL˴!/Io.Sm]ȯ"Ȃ9U0WoK 5ҝ,HNեָHખGGJdw9g&?6d?{S 偏B9c%!Nl *YW]$<(|=@FI0QHEJD y!y%Xؖ5tw9Wo575~{iBɧhQJOiW){˨_).fKtWXd6R⇾56RGh%x?PK P+ sebastianbergmann-phpunit-6775051/src/Util/UT^PK P6 sebastianbergmann-phpunit-6775051/src/Util/Annotation/UT^PK PvKB sebastianbergmann-phpunit-6775051/src/Util/Annotation/DocBlock.phpUT^k2?K'&G{=r@K?! ?>^hAi ƞ9d@^^H>f!dNs$]REؿY $g4L`╗Q zpΧlܗyrETtKǙL7){?]<69E{ڃ{b2ܳ0RF^/8yk/Nh L1 [y?uswft n·4IqUՋC?QIT`$4 Aޅ?7I9h2ldMgŸy4D &!iD䖬|?70)اM2,86rjj~:8kXQDh >2z{/8?}$8ZP,|~}Ŗ/FHF{aJe ,Rb[d336 tR' M`2ӛ#٧(~_'φg/>9"Vt.#Yo֚t.\hi[ _[*#w[L~K?1MG.ǰrI9qăhMc/75~xgo;w[=wOv KiJSaƀoDt|'K؝_]e=Ll=a^ՠ(_}}ς6 =nbڃpػ`B[FJ|=G'c 0rh9y)?|,6!O!{܄)aKk XvɯϜg܍jGa3q޽b]erʶa+> 8Ή䜃!w^LЍ!ͬlyZ0L((W.űho15z7W7(f汣l4QsM vr#\ <|v,ruf>fc~2\]\Vh=L.z_1F1Xl}X 2WΤ43j izN?"y}cOӞIfĎ5IkF{D0@Zփ"/~HwZ/0 v B?ƾHKL'm1uDrNQr57mX8x.k;R$/a?ɕM,w~g 4z9-NͱbhV \R)r ^%JBӂ(rO!aYFŒ`b}LA4&i5B<)f #*U:L;벇5ۯZ=6\m'@6ΆHy!40Ɯ wa zq'Tl;Čy\=8R' >P#9|ҠKBhCf-.ER#/jق)[ԠCR@&H;S3}8O?3JEFG USi4F&O%ն!PE舅4// |.BhДYq^g >+(kZRK* WPfjq1qck/]^Xm2XPMh'"L3aYL}L# 袲|[$ضnOnmQ6·7,@V^:[<([|4|00#R=F8k<$$*ietى֟8Qi^AA72eۆqWT* ]GfC$9}<c;s[VʦY_nGY z_֙O)Y:7~L[h^զ$Ф_2'_,` {+Ms#"Gs1OԬwh&"?ɸuf\`mb.yFh釢c2Yf@h*(Tc4@-ziHD8[kUy d %VO+|=ɬ| Vb) Y1sl+0^F1ԊI u*Yr0YL:%Sܖ<;SA@sJc^oh33S^.>rJrWǎrbsF 쓞E$s,;tH;>a%=_q7)}L[*2RW.gQQt 7KF dw{BVrӮV*mFgs7@Ed,Wr(wU/(rڅ&jXH1lYZN kq%v#'SmJe.Zr¢㉩Ȭs!,c#dh|C/~b<0f:}2}._e吓8oR;T3‚Zj0"A,94+Jx 'Vn#15br).8h&kت/ a9UW#>n_HX߱Tg!K 8ZR\cھ10d1_./*wW/ıJa+a~,URh/7)TX4{/uƎv ~5"I1 _ 8:$9yJo46 {'Nst߼o8JC't=hv5ȞMI Nuk!(Xuyh-clwV4}+Qt;>)OUy*XE/kI+a XxR\G)N9y!g ȱ8rj[-'z&3lXwZډ TdM|'$IM[;D6OHlES0]1CPI0x7N{>xu<;nkW] ~^w ȧ@efBdYOYTYqh"u:JCma *hkqaӱ\1hjB~GHyEG@ꫳ=- +q0Q+EHGHJJW5Z#f HkR(R^xa2ޏi Р؀}-MT~k>%,غ\Ղz Rsh@Y6^!&aGRM!U`Lp,._)2 $V-ip0k$k˙f*~c5?ְe҈1wE[?[m9յB3H1Xmi"Nbq=݄`D)ZMYsﶾtuoɳKmc#() ty7o:Fo2`mnuK~Q J`^+y#,Z\] Q!,NxWi{V n!\,՚P6d׼т67 gCKUx2̴R9~4Cj>" 'iHRKX;+l\]"k{!-!\o%KXX_' J8~[v/JޯoV_809?~w_ &cаޱda2Wjen%̉I u÷ U˙}J}&=,ZCȯYl,&9o $Q8S%T* >y:y.r˫ %g퉅9d5tv!t&'ޡP^(ĒUܶTF;RA5fhv;+p[X S 0Y'1]^n{|^lV6j[,m Gr?Gr>X;لk{ën 4K5ItSk+ߕdZ2,@v>oGxY5%*+(e"H4 ){B~]YHFT$=R>mXj +pʟ e ᾿ӤwFx̌B5U=^`/Aꕁ'ƅп3 8'\iwdO iUuH\ɉ6U3urPj1l5a*TPh CVz*7'b2'"-/C;D|rփ՜\yL*sϱyPK Py8 B sebastianbergmann-phpunit-6775051/src/Util/Annotation/Registry.phpUT^TMO@W!^)4 BPNE8^Y[k;Hhvfޛ7YAHaN<{3mpjbR©m#m@*gQ$ӬPb`2Dpe3"]dd{vq&MؙX3 s!酘4W (D˺IB1U<><~25ryyp̪ޑBB!HEe`c\$2r&:oKVI2dp" QP`=4$KfRRFL՘D6dJ<3u!HR8͔n$ \"V&︧:HLx-<8 o dF?e9> 4J ?胕̹zOɕt/~@ҞXEz-v lSQ97~HUb&VZCCY:V@ǥU*v > ԥu! V)Ptݚ- ˨.t-%:OTO&R~vک:jsJ77Wq ^F] d ,$m Mʦݲ\o98xk[]_ʋ\ ;'diZ%}`?+WUDvӢ\6;PK Pvyw8 sebastianbergmann-phpunit-6775051/src/Util/Blacklist.phpUT^Xo6Dn۾&#CD\(R );n}wӶhI$>#Y&$byjڙ$̜?oz .! .wB%jAn>|xaL؜˩$WL?TJrfQ y>(M쒑E* Uai u$׌%CP;(>ici,`Uzk,3|-?VbڀśuJ>M#ˇjP"ĝoB]P+d7ZPM!M>hZ` v !XVɒ RdK0 Պi/1η cvrŤl#担{k%;m [=%J[Ȩ⣍$֝hqOgmjNR˂YV G6s̈<>XnY*iٓ w;}vB&(LTg+ {|A:VSv6eq"ԒMeFI:&X^B 9'w\ /ON2/ȯG:WkXA]F#a,#Z `+?α\+uU1<ĞD%1˰9}>`U-x^`Iu;_~y)q9>Qbt` ŀh[Cp7i<Z^q7fLxd(TsK : Bt##BѸ hs(?߅A>R=VY&(ڵS]DPΫ3.L%A^;%\-z.u%R"GN+q7!YMWݫ]$"Nm֧.*hCQ6P}[jby]t>u-Auی8kYվ.ٚ ?ʚqĕ3 .Z%tAMl)ktu<0{U5վ^$3 .8O+O[3s \~lLԔ2=h;WJ( "be`K ^yޛiHFw!>N ϊd۷mڊlʫN(A^%fo ʏX27 󍎁13H`5<:z s9ǛSU [(&$zb4}u~h+ ?v)mOoN.fF皘UB@QϚATn%gDsiW4.0 Z~Z54cs#xWh 9 q<:YtLԣrbRhBVZDQ6)͈Szs0M-4`}d%qm n-֍~Bk,֍ֺ?ډ[FonZhGZFl[iA0cJažCw|@--hb8pOeX" v E4x%p"3 wi@2Xf^;m䓏i ӆQmD"-*VlKp$/;?U\AdZ :;v j72 q*7=4*y.I*i S1Mco6NM*MWe" |ݸi}s/>]a,9಍!'+Cm4K)>\8kUU'<nyftף7UxԨzu~BSǔ~dLy4bXxm,6N1Vo kj1RݙY ,CT3_٨|b1$-LEtܱ?&{SNe,n nxKS[T=`ܵ[ZO *.6LךU^ި4}2>>IzEE#h{u˻UDpkOi)M̌r=م@<) Lv:~yp+}^@WڮW=P{zwBZOx'@:X7hlbo/uc ݪ&w̬kn0Fej#+ :bPK Pg;c< sebastianbergmann-phpunit-6775051/src/Util/Configuration.phpUT^=isF+mH(#%$'%H%,hul@ ew׍>CLgn,/ Ύ zF C ĈM4G|s!l G.V^dُ (_b4_!K,9" G!tAPb<{ -wyqz~5<T|ː$u}Kpt !7Yg\]޼Y*gןCQAvKv' |J 82>tpAUu|;*?w[& "8i laa' tɛy>FD}cG0Bo "sGO_y˓*!&a$WaVO1+CxG`N2aKQԧ4xr " BeLmŶ3셟4vF {9hpPחϗi-ax4ʐ'@$)7/h4~P*P|(/%LR5$- ^tJoPb,Ł+~t^} \o`5i}鄞N [jWIϯLo,y3|_XKD-;:F2VR 4;qG.i2!(gH Ap,^H!'@ $@%Xz\yU} ugBW"{/腁ODU꽓Ζxu]ZSzXDqkhyK/Fh]uIN8ͽf:F?T!ދY3@#(Wjp{%R)CcjA=TqD،- 9ι-uąW]"`ePr\.Wu::dh컌{?Cj kVg$wFq--N8}v }^70#fYzAVG+kpH4=b&F#T]60v$g.INHFoBA4 >> RT 2/5D nϛ%iH*)C9fPCHSHa8ZL;[ĠU1Orޛv ֱW[5V#ٱgIm>X$J%Zpߞ^K^ ozvQ@9*n &jQP/Ne3S#r/ǗLƳ*FzАՐ2*(K+^H+Z?&^::^R@dMme:j,ȹKue.MI9Cujf ܠCӽc2&:Y"IV`5yM4ÖFUs,܏xBW!#֊q!w/ދv[K}/0l(^_xkprJ:B\)7( .RXKg:ѲK TmQ =Gaو 5eUd!!̇u~ m&89X櫰cc i?% N?ȷ瞒5x//pN+qbo{{zxJ`+B+Ц&t^ܪ T!LnR/mFeM4ЏmNíw?M׺y/V6JwzHKQ2\VI%7W\m( UL@:|a@Jl2}:@zZVO kd_l:U^ZG5I,B@Pi%(zz6Xbsj3dy Y9 6$"gnqO,)Vي*^-iQ[FЩcwL Gʷx/]޾8&fSJVKy8X%addx~sr{2СKEa>*&ʚ+5>ht|/p^x[x%xDNmh4c$zQ޵ƀFm.9o۔m){ rj+#p`4t`Mo~xr94pMھX1 \UDHdr~!blԩeL 5 [ Qir+of,2`an K" ў5] +hL$uODžk)7SG3~S3@HU&|v{e*8[}ԯƧ1g6RlT>cVdbkX$dΈQGԲg'A5,;"*dtOʶU$F*Y9lU !lȖ hBknGɛ"07=UJSP/ N4&_U$tYO ^g?t&V #> BM+`0bRm4, N/o''wW9mqk %g.[d-HjuA8M+JM N0LpHޙpCx\/QEqMfZ[#E^J=潩%ڥԋ&6(.VT65%i3 jL}F ta)Ӧl,LPBmjTF u`-զlskƲ(s~[Z1?ȼiHh*wiE v>Lu7@[d`Rfy\GgxgR^)]ʄw&m*jcP-LO^+cQkQ΄zpE ;"yzI-(33)oe& jQ6Nvgb I-sC5\w ܜtSIhT;!e۝Cb GL|VVm;Lѧ*A_cM0 (tk VVKh_)`R~D56ZӽBzO0=N:?]zl$/xb=R^dK*.#|8Vnj0kb?l(WD:}l}=0kQ2W1;^)O82SYY*؏HGYhJpk`(ơvQ)|< V2XUC@hn5czm#!i Vj2;tT|>lc<`Z!~sew}" A)NVVHAP`j. ߲ +߷#%#l.޲2#JCcpu%)a[g ;[XgU՘hE܎Fp" " P. \Rh9$'I ^-Ս E|)TQ cl[ ck %Ͼ\iFtA'fxNUÓbj)7dARnMYlTYz$f+Pdw0D_3dC6lg@nucb1?\^1`B 7X℀>-Ei׷g緓O'w# A2V/oGV,)QYqV(ʣnfOі\荸+K4O:=]\_mZ)"?^ۓ8|z,lg#秇F5d.weZLFc<~V[/,6qvquXtK1(5"ir}8 (y8 ϫpDO5a'tZ3_jAJN&g :D!V;t&XZ{u1"OH"p}=L,-J YQ*UV?5DD<8JhXS(HogiJ+\Ĺig绥΍=1SXqJCKuYUpT"0{2 =ԅߝR +t-ˆslh*dDI)L̠@O,= Hm^#OtYD Phޕ jW}s׋{iBcptE,h!zL=J/؟SЏkltFؤ+{75cHE;jT}'NjYJubBTC KM TCBi#&Q̵,gG>m?PH@]d~Y`ku}̍~F*;%i7t촽tb=&lO?5O{=z^;3 8ǣα2nC?.L疡.xX;#JZGw(Uc;E;iuMZh[(Qh\ǥ3X$J˩t g~}ْ7?a@$5)W8YH2gfLx:sB'Nj|~׋_"y|<@U-D`\fAֵr-N*"S!l}vq{~:oy|THhNG?Y9zIC|jL(kTUCu:gUT0wUﲓ`؏1GA rkzH[7Ps#i U~a*yD?~,l^ػnƚs&4Ư){ 6II]w׆  M]QzH.?V1dw/SХj}BtJ*SrgWDSIT5]X6uCRE DiD1>1]pB?iJ8W~"f9I\{fVېn*yA&X5V-vopHfOg$\٫UV W_A}Uy-&~|ZHh)M ;5cU Mۯ𖀣p[zlW??bv*(ņV戹nm.|Z-ݙ!}f1N6pr]WơwUE_| K*Ǒ dog=̑@Rw__66-\+h XK$v0rPn( ߆v2+ZOB&F\^MoЃ)%V)gOcdx3r2Ѻ&@⬖NŠ[`..Qca8%णӣP9! ͧCB8DzLbXP}oqCtVoXizׂ-"Ϝ",'[4n>q8fB3l861/Q7`w+|PK P#!>+8 sebastianbergmann-phpunit-6775051/src/Util/Exception.phpUT^EOK1)xnբTDd`v[d)&> j2'Ljf< &R,Q%y1VIyxs{狶,;<"4C<&ڵ g MHN1ѢmO{/˷X t*^e0T%dPO+D;n쬒߂9nb`8UBۃ:H)J͂0'%dbsW8+ؕ.E|kd 70 jQtv mb+XM[x. khmϣ[:EhMz߸|χ-ܾDIbe1DŽ4qJTC<ݳ6ׯpPWW=?;ajE_Y}2?;uTq0]bmm^'ڨa%w#gaKܺh@gD1ºhqtp*}Z߅ l͠EZ@TdGmIKnSrgȋcyM~A:Ž_wp^zݻ׫?qHR f > ~ݛnB\ "g'R'x2yN!\XqnPK P~F9 sebastianbergmann-phpunit-6775051/src/Util/Filesystem.phpUT^}Rmo0_qtV2ENrmNQ:4HUO?L[U %)-QnM ]Wq+4GXbWjt;h+- "gQĩst:a( Oz1\7l=ӈݏp:ac/427\cj!U:g71wd9Mh+lb_PK P_] 5 sebastianbergmann-phpunit-6775051/src/Util/Filter.phpUT^V]s8}dh %d.S2a˱BHrJ6`z=)4DROimJUfǹt1S1N)O ?!` s"J3"5>t !.%tL!8 I= E5,-H9% otL4lHV!l$EG!5AT`4aN"js@Sä `HK` e"ե JAx$jR$$S^5c /?; EynG +ش f%%lLEګ Qةܻf޸н޻p9z(vK{6]X.h蹾oZ|<\?g&LEcű8jv˛R($alXOe2*"8x8Ŧvy.Vu}ĭOJͨ޽Wj)U4<c=xM$ՙu (D4շ窬eVIO~ޱ 'eRD1(ȞY~53HTjPK Pg\5 sebastianbergmann-phpunit-6775051/src/Util/Getopt.phpUT^Xmo"7ίDM(FŀŻ!.3vYCPJ"y3c~1Ly2=mجc]9i f"c D3RH@4^#0m+W%t %0HYp%aA/ 09P\jT(gZ2#"ن8 _Y?oI,0$1| +ax(QGESNVw-e ^6l}VH%1Y'! Wi0ZSddP3Whdmi1:40kUUZf&M[pYʹPYh0,;q2(6,ˀH`nyL)&SsCS/"eƑMy }x[~/=Rhx|g~錖&QQeq(>6QH!iHY_QZq[PW[$N$IhMj|>|pCUb2 1Jv},YZ6h;x2R<)%t$bruȒjAXyGސ|$Jqiv\^S_׼nI "W  FȄWesVke)MP"q8hWE e%ޝB߶Dqteba\3Ҡ;ʼhQ595@,b0XbY=`jd: ~IU~9Ţv):Hw7]TQqDž,97hFyxP^k XFeo+hуHL: sIE\RS,&_R^<^~H'mq v`KKIiscqM,p]e$N5M8\qHuٙUrvFrbl<,dn#–MVe2ZuxtTbƧ]Xk6'^o:83u%%' Δ|8rĚVיDLXb9UjWr  J$a 0}9r6C|@J_$^ zef C7^-@6[.c(蒈9Pj <cԌid!L!'шp 4shk(a#%O׽\-XfX',фjOƩ"D Nr""hB s" {֙NQ֬TRrb _7+"8fY< bRXG"@xa  0~LU xNA4k4vL 1fŠT~T,^/0 ]Ñݬg"#B.n:SZhqrVk:Wngm tk[3uYA87}R3?IDW:T!$ 4 '#N# /7Qq4D n4DD,ڣPgt=(-y~(<_ɽFb!*tu ϡh.&dJb&IL29N/:En0FN&:lE- &aѨt6`˩;++d*A\st5\yvڴ հJG?r_Nd _S*Hs37Ksi7+1v5{Q(VWXPAG3@rs9Z5Y} Ժ@GRUKV9݊A+DN{qmJ¦B}luxk\^i+%\\('Jpy*gԱ\:p=%Mc6V_wvc{4cSjS覟mCڦ|T5% dvS{y=fޔ]4h2MTlل!-O{(b: )LXn_'qDg^wӫ|B]\G'^,G=2ht)D`iy vmmpif P̱֖<ۙT_:#utnh:j58&/v}rD_ofۮgn}odz'Z~˨nWX,&€o(̛mI9 RN\hQP:ZY`9*;ݲz19cҲʸM F愫:*=9>H.e#- )b, Wsd X2Yc/Ws_PK P4E3F sebastianbergmann-phpunit-6775051/src/Util/InvalidDataSetException.phpUT^EPMK@W̱-bܪEX) 2ٝ4Ͳ;i$m߇2%0(Id#J7Y6d0 /gÆrLBa.B湎 %A8]})ނcC>/Xp 8BLpz\mԐNJh1IYhYJe4yhH,NJR@ev[a7˴o^(ztt |-ry7D|Uи9;B+Z18ܫW nHGC t63\yQ;PK P=[= 3 sebastianbergmann-phpunit-6775051/src/Util/Json.phpUT^U]sF}WN#<Ŏ]'8Labm,V=+Nޏs=oEZPq&4Gjۅl.;,V2c»Rɻɽvg}R+׬B)zi+$*C—\MVeQ;-RKB%ɘABZX m$o߇tByt6P"]%rB[iSK3%P:JgU1{+N4ߎjXms8pH`1:\IeY+Ƹ&"φ5,wRď[ ;*tH2J!{_&}5CuW\T[C(wQ.ysQ3Ȑ* YRϚI Qsfo|]Z>&~: |{g[oݧ>pD /BaM/xbruPK P/ sebastianbergmann-phpunit-6775051/src/Util/Log/UT^PK PjAxat-8 sebastianbergmann-phpunit-6775051/src/Util/Log/JUnit.phpUT^ZO:_MF}* TwWMi(BnR4l#i^vu,Ҵ-9w$Nb pFuIp}RF\$g`فH oE5fZi(JՇόF_/B؂WM+U960Ryw~LiH%,^PQ0R|#X(@CtN h< |=fhr$S`>쪿F :Sűwǡ$1_([Eptf8uDyuumD;]m"%E\ \,l,.Ѵ8#${?~|s=^Jˏ}u",Bu͍$X O>ɾ"E%L'dfȄUL^^^Z$ u-D 2EX˽**e劂9 `P ѨjA kv`j;:S>Gt6,{?!;ΝIVo0B1 끁)4Ȳ<ž ulxʐ1 K 4kA=$kׯ_[ JuWlrciꑍLV 6\KΒO,zrE<^ZtS7 -`0,U-!-VH K~fGWASF y/lǏ }]mQaD,ZmS!DӚKL.v{4J- 6KR[RD/N@$OO\ sPXT&!'HJ̣P ' F5RZCuشRM`Wu1C{cq{[RD4B=%)'[('LBիޔ rsxI|tl lYytl_,$<]XW$,䊔%䒊B?խ06Lu5OMBZѳ!ګJڂf_ xB,,_6]DCVBs+,MQ)K 36|jdwfv-mN{Knғ],|dmyHz]C嚬@Vj:nkbsQq]qU3Pgt=H3tԌuӝ*'<3XvkFUߴ{GAC>X++;  {NgpsǯUcKػuCѪ%:aeUFFGxR[y9nFBKrO i@X*' ɂy䃐2gݯMBM ZHim{ 4]9eS.;.z/"%nX&2!{!0yN80(<(06HI5FAaI\ 3jk瘟+A^A`[sH)A~* kѶ鴧Z\uX2yt-zFP'yݵ(5O2BIQ; JvRRϣ(]EΆP\H /ʰ%|7aK\#:z4r;79iMRr'muk1^5nuHmB̐z_539H;Wfw#C]Ɋna+~gK/\F2q{@-MO*ugxe ~.΁24hD2}2p:+Lnњ6B,uRǟPH-7=jԐRki%vqڴ_]^))op6ofkFWt`PK PE(  ); sebastianbergmann-phpunit-6775051/src/Util/Log/TeamCity.phpUT^[o۶=͌I=˲ A=DFHtLD4k,HJDʗ"v-~;)$aqJ RlpTOSȱ8 ڨWà:lj#qsTf{a.,T Cq+u7`jk4^|F&LW8? &,5`NŊ֜] I]L˒kP}hcɄd8>=(Ժ 1嗭'W|KӒ2=6Vu=j hJ2G mj902kWWZUaSnS}BG!aD&m\蓮&>5lVjr-ۗ" ;kGY.<:Y3z? 4K _nI9(d/ (`u-FCgZM+ ; Hյ^b 0E;s{Mc`Y}ЩWnP;ĆdcS}7J9nË\h ໊ FX< wO7bT!{qijvG=m;PdycGP[¸鯡uǴ;*j@5;(#*EgY4u'H$ݱvd±?jUܫ1y]X"Rٜ8< b^OOkqm CY\a G<ή-"s]+P(FׁM1h[olcNɮa!U93ZƱH\=ANGo5o8ՔZcO.팚Qk{s xܳ8h:3ᗝ +}ⰱJ@>_AM{5]M<@jo}*" 2J: [BZ8ʾN1ZnW`dXf&7zgۢh[$Gn[♗ÇɘF]ihn{5̰"Z5I" -iwn|%񀸑6^k in?;`3窠C}vV>AuUP /IG4Ja~."& -~QMN4^\ɫ #H56ؤ}\bÄNR+B3)hd*D[XeͷƼs?R ~p9ޒDc8xƚtFxg_ɕCT N9:ÿdNb$өD@E 8W>zwlIO9,/ u0>8tx(GĴQ؝ PdhA̩yw1¹8!:͚ +‘^ 't?U YU1}uy³)! R|ɢMKc.+ tZk-xO6"?ݥM6L+HTcڟ3PА(qa1<,v;jW""RuhU T#RL8 %`ys<ߥs0Vv*/ f>{& ~*kЄ}ƊM s: >\9D@SWb[ ƟJLeWw \EV lk64I"bU 2 {\Á\1Δ]꼱6|gN-KτxU h.)D@ C'զuF̷z-B fm;aa*P~K@#8u^wJ ý?$x䃿[gC j>[LgbFp.2u%Vڧ^x,RMY[vlO}`]sȘ`σ`"X 8-|J6N7\\䁃$ʅ.r`K(֠Mm i;<b-[4Vk k O jR^g4Mvxe޳ \h`Рk i 6OW76pWF*EN)fWa1_5ڞ6}r/8b%> u:TV<$3b#2e* SkEPdd^}|Tg5޿B rx*fjly:dz߿{y\-/A0'5q }՝lPG'DHR0iq=}ˑwXy\2Y_ פ8$[C :NXFm&ffR?NRP"cGU?+B$@/MHm:|o-^Mm5taǦx,C¡J` 7.ԐOjЦ&3fk8`=|VN=+G{ YpD<$ ` E\"bUT8-gm맺2+ߵz[& rzTќ{dc_+bA ~Eő@>d73 jM"pajp <[N55Rs [/l/mb r F7_@ƪ4ccb-sbRA{_~ݵHH5TԮ'eUm gHhίAiJ^tyT9P>\ ]#n l{QFjOrYu[g31ĹǏqQ#M\VJ/3 @ ߪq/B/I)!F 狦"8xc(^e2f+< `pxw9>aK|we[4誏$Wc/I{f&6=c/#T~JK٢=nS.NTѺYڝ 'E SEٲO>pZrͿx~-D}- _T@w'yt.F%ob:)f˴-BJ{߻Wttʨ1P։z=^0ތͳ!(9و+25󟺇+dj7^_f0TO֘|f>Vї qvπ<(DqE*|Hٵ-rz +oR )PaBgGRQ06C߹5T]On|--S gk۪Vy-roTaoB2{-ġovQ+zPK P/@D sebastianbergmann-phpunit-6775051/src/Util/PHP/DefaultPhpProcess.phpUT^XYs6~ׯΨC*ƶ8r&Τ4y4,@+ ATvߞXtBØ)kDhfr==N^ ܮ9oʔd W_0hp7<`&wLJx<(#_<fa1IUaebr@LԚ11g$n.IEgViidGf;\' 9qB}2lupPfvgD<Ï ӻ )7z]~yJh⃐+NhIP21xW"Z 7LENQ@l!UZq;E}Kj^$¿.# & +[a@tOLYC>K'4<$ _~R:hdF#>kdLCk-K8^Jf|u,Y0!Ia玁)Ŷ0\0mlK_.g(ѩmڒhTat?9vg&+ߟߗ@QIn-oae?# _9i!]45w^UUZ#&a#i[״nt/ԎOSDnQh?B"xTZ9Tg'/a¨j$r5)qAPK P3/Q I sebastianbergmann-phpunit-6775051/src/Util/PHP/Template/TestCaseClass.tplUT^Vs8_djKCÑ i+3i`yJ:^K8V6{X^,!0*n@r*WW7(ay,#2& ex;{ l= pM*KCR iaCR 1.  2-E<%*F>?0)HfU(D.ф b@ @TOm_zN2Yio11:[,%0PT";2` w" &S N7KH-R12fqgyDDLJ#)!m7Ί5UC>K;OƑ6T`PG J "rwaF_g?">,=ZyN"1՜z/R$.Q/3*EĴ@hWdL8:WF7aO#m8UYR@/Z/xE_!_8>c9$[*SIuQ+|Z߾u%G}ŀuE'? NU KXb&15^kjnt'_ƴL/]紂kmY,g&ݒB(S9زlz1-:#B+0Ĕ7ܽLok q N6/0&l!>ڈ60;$9O֜z:kD K7jްhh=S 0sF6s0A  l ǏĎ'Pk3Nl7/gt{놬@'Ys=ܾioN.T`o(FsY_[˱zJFV%)/Cm$}fbYfr|Bt3p1c^y?Q#_PK Ps¾W J sebastianbergmann-phpunit-6775051/src/Util/PHP/Template/TestCaseMethod.tplUT^Vr6}W 3J+VZF3';ɥ X[߻Hŭ^D,Ξ{bY2>}̼|StRz6T 0*n@-VT[]@g1C9El~7y>A6, $h"!25AI¤sPL,.H4WY$ 诚qaRtU(D.ф b@ @z6'=',@D?U/1W 6cJz"`0ct#^*mU*eB@D ₚen˭g\}0*fdH6 8+TqV{Lbm2QzU2)T96vc:}}oyȏN"1Ԝy{= /R^bƪ1ӒSYl0v^]0jFC} ˃ۅq/ߙ)t 9 琚vE.}+6>jgu.cq }٭z*Q,5^^ϗVfam_me縁+w-c`Sܳ3ѦF2#%F۱3'h%I+Vcbo@p_Y^0dP|~B, ,%XnN1b(f XD{ƺۦbr$2lL`B8@EBUN71$aǮ$T%_ LLge"|Dc`F))ѝh[I)6_jg^+xe"| H&Al\E,5 3ISYL2F8`ӵwT/j`d?;.;m4hmuGV f]@G>~$'!Ni1*DYV|i㘧m L#trA)]ZQoWkCQF._0t؅?:Zjg6E-Ƌ*Ol"gRSl&lF5W"k 86//6}͈NO;uْb{7dŞPEgg(/3L5C(0+Y+[Sb`,!.EHӔYR[zB[Rc<8I(xwho@m=u[a?2>Xw)%yUa~TkijX5X +E6)\`u3Hd*[V\JƀcLCT^/o"wdbUW,7HB}Vt6ݧVzaJuٻx?$}G\w|t~.xDF;y ~/sqt9Yk,sq9檒NGs/Hv F Y.U0_| |}maC"W^W$?fg,\#Yht҄,'LK78j]_K/p^_\x."?iNx R IXfܔy4Iu#]\/n?-Ӻն: ;pX'WGMlnrW>~&d|ABo7K8UvMACDO!Q)Y: f*ONblD.Z"\e y,lQcL%Oel9:O FPK Pnp[D@ sebastianbergmann-phpunit-6775051/src/Util/RegularExpression.phpUT^n0 ~ rH cٮM26^ LZeIdw8xD?:]CyFe)[I' ;o>ofTa>=zg阻T!7~#hcvkp֐O*= 5>_\]Q#t(͛TP [+V< PMzYx)EܴÝX*tz!G)e |!nDOJ_`8lstMHrb1psLkWMxև,zH Զ #/WDm86?#Ϸ/PK P@Lv3 sebastianbergmann-phpunit-6775051/src/Util/Test.phpUT^=ks8+-JVj؉سuT֝sQdqMZn,MꎕE7ƃoΧs2~%$aNN'L;鯟DA L :XxyOE SV}Y8NH:dC$ċ$ |1@MdAmyH=xv{^Aqҩ{q) ŋħhLțQ6df% O,X8Rqr;<`&kC{ĻG_}:G]O;/ Ƽ<ֹe>0D7R %{IdT" b P$Ã(Sgz}ʕƇG]ьF|HK $5.RD^(l 14.F\#Ͽ1<(̓x`TIP@œ=!pqx;/J}/F`r#b)r󿟑=4j?_ǣ'_>BP|*pT{(VO;/~}1ۏ4cpW@4L5U~,"8LE+qcݡF vsL eLHyȧT tDd0vxmGm [ pw{ U'؊ օHVt’b*5"=`Sh/D5` .Xe%pn3Fq7s慳-߼p [{PM> ".:6z4m JbŦ@@"F3̺Pg%?4^_p' #rkX<HrI:`I| S?YT@;ɘ.KZp4|Q2% ;N?ABY^H;Ð"]zgMi[yX}r2A5&TD0B S/bA|JwmBx %cd qLEQ04&#,٥Bk lL e;WNUTD%CQ4|] k{4Kn^dшYt:TkzyvN uK`Vf{,dyGÇbg,Șڇá" M']^Q=:&0Qyg.S A+SdyGDž_y6F?֖_{$Za9y4 :5[FǻCO5 X];AG-u.,#U;9_>_mZ͌}O zya!qdN4i\IMNs)P,{g T5/'iR 94X%H߮=@Ql1Ѥ UMam"ÀKZh(WbR3/EX[FhւL2} U:ޠxצsU^ 2qk낄FRQ/Snh 슛>}D7s[k/nO0cYP& DMpU20b%bk yGhwdYѩi\aƁڕ"&;s6ؚz>y)f \`sx3ҦhEpЛknp]ž2ʡ}5N 8[T8mICO=hcdC[2O12_!%]dVײ.sNj@쁹05 C#2vS21T]U>i`bHŅFZ Uňrr5mG!Y͉4)lƤKsSwdo"c/\(ZA\`DVqT! O??ق.O S6Z!닣˓_l%,6҈h \K25eq-;kLRepVؼ3\a1RGdP[7#W߮C9itbQ㼙AtY :OeV]bR1B(W7bJoJ,K Pڛ}X9j)@C7kcu4"b`6t}|rziAX`ӓ3NstU+M8Ъia[mĘB`{: M #ɇN.7,|T24cϓ.nC[%Sث'I X6NRxHW=H+ ,xkJsw^ 9RJcBxWc 9?);WAI3( s܆$&$S#WCE 3Z֪/K KML2:HFAv2>941)|mc#n Q G^b5x/ou4h K[}0*R<p/I$.Vtϯnf~%6XrNzΪr!X)JreVx3YGl]c0[jgY]%PuJT!M|35谙XmFbBע2oΤkjksyeYK. z"/$Y~Wd{{[[[:Ujȿ,MR? yW9kbPM*N@۵R`T(m10|OuQhM>ea>l/cS)J,"(J)FZ0vPߨ3+W _g2Q1Ám-7F45ni`975۾g b}N<]/Q5_ű [[bEWIL=#gNC-(Qx#L䲛4$`r Toq-1Ԩ ~UOS9Z^;dfPX]5cYu*i[>8;IԙiʗpjMsɩכ}maˡ{^jR;K=ڸ :w*&J]y*mT]"[.E\z}j]\m鐖i{ei6E5隌܇&Zu ͻV݀[5Q~WLhn*: s{YDw;:CR;%Xq]kQq;cs^NVg~v%Zi>0`bSK|8l6-gx.)=ڟ<)ZxSZh]7O~|>.8հ*o^wUl$/` Hvr$L*7&q#_d@AF=IcчHIOiR>dM Z.>~QPI & 䍁$@Oc.!Cb`aTF8r'TѨ'5b4 ,-\9*(IfO%R]į!qfi:gMNm?&'`n0Ga<ǫѫ?/?~zN}W;/^??rǟ<ӫ>K>_dDh?AFH qo#nNRTx[aY ~8 |/T_2Ô~/^'wϡQdCa0gڵ;8v4BQ#PjA? (O&'PU`< h^` cT.A; J)׺:r,nItDM?gѪ4+ף3- -,WTlz;O3a!+ʂJ\Q&xZ ];~Su(Cy-dBI{ ՞ry6ZZGk-):lZ5?WW;X\[wZ W&ZH أEBnրq %FyFKPC b/$PI=Y־SجA[μv-3%:=-9ٳPS$fj1礭rrjYǏUTljd6uV)ܑL`o-޺n P,R0<-5[҇cqi i33ؑ:K`Ѻl3Z E6`hbSR6Tv'.+ GܡO^Ý7Ǐ,Kc~0Z츶⤿9;6Ľ3X$gh\oQ@aildLժ^O'x5x8VhKZP 9,$ζ I?;A~4:z^xfGT'e.so}X5~COth9d̲"[V:!)N?鮱~()Otc!5QuMla^t!7$wP }?J'|7$n_ -Z'sm`(OnRzT :RJ37Piumg/m+4%W[&PK Pw H sebastianbergmann-phpunit-6775051/src/Util/TestDox/HtmlResultPrinter.phpUT^UQo6~ׯy v:,qbNQȓ]?^?_#v.I3>xw2/!D L-JtQY`KT_ K`2kI'0ĉp$_N 5*!͞Y$\X9 NAc@[F7T(68.ޝ}rA0R3T)%;S(EϺiQ+n'#ttf>G~FjB`RhCma&@i"saS%ӞH%i5d-V`IxNBW)P֬xj~1S;V#p?9_A8_$!g^?PBO ԍ^(1H\XmT~nW$="*PS8]Yz:Z51>"֢eY iv$ ^F=bmTPeuF/-<`i_jӫv*9fԁC,=ͼzP)QrK3T Rri4a0Ю #*ɑaQ͐d"p‰na:~}F"7x${`YMX- @7"St&S^),؟J/N8N/NÍZ"26v]p+ncb/> o$u| rc\#oϑ5lg<5Y?* lAfFoY%;~zs+o-TY2B~0{دrK*c Dd&1]qC>T(=*>`UI|ul?jX}yfQv`}o@%{cآ-װOG/Ϙ:|;~+xm^' 7|W_'f>?PK P0M>!E sebastianbergmann-phpunit-6775051/src/Util/TestDox/NamePrettifier.phpUT^Y[s6~[mI%R̴;9:lfڬNӣHH†([m AJ,_$||or8ŜBr˅D_OfONiCZє 1([_}fT> jO5Yb!)fo1RTkQ$<>HnZi,sHYR&![e|%)N廏)-`@ U, ItGހ"+xLQBԳDJeϒ'"ͫve~ ;,͸g}LrJ٬ O g\^)gO4) ^`Q!X&Ar[ oswIS*(ٖ[H㴢!PDJ~al}s[.gKF@sts ,,XJzWbw3 X^© c}Ĉr酵"6+1oi(u/ʤ(eE dD}Mi+R!mѼ &P$=|}~;PUp8~}=xB'ЈfYɖ2jT\( ʬ;@67hUE>O!A Vhx9/, !Zk$%/"XM e@6C&g&>pC"0=Po2Gbxd˽ 3SezT/t([{mnqccNUJ*q\lی|D ,GPWճJʖC!XEs1[C_UTԡm 8/!âEfDoe>z?'չ :[3@vҳ ضPb QASضUt>|@.Znxv'Pm~&q?c4P2v:yŖ0Y4V_ˀo})ǭgnN/D%.+_ϽJdiB(iz?x')Keڴ~EZ2&Wa0_ͣx%֋$aM Bm&V[݊#*c{©.&:<0i83ŹC2bu7yӉ]Q+*ħ: N rkƗʦȇL/dlv;؆ڜ{FOxЏ=@j€jGA6lbKac!`~JP:_ĦT%+ ~fiƛnO@Rbh[:yUy0ˀ󷭳ɫyES}F7ޗޭw @"6p*G&3*yo@Q .{\JE̔/}`dj.Ä“jF >m]u/:׃֙)5dA5q9z2 sɂ)ZaehICo3[ѐiI>5^/]*^H8jkZtIAQJ ZUvխ_'LZJ!ߩ\L,}$^$ .$֘;Be1SqA gy}n$PrAD?eCFYXf7~ž+W cfLM6lhxs5`Sq N/Xctn<1b75UPWR貎5Yô A,^n*cՏ< hV/U1N0I4Eݟ"3SnZV|NÉaO:|C}bFCgDl0:%1S%uktVw8F8F)1MB#Ie̶K-+;**V EpOO[bG} ~`JK۠_W)t ek]{- C=%@&vhǗP C@ 6[d.*ʎpmz'l:/شı*ۂ0D:6zC5&nZ|q/)+{y[VV^A$TbuɇXf{`:M\T6_,;>y!P W{ݽ\(Iu!bt1d*;0h]W]w.t_j9 5>kLϳ SѥT> =qr\Mk PgyԈaDOc/ˣ<1~҂x W)s  eU$nS)X@O &c?eܿ℁1ͷs?x4)œDmQJ5z!0D"aJܴB\=]3Fұ ܯ Fqpf G9;khr8O6~DnQ%p4gMD/<[So?z>-d2Di m4[%!M`[n5Fs65d=RJhдONe~9 $q}Ā?cvWH ̓ ktf%Hr12-zDo<_ɃvH|{a)R;B:mȺ1v "\'-tss۳]*Yn4`?Ҳ4xt]pKxcBŠqޓ*m=ErcEc" OZtF+~^@ʓ(.s:͗ǡt5id.hOl:t;.9g=h%>!kl Y 1?0$]/ׯQ}լ(EI1H|6E^Z%N8l%Nx %";sxJj%ʵQ7On+UG#jQf\+QM5H҄'?ʷP%N8UvXVF7h닛/ëo |?F7#=lZF42~ ii{d`8t$HGqu2<= [Ԭ fRJ9 mUy?V˻#(*X]|\ZP/ԷNĢ>J-hyZ*_b"v?+-&{zM떷j`ܪ-`_0[%aFa wەuK,0+Vɡ/(k:EW@N#zu*Z=(}W0? IUf-_$ǝC(2Zwx륐z50`|X_ye$3WsLh $ogR9*ȝvYQ\ʁ7ZԺS-8ː Pcgjg4O 1Ӎ*0q#ڪV˝י` e9 FZ.|cAw`+@QΎyc*Z*<<6)_R#EJU}̩ k!s JD<A>š$]Bfu_#u񷍪9gUL֑TV$Yj@6{u`:|`A T:B]AMKMa cRh p|C=QFu%SM#<ےMqsjpPoSS+P6Vk$nT"YVqA7Wyi"^ S\'ʸFD.V(^'XPTxwЩ1HPucӞ n[Ite9-}my!F.*˳}dK D3P?^݄Z7'mO/(1PHY,\ja=~$cT;pZ4wsޙ_K8ĔQ?Ӿ ѐ0$5k i[RַS$#"6~iCGBςhj#QIƈhN!vqmwsϪ'~8<,rL8;p24qO,pUZOrw.Xo=n~KYo@hya^xJ>OaҮ[aPK Pzi>$H sebastianbergmann-phpunit-6775051/src/Util/TestDox/TextResultPrinter.phpUT^Rj1}߯Ҙ6WPiv;T+-Ҭ/{gd&z;;2gtv5Th8JvߎO餀 JPC3!0{iО&11.[=CJzTx| A{ni0_#>Cl S94R[3/w7Jqc&AE:I3V&n8OEBu=-i1uFjaLn1洐+KBJImQdmTsmb%%9-t1$eVvPᯘzdzA ůdkz&p+9iWabOfr4j0u rU3(\#1Q4L3L5 -$>Z+,k;xeP`zkQ<P C? ; N<Od_-VZ#KoPK P G sebastianbergmann-phpunit-6775051/src/Util/TestDox/XmlResultPrinter.phpUT^XmOH_ڮ\UPr)!A U"ؓdv {l?3;;켯?cr6JެcC{nB+â)-2{&\% ldtNIE~irY|BqH=OE9 ΔT٣1v1mk#4ɶKH@<70BJ 9/[C]+! I8hK!A5Ō } 1Y[M*@"FND(̚*Zԃ^uYWMIM~__A'3x"NY Ļ~`J,6 w} SZz4h'!K2B0)HRG0JhVl]W2d>{?(,KرY )7Or#{0+.rwop|5CIZ9$& dwpW:Hop4aVd{MGà=7MxnP^lNe{4X\)Q0*?r^mT& {cC==*uH 2^ufPzFܟsDpZ7csj+1>1cɽ%i8f 0($%K@1 |RhY&^ձo׈Y(bt*kCYSBi q4(2 GJ \<۞8)g [Z$El"/S͛s&B^U)̩˪WmrGc7)LC:YȘͪ|p>'n>"l]q<*M9ٰyٛdVp,+!l6x9F!4ȝׇnɠ;vDo]FVN!gaJwߕkE 5r-UPU ./ ( ˻B= wClKӬPK P7p@C sebastianbergmann-phpunit-6775051/src/Util/TextTestListRenderer.phpUT^}SYO0~ϯPġ}-¢EB,xT9Τp˞T+RJReu<31Pa)IZZ? xnZipm ^cN9 KI Mg8C쒁PPGMdkNMa*J h(86WuwqhQ#C#`fId Ĉz+8!x!OYֽ ~)HxAW<4>;тKe7}pٴDXAjK!_UYvTZkgا2U7|Ʒ}ǾnեKX.A<=Fקv^rҮ*L3Mp{m4dBM/!=ЏmZIrbjv}1I[LPj:iQ) ђ6)257"=w,<QJyDQ8Ib5*r} Sjcܸ\u.i?C!V:ٸ9yVP''YrN9yv*#E$TȖEw,ݢYN|"$;t,Asx)~9;|WCx }BNncN{[u΁9IwsFؒ~@i3;PK P/u[smH sebastianbergmann-phpunit-6775051/src/Util/VersionComparisonOperator.phpUT^Tmo0_qL_LLELB0il_X8 ߹sӗs繳3~kk J8daiOޤiJm `Jp{exM3SL wFh c]Q 1P#Rt]9jOui\#4zV ['q>\>8UDj`!<dm2ԴCȽi]T@F}hѠl= eB#+:-Ԫ#ҡ2BD}!\AL*`i$A&1B5gi 2M)Ҫ:O9% Y(W' ƃH'BRSz*6MTi+~#^MOwNӗD{`h^:|Mnώ!iXe9Mi5 ,ۨNz &x)9h:[v^3 9Z.olWDžwn>8 ͗gu0 ,: K=J=Ήv#JF H^#)*\E$"*z݉ͷ4ݩ 9mh* ښO+c%HHzd`降Վ$wJ}BS]AU!8x2UӪ.Gi6&Ñ?o}KqD z);~߽y3>}Ac~*Tt{ֲ<ȮdÍ=~w2qoMƃ٭x;wTέy,, mKؠgKU555L"mƃ!4 ؋02Q/΀_4m\Xw&m-j1xL9&Qoi/twߴOCLqZp h^'?;Lx4oS`KZͯ&g*}m+{ѻe-=ZPK P!b !2 sebastianbergmann-phpunit-6775051/src/Util/Xml.phpUT^[s:_f9Ŵ\v ̴نLd-@YY0>]/2IbKwD,dA$ՍڭY:8i5,yJG^^;&VL-)hʃ' hÍ@,ށN'wF: \Іc~ -dj)mJCql_̒$l408(f$iDqn2[5AYp}T9 2/]P2|Ne{6J'SvVLoAklH][܄jt֟=ZN5?Qf5N#KO'ؿ7302`濸7zEʜ5mCI-ȑ4\F\SAw2ǨQE3KgPN4gUZ2Hw%WJDZg9BYmBc>_7l7nI4%v U6 iraY@&[ g%{gk: ڽ]z3[1Mk$w[z-muj!2)I~,6Na ޮ2^Nh9^hPXuHq+zFDRQ!;[Yd+HLcw1L7U+ʯv *ux8g'B\TdPg~ǟc:`b&2qQX9u0OOM{$8vq,\5# [4%Ccb{d|@ @p?6hlV@.5} >jiRѫGM~!]t?FrLZJ oĎW8~A'[uG#Z=T,bd'-x<uDXjG,ٜTv%?Rn^"ɧ>b(fL.wp0Zb_.ğpd?U.!5 9XՔ`I5Ie&rr돓U1d_$GCCwYcj.0;*9Ŭ&ɿ,z76q+l%h\%RxעR]Zs|=kTd=>M*R~pCg3 L/dy{L6\lX5YV0Y\Vʲ$xy)x/p(z&vPT7[6%9ڙد (LNMv0ƾa<9sv]irUO?9^C="9Ce'a3`X=&CKHQ;dGՙf <: 4M{jsoկÑQ` JDQ@!Pf1#?^! `16fm m&j.|4ϟSkݶí DKF,_U$aNW6Eg})Q3f$$(ֵeo:`Gk{ORh+$8*QLE28UV;ZΠ?E66Ұ"}YHuCңN_‡eYQejhPnA2/c]:f(QٹV%*5aT}.#WW le]7R4ݑS '}298ڎcڕctñd+l nKt1UCtDƞ7WECi7 /Hzu]rq8$U|;kk_Cs3Н!?|mNKjr+Z.M5,.|JȹoXi6#}XeK@^]Ацlr5)!=oQp5Z]E)xdƝ%ܟI$ ;XDuIKdV'ͫESo `ӇCX7oRչdjm@8B1hl:QI}b [])~l+6<5L-Re+ZhDPK P( sebastianbergmann-phpunit-6775051/tests/UT^PK Pk 1 sebastianbergmann-phpunit-6775051/tests/README.mdUT^VێD}Wv$.&}#jWBh`иݮʹM_&Sv!u9UTo$l1Ŧ8HydH{q'0_\O>%>wt2i(8GQrp7 kymǿVpyN {j˖ lADz,pkFV*QY^+f/{կO!nRɥomqiBk~\L9 |NϞ|ht~d!LeL;{)-r=2/ntY\S"X%:2mSU1Y9;I&˲Ò{c\='F*X7Y˿2g#Te _čWq+O A aţc_Fv\K S6߸<>CxpwiHKO{4,)ddU>\TXnPvMi rTu,EO}Ce%Kd=f388XuZp;W\xtQ~{Wڇqbm5G#VDL:׃gΖZEW@PXiEOR@ ~BHBN9D<´leJ9UV]@^i2*AF~_wa9.gZPK P/ sebastianbergmann-phpunit-6775051/tests/_files/UT^PK P^hv7 sebastianbergmann-phpunit-6775051/tests/_files/3194.phpUT^MO1s( D$7Slci7,H  jԹ4۲(Aaf$Ҷ4Ђrm-'p9L/V7Ğ$k 2/WZcnBUP88L*\zYH m`A;=ҠZ㦞{|f㸪Bld%PFS&Hm;/Wqmb u /5Azٹ8jll y]My Lݻ*o|[cb'vBJ>`tjM&GoF|ݪb5#F4.: VѢ_L!.?ڌ\A,p_ܣzJ٧ᾐ'OPK PD8 sebastianbergmann-phpunit-6775051/tests/_files/3530.wsdlUT^Un0+-:,h7&GD:Kr%$v8]j~^WM9_]ЛlFRo m.&s^J]&y `sƼxU5F63n/+F804mB*;OiZ'JUh)rsV `Ѵ:$qt?0-K5)q *"td_VL ,ub 0֝&Ujbgo[0>MZgRcyТ06bG N`]ޤ- HhP,sKaSoFub!qkaGՏ9sB_JpهLN C1z"9GZyn>2,rR' PK P? sebastianbergmann-phpunit-6775051/tests/_files/AbstractTest.phpUT^5Pn1 +|aAmQ> zC$QE^lgƞ<6!a*qx( j4T0Uk4#?`d ,^ XR-:x٢s0Iڣ2`43%hrׁae@g\AE]B^Pq =&0lRg&V:<5zX#n{S+fO ~Ip_!]Vrjp ;o,qQ] 9E^L#/̓:?PK PV?9f@ sebastianbergmann-phpunit-6775051/tests/_files/AbstractTrait.phpUT^OO0 >vb_C 14]#$J qA\%Y]>&e1R8o|./fj1`$%3`dl j1Aw:Ƞ\4]z| l-({tQ t %8=?ݯ_uq #&Цlf& ^^$y9*AJE m+0*ޕ[Y4(Щo@bfޱz6A߾"q8fZNot^/PK PDh7*Z sebastianbergmann-phpunit-6775051/tests/_files/AbstractVariousIterableDataProviderTest.phpUT^Sn@|W[l"h"ࡊڷOr﬽u9NI{=̝^WEB'3%ۊi0aQh+]k,`W|H-B򴽽;槟R,p e26~R?t?S;hN~0zk^aOt+STwPK PcIC sebastianbergmann-phpunit-6775051/tests/_files/ActualOutputTest.phpUT^MAO1s0aī fbJwm\ڦw^6yM{j1 䵢O:9 H tRuVϫw醁d*5ne - <10F1-8,Xנ;y) M`CSZQvش{/zjQ% Щ6hxɃ^!R{ Nv)@ }q$D gefRkLEY/#H <"@Njo|\r9lTj,E-!{iWMӚce<td,'M7YPK P<^B:> sebastianbergmann-phpunit-6775051/tests/_files/AnInterface.phpUT^5Ok0 :eO7:V<[lle}eYO'mO-ʗmY7O z''\kAi :M2 O0ö\G %f0!iEyy2B 4}.gyk3x#$,`!%٢9ԛX0F.=iAppj[]oPK P=QL sebastianbergmann-phpunit-6775051/tests/_files/AnInterfaceWithReturnType.phpUT^5OK1sxOb+4a2Rddxy/,R oQ*^ωdfSS51C[BWuQP<5"̰ъty!ߥc8[!םPcWZBӾ# cmz߮U#60`KR!jc'F^6zPK PJ$#PRO9fٕY f,=z9WB4v[jc{*c%c+ ͟1C]/A"k`RP|gb{OI~ݮNz8 vrpFs% rT[/ wTj 0tj m]K4]3}n|t*v2'PK PK*G sebastianbergmann-phpunit-6775051/tests/_files/AssertionExampleTest.phpUT^]QMK1Wöū(l7lEߝfޛdtM}DjWЇF7JX<->kdLazĵ&v#M{"fɉ3 B(ۺ>MŠ$ 삿Xaw sebastianbergmann-phpunit-6775051/tests/_files/BankAccount.phpUT^T0+Pfa)\n-hqD3i,;'VIiSH%x{ol_.8vd-]" )[ K`R{U+z >g,cXJ8RBZÕnQ Z;c2sZN W:5~ecu}fy;A-$+YU Ԋ2aTV"7JгDvBTK P'9 6.b_[X1Dnj2x_O<>q -=ϼ inIJn^LFH. mYx(<+-AkyScF_mwrv݀[,Sx Οha>hvnPfM}zԘ4>y2}cLG;O;rq;S}9>WjM[zL- ՟vUQɑK*.f|f'`tpׂ9?@4PK P#yҙB sebastianbergmann-phpunit-6775051/tests/_files/BankAccountTest.phpUT^U]O0}ϯ<$t|tPVJB4!MsXM̾iWM]'4}}=ч%jXt)w jkҊnZH)M@9(*Tiq;?ay]aY \-*!>hi  b8bh\w'uY8fo Ȯoc$ZpG2!ySb^Q73g5c"V7؃p|b̍S-4%.m^߿f]~PzvۚJ[J0?`KZj+PK P:'"I&G sebastianbergmann-phpunit-6775051/tests/_files/BankAccountTest.test.phpUT^U_O0ϧ>$]=]*m ҄4ΥH̾TsFD+6$>~s̄БU~*Gw܋n;6\A2~.^\kE82K GJhͅpb'ܨb{ΌJ"@|e,%:LIԎع e -.}&ؗ*Q*AU )^+宦pzMJmYgp%\| bR%X,BM(h9s"(c@zU1-hE6-_#kg6sߖ"RB:&Z͕H ]3kjs$}Q5=-ɯd^o F9v1l! _i6N=h;(OsSq;A;&~8Y|РU K јyM@:hϟfC֯TD?4!}{:SsSH5Jn{Co8g 6ƫ.<ߝ.=@! AŽ2uɞ ;7_TV6?o *vASCPK P%%V6 sebastianbergmann-phpunit-6775051/tests/_files/Bar.phpUT^5Ok0 5)cev`Bpl%682'g.=DШLdJV'#ۛv/v[[x76h(A|YP5jAf4Kg *ՠAsB<';58g1Y Cɳ/{}yZӑ̠md(K7<2HcMtpI| e`.A>^?u.cӮ_mTM\m".PK P>UE sebastianbergmann-phpunit-6775051/tests/_files/BeforeAndAfterTest.phpUT^Oo1)lIZ)P!2٬Uc[q6QBZ(/o=Uhh#.bPP¢1| /gTYӫ0Ǖ"6-ǵr.Z@)h Z|xaPN5:}\+6}`Qٓ:'٪KǍbh6*1jh 7r#ɧX4ԃ"ٶr[.H<Ψ(UdojƘ&x Jêv@A\CDBE0AF6m=ÅK4`u`P} `7dF^(;GNNNE)@oqN=)˯<;`vD~~PZPK P{ڍO sebastianbergmann-phpunit-6775051/tests/_files/BeforeClassAndAfterClassTest.phpUT^OO@s!1@Z & x gw37uEI{o~3w_yX*`8y. YeJS#ӫJM$M( 7Ke-\[Jdܺ\!p~̢bPVCm $ mRq|Jj+Mq?STKǕbh6iyd䋐@i1Q(aOA-qi#se"Fpޯ.C{IBߌV?q.#eWp `Twʽ2"-$8 R?3lp!pʖjERnXy1p) YQu"GGG{I>4Ø 50V@.,َ;_PK PJLQV sebastianbergmann-phpunit-6775051/tests/_files/BeforeClassWithOnlyDataProviderTest.phpUT^MO0sD[qm)RXi?*Oc[jqڢj—D;>3}u@^H+ax ^@ P*_'<-ar33 j")E % \1p{l盘@Bh u+*a$hU lhJkAʚO4 [(\q?Mc*AB KE0y/$F^El^] oJ@ 0T={QY<1V/^3;bNҝua$F9HU)bS#[0CO CaalCDqeMC(888E{yNNfV(HTYvAG@2=ǻj%^mg*< ߟ>phjbڤiBb;OnH!wMNK24)(cGqQe5c w|͗3|/ N2R :xۣs0R@EpKւ1]ˀN5\al+21tuov=<5A!I3i8nHi\VhUo}H~*|RH,0UPuUDgcZˏ85d:`:P&wBg?PK P0CT sebastianbergmann-phpunit-6775051/tests/_files/ChangeCurrentWorkingDirectoryTest.phpUT^5QMK1WAp+\BW$Mf7mLfwҏ9$0ޛ}:hZMX$&oTM.\@|ڷrwb g<@f \^xDj:SA`ymnKq :Xhda#5.kQKoqsڻcd3Z<;{2(,fՋ1H? gJJP:,{" %'Oh86Mp?R]/XƋFqJSl1MvO=Zg=\~>ˑWcr;SPK PDPAR sebastianbergmann-phpunit-6775051/tests/_files/ClassThatImplementsSerializable.phpUT^uPN0+CRWQQ J-7ʱ7#?Z*:R!؃mgvfg|T Y̜?4&(Jn`JX>._W‚9/{ۚi cݻ# =XBn ؚyi4 vi1?qTWÞ92nRWCΝ # -&&w+) U J+hM!*E-)ސ14#M t(0d?PD;`2tTt9=FT 5:am|PK PŁ|}R sebastianbergmann-phpunit-6775051/tests/_files/ClassWithAllPossibleReturnTypes.phpUT^Io0sYMfsAjnr"G ȑ]#l$}5u {tO×A]6LjմÂ>p~:aX1 9wFZc@f&Vm` ~Ơ౹EƃhQ-"q&eK` '0-x!i|ؘ߰ A"N:Ӵ%gV00CmWY}2Sߪxi s.~l̓Ӭ]HI [A7ҹq*V7sw:"66g9u/ٞ| ދe!bu3vwI/xu|^h6S-_yHms;v՛xbѨΛ28\*9#⎸ϥRIkcPK P<*ΕO sebastianbergmann-phpunit-6775051/tests/_files/ClassWithNonPublicAttributes.phpUT^[K@+AQ+)*>&t7NZ[;K}ivzw&9Ȓ " SagȐhH L7@OJ a$k4SٺvɃrgj yB P2Dey ZBL=ߌƓkUQ"B$] '`.)܄ȃ"t|N=?7r&`Ode,1M{}R\+ a?zkYkϦu/o& 9PERh*S׾fZ!__lakdhWh̰S re,Q+_*-` acNIlcĢ{)_G6w(\NsT/PK P$kR sebastianbergmann-phpunit-6775051/tests/_files/ClassWithScalarTypeDeclarations.phpUT^5PMK1WCm)Z?VD xl2&!RVsy޼Cl#,N'fN7"٭Zط.vAzԉjl_ aG栽*c"?KHP])eho9C>C:hv/;҂ #mmʪ1 %Ud18nG'C"d^*9:gKђ^UQJ[ 3U3hp*ּh(WKH@9ك!^ }慾(ѡڷSսmͶH̠mI N wyCRȋ4 '9а38"G~6btď>q57#VNBImƄ=՜e."~PK Ph(MMR sebastianbergmann-phpunit-6775051/tests/_files/ClassWithVariadicArgumentMethod.phpUT^5OMO1ﯘ fg F5$ݶibNwqm7 Ii8Z| noƳj:`&hlK X??Z3Rc[tHqߡs0O؃Ey4mApvoih"k|쐭wZBez߬U 21.3i8Z6Hi*s,@4P:bCIF*9ݲ[]X w~+ y'S4ޏ꺾4L$A:WPK PzbB sebastianbergmann-phpunit-6775051/tests/_files/ConcreteTest.my.phpUT^5PN1 +|భ+@T[qDۍMBw>$3.v,^'3cDܨTG;ZX?2`iÜ{1ʥ)$}&1]Ǡ$ iG-p{}Y72ꔎ;0h&Mf08r2(FKꙒ`I!·q~b/5%xhd6\@@*FޔBC&pΞ4Rg%B\1q2V,s!~PK Pk z? sebastianbergmann-phpunit-6775051/tests/_files/ConcreteTest.phpUT^5PMK1WmQWTD ]%v$$];: yoޛba:Q99[>F7;5*LQw.u=Aި#X?k!Ne&P3;LicG1O#CÄxLn1!з!5/{҂grYUtiƨ3+4踓$aHRI=SrtXo1ՔmS#o84JzSeT=s~.B (qX|iIPK P3%[B sebastianbergmann-phpunit-6775051/tests/_files/CountConstraint.phpUT^}RMo0 WN-5؀a(`e:PD' .[Q^(GW]A֛e,}x^L'L{4#Ld <~~|"@kJ;%V&3071v'D6x3<"4`Cn2;7]K<mr/o{5 ;v:I3ְsJFGBT c.ğE 6(GFdz,BOHƏwb${x54sfE50(,9W2?$lM L\*cS!*!@ey~FQ'?E M&C\KɣAbbDeCmoǰ* Ģ[ ge>= /.8s\Ow;8YPK P$:i7K sebastianbergmann-phpunit-6775051/tests/_files/CoverageClassNothingTest.phpUT^MPKK1WnQW(hZoIn$];I[0{ehTF; |"##&@i; \ /=/ĝL dgU+ilGrF(庣7UM ( m|+8{ ]gC⽽fR:% h{B N\Ƙz,zحlqp{@LO9Їc[%*WPĹ ?Vj_|~ŸUb"f#iύXnP'?n~}gIPK P?l:D sebastianbergmann-phpunit-6775051/tests/_files/CoverageClassTest.phpUT^MPMk0 WC]׏ 1hw+ VҮi EXO=O@(caND `Siw>_>{^;Ja;H VZ p-P #g\?$h<`B{tf}~Mvb“0f[P :!kN0 J-x4u m-% 4%]mv@]G h'džPA _m$p8jaDu_=zJYgݝKiO2;(=/rB7QOU'9oHUqW;gdwN2N&pGJ!n,wC`|I?~?PK PLJ,4R sebastianbergmann-phpunit-6775051/tests/_files/CoverageFunctionParenthesesTest.phpUT^]Pj0 )tLXصҲvpl%1s`+ONtHߟx4*+fQEC>e!}k""pe 5l_=&S9찒tsْDtl|jZP?ӴiFlj:Iƻ;-J mحԔZI0ڤKPh '~ HcJ]Ůg6Av8}c̅+  N [~c1ap#_\eQL-U05Wޔ(lXp;|ڜYPK Pw>\ sebastianbergmann-phpunit-6775051/tests/_files/CoverageFunctionParenthesesWhitespaceTest.phpUT^UQ_K0ϧǶmpl( 6e irmiR}w/{0/wwYaʱC7Ls7qMR".PK P|9 .G sebastianbergmann-phpunit-6775051/tests/_files/CoverageFunctionTest.phpUT^UQj0 )tLXصвvpl%1s`+ON|HߟsQY0/:f Qrط&Bm,^_u 3 a25V2^04t[ѐ@-B=X `@: (t ]C'xwEɽq⽿:IM騕Mڤ5Zp臠4ԅXad߇=F*g!_%F(lp38$nh+_SH+xJ:/̀Xn;fs8z'E?rSYPK PHT sebastianbergmann-phpunit-6775051/tests/_files/CoverageMethodNothingCoversMethod.phpUT^]Pj@ WЃmښ^jIh @xe{kv帡+?FfuQ´ONE)82]"p#l_F#:Nãty%bK6jqgmP5e N4 Jlh2*Iښ{K4[VT IJJwB'ƥF ԱhXlph+`⺍164`mh*qW&nrd?ӧl@aVI'3c!Q" m=B࿑~]M,(a{IK/ZS٨  g癥u@%BVd9:](tƳɭ%iknPrVoc>[B;eF Chv^ctκ=3=NTZip >c􀿄Fy ?FI,̟1v;Ȑ%d İYMc8Xz@#>5~rվ][E;PK P~v'*FP sebastianbergmann-phpunit-6775051/tests/_files/CoverageMethodParenthesesTest.phpUT^UPMK@ﯘ$k,B $YLvHi :7yǶjAa^K'sS~OEH`Wi6ϛ1l =ii ]Hc`毳% u@bY[T!]]CnۓeE Zh< ºF%ώ%[oWjpG$'PA ;s9:oN6[ߡuBp*CfdoHUʰG߄Fy\i -@0dv~#6eű<<[0T2'pZ ȋV s0_ewg PK PKX{PZ sebastianbergmann-phpunit-6775051/tests/_files/CoverageMethodParenthesesWhitespaceTest.phpUT^MAk1saWJjT"hE(1 ]̺d]\2o7&OQ2`)Et `Sz\է5tςTkHFZxP04q,]A9 P62.%go(`^狏"YuQ% ZAtɮ!ÛG Ҙ3 غ`9sBp*10ߑ*WezU4Khuo8td;'7;>zs#* ۳2GppFw3-`9k}7ffw'PK P`W<E sebastianbergmann-phpunit-6775051/tests/_files/CoverageMethodTest.phpUT^MPKk0 WCR]ZYh`vpc%1K`+P]^Mـ¬#ONgM)d"`R{u}~ML(aGIK/Zs8 QD۪6g@x4u$m=4J4v-]ߎJIIJK-NSom2 aDl6q8YcgaRΙ _R{B' @* 0/Q\'+L Ũ46/FfO, ;[3Q"pzP I,,/n3f76/".PK P)Q sebastianbergmann-phpunit-6775051/tests/_files/CoverageNamespacedFunctionTest.phpUT^EP_K1 vnpP1|Hv[[t}wzb^_2'QAn:u%]g"Ge p-l^6-2fŃdg Ǔo` GNPЦ%cG ( mIq|ggCώ.W*KtIAF&_rHCo8yt)(d#9u-g O8a%̄Kw fDRnU9R~Z'pUU:[/tn2u27u>\hGQ j 2+PK P/`+C sebastianbergmann-phpunit-6775051/tests/_files/CoverageNoneTest.phpUT^MPMK1WnQW(h) &$$];ٶ\޼L|Ajd,R01`[i2֯Ok 6j03u@rtF(1&VCcȆtdߠ`?ܽftTK^F&5wzC5#<.(d#)Xt,v[bn #AVrChu+S ݞcsR^ 7E6U?=047f``H,2Ng;PK PƏFI sebastianbergmann-phpunit-6775051/tests/_files/CoverageNotPrivateTest.phpUT^MPKk0 WhCS]ZYi`+vpm1K`+P]ҧKWQ 7Ta>'c a)W 6o/k3P l i$\gsf_QKG$hem%PCk ' HcL3 /+ln0P>#!+!@V* _B\OW6tcT7δGf]*^ kW!Ƿ$!/NLGn=F7EeN,PK P$5BH sebastianbergmann-phpunit-6775051/tests/_files/CoverageNotPublicTest.phpUT^MPKk0 WhC]ZYh`+vpm%1K`+P]&/uYFUI@(Sa0¶4rS!p'p9_"f^2+ IlDمtDț7EI ( mAq %ώێ-VEQ) Z@xɾ!*yɃkB6SEb3vK/:b}BWBW͞E/p'k]Ls>,F]`î3UV Vݸrp[ u` qk0Y?zOqz8PK PG XBF sebastianbergmann-phpunit-6775051/tests/_files/CoveragePrivateTest.phpUT^MPKk0 WC]ZYh`vpc51K`+P]fMـ¼#ONM)4BHG`y|M (aIK/Z3-٨ D8UmN%4 *lhՒ5T(yi$=(.9 NJpro[#) SѲx~d'~;T,pt' (W&I92* RɬD#,{`å@5rlSD:UlBYOLoAeawPK PiCH sebastianbergmann-phpunit-6775051/tests/_files/CoverageProtectedTest.phpUT^MPKk0 WC]ZYh`vpm51Klc+P]&ϾQ2 R01Ncg2T&ܽ n՗5Ȁ!q'#iCHka9qv,]m]rLYH6 mdCwd_`ߊztTINF&]k 5t*pڠ4ԹhYrvd ? F*g,%F(,qb̈́%:.pYw4Wx.h4Wݷ;>aUu׮Anpgt<s0߸߬fgqz0Lf,Jt\* `ld0Y.GjF12Sw39/iڢS,TSR!@>W _ؑeHʧ!o?NITQk\؉R:3dȤlq~/M"zYIUNZu: cmPJpV[&!NqI= ãHi}PK P:f? sebastianbergmann-phpunit-6775051/tests/_files/CoveredClass.phpUT^PKO1WxD#h=&K۴ߝ.`I7&FUʈD*zUt~nG@MP #/`r3yrN1-Ն)d"+\a/s0H%Uq\d,AvnPZ.+|\HC(Q򬶸lxwttd$R&6dVjXZ2WQ!i̩?| p4#*Of9{$u݃[7|0DO}7{ ?Z~tׂE4:F;w7PK Pu!B sebastianbergmann-phpunit-6775051/tests/_files/CoveredFunction.phpUT^5OKK1Wqk "Yff MB2ۥݤ0|Y?%+Y˷^- 鸀eOPg,-wr[ 4`/#=נ =^5ۘA90)lG'؉i^7M30>&!3ڼ)kAZ륲SF+8E6G?PK PDN@ sebastianbergmann-phpunit-6775051/tests/_files/CustomPrinter.phpUT^UPj1 +tLBi9郄JY(^Xr COьfFX4^gd2!|7]L Zu&b Ks$0p&f ;AB[% `01wZ(Hu> u޼6ék:qZ &"h'quSs,`58R5{\4`^(U `qշQPK PPH sebastianbergmann-phpunit-6775051/tests/_files/DataProviderDebugTest.phpUT^Tmo0ί8U@iRFW/ZiCDPe#x vd;h9!)a\lAQ(P{ޠ[І0)SFF7Xy0ӆ3_Q%K&|֕!ƋϭT`IW6s|10Ό)Ҋ`ć#K,T8ԇ3ӆyE26 SKTH8VCDnDpII]q@pa0ACDZcU^ ! &eGeBa,+T7U*EP8G8UBЗ!,a\aJmMqPG80({bƘΟ.dmk#KR? >xưhԼe62)40 F }uSAeuhxRmx4uä_vt@XAC HZ0cg+4)|l~Q-J|:~/zЁb׫w'_N*,:T袇%\֢Hn={9D^>vX*I.ZOi?5qihvy+പPOjMScPK Pq3<BM sebastianbergmann-phpunit-6775051/tests/_files/DataProviderDependencyTest.phpUT^RM0WaM#˲,@B"ējb[IK3Ny_ MU#Vu X4-AG_쫳7u߶Pv0hg:l{E-wk5F3l4II3Xn$"Bid0V&z7tvĀ?Y~i.7>SZd2RW%5F|rko͐O$z~Jh M~:߷J2G"#/b9gLxȆM.+B9йRK1/a@835JYI|boVBcT=iD^kz"vgU$',?F>:}CPK P!I sebastianbergmann-phpunit-6775051/tests/_files/DataProviderFilterTest.phpUT^Mk@+`,ҘX4ĉiCZ;Ȼbvd7*vbH>;3;RJM&O~0zO0/lܖ41f_gIR%ja.P;pe ɮ  6C=5[N*QKlcq\w\h`ldY3Z.F_SR`tW$۵q7%ƭ9HR2JX4%#E3@NU/<әhj.Y^> !,^,D'4O=.ntwMλ^Kph7?MoR0moiGO)5'F o͛u4GԢs?L#tvZϓPK PƧM sebastianbergmann-phpunit-6775051/tests/_files/DataProviderIncompleteTest.phpUT^QN1+mJʵJAEjQ$ bvqRw HU:ګywڃFȀE`]ѭǸSŨP6A@0>e msA)T g8pẕn|0Q=a\jhB.\h%g[\u'GӳInթZdmy"԰2T +.L1zArbg,O%F&IN[*ײ\Oq'ç9H,\=}HE>"r,?'rB^7^kq{/cTU75ɾU m.ykBQKnaq^^?3U+Ͱ͓LJ*o sebastianbergmann-phpunit-6775051/tests/_files/DataProviderIssue2859/tests/another/TestWithDataProviderTest.phpUT^mQ[KC1 ~ȃgC :/PlNY[tSdlД$%u,kMXD&[;Ga\3[#H  ggPrOQ`Sj7Hv.o'B) ^m1O,5>|W m.yZhCQKniqwOLոJ3tc$h`e8>Q"d0(ɭf=$!Ƅǧ'g]Hn H +O1Fi9"Z49̦!#Է9vbgv06mĐY+*k`)r:P糗G>gH<%_k/Vh"D^_3/ZPK PE sebastianbergmann-phpunit-6775051/tests/_files/DataProviderIssue2922/UT^PK PVh,iPR sebastianbergmann-phpunit-6775051/tests/_files/DataProviderIssue2922/FirstTest.phpUT^mQKK1Wöi}(ZoI76 I"w'<8$]hZMXD&[7* hlڶrM Y>STJGzx݋PpPʇ/A;Etf)8yO2UIV@g8>Q"d0.AKnIZch4V*ay\.0򣸑rOs&aj)r1:T $zp!0@?ŲCZbd_^8 `9Ngb`9gsGzP.g|N`9U2H~PK Pq_S sebastianbergmann-phpunit-6775051/tests/_files/DataProviderIssue2922/SecondTest.phpUT^5QN1+a!Fn !C ),XM;J tzh޼ʀY`}өt/D(E೒Z>;$LzƝdW tZ{a:4N.@%BQ[ W`%tQ" ‡$-T%׎>ֳTJIڤIv5Pv}:N0Vkso*18|GB,yv;Li|n0Ҕ0 [7Ls1<We ӥ#y6`#Qyh$KtwgTJ ?=:pZ7)u0&Ԙo٩ygPK P~i.J sebastianbergmann-phpunit-6775051/tests/_files/DataProviderSkippedTest.phpUT^oO0S܋J$YY[ʿ1iJ^\Jg!wҐf9qt~]}Ajd"R0~ӍǸSŠP6A@0>> k Ug2a^Jka/>Ǝ(]Ή @5<5 (o 6doPrlepq<:rjIɝo<L=um\ĵ )F:f<$9ne4x:kZ1A ӌ!S+ͪLpT;]!#@^_UMxFj~މTMGz3O'lvN,/z?܅3U<7<1W߉{PK PB5uC sebastianbergmann-phpunit-6775051/tests/_files/DataProviderTest.phpUT^mQMO1Ẃ&-D5$ )6.΂ߝ.`t{2/A*$7^hYb8]dSS ^JO0>YCLDH _gZ-vƍ(x UQrқל@Z Qh7SgM( .jeQ. 261ɤ"԰0 ; %*~ly ο=?bK\ICFV2ŧmv*چr#CʝNҚVH0bMkwx>nfq%ꭕe ;7ϐgpuҐMhLS̝;1ˆ I9ފYhLQsiR{B--|4.M^2.eYي6|Mdg|sM aHo>]Eѣ>Sɠ ꙔC^:'!+/]W"f}/7ژ_!_؇t/%]0Hh~0'G0u8bAJ;I2O)yy\ʅqq)KpV 8 {t5! KJy y!Ưc^3*ZKF8L85 7#t޾x"ݸ1,*Ew.#6#~ ! qDž;sR_mVr&p{'a|Un?c=dƜ":Xb1d-j`kM'oom˄Mɣffomv)RU'PK P$Ep$H sebastianbergmann-phpunit-6775051/tests/_files/DependencyFailureTest.phpUT^SakA~b4h""VkBDRݹ33HKEf̼}u F%'+o"ҫÃ0ukUb5\^\~'Ș>V)o1{8]L93 "mӀq2(oq=IC_V A%]tR=;SI@ʍ0&`f]Ƹ%.%K㢐; z)״ 3K`/ 'pΤgzLi-uG-_9oQc83=-~2&^G,&xO&3S_V0~sI у2FE}K1&{_]mҮTgs2;=ul6`5% 6Q C`#JVH/.B m}@o;R;G|s6=ߛY<|D,"jW;4v[PK P ~JH sebastianbergmann-phpunit-6775051/tests/_files/DependencySuccessTest.phpUT^PJ1+aVk( &6YٮENۛ"sH͛yom]֠QUcEo1\ F"K&@a*k \ū5tɄIp~u8ajq?3wD(7@Z Qh $9Jvnq:{^B ;<+d!u&^֟{U3S FѪQ C b4.>p͚IVE@~ sFw#3Y4v1f⇃̓,M&N[{VHwuta]Z: [@dyVV{`0Ko$Fu"9KvPݕ p6GObmP9;XlZtX͒TKhc$ۚ@cIN9j;G&ďWJBOix1eaLyhR_z~ۉ EL})v*G3֪*dC>O7׎p:8bz:pִt7CܬH|$\gI7PK P_}5A sebastianbergmann-phpunit-6775051/tests/_files/DoubleTestCase.phpUT^RKK1ﯘCb}C(7٩&K2qw>RK =gӿ rZ8L=9%iF_yKN8ByX(g%]nj0 bR3΅'% ܠ{/1k6 L*Akr &$φfa])HYs Fw ~4~|GU:*A-<*6jEO8Idc$X[mDuo/w`6 Ofw=0׸&*E<Ļ;*g eۡE3a"#`6p )݈nHيhƯw1 v#`P搂3pqIkk%lgYdw艟XY?tv_n|ku go]^&?PK P~y+&? sebastianbergmann-phpunit-6775051/tests/_files/DummyBarTest.phpUT^5QN1+`BPU Fbvm춵ÿ;]`.̼7tk K#.鋎},F:B g/`1Eه5d$--0i-LB)N/ @5Bc@ZFh# ʅFvvޠAc拏"Q- ZA.*h5aѥP" )̮G"e .|o7i:c!*1KjL%*%pc˼-W n3e񓤉(ppZu3%M6v;e t=% ;PK Pؖ(A sebastianbergmann-phpunit-6775051/tests/_files/DummyException.phpUT^=OK1xA]Q)Tϒ&M ̬E&E= 767eX2AZoCL|uT o3zuf]i׃v0KhYrtv[Ac3X<q~ &hT->3@j{u)8-4d? YL^\b,kUK3a;ʍ: EWԗV?PK P &? sebastianbergmann-phpunit-6775051/tests/_files/DummyFooTest.phpUT^5QN1+`BPUFbJ;6v۵ÿ;]`.̼7tT hTV,"苎 XLX΍ r 1 c Շd$#`9k홅R&h^8 *2Y 7`tQ" ҇ZnEɵ}柫yչJ26y]"ΣOA! i̮G"E5>|oi:c!*1k%t:%p4iǖyW n3e(pFw3%M6v;e t=% ;PK PtmeL0O sebastianbergmann-phpunit-6775051/tests/_files/DuplicateKeyDataProviderTest.phpUT^uPKO1W]b$^!G4CĘa;6.;] sv@SV$7пMVІEa$^gp9go"&R @~AkγՑipL.,!sޛuVCi2A m8{ UI(]{yM^(դv@ɪfҰ3\ȋ$j;zħTn,JCq]I(dzgm&@LV8sՏNt 8WJ\Glw :3Oƥt^c Zs-9}t8/PK Pf=H sebastianbergmann-phpunit-6775051/tests/_files/EmptyDataProviderTest.phpUT^]AK1s]ūZ- *֓I&dkwVs7ߛr QckAwn+ P!v=`x3. i27<on i66$@ ju{ hB\+W钌Z'` ~՟PK PcY? sebastianbergmann-phpunit-6775051/tests/_files/ExampleTrait.phpUT^5On1 +|\PU3!"*r^K,-IxKQſ7ٶXxƋ`=FD-Pz~l` ft,P8N"޲P^4kA,A7=hnV5 ]{'uԽoWPSc:(p'Af$'O~z$" _xɗ2opr.3xA&#(Imݪ~v>wuW?PK P)V sebastianbergmann-phpunit-6775051/tests/_files/ExceptionInAssertPostConditionsTest.phpUT^SKO1ﯘ0* 1CLLigƥmYVbNw`/|v.sPc#גh0tΛI8ce:@s: l tƀi& q,iad*vXݰP^}sh+:TVjY J(-Mv\YzK(ciadԅ*as /V n Vl|]BLV{6~fܦESc@3;~"Fj v\zUPK P3YpG sebastianbergmann-phpunit-6775051/tests/_files/ExceptionInSetUpTest.phpUT^N0y=ph+~ĕR@"TUBi,۲7 S-D}|2 e.<y-遞a ]:G0M, "/ a x@K2s={Qk&0Ф5ro\'ILT"1ɢ$TPix'0N}lc~E; 4f0I`$ EQu/W.xt QRm)##'lZF~j_l1q-K2_XgZP'`eEډ}K12o+0|_aMydt ɶOρ;.oH+ˣ؊aPK P2TT sebastianbergmann-phpunit-6775051/tests/_files/ExceptionInTearDownAfterClassTest.phpUT^QKK1WA趨ūQ[, &6Yn;鋂` to˼@(zu햀 Rzif ]@IT&8~B7jw,TE3t(GȪʵ7@Z Qh $9J- [?x "咠IfPv\-*&ǘ\`4@}[ +et0)Jj{~iP)OY8bSZY$kX:6ʽrڣ+  {c#Nxj᳸W_3F|PK PF7>J sebastianbergmann-phpunit-6775051/tests/_files/ExceptionInTearDownTest.phpUT^RMO1ﯘ@TUfbJ;6.mκw|D{o^s2 e.<6y-y2ih4R#')ƏF"!00:a]f"6(zei {z M`AZ9ګƲAQ&J@8ɬ TPj[x,0n'xz)ep*!MFfD Q G|\1cp8]HE^qס(P˒PZ=@zK(ciadԅjF^Vh@|Jq3՚t / U9nn{ZQ3TK/Wwǯٵ&ښ~Y]3PK P8B sebastianbergmann-phpunit-6775051/tests/_files/ExceptionInTest.phpUT^RKO1ﯘ >U@fbJ;6.mβw<ܘUeӿu2ہAkap%0tTuO7ӖL=Bc">Px{h=PyҺ@h m-5ջu2T;A)( B'$޳sqY5(pzrZ+}('p R{(tw--ei41 bRAkI 76[a \>wB!6(t=wE*tzSgASX9BwMp;{guG h$@Tr{DR]d;'XZ[%y0+{27=>$僉)JV/m Qz+:yV8žo1jm8g|@ 2u jv1t0_\/l>x Gq1 RNOl!Fzw;ڳ)[d2/6`o98PK P.ZI sebastianbergmann-phpunit-6775051/tests/_files/ExceptionNamespaceTest.phpUT^Qo0xF#m7,ݦP.*9 E`9}) UbϑΠz׿0/BV|a t_oJ[3 .#)|BZ kc&BmJ*ȴY* ʡ*DŽv-HjLkM[IZuT F8ȥw sh$aN6C&ѫJ.M"8 fh7 ړ=cC9®7‚V]i؞^r W1s4Mgw(IDpgԃm =~&`ƁBIsG߬ KcnZev EF˼|zWex3n%/NRv }:WQN1PK P#wE sebastianbergmann-phpunit-6775051/tests/_files/ExceptionStackTest.phpUT^uRn0 }WE؅{6d V`${jAi[-y'8uFe9<<͇2+!(}KFF%Q0=8U&-$2G) N`uSIWG,q#,I3JbQ1N6@BR9DfBŐ*Ѧ$ Qpl+npQ5(K7ɦ"q[]QNW1a܈km׳]5-i.'+4eecc#bI"zti-t_xՆGeT80RT4ss?x[-ւ"a/& T"WxhHqȷ! es`[N^LRm MuFږ74/2I|2kP|oJY zU,(tZ{y~{zF WA7,k؄sS[I j= :|M =Qѭ/PK PoTUz @ sebastianbergmann-phpunit-6775051/tests/_files/ExceptionTest.phpUT^ՖN0GM R6 RJ&N[6q+u8ȎdPH)B^4j||~wcws%3(HPnmn;ՊF\ÐL2 pTpl̆ 0m8p*1!`G ~4! 8_&&BP 1åxIލ9NyGqmL pd `MD#\THꪓRF'RM8ێCUܩU`GEs~9@j=I˿x,|3VW왤Mav ~': |vr?,Maӵ\2^X4A?)S碼TY5j جX -咐>Q`L00•\_]hRhds<}r(?^8 ڸ˩;\5QݵRYܑ^yT{zxQtC=!EQYkkyo:}YV=s!'&~N7Nl<;M LKџ ͧ:5ţkTr)vdeYl}f *]:PK PrseI sebastianbergmann-phpunit-6775051/tests/_files/ExceptionWithThrowable.phpUT^E[K1Wc[RbAЊ/&4 ɬ"w'K^NΙ%X23Md6.Dbzg `@Ǟ@Y vyܼs5TLaK-a pGc(ڭ 5`'3#t; < E Cc8 U`OyNtP`KAFK!-T ܡjTK^սs9@:[Oj>ЕV  sebastianbergmann-phpunit-6775051/tests/_files/FailureTest.phpUT^UQO0~ϯ8!*+^VjH[({S$[d&vA˃c RLrkH˄tUl ~/eB&(p䫒&[0XBe!]sj Hq`ƥuCRVWZ.3Re0Z$KB +t|x4YS;JH$ SXIXž 2Q~P&XW1;CC3 Ί1025}KBQ ~_U1*AMZȍvE)S`mZGaz|-:##NJpjk0Bi%IcPzh=#-ʒX0O C, C>" XocM-ȭbhjAZR>-;S:S!ܬ~U |dhqx+:Wg3Ǥ.KdEfs?g`u_z򾘭_w4xa˯p܃uͣ>LJjZWZtM TZyvG7Z݃F`֯17Ζ" JDd/\E<ކPK P7R;B sebastianbergmann-phpunit-6775051/tests/_files/FalsyConstraint.phpUT^mPMK1WA׶~`iQd`̬HV͛fz~]D8Oh`O%C7jx}|τ9KMlL]ˢ6TxyY ԭs`B%nYdCh!:ԂYvswr:wh&lNRl-7dPU]T+bE܆/z(U[ŦDЎv?]wF_@CTlK" @8  P:?WBnZvC_1KׅP_iEQ\FD1_)Gmh>PK PM(1@< sebastianbergmann-phpunit-6775051/tests/_files/FatalTest.phpUT^]Qj0+;^ACB  amcQE2:B+7){ؙٙ&Omӂb,r0R|j4T0Uc"b`5,^'rXR :x٢s0޳uIԝP̦a@\CWE6@k 3uorFA=F&mRvLA$y]H4#ɰ<>|+<R*1mp+%X^4 ,7RE5lpTvA*~L> vhاB?PK Pl= sebastianbergmann-phpunit-6775051/tests/_files/FinalClass.phpUT^mOK1sa[KHz.lw MB2i)nkŹdy{/zI TE e+gOqv?H[а!ȯ X??,]MFaDa@kalAM -A9@[aM6fC۸p@ago<;2חm,.(p5P '6orRДj*J5l1;V_V}*QG4&][]2vfIK Gy.3;EHRpWE}PK Ppi6 sebastianbergmann-phpunit-6775051/tests/_files/Foo.phpUT^MAK1s[JeEAP=K6IH&.Eߝ %0^7EAr2a)YEtn[^ X2OwoUӨLVzc'=l_J5hzC2CqTdGC ǵ~idPr^cWZHYfжnB %&ϡ$R/3S%+sǫ:Äc .zEJjй _j,PK Pn+C sebastianbergmann-phpunit-6775051/tests/_files/FunctionCallback.phpUT^MMK1+ n)mU,- "*Tlvv7&!w/CfwL|&e0P9hkyӛr m\|-@b UŠ*v$s2OnO A]mǀ(mY;;o%i{=?/yjup2l1B&UTVs'q]ɠQ&KުTzO!@xA#{yEEyWSL%^D!zAt G8!0_N)q,^ Ki}PK PM0$v C sebastianbergmann-phpunit-6775051/tests/_files/Go ogle-Sea.rch.wsdlUT^YsF~_qճAd(vu3IJ i:!-ptޝ HLxI{~+oViB@*&upٿܜ ȗ$Ii|LČB _`JnGFgP q2M>MAhnʧANW|*1<&Ҁ_"ng2:Pi \4)5vI1\]\\.^._ٖpu"p7M'\2:%XNjprJBl岿/;*OSj٩? 82'Hjw"6Om06>*,Ukm{~}fP ^GXm(ؼ!\1j+_4׶ P#`tǟ_MAhnʧANW|*1<&Ҁ_"ng2:Pi \4)5vI1\]\\.^._ٖpu"p7M'\2:%XNjprJBl岿/;*OSj٩? 82'Hjw"6Om06>*,Ukm{~}fP ^GXm(ؼ!\1j+_4׶ P#`tǟ_Lj6U0}o!51o^ES [;janRrYhggGhs`Bzp֠O@G6;`'amSwb5^3uƖK^iB&`i=SrcY:tOI F% |r7$r&d2#,|vO7PK PH}N sebastianbergmann-phpunit-6775051/tests/_files/IgnoreCodeCoverageClassTest.phpUT^PN1)H q"x#1ewvqi7)+1\|e &x&jݡ`Y51WkJIlb?(DB#gDCUAd6ʤhFq 4K&ϋIjq!3:0f."ɽ eSTcՔG%zNg0+#L-.0`I}*ZH1r~Adӽ3Y =\p Vb9F쐸ՌL^i+硎6ߩ PK P2"A sebastianbergmann-phpunit-6775051/tests/_files/IncompleteTest.phpUT^UQJ1+ tūU,-D dnnٮENVq.y{3<ʃFUˀY`}c|b40Me"F@JXޭ[&$NrXc!#iî$^zOl&YpB(ۺ1]E ( mB#8{ Fɽ׽.gf`ރit`(b)3Hw{\߮q);0Kv=IGgbdqL]o=elcܶw綅 &:8ZxSIB)P)s?بOPK P |K sebastianbergmann-phpunit-6775051/tests/_files/Inheritance/InheritanceB.phpUT^5PMkA ϯQTzEP e:a&VY%]m3dr%a81㑁lFОl֟Lr3pC!0|h,3LmBmO|,c U[b:e:jrEB huv$.|Y.$X'ٷ:u^bشzc̶.Ugb~XqLb G}J^-kvW]ob*̇?PK P?H[D sebastianbergmann-phpunit-6775051/tests/_files/InheritedTestCase.phpUT^5AK1sQKłh,dHv-d y/"'3SpܫTv td&bg CLL[lua1:$E} X|ϼ {012< E CA3pɣH8r]կF:va,Kڞ@d#%٠Y3%G0XwXxY 1/Q / p0 XַYPK PX8: sebastianbergmann-phpunit-6775051/tests/_files/IniTest.phpUT^5QMk1W̡^T(E 7nh6IYW)N:̛>ڃȀyKc|z(&b<0M#T e p_V=&/ ĽW FZ x뽰Pή;Kj5JAji],h+I!x{G]/>>wG$dS}KTG׆YHar=-]clA6ع`9L_VVЪ7=L6x+yGUGKVF3@Vg{SOD aLa%[CF7n|DvPK PLV sebastianbergmann-phpunit-6775051/tests/_files/InterfaceWithSemiReservedMethodName.phpUT^5OK1slX<[PXR\ţdf dҥI$7K`xqV8o>%,w7[\(Xyٓ q3_yff0k̇Qrsaރt`(RG$Z#tνn6nFiI^WF !/fRdQ/d0(Îk,Aoprc W!|%HwFgN2@NWYVqeK}cp4 a_[9霥#ab/dNr?!~'PK P8 sebastianbergmann-phpunit-6775051/tests/_files/JsonData/UT^PK PP "H sebastianbergmann-phpunit-6775051/tests/_files/JsonData/arrayObject.jsonUT^VM,N/)QQP )Q '3ȍPK PuI sebastianbergmann-phpunit-6775051/tests/_files/JsonData/simpleObject.jsonUT^{"Mascott":"Tux"}PK P΍1aA sebastianbergmann-phpunit-6775051/tests/_files/MethodCallback.phpUT^͐J1svWs[KEAP=l2 IHf-EN>sH&۠(VDE#iIir]eMXbAT6"1v+1wǃlPxs<Z>l4p t+Aƻs?;tV;:҂`-(7izBkC+L|% zX) j*m.~ }GKt2#GmU{G ̆ẻ?$1-T>re#bUu LYNm?9Oλ?bPK P2L sebastianbergmann-phpunit-6775051/tests/_files/MethodCallbackByReference.phpUT^Mk1sXDE*^hbi\&ɬ IHRMzs Lc^y$ H tZz \ tv1&G{AMHj\ηATdc GLxCw'MNyYvbյK 1$pI<&AJ1G+4ZTS +}3V1{WTb0Ӳce6t@N.u,a_qXva?PK PW= sebastianbergmann-phpunit-6775051/tests/_files/MockRunner.phpUT^UPMO1W.1@4QCo$l2m:S{{>,NGX3)|{]p`14C5(??U&NejXZ8M0j"RX;kf>M:0>۴,t q6ǭB:c;^8}[L˨>Z`+6wrr)FKJyy{"¸d%#a՛-H?S(/D/hmȔtNg-2 7쨎PK P$nD sebastianbergmann-phpunit-6775051/tests/_files/MockTestInterface.phpUT^OK1sxbAzl2 ̺,wwR\oޛKw%h Z pp@IgyN/P=Y;]kQ{)k_)f`Џ!i~p ,oRQt)tʽl۷}[WiI-LL1"z<1^ oϊV ' y̴Yֆ~PK P@#`; sebastianbergmann-phpunit-6775051/tests/_files/Mockable.phpUT^MK@s!-PB[ 'Ld7Z;czr/ag}w6˺!EY #$mh_(EЃB9TZX~֊y IJ + GJhAWBk|8i5w/K[BP*1PgV}K\{Uktb5 VM:*N8HUd S)*ɝV"R vFm[|je8tl%{ms7Nј3e Qw0;!.[~@鄐g/\~jXZT 7l7,l"N.`.LfuYESY oTcc5(t W!] X=>&39q#;MaD0QDp,}.ܾddr)!>4;OPWevtvח}HR]:.5C#XF R6<&#)P5"v _<R*1›phD1Cf$rf' [ӓYF{!q);oF׼/g _Rd+ճ:_PK P0R9K sebastianbergmann-phpunit-6775051/tests/_files/MultipleDataProviderTest.phpUT^]o0+Ť&h/Ҷ"]2x vd}NH(_$s>>4NAHUiX3b0V&*A[3(b#5Ng\k8w/kW(+$^V9}cbI$ Ljp-!Qzb쌓2iܯeכN]ت܁TI\QOLfz#ue~}g0DGbW9%wX3WmPK/7?lpZVAX-a2~P3tk|'Gm]:]_~o(޵~7Gvwx [4!zc۹]㷅gﰽ3(.@qm-_ܖ+mbFYQ_Nn-'cp"(ZfEp%7ѺۇN%77˿;.w1?(Qtr'07{PK Pq Q A sebastianbergmann-phpunit-6775051/tests/_files/MyTestListener.phpUT^Tn0+M{بb(hieH\E0{~tb= XK '9D`ߒ!u`\_pDZe\_J{Np9pS\KR(f ׾0Q "ՌJ"M!eB T QY&T6 ) ^{Xn&ӑڨDB$Na#„D:A`mFdXj# Fh3ɝ AB%FIA,`Ra-X 3v&CEoF> B衊un.k1;Q[qi׈"umԮd7T[|-Ja*tG "h=+K8dOeں鞞kww./K-hwkl~wNv܎XOI]D=qO4S'ZRpvkEA f _}[6΀R\hi5-;rNV &2HQ!dfX?ؿt'F FüvA?d77]`[eA_PK PT)B sebastianbergmann-phpunit-6775051/tests/_files/NamedConstraint.phpUT^}QKO#1 ϯ𡇶R`UѮBHx:3r<-qBa6'~|gvP (4L*_}(Mɸ1ܵ>AE!6pXC,hI=2\ g=wiD}b?s%hYU@!xG(kT@hm{6Y3TQ-*l1AeTkkSb/zRp-mLJYdF:3̀)5ׇ*Г ;DxA\ٽ'%v76D#)~i!v9}h$3ov#SH2cgM=-{/㋌aM^8-/>z\Ki81E?*4.a6Vn Fw^7PK Pz|L U sebastianbergmann-phpunit-6775051/tests/_files/NamespaceCoverageClassExtendedTest.phpUT^]PKk0 WC]B[)k+YbiVF41_O'[[(0)>ɢ=g 2CCpOID [*Ú&r9%>\À^eC"=e6A 3Qg>"@'hC i*Ihn @m{L@w22I/3;_PK PEM sebastianbergmann-phpunit-6775051/tests/_files/NamespaceCoverageClassTest.phpUT^]PMk0 WC]׏ Rhw+ VҮi c;Ш1 䍢O:v&H䙀 6 P{'=+a1Ja;H VZ pP yT5>hK[I[<< b\ϣjIpIv=7<+C\,v]x|g$%X&tRaeEG7#+ϲYv}>q`U1)˭]lVI{g<Ǻq0˟<Y$=N$~PK PW9V4Y sebastianbergmann-phpunit-6775051/tests/_files/NamespaceCoverageCoversClassPublicTest.phpUT^]PKk1ﯘC^}UjZ7d ]̺$E:^33|t@^K0z ^7.Kw'<-`09 "lAu(5sJ*ޕ(D8iknU(xv$tX͢UڎJAЈJK5FSol%r¸u/|f6k 4A='Їg,D]Ѵ!fnf$9ʄ-*8!1bhz˷ oB\ Rh`]#V^-/42> VvDmvy[E ? +:3);ePK PeDhzS sebastianbergmann-phpunit-6775051/tests/_files/NamespaceCoverageCoversClassTest.phpUT^RMO1ﯘ *ʗDhβKigAbN`2ɼyMs_d(pX䴤wwvl$ЀY=:GXG`Sq'#iþ(^gS6jAYT"MUr̾$VCeȆpd_`^gz먔MJk5J5A!iLWaK"[4caɛ™;`{\:ZGX? p\yučm;Գ$>nUkrA]͎ϱ*b񵫑}?3CR:O,tޝIPK P MQ sebastianbergmann-phpunit-6775051/tests/_files/NamespaceCoverageNotPublicTest.phpUT^]PKk0 WhCZ]ZYh`+vpm%1K`+0@=4yj4JzLyN `,ҡ!lK 7Fzea =0 b5 e #-W4ZD F'=LJl,675w/ea 3 a*5d$#-4FD F'=LJl$\@Dؙ`0 21T:Q'a5 (T5F6;ZI[ J zk9[fIjIpII7|yt]PFՅXc3Ń _5F*g$%FX&zt{ epWUyJyݦ@]&pR ~U):k\Vl{gtɢ|H,dR5-wL ͇Vx>(]ra毳 u@r2BPvMؓSUk = Ҹe-9͎ XH5 5sR$.^6ܛ $!u:"دo7kC ҙ2F_ִ ,p_~0ʳll!╧f?,"d2̇>%ZxkZJ rTuc4=n>RI:~PK PTFvH sebastianbergmann-phpunit-6775051/tests/_files/NamespaceCoveredClass.phpUT^PMO1W *" D5$ٔ-di"1w_0'L U)"VE;ݎ<&BnJ .:gBT8paB?k6҂vgPWe U0@Z Qh#܅$)%cew7=NGIIG$Xڤ*B KCO8ytUPFSꮰrKeBp 1POK7||5X֪g~@*n{P;↞I2>ّtOxguSKoپZh*|%wHwHwPK P&2K sebastianbergmann-phpunit-6775051/tests/_files/NamespaceCoveredFunction.phpUT^5O]KC1 }C>d 2>K֦k-mevh^N9'i(Y˧ۛqR땂;.`0 D G`n:b[ʧCMQCwAރ0)fl3 p6i^_wo]?uI',`rB6-y5kjFz 8SI0㤔Aw'0o2I$WԏPK P3E D sebastianbergmann-phpunit-6775051/tests/_files/NoArgTestCaseTest.phpUT^5P]k1|ϯGRkPDо %&{wg=RXLOdZh99_|5)i\FZ̨#TX>[! +z4_g1E maB<&W7 -Zgg1UH{.Ė`GY>/r꜎uuɮc79tɐY*ǪcE{Cn(L|&JɯexI-mT bRǛ,eo_8gϼIPK PIXB sebastianbergmann-phpunit-6775051/tests/_files/NoTestCaseClass.phpUT^5O[kB1 ~ȣʘyA30C "b@a}%G4MaGB6lShh\AB?.kSC$0PNP"Z];sӭU`F59FMycK=7Z,*wm77c~PK PZ×x> sebastianbergmann-phpunit-6775051/tests/_files/NoTestCases.phpUT^=Pj0+k>hHh@[:%] %޵w/ -K`:8{ß|NHw\ͦ w53C`os&/4bbW:f`Pu &sGǠ $cTtofO iNX7)[F g'/b >LrZκ.3WJ~6q1XQ? dR[Jb)L¿dR)z;uQPK P@Ӊ lk2 ^WAZ|XC,HLRF2 }+yԞ٨K3rF1}M ( mB+8{Aɵ~fF 騖Mڤ5jp躠4SU-.|i>3!*1Qѕ&:¥ ~ױ*Hf=уlGR؟U$~PK PmP]H sebastianbergmann-phpunit-6775051/tests/_files/NotSelfDescribingTest.phpUT^}OK1saW?WkUz+H f'K2iwwV R3yo^ryݷ=ThXD'X)8FCׁNOLaJRGCi"1Jy«N΁WMˠg RC}4[O;R[Y\sOw4K q:Beseb`ml} Ũ¼J"ڇFbLN%w#<{1dl'vH!oi)$/oQVVKtĐ㡶Q{EOąHO! @pvp>$*v`~ sebastianbergmann-phpunit-6775051/tests/_files/NothingTest.phpUT^5Pj1|ẈJV*J EPrɞz&!*j^3;3;}M%DS0Ham2j:1B;B tf=^){L QWeHPwm )}ޢu|C_t삿ClI vt_tj(.ь^gXWTE︑$ϡKRI=V,->PnK3QJ3VA~_p7UJKoJT>PK PoThM sebastianbergmann-phpunit-6775051/tests/_files/NumericGroupAnnotationTest.phpUT^SKo@ẂC.q)PS$NUlҨgqS=xy}O߇&GwBM @Xm:2?ϯc)5z 4>`\w98ع`lAXڇ]A;ёfs-jm,n_.4qجJs)(@3kUh"ESpsV"1-3A*>,sRwQI s0 oDlt !G0:Qj-Ru\Nl`D2[2KwH,޻y= LE36ޚ~^|>ϲGgb(F.Ա sebastianbergmann-phpunit-6775051/tests/_files/OneTestCase.phpUT^mOK1 bj[KhV4IHf;[xyyo2ye%SDHyz;Pau2 W:1B;CVՙxk1ɝ(Au X?3% &ğv%C{Y}^ "-Qs^_fռujǥf4:úvmd8.EP'Cdm=R ;Y$&͚2$gJxio&o3:A*ȉV"޴UCgpΞl棺pG\%PK POgk6\sA sebastianbergmann-phpunit-6775051/tests/_files/OutputTestCase.phpUT^Mk1s(J[/EiRM(1;놮IH&~P]]h(ͼ3ϼ۽sU!=&VA햀Lr Nzqn4]rAY&q&ii~@7=!۽gh=PŢeyN M Vh4 IښspJ֖W?xV`%d SXiɃ^!JnkL^.pet<#FrjpMh qqмQ%-?c&2,#i^괲笄?ޤYRW:V *u'n1(=O207P*kh3IF9(P~PK PlxfC sebastianbergmann-phpunit-6775051/tests/_files/OverrideTestCase.phpUT^=K0W܃vWT泤ɵ=蒐\[Ry |}nyM##c.ob`!td5lJ9SvXĤ04!b W)ȹg`-LpKeǔ`_LA] 8 .F=`)S%tm$T-С=>OE]շdp^xhs] Gy}.GdI)Kj´!%l_ͻ}۸)dbN?(Uo"OPK PㄋE-G sebastianbergmann-phpunit-6775051/tests/_files/PartialMockTestClass.phpUT^uKOB1`q/Q[y MԐkRڹ6B )*ai:=3܇6Fee*Q4 u_0oMX>aAT.e"#GLB#m¾85٩_^Nr=:;h̯nUwF/󋾽PK P!\mk4W sebastianbergmann-phpunit-6775051/tests/_files/RequirementsClassBeforeClassHookTest.phpUT^MRKO1ﯘ` ƫOWn&n;YbNH쥛ig.6 j\."\ NaXuGfo oy$֊*L8Poewɮ 8ѓeHk6368-_>LջF1t؜n t9ڤQ fE+dI sSѹ*$~s pbK̀܊8II"x#虦y2A ,,g3GY%>Kl-x!/?6GM xj:r>{* PZg$C-}(礧ʅ#F'3dPK PB'UP sebastianbergmann-phpunit-6775051/tests/_files/RequirementsClassDocBlockTest.phpUT^mOO1sbv5`LI`<ҝevmavޛ"+ As-KF c}2i!9 nt ŻyCD$W0DroϵBC=m29]d\%K*fIjuEvel:ϗT2NH֎0+> cN nH]օ%̤rz5uJ@hi/[[<4>3NV9Ȗړ\~jJnt=t>_5 RT3^վ;PK P $C sebastianbergmann-phpunit-6775051/tests/_files/RequirementsTest.phpUT^[SF+o4264L M;YK6/L~{.vhI/|{kdr3_>ʧIg]";d0aX?%G?"&C*$|*F,>*@IZ%iiXSQ-7ua%7헯~8y lu \?S Af/$qJNN(>:ݽ9U4! &g6yէHXZL$!}zc.)|EsZPK P  = sebastianbergmann-phpunit-6775051/tests/_files/RouterTest.phpUT^mQMO1W!IfkPTPgV{;' gɦ tfޛ7_g?ӄdKͯ SU  aQu7B<Bc:978HLOm&%9߉U'`yI9^ e),Ǝ4e.LI'^(*%09=s3L`SH whgs5\m행|Xf`,PiU@ J%Q;&ԹsASJ\.{/ @Q!A'`+w[LaP}i`( ܷV,R"WT(QrʪZBGMBiݨi)f3Z0d= nvǸnL;!Ri>OScrQ!!4MaD|YF K憡ห';"ysoi_{n^qz^m˲PK P>ű>> sebastianbergmann-phpunit-6775051/tests/_files/SampleClass.phpUT^eOj1+AVzVRP`{Y7&!TA;yyoޛChLF&d+iq7>Zo`tVnP8C+Lby(AgAZ&whw:K=ncT׽.WUէe* p&O>Gb5]:%^/| R\UO}ݒw 8QܳCA us蝮? LgdNPK P兺E]H sebastianbergmann-phpunit-6775051/tests/_files/SeparateProcessesTest.phpUT^QKk1W̡UZZQ ڛPf ]%3Aw^Jt |=c]`0t8؜X#=t[=i+hòu`̟&[&f>]zCi3D(bUAcA;ё‡f5j,x$a MI֑r)qN>E`rQQ1VӠ}Do|CtK3@ɯHY<0:CpU 긖)g{yk2U p3 3C>8_%F:WoNPK PF]< sebastianbergmann-phpunit-6775051/tests/_files/Singleton.phpUT^uMO0 >ph'u@CLBh[O*6=2^Y~jߎ;0IV=r'7<>j SR=M,@VWRKsh$"i,kxk+l:gR{bNvC 2vdG_"'vPK PUf < sebastianbergmann-phpunit-6775051/tests/_files/SomeClass.phpUT^Ak0 :sudl0Fy8Bub#}zi }ʈeh})`6b$hE7H[8<>2S DF:x 9ئKƼoG)'N5 ]bC8H2ޭ X28{/Xg9` ɗ4#PNƜz-Ɔ9S+, _:WDEp<;kMX gPK P:.F sebastianbergmann-phpunit-6775051/tests/_files/StaticMockTestClass.phpUT^OK1s-b?X* *gI`lK~w'k9{M}qv깚NL`;yy -8AToC=B;x&cv]Ϡ ƼbQn0rOk*Vc;5AXW.{lP,S%GAbo^ ԧ4l(`cw(죳:+OXտ2yfgPK P ؐ\G sebastianbergmann-phpunit-6775051/tests/_files/StopOnErrorTestSuite.phpUT^[K1W̃mQ*wŗl7,ٮ"NyHHrw)0+E&_ `(l g0=8"T!Å lKev!X`l[s D(ڪW˒A94tZn ,v}j<ѪR1t*1ɢe4Y.GȃoI42DR΍<8k-# 3ۜkR5vQt% [v! ,}-Vޚ^)k'Պ/^N~4D= sj1eS%q3nOyr$LqtJh iNPK PsH#I sebastianbergmann-phpunit-6775051/tests/_files/StopOnWarningTestSuite.phpUT^}Mk0 : me~m,l0B;v) VPF4kab#J㇪@*$7>PaGbp-օ Jzyn ݱ jՇne #-_s|j.?:G،=l䘐#3 UhO6 O r>,qkY%x["uFmx|hf1U4b:氫,yhCb5*潕RVgY6~,e9V >&VCVDslC5XRM.5ֳl^!D}FUa)1l@grͯ}jpC$QxN!3OdPK Pe\B sebastianbergmann-phpunit-6775051/tests/_files/StringableClass.phpUT^5Kk0{JC8%}АB)4g#KkKHBZׄޕEhfvMɄUd5tJ,el:>L-]3PJհVf (uמ9h(א B78*S!^ }@߅tdPmq|~[ڑ̠m٤5 p4 K {F}/[r?xrU p!z.X4$l5gqPK P@~Um9 sebastianbergmann-phpunit-6775051/tests/_files/Struct.phpUT^MOMK1W̡ݢPHa\lHLwVp.cޛC44*'6Usļob10Oc3 !2v/oUӨ:e&+=(o=c>yMޞ0q:,Xg%>N-րSЎ?F zB71H$|IKb?*8s~PK Pl;1E sebastianbergmann-phpunit-6775051/tests/_files/TestAutoreferenced.phpUT^MPKO1Ẃx\FbJ;6M;e!t\Nn}Ae~`}c^b40ue"F@JX>-߭+&dN_ `[H v&wwA) 4Κ @B`vjF $%Ncօ#9g,J\ZŦx \%ǧ-^s$&2YOb%:[ܦ8(yi n`?yzٟ5L;I7PK PAIbN sebastianbergmann-phpunit-6775051/tests/_files/TestCaseWithExceptionInHook.phpUT^PKk1W̡wi+VkEQJ"ukYW)NG{)m^3gW8Pc+׊>0<=$N(t\\6df43 bZ*9d - ЯKFU$d;syU;x.ɠ M`C[WNc^|tTHZtdUfPk*xɃB60n Qy-o 4d62YpWbX#>kiS9` oWynV1Mè'aJagupN5`*WN3n$-?3!uT]kÀ^|@߄E_@tY瞟fYhA۲ɪeҰlEsh" T,3,)yJ!RUTlW!v^|PÔ GDWBëJoCNCR.Yr3%L?<ꔎjIM6PCg'. ҘSDa5ֳ [\حWiœ*1B.̭r-  >N#TX%r`fQQ>}PwVBC#n'(PK Pg1jK? sebastianbergmann-phpunit-6775051/tests/_files/TestIterator.phpUT^OO1)#1&I )݁m\t ww"Azi2޴2/!C](†g2'.Nn&ЄQnA4t O8Up4_(kڕ8a{p0 Eڕk2A z13G c( TR[\UsÛ t+򐙸40f2KG{HeSY{!#)8f!& 졮% )1HWa66:6+H;2(F9Cub9#it_fۈ_2-ٵǤHAg5eA9jeT=ԃv^}9ɉY[]+9U&N}PK P_aC sebastianbergmann-phpunit-6775051/tests/_files/TestProxyFixture.phpUT^ő[K1+AnQ)gv#i$ NTE`^2g&^E Z:lxr*Gڔ{qG0+\iKlɃQt΂i1L14pn@8 =# R[ndUsɭ[HR֜BQR `UQ! VC$IEJQ&r)rP%xha&ή7#ʡx`6tpE3e_3oĵd' kWȡ4E_[|}8y”>S6w{Y?UQ"]tTރUߝ~Mo8)#uO#U(oG ݊PK PZ< sebastianbergmann-phpunit-6775051/tests/_files/TestRisky.phpUT^5PMo0 WCAЮڤiBݐ4jDCWM%b=g}Ajd8{TLư AiԽ M)6FZxph0),8hV.WelP*i54FdhKZk ʄ vm,!WKQCgJ\ Ɯz"bZv9c ΅zEE B4T?VLRU6+U9+h3=\W9ͼ~au''qPK PQf%> sebastianbergmann-phpunit-6775051/tests/_files/TestSkipped.phpUT^MQMk1W̡ழ^P %&np7 ĭ{'Bxy_L}Ajd"R01>=c1 º6* e p,ߖ_=2P%p+#iî$^JYqz,\4? 6r\h%go7(;zlgՒɛlP7<rz$],lsaYc猅W2 >c$~UU-d3(igrnʰg_ 9? sO$PK P @ sebastianbergmann-phpunit-6775051/tests/_files/TestTestError.phpUT^5PMkB1WQTzʓJ7d }&aYK`vfg&X4&e&o懻LM' &q>C;y&u< rFf k^xAt0س*x,#;t~:o0d1 mf `G{[4릞ұ `}m+zN6 sebastianbergmann-phpunit-6775051/tests/_files/TestWarning.phpUT^uPMkB1WQTzB)^}& RM^3;3?Di5c/ {#n#5(o5 wr]3}XZ' yD0Nc1U`qMn[0!o& 7HRxآ.cwԽLoi=uL'N t:: Z輸)SlY*c-vVKL2)> i3R|ZJPg [ 7ԏ2iLTI-삷Gډ\GwA/PK P3F sebastianbergmann-phpunit-6775051/tests/_files/TestWithAnnotations.phpUT^RKo1ﯘcR!WR % P8ړUǶƳ glQ)bißO&Aa/1Y?.bz?' !1L?Nze tfXVyxtTiz t;E4 pVOBm :TR[Y\Oy*Q kn -7)Q fՃ%^1Xx/:G\M?C4?v* -E˙ћM/SV*ZCcZ^<M0~lC-y|q}=,\E>V\~jhN<#))|Sd3@_*Xܳꌻt ꑘf$LH+?a`YFFvc˥[O e?F=LWPK P˓I sebastianbergmann-phpunit-6775051/tests/_files/TestWithDifferentNames.phpUT^5jB1yYJPPDҍ 1x$$sw63~JM댽™ oC61nb1&}/縴m2@i Q(#9!@*VWz4E\|O4.SG3Y 1Z CKhK­Hv sO8>dw4%5?AaFa3\6 ;ҨW 2jm*1╘S{Fx8? PK P`ƽ*I sebastianbergmann-phpunit-6775051/tests/_files/TestWithDifferentSizes.phpUT^Mo0 <݂]׮+l@7Hb`,:*KE'ˆQSdņv@0lMՀ!( Bɦ(0l:}7鵷ZRΨÌŢ㸍QNe`l"4Jg Q }FB5tW..RN*XccS'VJ'JCD=Z-6q{X:휢Q֣9R:eIL^fEBI@W.dP'ѵaG㷰 t*D-e-D:tuI94&z_=9jSsrXYCLƶcz}W 5܋g){_s1 !88XSgS-g2IM&ic ]߃l'v}~PK PӚuL sebastianbergmann-phpunit-6775051/tests/_files/TestWithDifferentStatuses.phpUT^Tێ0}W RUa)![@lU@VEPz71%RtEF<xSnx[EZY`2r+jM5ha EE GZ' لƐ?gc=~4xdb NLW3'PK PpvM0M&$4Z I4ߗp؇/Q׏z* s-={O`"CCT _'=-`Q$M?39r/i:5(]z^Zkȭ;y*+ihф8%574ʘ;6mb^&TW%'Yͨ!b%nls='cbfeһ ~lj*!@LBӥd=Ѩ*K@ E>lE{ѵɓ/hʅ # /#m$4ZcC| ų'%{a浴d I;`S u_%ğlx񨨾˨1C~QG`9ZNՍZNPK P> K sebastianbergmann-phpunit-6775051/tests/_files/ThrowNoExceptionTestCase.phpUT^5Ok0 :&evXI`B[a8R%eOR_ OziLD*KP.|&`{c4E?Hؾo{2SvXDV:xxsL+ y@4 4}ۂH ]bAIAhQrdq>?VfWU;2` IP`p'G,1M1(;|91ъuBUR_l f`*_B_}NTƁ]pV?vWPK P G sebastianbergmann-phpunit-6775051/tests/_files/TraitWithConstructor.phpUT^mOK1s[Q,e$L&-EM8fK PԏFJ@K,X,(ŠGqT 5MϞ' -AÁͦ@W5\ ]yb` sogh^_fyAuE=FMy: հ7IN}bMyQM%P X3fe[Y})Pz;FL.vĂJ_Y_uTv3@?S;8q$ЎPK P D5=O sebastianbergmann-phpunit-6775051/tests/_files/TraversableMockTestInterface.phpUT^MOMK1W̱-blRRzd6m$Lf-*Ǽ7gpd M [}cru144 t( %W)lŢ$=֠~48']ؔ;A`K%٣rgaL[=oWS;0`㒶Wr0%b9[ G%b`)HP?4_PK P_pR;C sebastianbergmann-phpunit-6775051/tests/_files/TruthyConstraint.phpUT^mPMk1W̡UҫB)&lv IH&Rlh$y潹 HA+zx{AO@Pk0{YMWLȜBuaG n{E)Tx Po^5V`By]XK}jܴs/|ZwHP霤Ll45aѥU]Db}45n\Xi-la5SVNSY8U9p`,.'!ΙR@!w9Ǵeb;/TFD*>_e"z8lNPK PE\U sebastianbergmann-phpunit-6775051/tests/_files/VariousDocblockDefinedDataProvider.phpUT^TQk0~8АO[6YR6J ]rα*IN(}'-Xuݝ쳋AhS")ڧo_?/˘* أb%EH^= b"IQ$+A&=ܢS + mů)I.h,^ ۤ3In .3"z0;dB" ],b3gp;as2ӎD'}r,+7l~Ñ׌B6m9..|ZxUaC- 3鎸}k:jX"2nhW{y?HD0}u]{{a¹ܹ;=FmNh&H߲dW >(5󽕜3աJ6tw}oD4~x8׵r([ִzAh799nkDf6zPK P%Ѵ!9 sebastianbergmann-phpunit-6775051/tests/_files/WasRun.phpUT^=PKk1WJ[>Z*J HxJLfИdVU;|14*+#vE苎7>j2 #`tP8]Ճ%ne"#Uhv5tQǽ$ wM{{ޗbնZ426m&稐4rf7+L4圡+)ZNpů\:͙5JV܂RN+ fW8x[٩L4QU8?PK Pۡ}K sebastianbergmann-phpunit-6775051/tests/_files/WrapperIteratorAggregate.phpUT^mQMkA IbzN|@)b0;t<3hkL^n]{ul"Td2I&R^Q#xklu#@XooBLiJ LbqB*j7Jf@E=10HClmYC>)_^ :Bu=ïׇW' 1AeE+TJUBˆz\1Fg!F |[L5rpE^4hG>7cGph9ބsd.Զ^UMj5R!=CC!rfӼpV!A69՟w߻I+eo MDLa rl,Sn/eWPK P]{@6 sebastianbergmann-phpunit-6775051/tests/_files/bar.xmlUT^ PK P!M sebastianbergmann-phpunit-6775051/tests/_files/configuration.colors.empty.xmlUT^)((,QH/*URчqPK Pԛ #M sebastianbergmann-phpunit-6775051/tests/_files/configuration.colors.false.xmlUT^)((,QH/*UJK)NUчJqPK Pf),O sebastianbergmann-phpunit-6775051/tests/_files/configuration.colors.invalid.xmlUT^)((,QH/*U M-KWH)NUчPK Pߦ6"L sebastianbergmann-phpunit-6775051/tests/_files/configuration.colors.true.xmlUT^)((,QH/*U*)*MUчqPK Pn^',P sebastianbergmann-phpunit-6775051/tests/_files/configuration.columns.default.xmlUT^)((,QH)+U+KLQJv6Pv\PK P f~'Q sebastianbergmann-phpunit-6775051/tests/_files/configuration.defaulttestsuite.xmlUT^)((,QHIMK,) I-. .,IU NMKQRD1H"* YT\PVjb뻔VlnV0Tn*P*"BzF8v\PK P}ؽQmO sebastianbergmann-phpunit-6775051/tests/_files/configuration.one-file-suite.xmlUT^)((,RL @TKMUKUpIU *!TUeQ?5/E$_H䧧매&.GX $}d7 PK PF>G sebastianbergmann-phpunit-6775051/tests/_files/configuration.suites.xmlUT^)((,RL @TKMU Rl5cр$FPK PXT@ sebastianbergmann-phpunit-6775051/tests/_files/configuration.xmlUT^Xn8}WZ 76@R} fBZL!udQۇv$9gs9CR,潂̨}w{#S>Z>ޗA.Rͩ$z7&e}_I Wұ"FC$j!BeJ)Q@Z5lDL pH0asVH:S1H1R .x6R _J!0!';2sa6\(+^LK 3)˪-z/(T @%¦r #~{=dRSB: n[sH@OfWȳ:Ua7uݑ׆HT n1pC6NcZdAԅ@ƙѐYEA$Yi7 nhBn.'upK|s!lJE ٕX'0KmUV+!;r"n!:)!N s( t`*2Ȟ$2!6&Q?+ 3lPד'IkeyY=G의-=5J%T6eAevc9#[voW_]oP\d%%Kz(a= A\[F*ErִxFp$ԇR:?xf[>fwѳ drTpqWDHaP{Y|h$gꦘ=*Putɣk:N8bγy/CߍHBy7ÔdŌpPXvt8;3w|l2nexaNSgX|ԆqXg$KY ld{#]P˓|5t^U]3ىWxh Aɴ-η>& ѹ*Rtc"Ixx/K~nJ*̭N7NbrڗԶޮ@7;Whjmbm6k;uKKmI&čV)o5*a̫_ x{HFUhm :_܈jaslۏyX!-q]꒤Ϩ-+hZ})LNZɈX' 1_& c==g) -ȭ2BԺR$!iK,7xc Qϊk%pjo P^v\s; *c*]ݠ`btڍ L{%LF@k#ћqO;ӠR\'OW7㧻{C==AFJ' B~WHu+x:p-s ؓfmԌ0?sIwc nC-UJL Ba`}hISîH0PK P>F sebastianbergmann-phpunit-6775051/tests/_files/configuration_empty.xmlUT^n y Ľc@N4i{PD%o?CQtZ.`g'Ceْ>=; ՉFm"0+ SJ VPvHjFY Ce?EXy9ceuPu~Atq9:".?\X{e?-etv= [`8[tdN˨Djc%ܵp2J>>MmjoV%Ҝop?$ٯ7,3&ekW5_2(%_PK PWZX sebastianbergmann-phpunit-6775051/tests/_files/configuration_execution_order_options.xmlUT^= 0E0kkuF,¦RA1-yH{ӈf\&-$/F *rz4loȣt|N KpBg/GGTYh5 oh{!1.V N(J%{zpmkYT7Z7GVn!*$šȣPK PuGGO sebastianbergmann-phpunit-6775051/tests/_files/configuration_stop_on_defect.xmlUT^ PK PXFFN sebastianbergmann-phpunit-6775051/tests/_files/configuration_stop_on_error.xmlUT^ PK P~KKS sebastianbergmann-phpunit-6775051/tests/_files/configuration_stop_on_incomplete.xmlUT^ PK Pss}FGP sebastianbergmann-phpunit-6775051/tests/_files/configuration_stop_on_warning.xmlUT^Q(K-*ϳU23PRHKOKU qӵP)((,Q(./ O,+()*MURзPK P;%HKH sebastianbergmann-phpunit-6775051/tests/_files/configuration_testdox.xmlUT^Q(K-*ϳU23PRHKOKU*-IӵPR)((,Q(I-.IɯU*)*MUчJqPK Ps(V^U sebastianbergmann-phpunit-6775051/tests/_files/configuration_testdox_printerClass.xmlUT^-; S4m|Ob( . *5 [ x#ii:8*YibAPzkQK#tf>PK P<J sebastianbergmann-phpunit-6775051/tests/_files/configuration_whitelist.xmlUT^m D|nћ-?tk7Ah`~&fvd c[ujJa hUpV3B<)%)D~\r]uyu w49oPK P4u I sebastianbergmann-phpunit-6775051/tests/_files/configuration_xinclude.xmlUT^VQoF~ϯ@TܵSd&q/RbGCh cXv&^2|3̷/,@Z烡 1*֬{_.Fy[%,g* # 'Ɛ\Y [3C4ڐ~ ـj`C& @!6sS6EQ\s 9AQ%CȋNyoR\5RW7Q M/_gj*dj 2Wvk;iz5pk55H LllNRThpu{\=hy i8Jw(U "AѲ n`-8~ ߞ=eS`fBkb8Ե2&r&۠448Z1nL{| 2Yqn5Q&m_#{v:Cew2ˇMB 2VHp8]azJEAu5YN;E|HbPA>5!L`!23b qӭTCW J,r1._̣*LmOr/r'A80ޖFxw%g-cKE7*9gmAa<_|/3 mI}1.|ap['v㹖)k? Tj<~@j< _ȆJ9\FAs,\cDfmEj~%:DI?3)?OG}k]7f4,֮\?~٬ƗF# ɭԶ ӂ<`nu(sl.&1+${c["DH8@-,g= fAPK PԨsE sebastianbergmann-phpunit-6775051/tests/_files/expectedFileFormat.txtUT^FOO PK Ph$6 sebastianbergmann-phpunit-6775051/tests/_files/foo.xmlUT^ PK Pd{? sebastianbergmann-phpunit-6775051/tests/_files/fooUppercase.xmlUT^ PK P; sebastianbergmann-phpunit-6775051/tests/_files/mock-object/UT^PK Pv]'K c sebastianbergmann-phpunit-6775051/tests/_files/mock-object/AnotherClassUsingConfigurableMethods.phpUT^mPMO1W# ( p#tmYWbN5\潙ܹA{Vap `Ruz\m+DLOa A=Eu$dxqy]U;z]dPi&B[WٻƦ=?/yjQ)  1IZfh*[{(z(<`pg]-wK* Q3~ :0>c05YlAbfM˴%Ri >pE35vN98bT ? Rr<}ӉFI]>QE-$N PK PkQI sebastianbergmann-phpunit-6775051/tests/_files/mock-object/ChildClass.phpUT^5Pj1 +tLBi9, -Hz zmci ^$F3%h8adC fP14JM: @r]gbZ|luuE!4`b:g::,x2&V pɣ.7a?ꞟn=Ӊf4\RwzW&%9.,Fstt.Ȳt/|՟hdT3TO2l߂QPK PoxF\ sebastianbergmann-phpunit-6775051/tests/_files/mock-object/ClassUsingConfigurableMethods.phpUT^mPMO1W# I 7M;[Yڦߝk497 T 䵢e,X:@rc4]0 az+e - ܣ-PuǙ[T#i@Yw ) M~/I[sAɽ78=fIuG$8NIHXAS?<0rIuak 4=nV^WT4"3`d{4x!4M5U2opT"\I^.qR0*% ^{yl_r!]]Gj8P0UjM:3\3}Xbpy`LحuE` ԝ`bgit@b[.3H`[a>>-e17a +Mq#INbI=TAHI v*^!}rqsGJܯp&Ix#GR 'u'XRe׿mtԟBWsPPK P]d sebastianbergmann-phpunit-6775051/tests/_files/mock-object/ClassWithoutParentButParentReturnType.phpUT^5PN0+T+-jR 9Φ1$e 꿳j=;3;:QuckEtpnNLluFw: lCn4]2 a2+HK ^p5ޞ8kZ&v(^[ijBxi%ik.u(qyOfFꨕ P䤊5 ZaF՘TO='w2+1ZP{DE3!8`- \!Lɉ_|\{3*,N1zD(PK Pd8Q sebastianbergmann-phpunit-6775051/tests/_files/mock-object/MockClassGenerated.tplUT^e0}<+ɐ",PiQcxw[0ĹOf:yy,/JRuFG|XZ抂RƼrrwmK72v@[b<(RVco&)#0:Ixi[h&,ݺ.`-<芋ʪ$I6umCZC%6PK Ph5F_ sebastianbergmann-phpunit-6775051/tests/_files/mock-object/MockClassWithConfigurableMethods.phpUT^mPKO1W# $MDIx!!neivJ FKo&Wr^ m0\b80uFIO` X-3$LOa [^ݻf9^v@Buˊ@j64{IښSp5JilZt%v:$A#:%"ax`WF9='ׅ٬1\SYX{^QX~@sϼ/iCԞ {O)tj\ U6CW@VJJDG^Z\*ɻ jIXS:n5èXMHD'?Dbd1*{LA v.`}q[gJ~RJxG0U83B}Q^ޓ=XGuTPK Pu-^ sebastianbergmann-phpunit-6775051/tests/_files/mock-object/ReinitializeConfigurableMethods.phpUT^MOO1sb$(n;KGJtf]:{,l䐐//#5(CMIgX~H 1=Ӈ%Vt;۽ݔ3X:yf18LLL['OPǼB1AN}rڍ:Z`ۤj-$lYZU{䤋vZfB}Hq=f\R A\|m̻6Q72 RH{I 5m+s-/t#oPK P9 sebastianbergmann-phpunit-6775051/tests/_files/namespace/UT^PK PH sebastianbergmann-phpunit-6775051/tests/_files/namespace/someNamespaceA/UT^PK PM2[ sebastianbergmann-phpunit-6775051/tests/_files/namespace/someNamespaceA/NamespacedClass.phpUT^=P]kB1 }ȣʘY)!m EZ{ $'$38 MD [s&.|f`:f, fYo@)舢^zr垪4znl'A`KQaRQ9ȁr_LE]wu[uIFp.9JFV_;5XFZ깉ؓdvW0C)j| PK PH sebastianbergmann-phpunit-6775051/tests/_files/namespace/someNamespaceB/UT^PK PU52[ sebastianbergmann-phpunit-6775051/tests/_files/namespace/someNamespaceB/NamespacedClass.phpUT^=P]kB1 }ȣʘYP"=@o[]d쿯pNrrN|>#DOdLJgfY@PkƢ:8l‘N(aEcR&pyMtC`S>{[R cJ)Abz?nڪk:0viPr0ک% R5rRMĞ$c$˜ܺam~/PK P E sebastianbergmann-phpunit-6775051/tests/_files/phpt-for-coverage.phptUT^]0E~LAFM25Є/8{ϹV<ܵOΫF?ʎ8LofBjoC.[G)%b_\$Zk?ijl6sH/0cpkzP͙|ۥF䷒PK P2b”L sebastianbergmann-phpunit-6775051/tests/_files/phpt-unsupported-section.phptUT^Mͱ 0=Oq8)xsmAЀnB. ҷ7nǏ xO QS1p& _PK P> sebastianbergmann-phpunit-6775051/tests/_files/phpt-xfail.phptUT^m1 0FHv&%=i$ ={Z@Hka.uV\JnLq0]F 9+w"/Ջ7/z+súL$̎2CRv̀sR'- 1Ck?NPK PI sebastianbergmann-phpunit-6775051/tests/_files/phpunit-example-extension/UT^PK Pd tT sebastianbergmann-phpunit-6775051/tests/_files/phpunit-example-extension/phpunit.xmlUT^Mn E~a?iq6ttK9(߳ҿ/Z58 )v-]Ex7?~o;bXDt7D}!4Mbzaɇp PK PO sebastianbergmann-phpunit-6775051/tests/_files/phpunit-example-extension/tests/UT^PK P`2Z sebastianbergmann-phpunit-6775051/tests/_files/phpunit-example-extension/tests/OneTest.phpUT^]QJ1+a[*- dnp7YIENVxy}WwQ5cEt0݌b206* IO*X=ޭk&$NFR2#m+Y8clSgniaS.>L?pl;ޥi l_۳0>=ӱ҉d" sLu=;O\OZKi+Ӱ糺5W72|BH׃Fr$[E>L~>[ Ky0mC]A׺H_^"m7o歅xK*GSHoOPmBό0H[x'o1V1_Eƒ۟E%,ޭiߒxvA/>ƈ?c!~. f ip w.KS"¶4L͵E`G`/}|ę /48 uwbd^2cN'CI'j:"2H6|2fb*zy+ m0fPc{Clm=7rDuMصm`9ꦵ荇^ I4XSd#ϲ*^c-=" \kܖ鷃zܠ'Hc!\:ZN<D۔7c 9&i{aRT;?bǺPXF|l衽vB!@-v/p#AQ '!Fߒip뭢>AH>7MC'Hw1ak΅ـIJ> g1yb.Dr=lXJ0/|,"D <0cuTXF0B4nva5 ]#@c] j!Pฦny@فA"=/ %Xtlg:%Lx@CTDŽ.;]z1au|F5Jh("$aș_.=b| T93 ๤U9!#V.!_PA9^Q#q+ihR #RRxUEbI F^]EĊN$k( ijt^ 9T_ Z-ԗ4 tQ9PƠh[*JIVyDs _% PD!5R>x>"HȣP8 jě p`Hg V#L/W` ")2yp-6EFRVHL0 ZEQ^0*TaCUw)QV`UT~4hL R.yVT LxE4A!bR*HVj *:.ЯxbH0TK9 ڌH%'2A9T~R%d QD1:+˄`qa"C W٣^"!c Qye]Nx'kT/8E0 cM77xِ|Pf'~WqϨrZߩ[>WPY&֩qogR+8;cmǦYK@-nnI6.&ŝXFW鈗l)0v*|ˮCRqoZ&r֔jz=3J76čal9+hy'Of@RZ*F&clwta-RƳ lc ZhjblUeYXNFpZdgpvݠ3[;4JQY-K`@+Dx撣*bDTV7."\tN6(&gxkS&CTbH C$Pa׽==sRi nL7qoHA7ι wٻrcj 9%:q#-0 a9ƿTꕰ&7. &Ȟmap|%> Kʤ7(v;m`؁噙jר#MD"AF==9<ĆWkNl:-54vFijc?<$ &N{vo*nz} .IWƣ:In{%< b-8#k{Zd /a;l }a}L$ᛡێ wl˼1X.-aL;uׅ Kp2G.gO_ML8@>~]l`\bM$wCk 鸰OS[߃Lʼ(`sw+Qȵ|EߙMS?jK.1q!~t+QA2;^M~T)4~MYD4c!A D,$FxY\}JԩqHF JGQ^YmXMrPF},<³f`lj*-5#{͹{ D-RsRk.nAf#W>G-kEp;/sb?/}-3yo_?ݾk7g~w߈}+م|'PK P O\ sebastianbergmann-phpunit-6775051/tests/_files/structureAttributesAreSameButValuesAreNot.xmlUT^r } kG 3L̩әz Q ط/uzhNϷs0:ڣQvQ(*&QArtf)Wxh؅S *B5[*_ͽ͸=sE][c򔗛ZmIUry=jA4OJ6v-dYLawYX㗐(&2AWmީ?S_%k Դ\ck(J5pn0` s1iGf޽R,|%K/NR CdvFc5Z_hZȮXS @gZ%OX&fPK P1?`ND sebastianbergmann-phpunit-6775051/tests/_files/structureExpected.xmlUT^Rr +%1&L̩әzBFVZzB-oh`q K :-",`XL^\ 8%Ic+m\V[|n>5Js&=غ!wE٣"b,ՌWsv~Ϸh+|-0aW,wN[:_"H5ܣ1VC}?fJW.IZk ^9f47?.lF8~p CFat.Wϓǭ^nܨ㾂rDzUZb{א(zSm&:Ŭ'<1kYt¤{`lBIkƽ?_5ӿPK P7lK sebastianbergmann-phpunit-6775051/tests/_files/structureIgnoreTextNodes.xmlUT^RMo W~SӤXe6'73=8:Fo.@D3f ,[*JYt g,FwQt*EY|kG9,gBBvn8pJSg=$n>-X)jnvw5Bnc"pdg99 YR,mXK! 'Da\6x54L\3PbOD }\+z++LWŴaD$m`KL~B-7'@~tTk^<>ee= k8qd@Jcj .8zЈ ۠MT0)ӘgY9wPK PtGj^N sebastianbergmann-phpunit-6775051/tests/_files/structureIsSameButDataIsNot.xmlUT^Rr +%1&L̩әzCFVZzB{vh`I HCO;-"`-jLZ2s N7tiO(\VaZl7nGMJ%Zja_l]@fJP.,%/hk<*Bu-_͸sd5zwm0yCU펤* oJq,d^lawYHl[hCn5']nN]2DPGn?4m| 9"G/16ZT\N?PK P. sebastianbergmann-phpunit-6775051/tests/basic/UT^PK PjVU7 sebastianbergmann-phpunit-6775051/tests/basic/README.mdUT^u1O0 KrtF&F4}m#`;')~|׷^@'1Ǽ8wZAc$(I B$.i\ڲRTi73斃ƒ}zuDG %qi7*`$l;ZlBx B, dyBZAJ5Ah cn\lzmq|6/²%+;¿X!lau4k` 훮 f.gK$&k> v#j7 gfڥ=۟-&4arpwבW*ðD]xoFGr9u͎?DPK P.lE sebastianbergmann-phpunit-6775051/tests/basic/configuration.basic.xmlUT^Qk0+}on/CԲ ])hao%Q6Xݿ_jk`!|瞛p՟jr,J쳏 YTM#^1QEP9u]Ggjlɞ%ڤ'>WBŒǃ6[~p! )ef 3  ^SXDO|W>D9* ʕC- GyP_bPb,tn4&0sok>wmu$[^ș׭;J`~PK P3 sebastianbergmann-phpunit-6775051/tests/basic/unit/UT^PK Pdna K sebastianbergmann-phpunit-6775051/tests/basic/unit/SetUpBeforeClassTest.phpUT^SQk0~AmvmIH`lo!˗H̑7\FJ٪N}ݧPTqF8f ̍%X A ~ ןo#IH9=݇*c rhB1J<0W>e*о2 ʕPY[Vl{ uJbMy2:&V(ҦNXBcȍ('F)TbRgNj% cEVfYߗWA~,RDHB>h[TH7E2:F6V{`R/H҄JU$Kr!Dw7JWzVU=" Dx: {I`kJf#>nyE݋o>I_R[FW6@N q=۲#ad Nܹjw (mJl Qyq.{,OTz2>V\o0@t;ϔLҳ:<x"X>3w/PK P )@ sebastianbergmann-phpunit-6775051/tests/basic/unit/SetUpTest.phpUT^Rj1W̡$ن4 6-6DeIhf1%z]_=d/ Oͼy37wDP;p@_H.E9*` c jUb5<~~|υ9=9U&=FMTxkB6uwɮ 8ѓ4uH6S`[me:6R;6U͓ ZF^9&iFfe)*astEV_ECLJ$6L!nSD? egQ[+㌞e`RH  vJЂ9 9\@V >03Ao0GZbiV:l+Z[+UA*//_]SF2hb:o0Vc$x9xfc NxN䶳x_ǟ2bXu}ʺ+//_PK P$A 3<+\߯Yß$ !LNea~Q*k6{#)bBg s,hW=zM0-IA9_*6AU{:tjv+"HMTrSXD ^J1&VHl"O$ᅗy 9*'[o.$8GOح$`7 f bG @ؕpAhZ`-BL:mJ!I@*ISVnB7 Z TI&:^b>ie^ZFIώb g>`&)JB"v5SuxPν[#oeSAcs[q/vx[/g[KSUvC~n1||tGĭ |6{lƿ_xhBbWnfg0-'-Ԏl/ÜF=8s0q 7H\ւRS pcX0GLpΏ;mBU"!M B#k%)Ch{FOղH0$- ^sN=YF-׳*r6¬WYsޞUUϿHDץdV`6,a }HC| C9:$(~ZTOiƺ1zG n mԇ6܄)%̉xR8þ@ƶ?~TO7(`Y]ceQ8}zGs >ҍ[~z=KZ8a/_kqrBHPߊ͐O PK PKt;M5 sebastianbergmann-phpunit-6775051/tests/bootstrap.phpUT^uQMK@WMKI~TMihiA(, qwRD*Խ潙v'm݂ƲQcAc|0aC(jPQw\[jz2&@[)^vou@I3BPuMm^hhDy۩@֌mP1'<|開!Q_BM}mPÁBvmJE{iDgԱ(2jZ`9Q~3F b-%$"+2VKy#6dHz h9-?MTCo(E_;r(?D$.U]U:PK P3 sebastianbergmann-phpunit-6775051/tests/end-to-end/UT^PK P: sebastianbergmann-phpunit-6775051/tests/end-to-end/_files/UT^PK PnOq G sebastianbergmann-phpunit-6775051/tests/end-to-end/_files/Extension.phpUT^Ֆo0WCBZnt֪e R:ؑ}Mw Z2MKw}̧9D(Sa*I!N>4;A0*J K`b\|׊,l^ GJh8CdBk8v*O9}cq M~oU2%:TIԎL2ym7 oFϽoW=jNGSAp+Dʯ Vє03ȁ"ԇ\\d:AP'e5I7&C-M^80f٨UeW3AXHqF^ѳzY_X/WV+l!8IߣIJ >FpzwLJ (_jra [lJ收^~Xm)KֵRZB^*c5~OnՍ =Byz PrY2hJ:o5N' Sœ 8+[ j@e D>yvw v O7z7PK P4r I sebastianbergmann-phpunit-6775051/tests/end-to-end/_files/NullPrinter.phpUT^PKk@ﯘcRYRADPoB3t ;R; Jۛ{Y5;yw<_5)W 2G~-|`cnF˿d7[eJS7ǵž,pJ`2IPK P]` sebastianbergmann-phpunit-6775051/tests/end-to-end/_files/phpt-expect-location-hint-example.phptUT^ @DE,PK P*R` sebastianbergmann-phpunit-6775051/tests/end-to-end/_files/phpt-skipif-location-hint-example.phptUT^ϱ 0=Oq8)*bQhi.ۛw>FJQPi; OKK"TF^S7Eyم>Fe[yd2oE&4ΞY!"BK u,orHd6mP_*ߏ >PK PoDmK sebastianbergmann-phpunit-6775051/tests/end-to-end/_files/phpt_external.phpUT^mKkB1AQ>hł-$&s@LB2}K]wrY=DaH;h%#r0Ç化̨ خe^L;:,<(O{eX*0ty b mtG+P&oC:)oay5!X%U ,\J kr.+$gƘ47>/ϱ/} PK Pv;tmK sebastianbergmann-phpunit-6775051/tests/end-to-end/abstract-test-class.phptUT^mK0W\,ݪߪCZP[}v-&5I7 C_ -99$%rYVJ:>}\2]D0/㛈3Z0!J.u0螰tM'b>0sy՛\TF8=bwGT^4?l|ߊLkWeM'TK>~jC8&8-0I͂T H *{FI{j"`#NkAAZ4H8'!Ч .c,0$=Bm=%RKa4f 8gcJHePa㺵[{:wWVESsi}OPK P8\HA sebastianbergmann-phpunit-6775051/tests/end-to-end/assertion.phptUT^Rak0_qP9܆u.vƠ-B/X,{%-;7„dwy笹oZaX5Z4N:ȪYcօdi:"; @4[g m%ӏSq=4$j<]51AY0UK.(brJ+B{PhN>W'ّB,/e9ľQ:N7"O2j܍'`Z/ժ5+ć4{.ɰC漮Gq*8>Y<6Mг0BsiޣYK1筫 t0V cp XfS؟r)պ53F3>֣8vhdqKҤuHJ*egYNU]G%dPK P7 sebastianbergmann-phpunit-6775051/tests/end-to-end/cli/UT^PK P> sebastianbergmann-phpunit-6775051/tests/end-to-end/cli/_files/UT^PK PX"[@K sebastianbergmann-phpunit-6775051/tests/end-to-end/cli/_files/MyCommand.phpUT^PKk1W "*GKEVA=ղdt1 IV+]{(d{]@c=DDa6dЄelFqna>m$L]4`k큌D8(9C ;y#p#A+&ZQYsN#A{ GQ:9pJl*ԡ^ IL; r?j=]h#!TVhd>qņFe2/D7Έ .jJhkv3᭶?ݯ_P}4Z_2C؟ 6`ye"M3-dz,6TBX}PK P~UW sebastianbergmann-phpunit-6775051/tests/end-to-end/cli/_files/output-cli-help-color.txtUT^YKo6/B٠hp/8M;h#(wD $e%Q!77-ߊ\U0VIǮuV#{W§ FNO''O\[a { #3^** ?W  dN1&fDcRs=^_65w9 oxpGT-W/ϲ<~'o^iwz .9pW։1{܉pQ'bץr3*)n]Ӻ3j>R*P:#nn'$S}(f(kxuKi Vi#~)89)$"|g"ZtnHJ< u\h֐ mݬXFȆ >9LB-*!*]}@ux\k{Q'Qb)  ;Bg~qx#`iۀ-3%Vꢭ&#V$=cx,+>`V(F1} >DrMY5%KQ 75 [#C(iP_Eex0뜛Lhmkt"uhoTu61fnHQ.(@gԻȖ4R?s`^R%`=W9"GZJBɋaeRk++9P:T3cRZB)@VK{"N%a2p_A=Æ@i01֣~1h( [<<^@. HNߖWEMy8À.h3@yyw ]wKpd`95t;; 7.ѓ6R\.T[5ZNAg& ZK*t\Sc*j"GYP] ɝi40B-tr01zy~zaԨ(xL#$0€#f#{p)P:BA vs&MTJlXJ?FU+>fR`u?J2L05́zl991b㔗b!~p{Rv~H3^K[ p; p8?T* Beb/wuXT~M7ERn$0XXd;Iϖt. *~+ PK PAjR sebastianbergmann-phpunit-6775051/tests/end-to-end/cli/_files/output-cli-usage.txtUT^Xn8}W.!ApXeRS*i*1CcKܛŐQbk^ē p/yŻy1.BN3ӹs#wv2̡*Dջ| 1І|f ' ##ͪd{Gvp1^iGđDJ}D>Փܸ`[cQYN3Boh/JjAmTmNKviyޝ_R@]7Mft&Pwm 6y)5ҹU cRsaD{ݸp6**%@OjClo{x ]tD'tnꦂd oqgAA܀u.u ƾO{,Z7f*_MU݉(oәuO-lsM%7%}u#gwX4foU\E^P?6t95q Up52"D66DnvczǾO=oF`-6's59ƞ#kg6^#Edn$em^l{~:dOx (AP YX DМ4=8ޅ1yl  %n]wʷ4qohf{|M_$"_$b."~;I_U0Zx;JRB! =;QVnَ.+Lu *ѻ(#` ~͗GY5 -МJ+Po/|s_gx= )Wti-W&&sLd>MklIJjd. {h<`xQ3.E"`D $^y"-=[A~.ZPҔƶϵ/'IO<}Ҩ`DPK PP.G sebastianbergmann-phpunit-6775051/tests/end-to-end/cli/columns-max.phptUT^k0+äTכ[U&ۘhL%~aa{{"n @ie6>%8VO|=TmL( %%G=a#p2*g-|ϖpC^אAD٪]DPD؛3%,=a?Nf(=>BntsN lhUcXLV#0@ ebHi1G8P0A Cv2JXS<#1)$~R(-^= y{8E {N.PK PWG-C sebastianbergmann-phpunit-6775051/tests/end-to-end/cli/columns.phptUT^Qk0+äT=ɘ2D^]M$wa/nwn9,uctKk*"-7z>(y_1!G)sF;˝rtd8 lMr}ZtWЇsc?ƩΰW'wsTz|OQԄ9j3@6T}B'9;ˡ*eֽ^!$# BCq mIe@) yZ)$tnj3 {^p{}8@!=c~PK PsuC=Z sebastianbergmann-phpunit-6775051/tests/end-to-end/cli/deprecation-warning-with-class.phptUT^QO0+dЍ۔#5jde4al;t ś6isӞ{8OY9Ua]HhCw|sLڻ{0ضܥ-Jg-.cv%GҼ*٤% 6m:\qR}' 4\Ap!=zg,XdEu/Z7!ƌ+9\ Is:_.COM BR̯`r-Z ƚ=Ur[%g)ȻУ,sVzHXT s4;Ns_bq7PK Pv F sebastianbergmann-phpunit-6775051/tests/end-to-end/cli/help-color.phptUT^EAk19\i/=X[ƺ eY#xº52iv7JaNxsp,=̩cGYk]bG}8-GfH]Bi[Z+M݁ EUFS!nr&^dj~U^r8cQ "FpBW ILo@qt@ɣ`8wwHѐlʽ|Mk"{!Mb2d#re5|0⧫qD.XNEN]gm:u ϕ,F˳an[>QHMk!恂ľPK P<3d}E sebastianbergmann-phpunit-6775051/tests/end-to-end/cli/mycommand.phptUT^QQK0~ϯtνmٱت;`$m<;;Γxp]Y) :tg\ reR.A""1ӛ2Ʌ f0[gdRWh`Zl0%2syճVF8~ Eu aCӀ 2(RWyB^/^[ cD2t#oSiW AG΀14?˯v4 Q*Bm4#]BmB**q?Q2 дl2/ma]:)\_q'E;ZWN1EzСwONc,OBBzg8Z=֢oPK P0CdCS sebastianbergmann-phpunit-6775051/tests/end-to-end/cli/options-after-arguments.phptUT^_O0)d[n >10&,(и}{/lڤ=SJxPJ}Ha!BV܄#&.B5&E@iJ t2pE4wբmkn=/"'LKk`+8JBF3+tK9+kfn]MY8_P~ YZ눤Lkf.EݓlAgCχMs#4TR{f$"Lft`P1!]4~d}jc oasf`F\JV"Hb_!AGB\nx$dWJ=!w>X}`p}1㡤[wPK P5yO sebastianbergmann-phpunit-6775051/tests/end-to-end/cli/test-file-not-found.phptUT^mj@ D K҃\zMZJqש8Clm%vW﻾tx3AܾC,:J,HeYD mgQo;'c9Ͼ2\Be5KiHd7Pzyz~n =|,U->yM~a;vtCstYV9 }\Zy5@yePK P=nL sebastianbergmann-phpunit-6775051/tests/end-to-end/code-coverage-ignore.phptUT^Sk0 vtwae- ;m1J|qɓa9u:<1!=,N3Y%pҕ6v~IoQ"wxкB7 e6LJ tA1Z"mJSL8OϒyrJ}׆+pU uF\v5xxT**++- ,|eSz!|g@6R9WYGiF,y|y/>Nj+Oֻ<Ε&%Z2y=IՁ>#O^<,޻hM]:֩;y#Etk32V"B*<2gY{o:, ,,wRX'hJb) &Gdqd@X 4h42-FT\V];g G&!д"A%X`w􄴡@"? G.KPK Pe J sebastianbergmann-phpunit-6775051/tests/end-to-end/code-coverage-phpt.phptUT^mk0S`6Tv=. ̴e!IǠ-Ɖ/#y6}R7-]_QΜOɔsVF UJFgDn R503_ MDJBB7+afOeR8q>9F1%3-@vS#&࿢lPd^nK5K/:j-u =w7r#g_t#_x^^{W+ǹTwF"yegJYR..荃k6ssU9Zu9m{k.mDtA?2>Wѷ96{]&j.dBHys&S7}- = LpV+ _P/KyucX*vX/?{cSƘr83\+q}?!,{@,5YJVƽFntIC[&A43+U>6ʨWOt^otzөDN9̈ϧՌ]XxPb|== (Ů` > h4Htcp /Zw<ό>AA#=s>a'PK Pxw O sebastianbergmann-phpunit-6775051/tests/end-to-end/dataprovider-issue-2833.phptUT^j0b Kf`ZYƊ1P ]&]1ByKYѴF"-w> gz.f0H9#0>8 2~]y6{fH1Z/kAĹ|cN[&%^RN S0v dA+]x |5uv861sٸR,tUޣ ښPK PryL4O sebastianbergmann-phpunit-6775051/tests/end-to-end/dataprovider-issue-2922.phptUT^Ak@+PT[)T# miдT&nD}G =t؁=|1qˌs~8C*];j ˷r6 'RBXatE|y>Ky>xf f EOK7jk%nR)%GO9rfg8 a ԤR@JT9mϘ~8e10l9>+Es~PK P[ȉV sebastianbergmann-phpunit-6775051/tests/end-to-end/dataprovider-log-xml-isolation.phptUT^Ք}o0yCN`ҔV]4NBL Ā$lS%L[7mP\16 #HȗXU$aҨ[2|9\w]cc8.>LqϹ}ne,H렔0]8CEp-2{ xd>:w T6.a{J|UK'jZ^7LO)_RYS,zJ#HwuҔg\fhc~x6ꢳjw0SnzY`&hti6!u?mp{u]QYb:F7t,Za 2>tBf@kf)pc.| Ѐ"Ɗ )6dQy.rbڌ\@4"Dqք  SZrMdVpOsn9:&P4ɀn;BW+ou."[.JE#!=q}T(^C Yh[hBmD *ZAjƯIq+{ݭOtGc^^5;-BFc="Uowk x+5_m.ƃpڇpz_vv琯PK P#wL sebastianbergmann-phpunit-6775051/tests/end-to-end/dataprovider-log-xml.phptUT^Քoo0S4'(4ƖJC!mS&nk:vsIQF U=Q81Fy^(iE6cg|绮iVXpx*¸d*H렔0.CVCHEZebc{ x7U< U]ʻ%Yj}v%ߧꔪ8 h>s!x52eLjv=k;]g%W/Tc~x>ЬZ { 7Vroa]6!q"Q=]/p'A9GJTY@E+L!vBRkJ70PC#tPh1V\+S.mD= VH+SZr45F͖V!E$0KLœb>sw!U9~[>_@ tˉ6t"32}{sتE(iND^B^|ef`1,M€&DE;H InM௻5ykl#_p'Es}췇^,3}_>۹Zqx-WAx_rCʮ¨=>xPK Pn/I sebastianbergmann-phpunit-6775051/tests/end-to-end/default-isolation.phptUT^AO1s8*1K$j$ Mw)ȶk5 '%^ld~o:!,GdkvTޣv'8S3,mcB|$dCF] kUSNA}|׾dgbM"n!B4Kk6z۸/ő5)89B܎Boԁ9h~ kM2Wa>^mUINJjEe qdL- ے)|SLE19w%СV\W*QU5cO'(zH@z!Lf_PK PJqR? sebastianbergmann-phpunit-6775051/tests/end-to-end/default.phptUT^K0W܃tso!nv8T,['6BfpMj{=b@"i DB%z>)qWU5@A)#-}a^9}p 2~]y6{fH!Z/kBĹfwSA[^X)3)A@'~OQim k9sCbۺVf&&לgoy6.&BCy9 He@Q(y`L=H^e5xz3-Pޣ;-w7PK P}JUTX sebastianbergmann-phpunit-6775051/tests/end-to-end/defaulttestsuite-using-testsuite.phptUT^J@sPZMEhK4ݍ4ѧI*r6 o EH*^2D]Uy*vfV|E<(SڏRq?"hSVf0eMp L}-o3yX-6UIO|޽I܂#omy ? liZ \GuYt7-s!t=VR< $yDI'O y-bYZVG3s 5N++2 Iy+D7٩]dUʣ8<`O#6[[Ktg"?GU =ج AIsuA1o~_l12`m`W%b  6M9l&Ht`BT~(mRH 9`K/v@PK Pse/J sebastianbergmann-phpunit-6775051/tests/end-to-end/dump-xdebug-filter.phptUT^]k0+`ELv6QL⬁8VR1[-e8>.yy*)AдF#h(R~XXջ娭4J{um}6펓FeFáҶ$SJUTSG (y>jUeR!뫳@q 0Y7#`,Bgy߉w|)bIV,wl:_%0^]LI<"`g1:UMST:UԗV;@k̛HLYugc[׹)G:&$e"igQ g60Wܣ \+, *QܴhgYm[SȨ=Q,^\pR5o;-Sʢ8VqnjɭL4xdXhjyƌL9$  z*q Y}<o0hw ID}Ѓg^(]7o9=1R'3 Sc`*)$ऌ֏٣hN d^Fp݌ApPK P}dn{G sebastianbergmann-phpunit-6775051/tests/end-to-end/exception-stack.phptUT^R]o0}Nll04nE!&*2mJvJYE_Ϲ>8B*mUkܒ{#;R*!&<ƁUȤ3JwP:RCEv<꾁*m[}w;1ХHK}Ȧ|oIq% z,.ЯMY:V'#niyf1=zVYR " g=ز96:%5~ 3K#3ݰMJc=0~|pV V(͡Y-}3H'ǥQ)϶j@ PK P./YO sebastianbergmann-phpunit-6775051/tests/end-to-end/exclude-group-isolation.phptUT^]O0+΅dޠ0F K7ظ 7My[Σ`qΊT)Z˥ՙpR+]k[ bhCRHe+ ߦod=&Mu\q>JvuMGXc ML]ۺd',>Ӆ'[-+ǹoiPf$#7)2ˑs~.jw/`# I3L lI@I鴱>c=hjv;FHاNsm{ha-/PK PMaQqlUm`$&{Q/.{8\Ɯ꭪t9"ύ+HE!T(+EQ4h4AvD,ӵr1ZP-,]aY! 5{Nex+O۬ǹy2;б6TXZMN*,Mk  B?;]bYz8,i1cwl}PK PC sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/UT^PK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/_files/UT^PK P))b sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/_files/ClonedDependencyTest.phpUT^Œ_k0)6]![a(u-HBF$kKR=X:߽o<(F#--=ƓO(0mtZ~{\ _o#$M. LDfdPx]j/kU`D9.igo_˫e*Q#:Aɬ%TijɣkDRYm܎c)F8ge<2΢B+IxOa~e%G{ۜ׭7H7YRh^ a=iE4pUN4"6;QĨ-Et>MC9X` re(|%Ei79ʟnOxLWM@|0Iy@c#q]^X vvoPK Pd,8A2a sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/_files/DependencyTestSuite.phpUT^OK1s-jڢ Rz+Hv쒙X;=KymS6`T:`Fw5HP{ z(A*O7ZI.N{ǰhaD?;`qrdfu.XU`fܺdB zF%4j}:ܶ5&6a K"R: )u_E1;m> $Σc*%BؠS_ 4q%IXÛ(In+9ӹh0/ONY'=3RG~u5֞s<D5q';Ӯ'8 ϽګoPK PZƊa sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/_files/MultiDependencyTest.phpUT^RKK@ﯘC$k Ed'f1ݍEVԊ!!3|4U Z:L<9]-{;P3L+5l ק7F6"&)R`.=iiL~U;d/gUek(lp"FA 4MiLf%nxt9EUI@Tq{\,0dc'gZp;EOǬ3=\ 6hbOğV`,Orv΁L-q`v7LL?bzm/ns0xw6ǘ>n|F"^PK PUn sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/_files/MultiDependencyTest_result_cache.txtUT^ 0E|zTJ7"v&舁6[;0 \`屼(ijV^WS6i!J3, guSk4z2eAwRF̓|! 7jtC=+gv~.ao<v+hݽPK P{3|W sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/_files/StackTest.phpUT^QJ@|W`WkXZD '[51yg-⿻({ l/liAb^ 'rZ֢vI/K Ry(T_+)`z=}Њ9iށ'%4\{Z fl@L*PUu$ZBrԞ uaZ2 BWZw{3qUJAMVPFQ'&HbLK/kk'Nqc=ا$|aF"S7B-=({lXq^ieک߁`0;:)=T?ď aDӚ҅9M]y:t 4eYRϲcl*۝%^kOZ_)|PK Pмb5Qh sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/_files/TestWithDifferentDurations.phpUT^QKK1WöūUBW$vdLwG/b |O2m &- P W6@ikyM Y@dEցvpj`~fwbę{XPfOvS1hg l;F-Ŷ==NfYqZd +H#(FSꁊ"vbcc *Ӓ!@Ԗ%:FrOFgT_ 4q-5+X/55L,e1c~U[ߊS7PK P!"K} sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/_files/TestWithDifferentDurations.phpunit.result.cache.txtUT^A 0}XEwt&md ݛ=3 vwkx7kɍ-i=y =85jZH * Qͤib/j=xl^MTc< /њYn7جw7K12DY$B8}PK PnIg sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/_files/order-by-duration.phpunit.xmlUT^U0<靎pAk-L"- }6M|_yt#I6q622a}nllMJ8j62L3syW(aK]* 0i*)}.=g7.?XjDS]c@'g0aXs2&MPK P?!.T sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/cache-result.phptUT^Smk0_q vvBئ,-MYXKKA3b_[$);e- |{xXPM8zJ)REcHe枘\fQۡuזm_Cn`P%Մ|q0<g2!$}L\meN:üP"meck;N[qǔ(Q9KI7 xaH$Z4I` Z%Z/ W +M\p! CEGN=AnQEVt8c{(j&eͽ%}Ei_]6ƈ*E&`c0Q@򑮏 RR'3Da첫oW״M ޹ᴯ\\HEf+T7ߩP*j& ?Ύfq&BW4 S@P9+66b,tMtxl169r! ̵o.@ U"Cؕ, LE2Ү**X=+ˡkԳ%$6q=oJ\kf^5x3{))9&6㏼̺p^sKJ~Ե n#זwxÑ$RSޜwT.-A?G-R5 PK P 2c sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/defects-first-order-via-cli.phptUT^o0WC&=&-%ZU:M*eXlӕg-UTm 8ןeyRY{l;pޘ E{,x:;{U]wSWآ.Q}Jv3Wo >~"J,*i0Ψ ׷hK6quEK, ֭uh{+HbEL8@vf>vNv ` +jbQ0EGL)"Hsjϡ<pN:tF: )1''?}{\}^ ʪ8@?`{4F¶*0]l!" O ^:e^cMh"^͗-,GwΖM]K]T:ӕ?gI.ΓdT`:%5|Fs Qycc|ьza9N+㱃v5݌qԣپGWMgww?sin9M:konBQ@Z>;eOPK P[5`HZ sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/dependencies-clone.phptUT^QAn0{%Hq (T*jJ"',`)SAr#^xy-Yuj%p~Bi]Z^hB+MBC7 Zq>?G4Ja^uF.uMvXKC]rưf@8WZ6Isuq=E%O3aZL]p̶Y%*gas4OZUmZw󗰇ܠ(*AMgI>_PzzNlUIξ>I_{0 յrCc AxLڑ jLx.C]BeAP y<<'d&zkp!BW4+:N6E./jRYbY|ߟDQt;2 =)ڬ'Α,F4%*`l4'B Ah>+P {vm'ڜiw:ɷ/-4tFxўi6[p4f Z\2<~z!Bz6'ʹ *ZEVb-p*ax!7 a9>>1ѵk쾩S.)\gQ\J:-e9ՖnD!3rN bFXlyp`-f]6(_e]u%,PK PlO(xT,k sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/depends-as-parameter-with-isolation.phptUT^Q]k0}ϯJ[hE'dc`am%~WqLvI sO IH8gntymtriu) ,vNo Z0|2}y}C-l(A:# Cv %̮P9 #X18WZm1' /F~ɟԠ(k~MYxyAC c!u) ["G~>u (8 Bh|oAʵvVQlv?[R~in9MǺ ʧ8_g8PbYh[\X'[4;b) &ySe8mlX~m%y +m3cQ\lPK Pl0nD\ sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/depends-as-parameter.phptUT^QK0~6B_Vp8Nu˶${>q]0%i4ǦUa'a[&DŽoĝN:#+Wv: bqshk)n)<ƔfV{yh wR+/ pwn* !lcȹ1+ls{E^#o(J?214SF9K-ě c 3֋|뚫dRs|zu̲9݋}e(u+@S i)l66"wq@ DMw;L+M&Z@z@tI:ֿU{%\N=''"UǪV9Z˥ՅpR+@۞օ#PPMEDc' ͸v o\St9%*ga+TJ\~~N9qok%qr7KK9iZ&(}'6(`O AYPƁ֍xOqx;FW;`Xcn,&M㺾&-(-Mck H?(k`8:na ޣH)l&2xPK Pˉ$h sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/order-by-default-invalid-via-cli.phptUT^uMk@+`IlWS)F* KAeMtQ`K μ3U8gGu :YGO!;Zc/%II '0:0gqFҵC<`ǀ"X^[smt2hkӠǞsr?ӑؔrK+9d0ɠфz8`gAZ!s*k#L zYmɾ]iNj*U9墅;j *郖е4e&6CT hֶ5`3)\PK PD'a sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/order-by-duration-via-cli.phptUT^Tm@_1M9~Y+mNc$v݉4*\!,<;!t 4ۦ5@ږhE~UkБ)Ղ_#c#|$zn1LhЬp1B?=/b,F.HҡA7\ %vGSUl&@X5FU;8AZF!Hed/C6-ɢ6.:B!RK)!ybۉƅWiOᠫ\ty*>_=rl֛^(~}cK9<9s=P={s'| #9 _!WXj?y]jzCpOwi]UʔIR)m"{kv8=m"H ]/Xaie `McauRm] KˑCp,ay ҳ /(xd['+L8!| C#sh;APK P]r[9i sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/order-by-duration-via-phpunit-xml.phptUT^Rao0_ RiOm&*@ &m$"q}sNäuQ){II]L6[]Vͬ9Xv"n2z9&trJe!thurtj*11 ]dkLJ/+%1ٴ(i,.<% R.k)Yewow ݂%b ^4ʼj{~|W>?s^Gnx}ϕ-~GRys}%!m ~0#툃S'p{:]^ sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/stop-on-defect-via-cli.phptUT^Qk0~ŵtY:+-f!v@S\A,:y[C6aB=wJyQ* *g՚6TL8ژ=}-):(:(u;˥֧+ qM^{9xS*Z` ol`@YRٍ֩v^l# :嗞aW颪0hh{}ݛ⋪%}ߣG ֮!x[g<*Vn0:% 5,kR*V<xC~+,mV]uyNJP&q%#C3<xf3ƍvƢLgmpMg_3Ӝ]3%d PK PSa sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/stop-on-defect-via-config.phptUT^RQk0~ׯ;`9˫2[bw4E(%ؒZZ(A;IYE)hmgMYAH٭u^㬢ZX!@G٥]/Eg-ȹWvaU= r4sw]6\ƒ^h)oYXL>@kMh we3e]pR!B=2`QL^3o[vfm 鬯pMgߊO}?+v$[*PK P۔4b] sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/stop-on-error-via-cli.phptUT^Rmk0~5vr>:+cTfhݵ8D`K$oͿ:&9 Q˪0P u-̓/+N^9jW1,>In-SnCNb gƞLxwb!50:5q3֑I|(ʦ eM?jG?Q67ܛmC^پWf&a(!o⪹fbqwšv 'w*\ Ku>( FsU4=3OI리!܇لZNg,bF&* Z_TJ)x7LyLlԦ)P<;]qȥgx('yywg#d3ƺDO؎m?W۶eQ?b5 zQ~dWvTaG ke'ބǎk|\~jwj5r)ucS7S.r(L<h@+!)Ni~\~U(Y`CB00S\ͣxޅVقPK P1y}e sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/stop-on-incomplete-via-config.phptUT^Rak0_q; 9פe6bw"皊ڒvG{[;N_NJ5e(%CMZ(yݽdNݺÄSA1OS9ʕDy.\#ö3yLdۤ0ϖ~ѥp+WLNBr?Ukl_t3Q-Q#]6c?; Z?ʚI#X Acw[d¡R>yJu}onu9S)Uެʋm #lGqkb9ҞQɽ9;$O=.$, 6J6IdNL>$,Fi~PPK PӤ`__ sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/stop-on-warning-via-cli.phptUT^Q]o0 |vY^C[- bh CqD@,y.tPA"OGJyQ* *gգ-@xXm̞xX|eo Eg.?r)z=C-h0S]C60=H)Tl;q6J^'ouUu1]T Ӵj |q/#;zHp`:WɃ ~uUr.}8x,O.'i]gYR;/fٷizΙ SRRxPK P\nb sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/stop-on-warning-via-config.phptUT^Rak0_q+vr2w lYu8D`KNns1،;{I2/J)E{h;k t̯ڙi\93`U\5v>65HgrB:H .7%WLQHy53wZ{)xS-d4m [DiQ׭XRB4?(P_wbGEmm*UۈGw L\gC[(gT?:b\`t{b5ot]cgifYJ2Wl/&`e;y6{tyJ4 fܔl?g|L̄`F,.X^;-\oLYpZWOStI"o'ȾPK P`;(} sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/test-order-randomized-seed-with-dependency-resolution.phptUT^R]k@|_)Ag\Sh"Sӆ[)8;>w%Hqݙ=drΚct6%TP)3NX./߿{;t= WN^u6E8_%' ĢC,\r>Y aF,,=JBGyF8Uɔ9|a3'ޠa]YSf]$b ƈ6M% /]lFQUcŔ8Yߦ Pc uFVpcv9 BfP9 Kx`@s4f0I9)ŷ VDGS~#Pi ^h5~>kA=EqΊb&al'caVV\4f>q#EDzP.x'/g?4UjHh+.ݯw+u|  &]JbLM [|_t6k|qwͥs ȅT}</3j = q+uR(fKY ()H\:m쐱%)9Юe ?3Ga \oեۀ;w >1?5ꮶ4f= TA;E{`dQ` u d)[ ZP[_V oo@wJt^d56`}Zf>Z4ç6#!PK Pwr sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/test-order-size-with-dependency-resolution.phptUT^Umo0_qҊƷ &P hmR"'9ZbgC]x:(r>?/wN.O),_兒8_Ez&Aã`*AJRhƅZmw5ÅL6EdoU\NѺQ3ί7}BH0NA:#c2Gm;Berpˀ.syB. #*M/g!y?,<+}znPp+? {qB&FwV=X![۪" cD<1?zTڻ @ Ca :UHE|aϣ|n6_,*i3!OTWkjn/,D%L0I%):pccr*3lYƪ>n^L 09X2#גN S w_bSy |g72~ CLdY_?s5%:wʇGxC O՛J߫S@46fbML_ HK֢~$~PK Pr` I sebastianbergmann-phpunit-6775051/tests/end-to-end/failure-isolation.phptUT^UmO0_qCRZ{ ԖiM)ݯ9I_4&>w~{l_(dr5&%C5ZFn퀉hxkb4h8!#xY%B7 ';?ιƹ<.aJICxR8z{C;ֹSLS) &3YP1KFDR(}a0.0mK1F%9DJv`6eV+m1o -8T3k+}GA +4ۖ\Rl_OYSĸl̉C`H`s+Y?n]ԇ7CRV &4҅Lͤ_#Յ]' t$m'ʨ5d3^q <'):F )L#6W c.3ұ8LLUv 1,.d& ` l-xLЌfW3i:d`EB(2®:`%k$;B0-6i`U֡[1W) V* z9?12ɗ}|t,/$1KW[S,'׀aNB4.^qQ^BKPzIraZe6fcCq "R ݣ๵j5ծ@prB:.Y!nt 2nSHg]PK P+ ? sebastianbergmann-phpunit-6775051/tests/end-to-end/failure.phptUT^UkO0_qV4$4 ԖiM)qݯuҗ!D9nqj2\nx*Y)"8N> +vaȢJVUZHlԾwϠsnQ9.ϽKqDDTRSa=ml&]OdNFZt2ǝ~?=.zN/$b 墊'uB,n l@Tc%gU:%$\%ۦzzeO%^1,4z(o}mK)&uKJ: 4VYH3bl4Cq1}E5)|0`f8MXِض Hi6$- UJʀsi2:d`ȅ 2‡=+rK$;Sڗ0-7iAU㘥*FZmI#Oйs:pݦ.M 6xNZfQ֎fsf৛Oc]Za)U%sי'BB3iܡْR9ic} `@7;=UbH3 KmnwHf?%&d,w,ah?md"}BЇ[kѴS9Ál;>PK P"z FxN sebastianbergmann-phpunit-6775051/tests/end-to-end/filter-class-isolation.phptUT^QO0)AN_PbG$j$0 6vo{BMr?Γxpʷ59:Ǖ3RR乩OyE;%]@q>=Ĕꚞ|#-[oKtN󒝤xOf`1,ZWv_Kp=_q'9^4M{AŏJY< ʌd,kn|7~YϣnJ8$C2f 3鼒h",$dzcBE'ۍ&c*K5#nwwƞ!$D CkoPK P 337D sebastianbergmann-phpunit-6775051/tests/end-to-end/filter-class.phptUT^AO1s'%5X ȶk5!^lڤ|o,f꭪Zo:+~[6!C@mIU 5|8zL =aV9}p2*Ni:yI'HgwЃscyaZoj&:^_82x ܃Rލ&RsQkǢ@S3rW[ʬRiSt ) +2G!RB!u Ƅߕ@NiM2]b<wƞ N PTH@yn/ɾPK PhKNl sebastianbergmann-phpunit-6775051/tests/end-to-end/filter-dataprovider-by-classname-and-range-isolation.phptUT^oK0S[áb٪(iw5I:ܷ6J+`'#0 m]%Aйb,Dӹ'f-q4ϵZMey y( k&H^|Id'w#fk3$ʚg" IFDq>>-a^lZgdbw{kvσK0[zz[<ΕV[+LW^T~TG\wuՉt'53^H?m" c[LW#eBmLH$8^`MHڊsLuR(C#+d $"iN3G:nb,(6f,ZI]k0&t]Єg,<p Mb`_PK P*aLqc sebastianbergmann-phpunit-6775051/tests/end-to-end/filter-dataprovider-by-only-range-isolation.phptUT^QK0)tV_CppXNmf`Mj>iCw4 |/+%PZ kzϝ }[w,!0ÛOޘ;}a&'*1,G(L"}{_؈|ύ32w; 9O5-=nvo 0RiV*sjka/WmpW'-z]Gt<)0"F|T҈eJħ[LW#]\mKRFoq4J&(jBBvȸu+fY 0P>T;6zt Id!Z+oΣEcC;7t2fhGG*CIsBu k\yV> ]?j߲|LޒM7M6χIOQ!fVk c3pᗟSR{R*'i2FӉS,Jjx@%R9B7 ƄCNu6c*G=\ 'cd%bΡmĵ7PK PZNxd sebastianbergmann-phpunit-6775051/tests/end-to-end/filter-dataprovider-by-only-regexp-isolation.phptUT^QO0)Aa쀩/(#5.0 6vD݃Mr?Σ`qʷ*KR4K2a*(E N:c 錄V;F=>QFxPzLht2ݗh;g%.;g`*6r[c-N›ꨉ8߭6"GiΟDL{%5&JYD5އs2;,*Es! kWFoԶ+ = z%趂'B@R#fTk3c<řK%Hg^/J7)$#BAv)fy%5<ݒJ)BBCucʱG3 scU umbshiPK PQQRP^ sebastianbergmann-phpunit-6775051/tests/end-to-end/filter-dataprovider-by-range-isolation.phptUT^QK0)tӭV_CppX*6Jf`mj>A0$~w_8y9+ʪ8/. +UAwx^fB&4"j/ר'5QTd7t5f;5V&P+vK8[8Boj`*6r[:=o_ɷAUF\rۨ#$,IOzP JYE Eԓey<z0ȅ,\R5 GmXH0T+EUyHUxyh~2XΣ% !\2z^a/o爫889G_״T!U*,~U67ƓcY1}~bdB`PHGr;r`t^I h@J(мƺ?"jG~X P]xC}f&.9uPK P={?IV sebastianbergmann-phpunit-6775051/tests/end-to-end/filter-method-case-insensitive.phptUT^QO0+dЍO(1#.J$0ҍ 6nl;ɠ/6m69$'ꥪtV (11KQ3HfJ`(uZɇq>#2#l0/uF.uMvv.I:fl {p 8WZm6I#.qE1^7,M'񟍒3VK?E֎ՁN*W#]BmRHզ(8(SjZ Ku+ّJ)8ic}|!{VDا0Rfgp@Xa-u'PK P֢z+^ sebastianbergmann-phpunit-6775051/tests/end-to-end/filter-method-case-sensitive-no-result.phptUT^}QK0)NP`Z>MaAeliv6I*{bC~ݟ<圳nFFa3zֲ,7t8-B S6&CLE17t5R:bPK PJJRO sebastianbergmann-phpunit-6775051/tests/end-to-end/filter-method-isolation.phptUT^]O0+΅d~ܠ0F K7ظpWشIgû2]\֘f`:#S@;Q< t }V q4Omiey!;D߻>9i:1m E`Ji(ڑ;dNɗ~y<jB&y4 FјPK Pap?KE sebastianbergmann-phpunit-6775051/tests/end-to-end/filter-method.phptUT^QO0)A2H`Ӕ5dƁ[;θo<ŦM',UU7phuCQclc:(4|G3%mo(uZ$>%b^^֘`:#sB;:$Eӧh~xEx+s6r[V~{87rLsӤM ,n0 >)˚ xfbma^' PK PJqRM sebastianbergmann-phpunit-6775051/tests/end-to-end/forward-compatibility.phptUT^K0W܃tso!nv8T,['6BfpMj{=b@"i DB%z>)qWU5@A)#-}a^9}p 2~]y6{fH!Z/kBĹfwSA[^X)3)A@'~OQim k9sCbۺVf&&לgoy6.&BCy9 He@Q(y`L=H^e5xz3-Pޣ;-w7PK Pc*S sebastianbergmann-phpunit-6775051/tests/end-to-end/getActualOutputForAssertion.phptUT^Ak1sYf++(JȮvm2wx*B &Y8g{FR]AӀuLyb')Inn*JTۣ <5tWthJ60scyaNΰ'v,K{Hs9x̅?LGNV"y=Ζ:S_GԦM69Of(S"'Z#,T.=ji^= ;Enj@n;[2]ЅUYwlތM&.{;PK PPBPG sebastianbergmann-phpunit-6775051/tests/end-to-end/group-isolation.phptUT^O0W܃d#8F,8fζ3{tŦM-q89g[U+ B8F*FDJQW4|G;mo$MZ.|=ꚮ*àsNy8{gKO[/5 \iiym\MhIr͒|v*043)ڑ1:rӻ邚brh5e)f0(Tme {de!SaIP&{Z;mϘ_贃~a,%HCf{'%VXf9 PK P ׈l= sebastianbergmann-phpunit-6775051/tests/end-to-end/group.phptUT^N0B3L쐡^?80&@e6vaOx6Mt&&h{ׯ4$yJR),P*+QJ.gVi̓=\#\74Z/h ލ|b׌EƆ6Ki7vV8`0168M9ZԖn$RR\J_UUj^a.8_RO~XRW>$;M:*\Z1Q?N4K-le03f`ι$`n,J(N*Wf'KԊ3 K}aV)7/"y m-9!P6XuPK P7!wLE sebastianbergmann-phpunit-6775051/tests/end-to-end/ini-isolation.phptUT^J0 vUŋ։ IMRӹ+`i! b-bDVW+3a-J V9b%,;Tbīٱ z, JƴS_8>E-MWVp#igGa%hW7Oo 70Qi̴]m;z-u6j~-|Մ~:Ok7BIfG- Z;ë7{-^ֱػt=eU>\.9Cf8  "INPH$yOkO}p0ؐЇgQjshƌ<>Za=PK P4z5C sebastianbergmann-phpunit-6775051/tests/end-to-end/list-groups.phptUT^}j1y9=dғ+](Et-*!mh6&YoQRH_^`[T:)lNynVEvR<{fbB=XPa QK #YJLmt> wRYH1a'p(VTG\XQU;<!O4f&AZ[ePK PC sebastianbergmann-phpunit-6775051/tests/end-to-end/list-suites.phptUT^QK0+!)ӷ!:;,a!hs͉\s),mJk?YvP p^ VҀM@'|Pyc#a'T-Zy890"@!;x/_|PK PIO sebastianbergmann-phpunit-6775051/tests/end-to-end/list-tests-dataprovider.phptUT^Qk0+.lpԷn2V&h5[~W"r9 <爢k+I ~rk*:cE*`Jsc=e PMnfCnIy:HgH!Z/k@hnݚ]g+l%FOLJ!':!nח9>s[mVt5re앱-.~f(gGB2«;vY`'pch 1<(Sp* De$9ò{-wo˽r_PK PEsS sebastianbergmann-phpunit-6775051/tests/end-to-end/list-tests-xml-dataprovider.phptUT^k0W^G\Sl$mr|NlɓY ]~N; K!vvFQkOГOM i:OVF?Qfnunɒm/9gy %j0$Z2:"Ha$~%WdRHҤdCt$[>s;x={ beMםS\=/,(۽q|Υ":𵫰j{쎡?,4ʔ&T1Ph6?АOIgjm~U"1'[K{(vBy'tkg{BHu:Fwg ![F]]Fm D3@yw٢<,'U4{"/&V5ʯHX1Z%V)CHY$0:4Ѐ}xcPK P; sebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/UT^PK PB sebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/_files/UT^PK PĶ/N sebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/_files/HookTest.phpUT^RjA WP: IZl(%.<ޝFlLɿWIK1 {z>&@EH%KF~&_aXڶ| ? dLiF0%XtpKqաspŻJmGNm ƇMF]5X]cb{%ؓ~p76d;iPGf'$TAoьv>EC*TQpbN,HFE>-71Ti?1:VR[Ef~+\Ű)~/D'Lgb.Gj{=Qr2Jя4'_Sm[8ƖfT{pPEqEg8 / *:HN៭mTga>{xpSPK P1=1V sebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/_files/TestDoxGroupTest.phpUT^QN0 +|U@ŕ116@B0i6 eFtI8ڿt㈐!gѭk(Z1 uE0\ P6:@[Nz[qf4]2 ajK\@ZCJc`~j&i@43AcBeݧכ@&4[Iښsp-J4vtU:j$A'(#NSVl2¤l^ncUb) W R.F )pyg3$0XJgl*95V=+YR}1f 3%5N쟜egyPK P )Yob sebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/_files/configuration.custom-printer.xmlUT^Q(K-*ϳU23PRHKOKU qӵP)((,Q((+I-rIUr.-. (s()PK P~A1C K sebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/_files/hooks.xmlUT^mPn0ؐZ!tJ"r >@ o23|5fKbVe'♬ūjtf잭0IjL1ֶ-mWt}﶑JLZBO,+DܖJ1~GN4D]6;,:\"$|=4Ǡ&bTp aWg h.K.Q&)@@-\gKDD 'eXgS};{0g PK P*Z sebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/_files/raw_output_ColorTest.txtUT^VAn0 B6!>5muIzqVH*=)OzS.);ҦSK-.Kߌ/$. X$ &%0LIJ^|(B@3g- ȔӌLJ֤/hM#Y9/ nS\H՚DzGƒyO? \0݁"<@4Oe<ޝƇp' _yX6 Ѣ=BK,b4jc EnMO&\]KMb.*=jfВ5J1)ho4X"f)lF p]Wwn= Qf'F/[쫯kbةjE_RtnXG5\*tTeL[d L` 1,SܨPV0hK+گ 2 7?` U+LƣJ!$t[EFCQIQ(CR`.Eb9S% YT Sҟ'+Eg(,6z8W-zA6maDZ6q᠏ԧGmt߼IuVpcdV`퍡)H?)drן־}w-zx8C j `@:no8_BoZ(rtcΑnj܋H`%m?-mqiл?4\9\4a,<'q;pCH <2`!08?UwE?lߛiY3COrUr.' }%&xJV/gu\eT`u*cy*%Q5V0eifm+D)s"5ZڮCLPfʨR,"AWWEznt-2S:щewh~%Jzt|BN>V3xַI=Ӽ_7߭&s&=0;+[ƿvgL &kubL.FT#j|3MTv|f#s6 D*Nz '立9(pq40߇k@A`b _<Ⱥ)dsx^4PK P T sebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/custom-printer-debug.phptUT^Rj0}WC`9$y6֡K/YvR F'-86WڴB sH"R!wymZ k ^q6C Kӻ)kGBُϵv.<[Y3NF*q o44Nfsq|3th))\ I%hQ,_6e )D5%t_j#LdWsSޫ }k46߼78J`ٚ%]2x_+\_/xJb[SβN3u,θoIj-V*QFY`$f@·TD?2sZe5ŠIjzA \r]o瞛3Ros~b!_A| _ L|PK Pz<bV sebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/custom-printer-verbose.phptUT^Qak0~ Ar2m,$4(5%Oek`AwҽwE.vFw&?ΩIiȥMR>ZOcN} S٦)PA> R^->VbB4r!<^ G$HOGnU8ev*KL1Q"Np?+3 h3(T_:_}W7o lgBW",8iG' 85;)1\/6s4첬Q %eeϋ+G=i|r{2ȝ8'oޣ,4>8ԟrR(/rj rUR/:w%t~|`.%_ U>Kv Bpԅ(+n기xoQ 4"'M-8k+=MxF?]~LՌ+enYoPKq# B5(5xi>F8fLk1H¤.WD*u(Fh <8ma92vWc-ވ(Kj[lV!smWz=r7Q KVX݌)_OlWJ>ӚT _s]FYF>W_!*l39ͮ}^7:\~X4$9ګ҈y{c]%IU.|4 sMSsqh 0vmGDCU;lZ! ;jay(i9uʘ9 QF@e'!I&h=p` H QTehkm6.T8_'̩DY @t܎3/7=1_3aܻ~eror6pz5IB(- d~vk,rr~^>ߑٓ\F۵ݩs\}HS, ;*| ԛ[ 2 9Jr#%ʄzz^dM~ޕp٩ 6:B|… yܝg<8x O;Ndf'25XQKH.1NƪZvhhzYpƀLXe9͵Re^zfbtQ$sagS;]Zcy"cn {a{=ҹAbg$YkJg1snCt\1/SRqK{4ٸJ̪Ꮣh _]AGX)28D=UJ░*m|Ƣ/`5ՠ٬[ġ_1U4:C:kwR*kZ5XѹղԶAm{3~6N(.̹DD`g‚)!-aRSX˹^18fzڱE}?lwebZ1ck F'R, 1b_i@)d,ƚKkqG'\nQbP2;>r%PZH BK1:{#M"dfj-K|@-]K 6ޛ(屺7ڻz-oTt#i l{Aѿz"؀BخmV޾2<">nb.6q #^ ӻ ڕJw;'I@v:_&P- w0]_'Pb@ā1X+N 堶<˶Y.ϱ<n}K¼`şUl|Rө*Q1GԴ ڀ)l\_PK P-5 E sebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/hooks.phptUT^k@WCKLJ_b{ w5Ntnnwr\Bo}D,΢(U%AFrU[Ah ]ٸx[ƃߘQ4=˭_s%,vYSF u\KWߞ[d$ #LeOI~0֊]*%s\dt=<O҃ydkiNO^C>'ɷv>-=,^&I)x(J7KLq!IWiM.j2y%72IMoHœp98FHrJb^aa,u(xe/ 9yΝs-jժm[fC!Umvs<hp 9$ h- t@Ƹ0c0Zk,l>@?X{̼#RH<7'[Gf`"fb+y~-f1rGFVUl95ڏ"6Al9gH?PK PmLN sebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/log-junit-phpt.phptUT^Rmo0_qRWimm0M*Ud+xMvw qV"ߋ{$^%j_J:;)6"r];UΝEr2hL،3!Ǭ*Aon%*ga h+36I`s ]zm nMӻ2M!?",^Gl#V̰{x1ApFSKpU֎-?b/5$ͭ.KRu "Mygca{nuR(fGM⦨icCB5Ƴ4xLR&ޚx~fS6vh%mSR%N<x EztI>UEGIȢ6xt쳬*[ciw[+Tcϓk)Fx`&jzRBgV]\Z5&'0:Ql{}4]6 Ic͡hi豿PK P@LE\I sebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/log-junit.phptUT^Xmo8_1-$JPҭ=iY!71kvIJZ[Gw"D<_xضdj$]Yv,MnW kOGo04?w?bowb"? =IJ@S3)̦N]f(qq m tBm!z L1cbb-F3 d|U<>V>;B„E[=IeߺDo9S(8>"bUҞpӫ2,کVC6e sX@dBh2!)R#&4q,Lܐ7Ev-upAzw+ܜ]?7f]u+':҇]j[+7l@}wxsOك zA]0-PK P0AK5V sebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/testdox-colors-verbose.phptUT^}Pak0_B*4-~1\d u*!ƨ钋(:7;xޣ`R_kr5m)uQم8ė#n2齷+U(',p?=vUVE(7u3v+UD8*Q6s`&ɥNn||==Z křRE>c˗$H=u{1=wcckʍh m: |߯@E)[Lٰq(X2 .K8qg "MPK Pcٳ3` sebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/testdox-dataprovider-placeholder.phptUT^ePj0}WAhW;C#dHCP F Ijdy9p9.KB=FKp0mUFG\]|noiݵ 6wUlNޗAT;{p7+hQSS "B (O #\G }h/0pEdV@ j̖+lSãb" =U J ?F1.c zi[QD8f lR׵PѨR4̯pla9uR(@W %qS4w؄T^&K6v8899`Ѯ Y.k`ͮ{q0a-n6boPK PWC<zS sebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/testdox-force-flush.phptUT^}Rn1)ʋ^(RӍڪ6U]{kSxt}I8T|}crQ)%m%P02!N>ceÕ wOv&]q'/1Pv y4:`)XC5;X\I-:0|22?Xuifuq:k(@# -8g=9)bC:v5]ԋr?H,s({c1 G'Cw+$bivǻXVƷvѨeJ~VT)EXaLvÆp%cs,*.X 4 ᧥!7|"hޠ?9ʶ8b9|և}o 3dW1PK P{M sebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/testdox-group.phptUT^QQK0~ϯG[hZMܪVEFɺ[ IMRY ⑐}q&sVU8whV<80@ BV{qJDn[#JgL*qqEWb}] e?3aD,\’ǹ+齬aUNjC^w?pCkہǰwEϕ i6(crB.^8c]ؕg9y GX@JZ8Cf+ l,\T|D٣+lem1qmgҕmP.o I(7qxIIICteu[,i*ܲ?Eh]ඤop գ*gHhTy )S`;,?m,뼑PpMpƟa^4Nm̕4J)]Kzw1rKb=UA^FR9'T=qs\n?v@X0Vh `șdѲdYSM w&n%d+`-^CH;~䨿/ϸ[ZN)rzzpԙ_p&y\WT5|ED_]X8yR,keIC*s&E2Go8_7(5м|1 _PK PDL sebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/testdox-text.phptUT^RQO0 ~ϯԴL{nPt m̌6)IV~!a%Jb?;<9ynZJj/ڥH{~Kp,"n V'gX(=Rm/H<n/X(J!CJ JW 9m3:C{۟cH3jҬ2j-.9O+V鞐*mJ!O: l6»3 v.\?~T=7zZXyHB-Z#H0}=QD)h3HBCr"ddǼpQp_?a<4Ojrek-/s^V@i7ٴPK P}tG sebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/testdox.phptUT^UN0=?ʼnQt' AE[4$Rbg=~$;a0TJH;;1JI;.wK۽V&DWF8UTۢ"g \l[gdb*:}+̼*P9 p̀'AX .keCA7уN0ݧ1$:(\y*ͥrhD^EN̻GoLQ"鳩0Fb[2n<\^ .u܄ !ѕr;!gIG@'TBIi&_t6੐h vjɐ>H^)0uj Vu.RzDK[ 򐐇8pCEp6FiU*_6)r׊ȳ1[{4JނDhB:tӉclAʕ)CGavp)[[`i@.Vcc)jp>Kc;CY{t4*>뼍*ZyP5%(k ^fOH i2uu{qV6P:8M&전YM{m$PK P59q sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/3154_namespaced_constant_resolving.phptUT^TmoH_1Jll_ڜ*AR 5$*ܩR^`{׷//YccHB[agߟ wZ f" 3*<̗L|1V!SPyajHhI=%uTuj:>rLLAo&+PD'JAB{ϙ&M!7K 'r \Ȍh&x /> x`Ch' fKMGPȕ0KEB-qbӨ9ONGN):h#dr3CX-N  lh]~iA!Ei(_@cVZ5 .%Euf$Fr4 px vظmUt$0I!> ?GAPV'Bh xX.XPN%xP]H<6nz]{Y4cem]m7W[6<Bz}~MஅZZl]'oC=ՠ?9;FJnle؍Z/)e_x3M/^ָI?VkVWrݧ(*'@D¬u0:>+|trA vu 7oGN=8nn؇$Y^&z.E;,Aؑ<½kpx>H7zs}wO)2X{+򕈋y{s8k=»VӠ=*s\OՍZρUS! PK PȴS sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/3530.phptUT^Qk0+n!E6Jًv,4ۃA(MƑo̻\5'5/mTq9:mt׻M|s_7'"AAPNTJP 4iӚ´1"ژ4 8 H{)]'|%0`̊l?g?E~㩰37jpFX4gRŬpRX/߼zM7oL3!4V nS|QKqdA gZ-(P2IntTXNN${@[ E4k_Ҕ6h7JY)6n`AB$hfM*aA7,vxY {G?Ǎ*V!, 0Ӡ^;`ձ* _--=mg̘C(|uھs''GE[:O[ NYq; !]!t;Sc  \z*SnUMiNpS/>.qs UmSw6/6شCp/F\%t }˿9\;yYJ;Ʀ2LUY|T19@%p^_ *<(WKuXh̎W[S~6KuZּi?PK PwM+SR sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/397.phptUT^Tmo0_H jMa)TS+ҪIE!9Gbg~i7M;'@kOQrs/t>:ɴ.LgfKD+XJAnsJÙHvT@ϔ27:Nƈvs$$%xJKH.A mHqJi9KD3I*7#t; vUYOΓHiE_z<ҏk!ɐpx$rZNd\=\[~/~ tN0K&ځw T0 jXqW,O!i oűuNqgs}!Z%/FA$//E?-f}+e>Y<% *A}z,,?㰫ޖ #R1rJuV,mK)55ZOn„ƒ$4þ GYUPiQލm_OI ((Ap⓽I6'EР a^M}%RZoSҤ6.hE̙e7~cc{fp>96Z{r7c)M-:ib6VZ;M IЂR[[|RQhv8+hq>;yLP^%nPdbyma[sHh_ky<ӳ!z7ޜG?g9ڐoPK P7:ݏZyk rh\yz;{vPz=5}VcK,^um8i.W_]էPK P9'-NyaJa\rttj;bgZXPK PKG(Ck sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/class_dont_call_parent_clone.phptUT^K0W܃ _W Ձá+Ko[\4u7MI]}?t=(%v$IbzL$[ߐH=-{^,7xMYQaP";RȊLc23/i? \U`[7z^pZ0å4e;Eے-!k i >xC?ì6YM i-mvFЋ=XKŅL[q#Dw4f ̭Q8-_u?x/U% SauR<8R:Ajb6kܒPK PއCq sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/class_dont_call_parent_constructor.phptUT^OO@)`M4^[1Fkb"el.. I-0;a9f7G%) MFu4b}xCA5*4 i3.]'KFTcƞ]RYb-HA1}XO{#fe ɾاZ)AR+cuU^t53^IVt5cx@j3H*ҙNR1vܕ1(knu{:(ht=b:+TmdB~)+,e+-m>'-NyaJa\rttj;bgZXPK PU sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/class_implementing_interface_call_parent_constructor.phptUT^_K0)à,nN ҥw[\4u{σ3&9O),\Oa` ڬ± ^B[mzESZ;xzSI5%Ƨ|C" 5R~X N}&E3ˆRTJ Vd-u[ؐo% dſRjUT_Ki(Dn\Z81XkcP#IV֌ug{uI=XfD`BYagtsqaln-u r1ڥNVS0 w PK PU sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/class_implementing_interface_dont_call_parent_constructor.phptUT^_K0)à,nN ҥw[\4u{σ3&9O),\Oa` ڬ± ^B[mzESZ;xzSI5%Ƨ|C" 5R~X N}&E3ˆRTJ Vd-u[ؐo% dſRjUT_Ki(Dn\Z81XkcP#IV֌ug{uI=XfD`BYagtsqaln-u r1ڥNVS0 w PK P3ޑ dg sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/class_nonexistent_method.phptUT^Tmo0_HITLMaHVmLUd<;sl9$ X9EwsM#RX T  W 7VR5^Х F[al<<47uNS/KE]. (]"K+c# G+, Jh}|"ڣe| /5*U*nn\&)@f{vlVyGDk#W!i0V^a PK P/\ sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/class_partial.phptUT^Tmo0_q*%Q _41XV mLUd<;svݴs 2 {yA0}Oc2|jxz*]W&zXJL)K\U Vɇ{orH0NBЊ:/9:]@xrLy +#bͥVReDi N WQn) MP$R0e*Yҥq{.B,4}B5)AMgXiiZ9knϒr='W\h(zh=t4IVv *B,O1C č Ios^z#dJ{+7T#bjm*0ṰX~Y"&P zA}r4]+:8!z!ܝ}p}w;m-nu~2696&6"4|"d̬L$)*6_&w2+ocbCjaHPK Pw/bk sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/class_with_deprecated_method.phptUT^TmO0_q@Ӳ-@m:VMjHq`9 MJ_`v|Ͻ>g{̿y\Nn׋ |qq-o?1ԋ/(PZnwYnѱqe߹^0UYtz%#XJMoߵ.V8h $%R75t5cC.Bͥhʰ[/֋e)sj E$U'ȵehgYGמB>0 Ui1CjƀGOZ{+U\h(ߺ8:<D^*(54`'m5y4"Bd>-FX |5)2rN[.Q1TJ*ǞpݷQߜkp`SRƟ?Ë?r1FS,P˼O eNb_Dil m4b_l9s#t8Y`l+Mt43wpOFg,qn*O8 Dr\oԮ] ј*ZUaWG:WbPK PskTf sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/class_with_final_method.phptUT^mO0S Dc$b4qfM$ni{诜1,ݍQKPŋܢD1Ѷ4*As_("Ub V+e\%6gq=*`F킴)UEcqUg? ̚VI*b2&dmtv55[3! oaX/ҝ$(q̀VK8Tڗ;z`Gwc١b˵uE]mn9^G; 778 < %']wd11qS%qfPK P#m sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/class_with_method_named_method.phptUT^Tmo0_56ib"ژT *+MH̱NSIHSs~#f1QJow*|{Y| :2J__*|owAsh ? '_G~1_484"6ɡB梠OTtiel4V*䕼('9=]z2Q2F*JzXrvCT3=wZ6h) X)Ud25˒F#?ɵ !C^Fp6F"RXsXD`%Tdy HS٪lP)ቡNd* w8gsEx镭#ᡐXYIDf.p|6 bINҀ^;ۛ,߂Nxvwq=M+iZ绘;Uwqf- 6h=D>8rd6hb+_4\?6^uwvL)JV'kVutLMI-<X<ȈYoPns\lnLԥƆ(P3$Cb[lq(.ۿPK P6|#[x sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/class_with_method_with_variadic_arguments.phptUT^Tmo0_HITMaHVmE9vi9S_їW|XORmw2|z iV 3LYQ|z}z-}c7je2ptRKC TxquNS-ⱎ~ Ilh,%ǃr>Lj^Hf>pqo9J-9Sl?i%oSl*(Lmr?hVx12\plo~TQm[畃˧ b{^p@%I W/PK Pvvor sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/constant_as_parameter_default_value.phptUT^TQo0~S)LilhcR%@VHH̱nS $a }wgtmd>y|\χ*LY|,#Pv]:C)k:[\SǚK g%7׊G_ݎs(Y&<+#"ͥP\hZibly^a_zWB4\e+cMv= 6_3>z~H$Pr"XUAJH-}Q_'tܞeuG.4Sf tN[g:crxAod|5)`xɰ3bv` )iҙuX"iJÄIon{Q9uz5btVV8=:=ع;tΥ4[ء>묉 vMI+'P8nnwi/o_=*xv98,9U%b`xժ$(q\kPOPK P3?<NX sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/interface.phptUT^TQ0 ~ϯI-:‰`vژ4 PUZmҥɝ}N XUgs'lEUwPrM,9hZa&wxyW1d|sa(<ҝMR +[ЅwιENE@CXԃvR| dI'APDG;O'u;[Υsw/:cHsevMM7k^eGUEs(=A?f4<:'9%ŕXVGê>$jykϖPK PFm sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/invocation_object_clone_object.phptUT^To0~_$jMkS&+ҪIE!9#3nNwNAVl'Dξ >N#z6Ta Rmfw2ڼ_|HނjW 3ҹ%uk@# GXUh Q*psxAx><|'%3GtiDt*+FU)XoeXg"bYzB#elfݷpe .Z|!HmM 4P0By%9+uK^g?Zg{ q?v5WVZAjeJtj})HJ(ҰKhǫn4%G[Y+p`Ciji:봞Zy+ rh\yzO>2 -Pz77oj=:spNshb:I QiMuT>PK P77-Z_ sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/namespaced_class.phptUT^TMo@Wɶq 5iTT eػz7ISw.z xfz޸?{5}}Ιd_?1TQJe1EǾMBؗ0]mRIſky`O7U q ɔdNm[fi"܏ږE,X@#󘅰 ӄɪ𺥬y`-vKes9HE++ {"BN=H( x%i r? O1e3wV":MSz5MoČS5ԅ}  M0{NmfQ8F]h;*ITCr3ԡYڰss>m8u!MfkbrVjvLM!W+y2Gbum7j;N_Ԋ9HzlK͉xhr['JK~nԫް {nþdž}PK P8Rq sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/namespaced_class_call_parent_clone.phptUT^O0W܃ a#2ј) HLYFwBekkۉT>5s;gs%nđJ ǂnoHM|Uj VMg2#!Wr-!C ;(FMb$y'~eJ&3&Y.sF0!Ih.8vȎ%Sh7$L~Z4lclq '¨J nPSYTWVȈAb@Z[4 摥+ϖ`i.2ǰC,ג'Jh";ÛjPK PsCXRw sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/namespaced_class_call_parent_constructor.phptUT^MO0 > H'$6&6$$.5[Y4e ,N^p> 3Y41xt=?Ptʪ\%G9b7 @QtNU ~'4d=j#LLZh\k#8|KODW[[OKCvYs,Pn*,W:)]h5+ܰPK P"Qv sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/namespaced_class_dont_call_parent_clone.phptUT^O0W܃ a#2ј) LLYFw@ekkۉT>5ݧ;gs%nę#j<,ސ95;dGB8=xyStu}h/ZB4OvQ|IOeJ&3&Y.rFaYrj$4;ZvdG)cNy&T?-Eyv0<[!p‰4¾۪{y@TvTgUzU53bi7PVN&x"i< yd E64vk  chsc~D.ג'Jh";YmĈ;PK PsCXR| sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/namespaced_class_dont_call_parent_constructor.phptUT^MO0 > H'$6&6$$.5[Y4e ,N^p> 3Y41xt=?Ptʪ\%G9b7 @QtNU ~'4d=j#LLZh\k#8|KODW[[OKCvYs,Pn*,W:)]h5+ܰPK Plv9e sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/namespaced_class_implementing_interface_call_parent_constructor.phptUT^O0WFbG|ј) LLYFwdkg׉{ዊM}So2LL(õҫ`n(QGFnwфh[I+e XI.89]bi.N GEc+H &=iPϫt@ny)I0JS)ݚEl6ETI4ſ\jUT_D# aX97ҝ4*UQPZhA$HUiFTu{7{uZMk ked bsqSxT.wпx( e,U|BTInPK Plv9e sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/namespaced_class_implementing_interface_dont_call_parent_constructor.phptUT^O0WFbG|ј) LLYFwdkg׉{ዊM}So2LL(õҫ`n(QGFnwфh[I+e XI.89]bi.N GEc+H &=iPϫt@ny)I0JS)ݚEl6ETI4ſ\jUT_D# aX97ҝ4*UQPZhA$HUiFTu{7{uZMk ked bsqSxT.wпx( e,U|BTInPK P !g sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/namespaced_class_partial.phptUT^Tmo0_qMaHk&A䀌/wN BV(:{{lϛ 3ϳwH.EZ|F)!on֥0]ddv`RZ7R&ÄItr%P5üu}SÅ\Ӕɪv+*ӥbWE|Z"qс! Lوؒ]v_Ci`\ߺkqJ;T}bB=.F ӵ+Ę Ma&׺$s}Bf(שM3*xΉQAJssV4bptr{1m:M)͈7:?y@Zy+ks(\m|̟DLc:~ekWI3X\BIi4&=ITZrPK PElc sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/namespaced_interface.phptUT^TQ0 ~ϯRr8&; &MT@Ftirii-vXUk'gsϛ 3cz1RAoR2}]P/>@h62]tZ0_ޅd7tBa(t3x};ŬivY/.c\hTkk$À$56"\ Xʥ]h$=c |Cvz^QDRFXQ*r(Ycsz n†&NQ/ ʫ.Y-bX-͜Rc Kq9ԃ8ȲХ] {R8d1&(tmR[P~d3S޽VF7{ WDQsq*rz+ ߧJjc 2z0%P^&BӬ徖Iz1[YѬgYݧwwsҞ+5ҬY]bSafbmg^ڡUS w?({puk9tZsQڴ;";iV}N Q݂=OPK Pi.8` sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/nonexistent_class.phptUT^PK0>` X)=6I&k6Br;C6EӋ6 tRRE4QSDXY \)鯄('8=xxS(2΃ONy yc[ft2/q|6cp̔'UJ2Ĝ!c͈0KPM-X; ~uɀV淖ELR iT*ʰCYm׽I;[orS(}Q9s;;H? =-p ڹ&+}PK Pk Ao sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/nonexistent_class_with_namespace.phptUT^QK0)AKS:ps RckN~wkԅ|/Wpqx zd{yĆ(PVh݄s)<=J8>]<3VgB39폙Ʒ2Qt5"pnQR\ƩKbΘa*PtO]?or˰&3ln[:aۈ S:jJzyl'S+VyLF | {ƒJWg_]E3% 4CV t!}RRe#Kgh72=BL\ <4PK PaVB sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/nonexistent_class_with_namespace_starting_with_separator.phptUT^QK0)AKS:ps ckN~wkԕP_8gf SZSzT{y؆(Q hnB9RTMjuͿ8>]3gNc?fT#D>gyG(=UKbΘa+PtO]?oeX#)Q6-iִmĈ:2a+VL1| {Jh*۳/V}Y Ò]!͋ st! JzY#Kgh7*9BLLI<4PK PkDX] sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/nullable_types.phptUT^TQo0~R)TiƤIؙcTSIH`@Nw}g12?gC"f$/3PvU:C)k:_SǺK al82@l$TZH5|<OE#4"\ {υW8no W@[6un "&4Z&2XZ:]*^ؿ MюQ դ*SjeRdЂ[<ݷe .269'C$,U& [Rf tNQQ>!O2U a8o)PLI@N[۹)qt @Fvu_R(G;^sf;p1% #:>=}puo9Ja>Sts5)6&\yzv>2 C'\87%Ǘr) ~NuvǖX[^m8կߥPK PzNH4T sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/proxy.phptUT^T]o0}ϯ*$*)LiPǤI,H̱HX`{]E>^{ ":,PXmvڮou"e}H B@1ќH,rW|[c~LR#ƨVx(!ZH۾e5{@Pq.ϸp^E{4+ldv f%q&{"h=e|-;}Qybqјr_uYw锞m MZbk8Ұ N5KFr`":G&v2 t[ Em.?VqDWYX30hRԕ4iuRY-_TV,t9O" {ÈJ .׻M,B9v{gLϩ@i4ģ,Gq_eZ$UZr(0g )ߕƅdKIWDWPו{0:F0ۿtȷgPK PZ,Uo sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/return_type_declarations_closure.phptUT^TQo0~Cjhc$"ؙc& $aSۜ1=ξKaSxUz|R'Df $hn7 7Qszδ\m|wc1?϶!J?7ZD&43:Ҁ^(b?dvP;}:JTn5dO_Vhaq5 izw^֨D9x!7c1t@%+Kw)W E%)Ĕ[9Ų O2 Q|bx4 $sHTY)HV678J'0[_m*d G+0)swrjAB7aΙD"N~(mrG~ o9 }RФwqlFqГVާs)ų . ҜIcSCnVlX`S"e nQ+k(UbpHsJ<Ǚ\KS`Kx3PK Pxϟm sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/return_type_declarations_final.phptUT^TQo0~C$jMWR&FVUC*A4XN;ی1M׋@EH]xebTו H\ui@Ƃ1߾79M N#nuP y>YqVY&ԻR⒢f򘮌5.#zl(F *ebP{j#(a'_Ðs5gTב2QR:(dкf^ i--Us\.KHдx,u$26~Gq5u$ ?5^OygZ75rizz#QdJ;0ĦFjm*I, ʠ  Yr|EݎӐxb:w.f;Gv>4;S)͟/*⮅\ `P[.'?8#myuuU_ղ]vIoPK P ޟop sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/return_type_declarations_nullable.phptUT^TQ0 ~ϯR[+=8M vH; mL 6NB[UNb?b4*^KUYFO۔*XJM6ui@'Gm3C0ntf^@Р,7(Y%/2bOL (7w(o5{VrpfsJ<Ț\̫Vn)FKxQPK PG^{ u sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/return_type_declarations_object_method.phptUT^Tmo0_q _0m VUC*BrGbgvwv+|Ͻg MQEr5Sq i!5^S0+]2х;bfum` ӎ-;>?TYuN>vn֒t?#Dۣ N\Jӹ3N}V^Z:ŦB8WkV*'GwOR)7}ڮi;*z\cg8wNUQ;PK PmS!n sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/return_type_declarations_parent.phptUT^Tmo0_Ԛv_IaH6&M*29v@h9{lf3bz7&Y5OI^EGQ["{+:3-F[(;of%\-"7%P9+ERdvP. )]06_dt?գ&!MaQ=; ?@K.J_skTxŊڧD:ѫ`"BDˣb[]I9!ᙡchbp16> gc~HEuHR//Y^^]&3MlT|5%axgí0n[ re}lIp$Rw_`Ҧ/wWbEӀtqOMmpV8=nzprtN4p|"yAZyjrn6"gZO䣊kqﰁ[^:?ǪDe18N,_NkvJZ PK Pةdl sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/return_type_declarations_self.phptUT^TQ0 ~ϯImu`vژ4 PZmҥɝ>Z찪Ig7M_iM 3i? 6 AstTR^-9jiFOC|or@r ~aMd~P:AH4W<(]"++c#KKGwK;UHvhiE_n DnJOژr>E{T+>zL"TjHR,:ji 9gh E1P xd8ϫLع}$*< )kV78yFg0l*$TI888.}gY.cE\mEGΜ"d+}p+CEfηp}8:Ϝ4b_,?cp2ztBzx\Kip}%YAKlj(ljو|,_T]/LR~7 o5Vp^sJ<,<;(8`W$ PK PΫu sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/return_type_declarations_static_method.phptUT^mK0SCfv:p8tतUۤ^ӹR\./rLV4XW4=GVެ1 vah$[a)ˀ3e]Mc p.K`,$E<=V:huZ=Hwzp4zXjK)>R! φa]ͷ@*2QIeؙ}7q [b9Y !\a @g2ƵJ? ^#fۼ+ep7ɀH{{ wҼ0GM%\XUhN$[f?3}D4fuI, ^c,mə=hqJkC!zabb1.ټ/PK P/l sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/return_type_declarations_void.phptUT^Tmo0_q0M VUC&LrGbgCN 0NQr﹗.l8& 5OYIEϋGQYU*P) ykZ-.z{Or.[gcpnnLh~ew^4UDդshucy+*wGwPK PT4~bg sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/scalar_type_declarations.phptUT^Tmo0_q5_B51XV mL( 9v@VvB|{9ۜO_&aU$z6Ta/Rmf2|Z|H>@jnoW3ҹZ-2X{u1Fi-J"9ݎ32P<̀$74`iD)`2HyS^S$ !ޏ>i3Xh0nS1Xk .fdjb*vJL5KdrQC ntӗ1iu;SԼBGk_M*T  4AV" S;OE$t,0-$d QP:^s;p1% Et|8}puw9J>Sts6)6&\|$e1>"NQ%dlN޾ {rTiwl vի!)F^uPK PG$Y sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/wsdl_class.phptUT^]o0+I햬EFhJ xqljQ>4J:Qs8^e*IJn˅[))+q-QV4mC jB/S0VX լMvn)AD̗ gSvP#TchVvߡ_C,JÕ5a`(dlxBv<~=X3X~@U}^T$LtAY+=U>KĜ:4^$-:\Z8 WphjH|2<|6AsQ( \p<&]'8u/Ng60@{0рA6MW4fDF# ';=Rm{Kn7q%ZnЅ?Hϸy)kiG^7EBp}Ӹ@nеۛ0ݝ>V$q `ֲ .a{pO@Δ/S`쭏Sl2X㎠9Ϭ=ܢw=ZZX Ny;kˉ[)v /oQ<_8Vܹ5VqtkJlG \%)}*$,M矧tЬQ(n1vJ+oݼMFL.!~FW8r7D("Ms],>bdw he7!o Z2"#v6X=7qi/A+3AqʪRL5.dX*~Ί" E ݔj+ڳ[+)`j|JM (=]&>/#9Fz%\<lpOе; a^B<)PaSbhPK PL sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/UT^PK PNMs^ sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/call_original.phptUT^}T]k0}ׯ`i4CB )Bo-RK)ﻒ9^ cdݯsνr=<|K+0UP. Jc Y6~zSkEny|JN"9]Y$]r';#D/+4PƾL=]z P[Jŋ֍\*>ªyN+GBRӀ.fRD ޔ.o˟vU=P08BQznH! .As#ΫB}lZVQZ74˲"ǎ1O#ƾ ,kP67ԼȐ@%r@-WPٳc i:g=sL5=}= m|Rnf;RisAbmNOx;\_OCڑvתi*jszX) ӾÕGnf?;?~ي,b2z:1aN%'pĮ PK P t sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/call_original_with_return_type_void.phptUT^}TQo0~8U ^*ҪILGbgCUUm@ZQd6z% yRJn*&3HYQb%$+f֬FK0V$xc`պ<ֵzJfYFF( Kèk!?vdG9P}L)t tge-k*:<rA7xyОu?>NIacJfan]\ ]>a2XqK Yn嬨9Eq{†KC֫Bp=y{:ƨXi>)4VkKjW߁Sٔ6v"$hwAK)=8jv R(ܟ>vLCڑvתi硍*'rRf;YY@ᆇGvj*<)w nO[M`;M5udZпO $y W*:O,?PK PR,":g sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/clone_method_arguments.phptUT^}So0_qv*Ҫ&AeR<;sVS@-q8~xch*DfJAYf{Wm+0-amH 7+_纆Rn BnejItٞ1]itD#Ÿ/g* >*)"Yn}tFckmٳPK P1l sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/deprecated_with_description.phptUT^}Sao0_HIZPX'*Ҫ!JIPY!9GbgS6Ub|w޻g<|> si8\ *1e"CBs((x=DۯŦ8V6}V%MPl=&])q*ОPK PPTo sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/deprecated_without_description.phptUT^}Smo0_HqhW(i$ؙ㴪*]€Ys=wE}(=-tfw2&?~w54( B$\P }梠)x}6!W⣩kyNЦNP1@(]& (sڡNөWTݰ2aAjNVb@9lR#cesi+.mw=̞EWf&~eTZz%p cvḞn´ƕ 7h| \%BS?gL\͖t7݂⠔TYL\iRz,ǣ~ |"&-Qږm^/DD ,W.l(;K[̵\g'8neB}zb;}ps/k/fW. 9vIMEjw [ΧUqB4T1?׽bg ǣv]x EMWsJ ty@PK P#>&_ sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/private_method.phptUT^}R]k0}ׯC2n,ARj_7ZlɓQw%3'~9$y}Lrm2حI,瘻XokCV Ff_54qJ04t5y#Om^XSZgaXv B ts:x}{P6WY]j8J h9&T+}hnMIYQ6 ׶00Y%L/`2Q< B $uHܓ4c9eiM|'] Añ0/e+TIr3 \5A{,(4Mu=mUUC`6G ;Sz>.W9I'g=9vM+[epLw*/.J jvPl0pX 8:9%&}KY>@J3j8lkЁPK P *a sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/protected_method.phptUT^}RO0_$)kEUIZdB&v\@3HJYyp|8cvkQJy 5bןm3H i!Ѫ|FuưWT 2?JF{gFYB|Y <tflFfcZ /w0 ֳfC+,,ƩjMʭ)W'6- HE|4E +s`|(IC„OM /XJjBsg ݔ\ TAє_F=S95lM2AQe^?9Eip߳g;{ݎin tqh9)_gJ7htT_ήU8}68odb[/PK P*&d sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/return_by_reference.phptUT^}RMO0W6h {%J+*VZELibgB;vvx1ɝJ6܈`6*#qΕD^;2\ L0J iMt']^cű϶i+˧PI,r3L^Gik{G"v't/rӽ_pzU1I'G.ّvM -7fp|U)wweV>]<BB)12NrvϿ+i0VA;PK Pw?u sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/return_by_reference_with_return_type.phptUT^}R[o0~C$*+)쁁cR%,@Fbݪ;vFܾO.&aHe:iz+ nے&\_iŚM WJI>SuSR#bIAb'{BLe1ڧU| 2<#/"RoF})x@-NVw"ӫI[Y?u`*Y43} Gu/l ZW82nѰ0ƜoJBSWӓdkXZcPjc ڳ|N =C7 SؾQ:4d);M#zpa3]YwJ# ;#z>.9Jgg.3[ٳ'픛 *k;\o3ܑ&gU>I(#_h3v;ߣn){'Ub;RZ Q+6jOPK PA=\ sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/return_type.phptUT^}RKo0WP)Jh{%XP*RTI&%jU;vMhVμ' _0$2JsŴ sw嶤 9WWZefo &N$):)Τk`@m|ɞL2cSo7TWhKߋT;}40QCҹ(PʃYdz5Uwv++q{ݵ. R%fԀh.=T=My^AJQ&-_ƘmU^hj#4z2S|ê]vCg c\mLB[wѩXĴg3a W9F,~iD9l0-wVIuauD"_霣|oq=e={N26i2|&dsO2 ?B6`=vwR%&c+,޿em _K6JtEF'PK PC%ZSc sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/return_type_parent.phptUT^}RQo0~C$*+&jc$,\Gbgn;; ʃᄏ8^N-ܩdG+ÍHhfRdz)n>ے\CX-̟чhH'=y)EBOi79dV&F(I7\р+ }ٻz @llZG\ 0iWs^$ר2@ 7/AsSB{yc949 5{ma,1_l ҸhɩTY$tg챙Ӱ74Q73e y}NJ1NmOqrIZ?8u΁_P8pm/J{;.=G,n-T3}@BNĢ_Wv:ִ}* jwܤt PK P?vO9^ sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/static_method.phptUT^}Q]k0}ϯ^un2a2q mҥn}7@ y'+aNa*Ak9h`a8$4{h W\-rm0atݶ0Sj"JBƵOĘNh4}"FQt{#U)^D$MJSx:Ͱ$ ] i^A&};;Ԫ>s.I/aG)MK^xqd $ D 4-Bp |,֝S+l:*|E#UظgÀ$s) AȽa$nrd`}bPK PY=wTEo sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/static_method_with_return_type.phptUT^Q]K0}ϯA[nN|uuinMM&=iC=9_ uC|ʡFl]m\p~UT7N 3m 3"vd`Ve°uE2` 8؉1]aJSEyQF$1MzSxlo}am,\,қ5H66sa޺cKEwyzu= ܴŋ# G*_ذ%*163ߢUI ;1m'o$ouۥws!{x\JҐ!TrO;,XyjPK PF2^ sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/with_argument.phptUT^}RMo0WG%T\XPZTL:UU;vrp7E(": +ZDbco嶤)$0*kdb}/Ø`BkA(Ƚ@Z%VjE_aa^Ï9bw- Pο/8#\Fjs)js-1!gB;r3eeP^?VnV7G%faDo6nΟ/_ҫd~0mXg3Wйk) qGW`А昫B6FO̽9i8GWjc.@Y>ǧ]#;U]+je)s8ZVis cӣuOqſrIZ?8u΁Sn:p"m'_N{ [h zRÓSbe%dFm :OPK PS Bf sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/with_argument_default.phptUT^R[o0~RP@Ej5v$,79).9UUwKX`wc;he -nuJhcK-i I. XnK&0&*К|4r/,ЬVZga@:+?@4@9眎hp9TͥεHGH" 4xCG( F:rY}WnFn~{~^mJ2v&zh)c* ¡zE+ =Gwh~a*4JYkct{c5 w5v{;5JXUshzSe۝.\o}6Ȍ^Ӕ9|ns8Z-Ab8Gる霣~ror;c;NisۭUi3|:oJs0,;`G(n(WHnOĤ8뾒[t PK P>mPހB\DY(vPM9'0sm ZRKc2"3| Y BzƋ?kٌH5m`*`ZND#dPp!` A=pE =AqIg[.^\mv b iGrg5O+٬t3_Z#/}چTW ]BQ(LJ,*]ōBtRӃ#އt(^_\g%ِ픚o"`{W`t5ޗ6E:)ַ\.|+$A[!PK P+@k sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/with_argument_default_null.phptUT^}R[o0~RP@AEZiTj=vܾO=L>DSɖF<%JI)殿UB 0 Δ"othfebr%Ь' Qi"|ۓ=!\f~9r08|;җU(Ckp{ eRD9w^VGL^ޮϿ_ҫL0y9 `4~Ӕag3QкsT) p뗠ї 昫B6FӉ{ 5f{9r,%H ZTY,B3(\֞GCQia>MY} GýcJ!1Q3sVOIp]gLsgOSnjmapqST>;BhF[`G(n(7OjOĤ8kcm ړwPK PBg sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/with_argument_nullable.phptUT^R[o0~RP@EZ5u$,79j=v%,YypDSie -tJh<]+i I. XnPMaL0\Ut5y#OiAXY+/°;צt 6|;#!~s:h~P6ע:"! &dMWYe,@r~MIYQ6kSzs]3F-ئ(>ΕN;4\0\,1=[;=Eѝ%r(Z\Ykvga [yf 24㰃} ۢ{˴9A1Io:(ݛ\Αsnܺv'qU *_N{{  [j;Ró*12vdF6;PK P/mbh5h sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/with_argument_reference.phptUT^}R[o0~ZP@EZ5u$,79)9T{KhVs.>Q0EN';ZYaeB [(Z,1w}SnKB F&ۿ%Tq W]hM^ ShVJ0@@SK{QA\\tALȠP/$3(Pȝ꧒v0mv'oצ*3hg2/`2 l& :Wz:p :2sU萲hj>s@>5{n-5j㘭 PYŏD׈pUdFYiJan}8Ab8GるtQZ?8uݝ1͝io4PչuV⒴TT{B9FS#ʟ/i;RÓ*12ߚvdF6PK P:J>j sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/with_argument_typed_array.phptUT^R[o0~RP@EZ5u$,79)9UU{Kh`w񉢇("w: +ZDbur[\`52ܾPMaL0\Ut5y#Oi^XY+O0axa÷9bw- Pο,9#\Fjs)js-RbB ڄ*x1f.$ Aj ܬnW?h8ߞ~a6WWE;y5 `4}۔g3Wйs) pW`Ж昫B6F?W{ ?Q"r2حNI-_c]ߔےo tN.&) 4UbVI$P߁01(_ .GۃJչyB *x.d AܬnW?h8ߞ~a6WWE;yI `4{۔Eg3Wйs) pW`Л9昫Bv?W=9i=b'9SHٺeGkW89Uݙz V{(58`(߇y4m$v'(r}\pq9JG*g3;s 픛:nJ\6ʗjV4h&1vVemG`CsxR%&]Q[_ ڨƠyPK P/ @k sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/with_argument_typed_scalar.phptUT^R[o0~RP@EZ5u$,79j;v%,YypSim)-TFx<]hi5"5`B)F(J7@s+S#/\.ۑ OGףQ@fJ_skTx6BABȠP 'ReڝGaҖDN^Ӕ%|f}8:SA`8'ӂ\~vOr;c;GιqN঴Tr\f0{OP>'oUIqv; }% jt$PK P 5;i sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/with_argument_typed_self.phptUT^}R[o0~RP@EZ5ԋT *MNGbgCUU;ܾO=dG++LhvSE9殿ےj2c᪢ xJ#jX}Ugt kq B tDѨRm.EmuE:BALȠPoǧ]#;U]ʳje)sp?ۥĎqL"=9Gi uwf4wr@U [kfPRu"`XM%wP2MQ'دTIq; }%6/1@>PK PiLq sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/with_argument_typed_unkown_class.phptUT^R[o0~RP@EZ5Ե$,79)9h=v%,0ʃs.Dc{he -nuJh2r[\`52*ØsUхP<{afJԊÞN郚܁0ۑ 1(矗 GۃJչ1!tBd9x(ߞ%@bE{1Yݭm/?_ԛɼ0mXp裙+\I9C+0 ce[R 1-Q'h]Φ}ϥ%FL<Wuj+O@ftv/s[ѿ~s6'+1=y>M%Jg7 \ݞ9vMU[n%KAK׉pü*0J|;Aq[}m[`CtxV%]Qn_wJlmT_lcБPK P&CCDm sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/with_argument_typed_variadic.phptUT^R[O0~C$ PZQih EINZhB;cII;ʃsn' ?ܩdK+ÍHhfR)殮MISHraw [ W)E SjhV% ׮KiEU'{B41QDF^Ә^Spt?9Dz ξ9Eilewf4{sSCU7fP\T3r  n?@MmG=nԭJLڌ8߿+i0}A{PK P@6g sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/with_argument_variadic.phptUT^}R[o0~C$hZ!KHu4),1*fd$x0]|a!ȝNwʔ`:#QX~cshi! ZnTPO> p]ӅP<{aJԊ> 8 \r FYsNc\qAe\B,FABȨŚP/s@>vc6{z3 nJPֹ~LNALw&~{P6:""`LȠ7 ^=d9.3geӠ@>wFnVJˆ^m߯O?1_袭vj37 }FnsTFu:ݜD׈oU]G 3zIS: ;(ߊ^:m:H妇8#s֏n6g5;s 픚:J\փ̗jy+Taa8z斎t+ 6-EJ]Au0'L \ijYiy5y(Su:AYޯPfk$>Nԯe;7/:υZIqMa4"+=Pp&#RJ%уfmd}ʡ /k?<pXmbhj/PK P'Q sebastianbergmann-phpunit-6775051/tests/end-to-end/phar-extension-suppressed.phptUT^MK@sP&zq!MЖeM6u!ٍT[R4 < bb4kkZ Vw'ՇN =h#,{wO"hTI&>8]>ӫB,x5nζNZ3!/X>F X"pVh{HQS_?vVr0NSB9akeTd%HM~4ē_0, uy٤X5(z9 I< )*8ycxcx `7uw\tbA"[4W`3$>zDO_PK P8sE sebastianbergmann-phpunit-6775051/tests/end-to-end/phpt-external.phptUT^ q r5416RQ(*K-RHO-S/QHKIUH(I-KQHI-uqwq s/((J]#\C(N(HMFR^RQPK P+@풖D sebastianbergmann-phpunit-6775051/tests/end-to-end/phpt-parsing.phptUT^j@)P#rީ %M4%RJ b%M%vgoߑzQBo*Eߙs)˼(o|o z9b~M)gُAVyS U9tA|3_Eʯ!XX׽WCݑ}B_[אN͸̗U D$Vz4 "~D</}mm`K $`n_|uiN6:͘H.rvq`aDPZQgkV`%pX)bٛ;X$D0w&B1ݡOAvIza )dB&3׭Eci`S_A{ lil0> 5=Q .KADPK P:W:C sebastianbergmann-phpunit-6775051/tests/end-to-end/phpt-stderr.phptUT^ @E~[cKYѢ ZN.$_%(3OoV-^ν *+Do`NIZ&ýoP0j-l!۝t6P^-G~6dp ,d ,\7}(T@tQTLvSo认?zL=(\ؙPK PݩB sebastianbergmann-phpunit-6775051/tests/end-to-end/phpt-stdin.phptUT^]1 0F!W8hB:ES.o{ǧуQDȐK3$J}w[>%2=v'v_&X%agewԬb( Dm AT\uQȎ~&?kPK Puj{EB sebastianbergmann-phpunit-6775051/tests/end-to-end/phpt-xfail.phptUT^Qk0+`R{t\eeCP)i`dI:_Bs)eN)?sЭJIm g VKA(e/cՇ=V57VSh\t.6ǯ`Iv0R!i%Ł[g1[DQ^PKȗNM4~\oA)u\vٮT6 Ѩa\cJ<"< =eK, x@}t*N .K]VjOd8 y#!Wl|Msn(pQFh1sJ>AssA~6Q6PK P8 sebastianbergmann-phpunit-6775051/tests/end-to-end/phpt/UT^PK P3l'"Z sebastianbergmann-phpunit-6775051/tests/end-to-end/phpt/expect-external-location-hint.phptUT^Rak0_q'$rӜ%FIX K$7Ϳ9nٺAL{~w*]_^\'iܤ ,FyRCnY ( /Rj8/.k(0Wby+sC|ܟawMsmxn5_nçƢPe/˾,Y(eRQi&txZ(,B),ZaԦ!V2W+c$[%6$CFo!q0fg#-_hodے5yߤ$p\JH#*λ̻8`[>J!I&7E-I0n9È43+n_2%{(^HXѣ.@`׳46'f,@8K_ ~o6s@"rCrƂ t )%*ehRҤ;PRcKZxiC6x6}ثft>d>D!o/@1[\K[޸YuDPK PPQ sebastianbergmann-phpunit-6775051/tests/end-to-end/phpt/expect-location-hint.phptUT^SQk0~ׯ;JYYanžbIr0wW64؄;w;qsv6mzANi7ʒ,%B $Ek|I Ģ#,\h΄p w h+  3#hOΠh:(߭y4?J;OGNv Np9 c1]# MBb0颽r/Σ~3KZ;|p*v>jwV2IZ!UDP/6Xa{a ޢ(Ke7E{0&XƖkSy0b,;Ul 昜d5ɃMo0al6ClJ4-U]ؒa-'Uܣ?[@sLHD K6p`,Ow ~@VUR8M[U}-'ăTЫ n1UF ɐ\o(D_7!p2dL^8\nte.~5Ȫ`.yc~PK Pd\WQ sebastianbergmann-phpunit-6775051/tests/end-to-end/phpt/skipif-location-hint.phptUT^Rmk0~5vroi[粰ž$Ir}lye.eQX(FKnhCZ=5J{v`7džVZJ?g9\H: xl&ܩ`G8=<G6dKHbUUa<ͲiS-)S{8Ag-e!"0V+׷Z>fOC O^4ORm3}P9m\e<oJzw͍:< C Q|[7i !##i+WR;{șaBur sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/UT^PK PE sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/UT^PK P[>N sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1149.phptUT^K0W܃n-XӢ:Q֤{S؋!>΋l^px_]P Y8@;: nq S  l5F"$ۻv05=H.y6{f@W^kAҼj+wϕZIǖC>+K t9îG~oe?4󭴶^hiPҮ |5M#&M!UEs}Lq1,̱dPpf|8jމ7^9 EEq> O+dWq hsjޞ!L GM&PK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1149/UT^PK P2O=[ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1149/Issue1149Test.phpUT^N0 y U@U6ĴI&&u׈.geB{wn bmvM@y--F ?I, RJU#o%0%,Z5 &ĵt'  jfUkMjSH]@rԎح$e%45J]|2}]NC*IJ =a3L9u"<7;YU&YX zi:%q|T0^;$š;%? ~PK PgN sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1216.phptUT^_K0) JVEP)i{۴&ܾɬA9='J`QJ&;>L'g5$UQ4Dȋ*a pK/Uc3Ҫ,Ƞ C`..e 3<ձԨF^`&}JJ,xHy%M8cp97:2auYtOڄ &RDg;˶)evZCSJV"Ԯ~V|p//=kJi0n ? 1aJs&en\,IJ]Ib9[VW+ @i&5f3Ȍ$}uXVrcgB<`JO~PK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1216/UT^PK P;[ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1216/Issue1216Test.phpUT^uAO1s a!*ATDCH@/bH;6igAbNdf{ߴG_y(P05<Ƈn':mmXV:B ^Wef5@T HZZblЏIPଙT!1?-h6r-]J^7(Ӹ?^l1NV':$^F(t$ kA!;fI[ܻZbW1ؽޥ7-"\ď>ΙW*<6278CɤZs8I i$be1kdzשߔGqPK PE>E[ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1216/bootstrap1216.phpUT^5P]k0 |ϯ i+{^F)tK)EDVIpi[@EJ.rWϳl1`-G1#P38RQ-)4Z '~hzk.uo (oVÊlLvCag„]I۔c9IF<6z! K6)yt}P4årl`ehgI:>?*u$ŝkjͤKPK PwU,|Y sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1216/phpunit1216.xmlUT^)((,R̒TT[%̒$TC#C3%B̜T;OH&Uh>Xb>@P yePrSRS܊s2ӕsJJ0zPK PG'N sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1265.phptUT^]KAW$Ygu$\25etO6|Ά]5{89g0~WEh&nz,3'T)LuZh ,~$|Lc*y{C0زȍ+qvoEk.a_j`V_EE!z.54iC;gBka lɥ@P\kﴱ!c!DХ׊zf\V8:6Z3D8CMm PK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1265/UT^PK PK[ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1265/Issue1265Test.phpUT^5PjB1+ЃJ[T(Eބ}g_ݨC;3;zu ;CDztSЃU* ub, cč&v+N{#hQ.ǗYH5BL5gГ*f5|2XN)ך֕M6BDSɠY,*e,!}WH<Rr"e=[U F2*ޔRNL-uU݌Eә xTGPK PQCSY sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1265/phpunit1265.xmlUT^)((,Q(I-. .,IOLI-rI,.U $$*VчdPK PK=G!N sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1330.phptUT^QK0)AKgO!:;WT['6J]MjB_!y-UeAiEɢэơJ ];8Ư } 9Jag;cvoEb Sxu1xyg]y՗,Hӧx7l}DksP7g YԆw# о߽LkG{FoGdM jw{V{ N3sk*5 > hlU>5[!4v؞>r5˫t\kV/&FZ:BN>`$ˮgQg] T|FJW`Ap0>/37S VWfX`i1a oYtDY EF,:PK PBTY sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1330/phpunit1330.xmlUT^)((,RPA4W\johllPS ,)*MUkSPK PݫR-CDN sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1335.phptUT^QK0) LnRâ:Q.v${:…/_(MeB);WِB}.Nr S\)VZIǤ,/ 17X߹}]ꎕ`pEexkm&Q4͵zEmZyQʹvؙW]q#Jӻx=;Y#vY/:q&KuQK#}]Z~B`D|U9°R <&3jg!;>ܶlV;mO+_5[?{BYg8'QjslrBP0V|PK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1335/UT^PK Pw(([ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1335/Issue1335Test.phpUT^Qo0+C@յcU_֖t" =jr 0vf;04FœD;&Շ"/ T0 c5O.\q0ι)t/0|~ܞRiMaŒLBl+[!P2lo{zJb,d( T\(2Z[r\A8:)ŠȸK3Xq97)(C,*Ilcl+1{Gˈ{7n)?8*EcBA{&F %KfD5Ɣ:?pZ-L(;D.4Xj.g{X*M\7m o%?*>Sv0zg{J `ܗvKC/ r0O lHֻCO(%hFX~~8u*ߩO}_>`D#of!srrb|m:[F݀6,2!a9QdM0ӱc!FDF Qk"6* ^3 LV43@D Q6Tkbאs$f{>fYҙ 1sD6dbkY(Q.uqrZVP&ȹzT*LTpMɎ%;]6VV]JSo6/,NOWoy. <ε+ph%hf$_~&Xo姼Ngu6 bw˱ jgXʲxچK>P. v=71AzBm_68 *V| sY={6}nߗBq'L|d&/V9ǜZR!GJIvMSLOMM,תsan̙N߽?+/{mg+hyYPWs&r8Z4Me=hs" oPK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1351/UT^PK P|{c sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1351/ChildProcessClass1351.phpUT^5OKK1W̱-bYēKEAdzi2 I̺= |=7gpdZLr-oze`Ff, iy8 Q1#cc5hjGwT@=86SW (50Q9 ȁb_LYovfunfpܖ'%3\T, G"{n(ɒHߐ3PK P a0[ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1351/Issue1351Test.phpUT^UMo@WHDBI @@"=ث]gw@U{gm^yޛOi1F0[22 -sgTZ ߹0z t .Ǐ0aI _$3u삉 |(EYΗF&)P1d2BePM Z5!PpIu;7 ]R`.,9y(cKJ[](F\leڈεy?FKm9<бO Pi/ɍ&T\wj470r]2[玨ybk!p:Ԋ=@qکGqN^8)2>P ydZ{WȊ_ȮeekǦCm;o>{4ok]B$;Ղ;~hsxhQVVN%ve'~*)A݂V$AIEZpݰH+j'_$ δY8Z#6m-p .qDhprS;E8+Zʲ1Z9`O:lƳ,~Th:Qo4ڒ>w9ZXWsU.UDsLq:!,p / z%O cDH\x6mW3t 꽰ɺ#qׂuia ׈tuB͠>PK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1374/UT^PK PGz}[ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1374/Issue1374Test.phpUT^]K+1W[Q8`₴Bp.%Mfmf&"w'[ xsrHyw&n Fd8ʎ3؇mdoU`q:E`ld tkc(FS, 컍iP|x~*x,>Ls|6 Ē0wr6/ɿ|Q8!DON%ζGuWESw@v0+QFcTw?q%F1/?iƇW`1TpaPp}PK P4@criN sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1437.phptUT^Pmk@ ~B'гm0VJ9AH2h9'}y'[Po=E'=GZZ=eIXn:.! 5tƹoYN,рTZ/\*|0qw0ct.>&_Ȅ9zO";l3ֻ?w#몂?b1Z%]RU Ӯgaf ڊxgYg i\ 3Ái: JDx=+ׯ9|Pf aqۢHiHOR^(X)`0u pkX` 8 ( fϔeWvoިMgpu*;5? PK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1437/UT^PK PNX+[ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1437/Issue1437Test.phpUT^5PjA W*mEZ(TkKEPP{dv'gIƭ^^mZ0X9 Zao}}X5Az#Cao9EՃO,5^1nw{e"B)/w!7ur6 pBO"wm:2[N{sOq:M`lL:ˍ Bz;G. 3RJR!QCF!ԯ6Y^U6 ,\[$#5'?;:bI/ëf"yvgQPK PcKN sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1468.phptUT^QK0vUâ:6)5TU ! ^;γdqΖBeSsS( N ]Ha\att|8 pvAm(|-졳jr%Gl7'd4]{/\>7U-+2ۂ=谥B^LipM:sVʈX2+ett0ƑQwpBgttvm*J(#':P .L &qʩh0W!^3JƤYik|OAisN+UײX Wwia Ҷ#k߇M݀}PK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1468/UT^PK P;`;[ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1468/Issue1468Test.phpUT^5Ak1sAPJJEB)BM(1uɒLJwj.o潗L^۪QCh8y& ueFJOJX{3PC­ d7FZ pPL@Bk*i5F ,hKI[hk|w0s|HzwTIN&%FB ;<:]bl^69߬1МuBEGOKhu+&ɳeFN;(۠81~q!9U)],#;O&-6xaKN$PK PNBskN sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1471.phptUT^Pmk@ ~B'г1(x+f $Ŝ>3-~~(۷I#b[i:4m-wc}6`h{\:t,hDJWzUR GpAk> Hz]obsGXk޻'ێ.̈́O妮!O봜hLVĉtTh@'ɼYaF?w"_+n}/:yBZۺVoBDМ`<8O$DoFV+T"JU\8\}8Mx;? 0W*[‹9˽:  K,EAD5<:n) 9[MDPK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1471/UT^PK Pk=[ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1471/Issue1471Test.phpUT^MP]K1߯8RihwBޙitnǞChhTVFE}ݎ6 #fAT 3\DF:x¸ZK`#b85uhV tQǵ$%2_gձ5`+hS6YfB [C 3<rҺ+2vZc1r[sL4✾|`Rm0;Be[OK̫8U1=f>k6W]梔.L!ӌ[U ayX&d[a ~PK P]cU.N sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1472.phptUT^K0W܃,:Buc"l]6TU!>γdqΎ7 Qil@UHZBƈشF{["O> W UI.}Oy4`g&Y?'m ]pn,/yUӎtBZS+sNðɦW'2ԧJw [CR!LYn.aca! CP..kį 0ue<Ǯs{ gqJ/4{$i^@2~ʞPK P=N sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1570.phptUT^ok0S`!ɰxh+c\c#D44~nBG*'e{}\6Ѷﴵ?ޚ)_^ )_ Q\P f8x|FBT oB%{^虄W)nNbu>qrƃ  aS9GB էw|-N{xkaJٳ5Y`Y\!M] ܮbB zC_삿XaޖzWu &.7)F JINIbN=R,;.cv3(%W!%Qۻ0zKp_bSHfM ,َyް7F'uRPK PL>q sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2085-enforce-time-limit-options-via-config-without-invoker.phptUT^T{k0_ZVlCl7. ֺ4]CB]l+-yNyQFX6~9 ld΍1J.D \..\|,ZaP]GaToB!=׃"t y6ΰʆiEi} c^hfSJ!/S(e1u  sd OXxL~nygMe|O8:-ٽXyjpR45 M/ת?Y.P6U%z/ȱN?RК[߫aE颗,ئF`;"5fTk5X 0Bz Xc3C*m"BH lF} $C!w \Vg7'"8y\/ oPK P nIXA^ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2085-without-invoker.phptUT^}k@O1 *]B1= *IΔB j]ӄ߽㽄 ,<[JhPJn,bVJS+ZN %Xا?VBުGM iBq-yL5J/T3c9uˤ 0Y/ 1=7[L< xPajQwL'{/4,;Y>8o\)1sDM11w㦞4^7JyN iay#:Vܰö'ƀ0 ixu?ͳZױ;˥Jfb%/]geXx )[)ayó(x#x ٛNb; }q'4\Rw Y+\$>c4evFk'NWJ˴iwD%ωJ4c T-(MGUJ+Jf] "{ }wQ볰(OPK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2085/UT^PK PD[ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2085/Issue2085Test.phpUT^}QJ1)a[jA[X(RVt3ɒL;-xr | @^Amg z]](*` ߍnt̀世0F0 3DP8:qfUh {U`t68_K^BcPro=-&c:$A+(6YGB'Gp Қ&8=EqNB]Թ%vR·lfqMTJ(Ag vϬj^'KSrcqqR&M~ubl ΔZFeΖޒ |zht" d~}CN]9F+2ԱQi?R5VkI{?MQ(n;;=j>ȾΊ!sHx:BPK PoX sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2137-no_filter.phptUT^R]k0}ׯ+I rbaୌ~+!vA[b8Xttꒇ=GWRYQJ)Β2笃TXUN7脔]ƴ_u pHW~#]ģO}Udq\*`0 '9CT"3U8OQtKk=+S=6{0??O׶iҴS YYv]޲ {(pke ],vƗ[oEB,0NGBÔ5;vC̻kd/aJE9MKWZ88VZ46=y4<_9TAӱ z8M ۡ_39_ykN(d D‡t|"PK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2137/UT^PK PVZo[ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2137/Issue2137Test.phpUT^RMo0 WCd38XaTb10[(:N1r`MN2G>>>]|eɔ<˳ymeL WVa @ Tpnpk!jcƫ]pjJȬ+e5ԦDЮ55*m v}4gU?WSJ-p%ԣqF  J֍Ĺh:]{<&'Ou8:!,SS)+/)Ƈ0 XЯ1z:;'PK PcUN sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2145.phptUT^mK1߫xY\IM<#P9>ۮmW{Eϗ=\sΛ_!F~Wզ.by ]/i]b,gM#i|̡ѯj][gjBk=(YQ@ Qwv9:SejE^8ޏ1du'Yߔԫ4-M\D?P#,4,v0ƅt^I hה@I eТƺ1XJL)ԆG,݅=njNKZ(M=O\bJSƊ5nȲl|µK!iÍshC'm/PK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2145/UT^PK PO0[ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2145/Issue2145Test.phpUT^}Mk1+R*RRzJLf5 YW)NZz%<"A]-h5! =ɠD7s̖n׊*Crt{*OG!h7rJёǭb, :$դB1Ԋd]1-䫨Q LJ›йjk?Wi=+P%$K8-N!aGIվa~4\D_"Ɛ~7ؽ~ h SqmjLf׆`,Fݧ7gx.VSȰTF9xR5gB7Cϝ5!Z o`5rБ'ƻXTrv6x>oVmFV EM礌.kcP4vIa]P'}#JxI"(˫WNgY_EK,$X9pR5WH4`}mb)>ž:22'N#8e\eF(Es,F\Ng7b!bʲMS٫Qƃq\l|$>u>Z %:+cU) 7t0`kj_z4C)SnCt|=Ÿ$זi~pNu/,'_PK P9:|BBV sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2158/constant.incUT^ PK P |:N sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2366.phptUT^QJ0}W\ LUCucDFIۻ\7 snιn[ۙ*0T}2yfɜгLX'[4%( } `H?zYaH. +m3"a-nvPK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2366/UT^PK Pi[ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2366/Issue2366Test.phpUT^}MO@s%J(H =61^qwgcPבּ)sYk>ᇶiAce<7 [L3Ec"*@5?8o!UQrV9aQLa;Y}=_%ЩڤM6QCgB1ҘYaSؑ'ser,g3hFU jX†Ǯ9ziP6ɥCl2ct:>x-G)kjig4zhxE|B·#_M]Рկ(93м*FW FxLp4Wn󧝗ld^nX3~oc=N{Hq92PK PX,N sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2380.phptUT^QK0+. Kâb:QZ6I:"fHs8m9_]"X ' 5$+4JvP ԨR)&]B08o.B]xo0;#,\i^j.^ZyUs>S;INEyZ;r&3>;%!oKK4BUQd-ٚYY(zb!B=TP*  +)q8|2`D&?̌<j+E3TPK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2380/UT^PK P|b aX[ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2380/Issue2380Test.phpUT^}PKK1WAu}\*jՂHA=H2m-dT0i`0-4a70ٔ_y]b8 TWЇl 3L]DL7=t`#9vw&FU$5+O9BV\ (l.<-4[ﶡ,PniqUn'qqV:ɬb4E_Qbd0NT%bM+ \yz{~3PJ~%P^3:~hSKk`IK6e5ޥ(^݊jcXzkjڗ_|[H2"uCԨ+rmoỽ_kN nݼҚn'PK P;C4N sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2382.phptUT^Ak@+Z{)RF*miX *a즳R,{3iHԓSYqi74tu.3{Y]֠QUcEQc8{Ђ(L0>YC{ HLcH 'Si-b:xrD(bUr7@Z Qh $l %fOT;*%\&%GB sC%WB뎈L1rsFuzB_ !D<8<:H/VXħNtr%ɡw3Dt^1Vx@Lxo1Iyf-j'=eSi`IFwubvmf5 ঳,%呢^ڞ6MnzJdkHH^~ƗۅPK Pr<&N sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2435.phptUT^AK@+`I ݤzŚڠbhR6n݈N,ᛙy圳%Guu:nJi'ԊqHb/wptN,^=ǫ'L6fq4k*l`=[ɪ(/-]/Ч4 ~/UjHhtLJm_nl纮:DQ-h4 wda` RX'4M) 䄌B@N&c1" cxZ{'0&VXrľPK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2435/UT^PK P[A[ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2435/Issue2435Test.phpUT^5OO1sF( x#1eLY;EC{biuŠ89H;5+òqk:1w\ S,piÐ{ˀ4$m &}rA{ 3I}V bZz;qe6.&#7֕M֙BE)dP,ꁒ`FfĀ_zi[B\y,[Tkvo o-삳GϯI!8I&^!?\ă:PK Pz]_=\ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2448-existing-test.phptUT^QK0@,}PԊCűI.&{ ~3$p޽"ec)A{؃GԔYѦo*lUji^skrp !lΓ|7+tNH&h&-xt̚.*R^[=~{`f\S#I.$vƀk g3 ;ֳ92 Fik?۲T&JMck,y׮Y* ]a.y|l5`A1y !fC8lK."4:{M!b]b=KK9csH/4PK P,\` sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2448-not-existing-test.phptUT^mPj@+[=lDPJ 6RTLtiζ][90yHY*DpocxCE !ޡ[`4SLGͮYX @%7 +IضL* A.f5.BIۯp`ڈRmIVF`{س?",{O ";Qt1 愞Iȿ?i|Zg(PK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2448/UT^PK P/R sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2448/Test.phpUT^5PJ1+nQWU,- dMp7 K"w_}df2{&FˈUh}!`t"` :#d$5 R5ltq7H`λG6EqYd|8D3iBu>wz[Oחm,OґLmifB %'O>Gl .4tn]E9׶ ?xBn9GvbaU[}1\9`&fQPK P\ pk sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2724-diff-pid-from-master-process.phptUT^Qk0)a6DN Y`-]H2hP+%M:M?i0 w')bYI)^f&Fc0֐;8 n iNX%z4< Ƙfu#Ex2:Zܣ1D!e`OCF fC((ީe-wcr7 HNnݚ qUKP rH}U7<1C&K{O*&s:4y~k爑SfwRLgw~PK:gJjڽ7uqb~5ᶯ*|r5umm=ؔR?Ŵ&pa%uyY(  =Q0\9O::==ɄLf []Xp xr b&~PK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2724/UT^PK P Mt sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2724/SeparateClassRunMethodInNewProcessTest.phpUT^SN0+DX^e)mY"A7jʭe H=TqBVVCy<>QdbǑU) ZUIp| W%+i LU|1c:ip~!Sw΅jOsi,Pe VVRgP:7v!I}U=*\6h8$c/tG$XJNj Νm\(Cq>mt. ?I[s ,[iZ &:|"ԙ[3rKc~{;6hf_qh$.뱈+h*1WGMjk ŢI4fSG#FgX`:HaoG6VCyYf;9ySy;Nfn WyTO<$6+nwCܯ0܊4uG+'o/A>#ԃ~%]֥nnÕ %'H9z 쬐oLVb[^vZkǛx-Kpǘ|hiPK PO _2n sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2725-separate-class-before-after-pid.phptUT^QK0+ LDf熊e톰vw[&5{o||3$pϽ|4JRÄWe 4r[ sP7aT%X #Fh-P ǭ6X4juh%X!XQ"Tnau?q>>Eqs[+43 3p+^eI4[D'[/{kǹҼj+wZyhFeY^q=5Gܤ a>?\kG:I HfnR琘bk*#ZBԎujZ2 )ܔsx4~=U%e`#H.YzB EargM$v]!-vciI/:'f[jpX\b?`J8@v^'~7kJ}4\x*<8)%7踷_Us`6U'N+ȋۘ\GCNBϯ4E`[`~PK P`!vgN sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2731.phptUT^RMO0W ҢRr@.B|$MW+tH-;= q[˶f"k~SOJ?S!1|4% 1=:Ҧ*XQp} ΋zDSH&pYvg?X,>PK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2731/UT^PK P9:8=[ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2731/Issue2731Test.phpUT^}MO1+` Q z0AD#H x#1eigY;]>963;]@,,גh0N sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2830.phptUT^_O0)d3%qȢ1tvʷo6ms~^Γppf|xu`lj59k#J06:Gka+nmu>ۃq! ( 4iҋ7վ0ضܥT :"]pjx+srWSo;l4i >x{/ƦJȞOI /;ڑ3Q,^* ~eRH&לoq8IBBvf:)ܡّJ)PvX1Уc,1 ]xRSS3H44a_PK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2830/UT^PK P.q1[<[ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2830/Issue2830Test.phpUT^mQJAWApwE|#(' 2nf w{VD4TwuU1uY`s~etn Qi [!Hu` oO,ĝ$O'j3P {ߜ%BT^;-3P+|iuP 6hywTKͰ$r)qN 9身&[FH ‡8CT7.}Y[{H:  X#<OZ[ҾDcm4;=GߊÕW䯧$u6 7]x=lZf>PK PVHN sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2972.phptUT^O0W܃d{1N80&@bۡ)/&ٴ%}'"?" A!Be<;!K(Pt ,dpD BP+JeJTq>>Ŵ m) ukhG;K5=8t%ˆ4+mf'Z4mt˾PK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2972/UT^PK PhW^ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2972/issue-2972-test.phptUT^M1 0=I vFTD;8%OIH^{#.8H 7=]c/ ZK^3uھIU;-6FD Q̧A[l8`ڇ Vb{9iLޯr6cPK P^F4n sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2972/unconventiallyNamedIssue2972Test.phpUT^EAk1S(J[jm( EM(q3f̺d4彗҃ȀYs|~O@6Ph_/+`5_}XMw $&˻Ɲ7 JZ xQ gc@ZFh#…JvAɳƦս/&zjQ) AdW*h4!G6RRF/y`(DrY`qkHvg*I~Zႉ||&\h˺OppZu z;1Ѵt:8QW- =PK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3093/UT^PK PW8ކ[ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3093/Issue3093Test.phpUT^Qn1S PO m#*! M{kqBToRZPliR စMo^ Q]A 34C3 L?N//P0;. 7> ]Lpw5ʅ3"4ƴ% ah"Clq>]>F`c/MYK7c&j䰤UZ.3|}8G1,2+D(@WKM-T~gF̔;p l{Sd pyyP6]F>:_E'Xi `=r1ZG0vx dNQ]5^t{Efhcps8 N{gYe0xҥh!l?B~oDˍKm\W!*!UQ-y$z- ,-0]|g(o6LGTV 6m' 8O& EQC PK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3156/UT^PK Pg;Y[ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3156/Issue3156Test.phpUT^RMo@W!R>)"qh+4Ngw'DYIi؃W{>y zQEvQ pYK[fogJH^ч9-0EWktNv$0tj=˺avU 3Pق\ԁnybBmt.&ijոؔdQ Z)Q\2\5ŀZ(,{zv7x30F醋kz:z<~9 ~f' I]$ػ($/m^N'9t5[Mg !Gg8НfaPpN!x3k+dK툫c!{3|Pz{枏|0#83e]V`5< :~Uso5/PK PͥWkM sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/322.phptUT^}oK0S mꋪj熊cDP)i{@{u}P. u8-cJ~IP`^ ]v ڋx^aʯepk.KoD!'-7UBu(l]ɦ]3_Sfph}}z ABHBfK0VVzMp6R :Q;-d;Xc&BT HIcV4;mlXk 6HEu8,PP&YcDژ;` Z4X}PK PI sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/322/UT^PK P<-Y sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/322/Issue322Test.phpUT^QMO1WBԍxD"HbFbvm\ڦwјC'y>у(,1 uItpozCuJ7\hf@deV4~({iA3Fb@imM Fh $m%%ny1fsG$heSM$Tjy΃DR\"2)z[?P~`B ? pF/|~le6:O.n8g5eJV+j3$ MjퟚEkyPK PẒkW sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/322/phpunit322.xmlUT^MQ@0 ߝq@P,YlKo~_SrVUP`|ԁ+esB*h+IФ +QdlUH-:H| &ӻTeN$[ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3379/Issue3379Test.phpUT^}QN1+a٨(D( x#1e;6M;J toC'f{Ó+(+1 uNwozRX:@+Nz[ea4]3!r \@ZxF1ν 5q@43D(ܺכ@4$m% %vnu6-&qUJIJ$PAdYHat #k NroB4k5oW0BY w"4*&q͚Cp6G@ LzZu#3jXK{[ ѕ,M)N^iU>PK Pz\+c sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3379/Issue3379TestListener.phpUT^RK31篘]xP+z+HwL\DߝG 0K޼f׮qj"҇py\Ѿ}7:@[: l Ϗ/F!JR-U'nX(W:-T}xjQ M`AS[I ({n4V5N,#^SvlH6s,찷m1@_rwlѠ k[t<[#!=BIONNvK@ovq)OB⺸EMPJ޴sR"#CXo{5nL9ayVpm!]CK IS!3;kC0hC.Zj+JCv,MGE:~oPK PB,.U sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3379/phpunit.xmlUT^mAo0 &LMvY'S"A@8 (P,'vd+C`hu{u}=<% l{knKHFB\ 1 "t7q ã~>u:KNY6Fjƻ1kr3~$I(QX#ΙCr_  9<,-7jt0Dl]آ/p*C?nn՘72 0_bb(z4PK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3380/UT^PK P B3^ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3380/issue-3380-test.phptUT^Uj@}WLCmbIݖԔ4!vJ! ZZK]uwد<_/鬥\Hܦi_J@ 33g"EÑ{3vp*qXcnQr5frlJb(ͅ 헞1}Gǐx΍Y42FLnmb 㙀.H3Ӛ]Z65Kce'r.X#BQ5`q7 jsPs2&Z8G'C̊Ŏ=VTɆs48r3=7O+S≜;Clj/:l"Ւ:ȫ*/]{; U析k߸ J~:kHာBzF|ͥqFrʀGdXQdOˤIT57\ͥ::a7SKX/axmsx_稍 _9v)đfν F vvR*~hOPK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3396/UT^PK P" n ^ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3396/issue-3396-test.phptUT^Vn@}WL A@NQE"%mDŞ*xsi+B 23srAyΈ(~:T40ҒzfK(ʹ6C[m4>9g~ cihɨMRZi٥8t BT˸h'V 2RȽ Wj"H&dK0.@8t J%rJInT&0#w}$Թs#q8tsW{y^,\ӉWj;rcslxI3+ ɮ6p0 ЛE ~+t2Ke\a_pKMXWT*- VX(cW C$ d:78zrv.U~,.Xe} ~6t -D_* d[qO"Nm؁b |5J.X0hsdY}+-m0> r;N nYQn _ONd-%nuNATևeh(=۶=z PK PWN sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3739.phptUT^R]o0}HTi:^aBy,Uu%& +Nnϵ9ה"/(%u30'yUZnfc?ӱX=(+xdVO m PhP)=G֔8-Q 3'wJ@)X sj9,O1f{+ Hk$ W{|V8ZO)m>sLzCìՂuQ4/. pv{Ѡ{Bp?:g?Dd:_)89iKOaL~PK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3739/UT^PK Pbwe[ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3739/Issue3739Test.phpUT^Mk1+PnhbJMkj(NniEޝ͊ȒЌޑBuf}[AGz8FB=h^ WcIH9y[@KEwWZ8m\b*pT3ux@1:lFhImJv9xJbכr^ՆŰVN,#ck̓9Z(jfDO^:Ͳ(O-AR.,j$uI~dq)2m-Dk W-X4w\ g!*Cp$x K̦ctr >6 hrYVn/>m?и#DJ6oQ;Fla&nn~|}49 xh4rU-͡iFo$bӧ&7U!{thpͮU|M@+mL!X^ZItBZʔǐS+sN| kB/kr7dtǵԦO9O,3 =VtP'r^h 'AFcULj]#ÐXr]vPK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3881/UT^PK Pk8[ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3881/Issue3881Test.phpUT^mMO1s/D?D$tYqi7픕NqCμ33.kШ*1 䍢/:aS'p^W- &S=Xc.in/I8Ǟ(Ӯfa%bIMa={Ρ4W)}"KM Sq's:ּ>ԍV+x|M(%1NoCXwުgrk–` w0Rmha*+2:,{HY |&N c3QV;D}5zڦ˯ThuEP)4 =y s>p  zoc0 뇣Qo@H*!eelՄA0N sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3889.phptUT^J0P΋Yâ:Q.6I*{2:P؝!pBxv6bn"Iraʊ+](阴 D$yᅻ{Q|r#:YjaGa]dxϖ7w^k<!JB,Ý*8^lr1) ͜C=e,0q|<2⫑FP\kDO J-XWmE?8ŗ&Fee*Q4i0=uЅec"d$5_-RXZ&2+V:tpP. G瞩@ B>MC kāq+xw `{{'IuF26eu&jXasTA uOdv^c5r?%&s@8dV2E%t:, y伐SOUv,`݌x:FZƌ^ă8PK PL5y#] sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3889/MyIssue3889Test.phpUT^5NB1}Y7(F( #1m,mNû;始6sf7>&Fee*Q4i0=uЅec"d$5_-RXZ&2+V:tpP. G瞩@ B>MC kāq+xw `{{'IuF26eu&jXasTA uOdv^c5r?%&s@8dV2E%t:, y伐SOUv,`݌x:FZƌ^ă8PK PG=KVAN sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3904.phptUT^N0B2HDqQ#&@nGζCy{.Hi&N'`n)eaa+>Cu*ӂVi"El^ݤ:'3GR QDžF.OR~u5`k~)EOcY 2nTRmPK P*X'P sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3904_3.phptUT^PK0~_qJ;X ԊCcDpRlU6ݫlo \w2$j( MeBrU-*UaS6m)ε“PHy3ya;:v w&exϞŇxRF~EkiS{`6M4p$AGjA?1Ts@| ni5]_MoFJg_+K6Ǧ GOc^~q4CT?Cb2y|pL{8v`y.!se-!E'D+>̰2vB<13V9sPK PA P sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3983-1.phptUT^QK0+lu/Z3âbi;Q.րMj^a/o BiRҽwVKB&yX:e! :V􊜕9^x m.: Jo|d.q4^Y덱STxC3tB~m_ǭP:DEJk90qP J8[iҀ޸f{c#OsaXL1:IcN3dsҎ7%?PK P P sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3983-2.phptUT^QK0+vu/Zâv"l#]$^ wq߅2)JJIJ:X\^,BB:}L0}}8d:a􊜱"ɟ|q|z]t%x*Mk^eV2vA^3IbG/U ӭv(»Ր-K~ۖc\*)M^dUq  u+. ({VAϏɔR"FlD0Ƅ<= NX7C[+sS PK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3983/UT^PK P#[ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3983/Issue3983Test.phpUT^5NB1}Y6*F( #1m,mNû;始6sf7>&Fee*Q4i0=uЅec"d$5_-RXZ&2+V:tpP. G瞩@ B>MC kāq+xw `{{'IuF26eu&jXasTA uOdv^c5r?%&s@8dV2E%t:, y伐SOUv,`݌x:FZƌ^ă8PK P6M sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/433.phptUT^RQo0~8$.DHX &EH9鵵H`_"mRI^H)>׳Y aM{zic jv 6G8Xmp+FHfw ?]`u)(~ÿaxļTwF/okgZg7mq1e)H3.2ZIP).*_!av SkNfzbFPK PI sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/433/UT^PK PvZrX`Y sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/433/Issue433Test.phpUT^QMK1W`[@jEAk/fv$$/E}m 7f&9tU%=yI';:0-uBW|; ltĄi6L04p~yaWl V3D(bUn$&J+4 MaB\wZp;MiUJIrd0'<Q)l[c6rKfS t>=!UB"vi"4yK|bƑQ)+"H/?X9TTA.[fC:{)akz#p3o#;ct# ?~ 2(Iig;}#>PK P'M sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/445.phptUT^Rn0 +8r%x+0- VaI$ m{ H(I9g_t6 AJW ؟48)%<^GDݵPʢVN t7Ȓh=Z?yVn\^UUg*7R9QfQ:X[Iϲ/ux:u>JDfNY77ўѫF+|N+nϷi.ðJEΣ6I3.Hd.*᳴4o)X31 2FTM sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/498.phptUT^oo0SܤbVM- mE*2A,%vf;P}/@M,[wγdqή1d%GF_`kta`[ jbfFIKk%pm@9R0uݝUJ#|~K_E%,5Σ'6_$!v '8smxaJ[+g#~x⭮v2Ze/6 }iDsg׳;c.}Z(ݧ9O~ΒI6%,,wp^ huЛ 喭7օF4x0ca߱6viD*y+[a똱hEͫ]\Z)XS8vi+ySQ9켣FTJ췻bΎEɨY+qOju.hΡ.xkwPK PI sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/498/UT^PK PAY sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/498/Issue498Test.phpUT^Rk0(%v]iM?e(9s$s: Nc{闦j@cQ+g2MI22JS#(bp%̾ͮw{p<eiR©eQϺ# u k6djSЖVGԨ$6ئɏIJR MTZÕTw E#< ɸZa=eI+å?| V{veHQ:9KhjFnm4ʅZ_~)KrRzt6a!Yv 9<3:M}nO-X:# s*}do$w0]Wq4/3I`,Y>x R)ZDd;I^c}֎tvDnw%}_ FH5%ɜGvu!w#&3$ P͑X lmOr2c, a͹_鉂'a Y YS,!c ^W( 䱥x^t}Cm}$' }b,& QTsÒsX:VZ1xSEׇj P ƽJk6;ĆIu\>J.XoĆ\zPհ PK PI sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/503/UT^PK P_=Y sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/503/Issue503Test.phpUT^eQMk1W *^V Eބ7dIfJwץs 7oޛ+0cS_0<ݵQЁeN2*䭴gp矖FbOakWR[ p^ĨÓf}*!4n#hMsU Uk,4f+XFY-a b롘J.TVʶA/^PK PhZEM sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/581.phptUT^ao0WܤCJ[ycɊĶ 6T!W6(~&6i%ѓ{{8i9{{ۻVy)dY:'o%h_K`T@4,TXv ål0^o[q7p۹ T֪ <6YI|8MH/uK6aP}"靱OLf2Gʭ~FO . X^YW[& {|`g+ko7OZ(nҬ( h0 R8CLiRsc~ KkIṔM_}غVf)D:TN[2BC \[QL`-n2vzFA9+5$'򵌂">PK Pq(&X sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/74/NewException.phpUT^=OK1)ޱ-bl P=K6i2nMzx3o~pd)4-lCOj~-x,8̦(Ҁ=^փv3sligDDx]{VPqݟ;$ANBf}' ^ K%:#]UBA%j{/pL M b̄uR(C%RYJvN3O]kKdXis8=l+,qLm PK PI sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/797/UT^PK P0#VY sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/797/Issue797Test.phpUT^5QKK1WC+j$j[Haۛ ivLwڹfCl#hN8 N'"zxF aZ:yN |-_ cf4f={./8y Eh:xHv2h_=oBh_@tʧ*2U[ͰIVc ;˭L9.?s܅@'ѹWJB%Q77yg5 ~HM; _\XiWf 4=[I>M,\XL8ocIMv_w DshS񉉋Nd/u9,jY\8أ:_PK PtIxY sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/797/bootstrap797.phpUT^EON@}߯8o\m|" AC,If>>zL/߼ T*ʕ\eJz[Z6Ewkoֳy&d66Ir6&J"G:asUItiJY9+kd4cw* &`B6](F4>wZhHW0Ô+KrU+~Z N70/@cQ50lĢKiPz tA(OPK PKEAM sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/873.phptUT^OK0퐎aMd+m'6Bl-%1Iu"~wSAb!ߛbGY1I,YnJif 3SKan| kkx@V`PPàEѤuS\mxuռľ)f!t܎),]xG\X͎/57s5+!pi|:"Y:ҧz⯗5Z%{d SB =rWAnj?AG)M]rvx5=e)qDiGk%(؁*X<>PK PI sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/873/UT^PK PV.Y sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/873/Issue873Test.phpUT^5P_K1 O٩C( oksBז&6nzH~S"N%lռSDzk| AzT!~[{˷(FN[]gK1ʅ`y x@sC<%7FObm7*X's*RS:è-thy$F12XR+C#\PMS vy_-V =v:寚6<08XR6ӢT}P1!FgQFb>{]P$&~PK PC sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/Trac/UT^PK P9^:L sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/Trac/1021.phptUT^QK0)t}â:Q6I{8.ts΢q%0ut F΃?HCGJz 5B 6>}eϳz]]*ܿIV}-I4d*]>M m6&p J`-Y, zݣ̹('^RfSBvi'e=ыZ+˯4U4RDs>/i>''#+mMU48]9!eu1!+0Cr`B.c}ϿE 9,ݐ}PK PH sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/Trac/1021/UT^PK Pe&eY sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/Trac/1021/Issue1021Test.phpUT^OO1s('$Ɛ' lqivJ  =l:3^p0/,9}aЁitIO`W0~MW@_%w}KoBď>N$ɱ[Ѓk~n..9!7ybA4묕ڷZR{BOS{]{p>˰ B9&9>H͒bqً_PK P_K sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/Trac/578.phptUT^Ro0Tm:m!aBy?4mY4vﹴ`|˶,߽{y*)/\6 4Nla Be&hkFqK5GbetNqV뙭k&DPʜo 9K/I =+2ݚ̾(dmGI)_G cZd20X[t{$b@]06"`Eg2{Nmty:7XJcXYpӌzYRdR>Ϭsٱ-+L .xoG0 v֠"6wZRd4.D5F3:BeSuXAo8#"Tar}:!{&rGsl%FRp)@NbY8K,)7/=uy<0<&@g9R+Lrkk?56oACAS 9XUo3Q8_0ZϺbGF W~^۲TfǥҦLuew[,kbke ݌Y mB!+6F4t1kh֭똫sdKE\*gBDMx$V,S\wW?rV~9襽Ꭸ+CԂK"t8{wPK PG sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/Trac/684/UT^PK PZ/NW sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/Trac/684/Issue684Test.phpUT^5PMkB1WQT (JRMx>W)MDO 3;3;}I6!1Ӏ%;-p##Z:OPf,[X?B†0!k1Ec:ew x)p1 mG $OXoGY/>6zN, `\m NlٔǪ+.5vˌGcme^|&J0anV=Up4đ2n |DNx.2p4i&=TꌵntkLpiU)q_PK PAB(R sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/Trac/783/OneTest.phpUT^5QN1+a!**D( x#!vvqm)+1&3{=ƃFʀE`1>=b20]c"TE@*ؼn{dLFRF2 ,^{ Jq~]jԶ?S7jhBYV.t[;r]U;j$A/#hPCo ;.,1.1 ;]0Ғu>upC@㷊>-f$4+˧3p4y o]umy;څߐgqPK PD@>V sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/Trac/783/ParentSuite.phpUT^UQMK1WAmR,- "[l7MdRn8{oޛL@(ѩ0Ű/(Lo-=+`z H\`{H OGi-LoD8pE*P>ys( P6B[8dBɽ/M{}/֋$պR426)>jh WMpC%H㷊e$|į^>UYq{zd')&ptF|^7ݒc2$,7<PK P\C( sebastianbergmann-phpunit-6775051/tests/end-to-end/report-tests-performing-assertions-when-annotated-with-does-not-perform-assertions.phptUT^P]o@|_TTN$SPA:"+r\V%$wLɿg] E^I֝wgggF2_Zn$ɤR7 ֥qqidQ/Ź &` wpǾ#XQ̯R}v o밎\35h 3P (i$;PK PM6 W sebastianbergmann-phpunit-6775051/tests/end-to-end/report-useless-tests-incomplete.phptUT^PaK0_q4VEFI [bW "~1\ ǽwyqsf^M(R[y@7Tks@9:q>S"\\R by++_֠ǃsvZ,s:_ރ2^ΕV[kRY-l^A$Z,5ON'eq\៲D׵P$T}y2K'sPR8/k;b) &2^6^[1O Cx4 e ikm])ȯ0Bp{i nBt<NXK 9]ԎBPK P=V sebastianbergmann-phpunit-6775051/tests/end-to-end/report-useless-tests-isolation.phptUT^ao0WUZ)N'Ä`d*&mZkls]2Ul߈)<ݽo"eU,+)55H$ YȲ)쐦s۸0b3 ) n?BNS u=i>y'^ˢ.ʛDͯ&SHN6ήf'&/o^O?˺ /] k l MJ HAǧN f)/2PK PjfL sebastianbergmann-phpunit-6775051/tests/end-to-end/report-useless-tests.phptUT^oK0SM":;]a%[o[ؚ$S}eH {γdqΪuCuiKE׽7~*C#mB9VZl;o羮Нŝv)I'`6gpKY/Q0s R3/;e`ndFףG7?}SRBR6uyEos:)oo^XUYP mQ?j6S(}odz:z|qK"/~ @Yc~nx4@ϖ" PK P]8nO sebastianbergmann-phpunit-6775051/tests/end-to-end/separate-processes-test.phptUT^RaK0_q n7[(AGh9ѐ㽗{G8O$ۺQJ\4F8~v%~:ΌZ)ZqOo# KacܮF;viDh y%w,γ |~0ύ4Q>f7M)7>MtU Ua%PGhd3 $I`fC,2DW1{Чg]RYaH=+mv흪[$m`-d!c.S:֬UX0 ʲo5rXX?W{PK P!G1L sebastianbergmann-phpunit-6775051/tests/end-to-end/test-suffix-multiple.phptUT^QO0)A*/(1G$j\` M6al;þWQ޼67wR%RR}TV(yP`°ae20 K(LޅVny6noߐ >Ofol FQ ]]mWFGg#{99:?Lgd$ĉ7q2QMZ/)Ka)qhJ4gBA\y%4KCT:71BX_ ;z6!*{,m™'|s҆pm PK P`+J sebastianbergmann-phpunit-6775051/tests/end-to-end/test-suffix-single.phptUT^Qk0+äv{r\e1P .`.I2|[H |r b2DV}T}]zypҀmQ8?Tv{׈Ib^^]Y:}KHWZV0X\[SmdDgث#{b`N! "x*pNF!9Yk&ձq2ڇx9e)ͦ/61 Oa6\,<\{Te*:X9csJC'u6c.U<\‹*;4w^ Nɋ5PK Pԁ? sebastianbergmann-phpunit-6775051/tests/end-to-end/version.phptUT^e?O0Gw@\?T"CU0Cpv*RοbQ _|ċcM\(nLRwV C>}7,58mFѓc^P gJsdOqةq?yW6m{BTJi;pڵ6eo<;X 2po&ߎ9RRPK P- sebastianbergmann-phpunit-6775051/tests/fail/UT^PK Pcg6 sebastianbergmann-phpunit-6775051/tests/fail/fail.phptUT^ A 1 F}O_ 3.pi3LD1Q݃yZ>~`+tRҰwOh9_5x1PK P8 sebastianbergmann-phpunit-6775051/tests/static-analysis/UT^PK PG,!J sebastianbergmann-phpunit-6775051/tests/static-analysis/TestUsingMocks.phpUT^Qk0)PS&m5`aN:bmQY2ҹn;9҄cz1? $Z8=9WOvQG0-LiV &Wk &NLxR9_q:$Hr.*ZkHm5w*/UsCYW R(x^a}8\R;*A#dT+S sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-empty.phpUT^mOMK1Wök[UZ*LnIEN\޼y_{(I7=ŻLM Vid{ fn !s =0A -Z -$(eAIfpMP|̱f@[Bc4(rE6^o;κnq F(MnrHL%tkѥIJ_OŖG2uskc KMMo~\ϔJ?2F ,x @IR$RN$o2{z!ƙ1^QPK P1N8S sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-false.phpUT^mPJ1+-bVm " n0 ɤ"-^%yr z:n\M' &V6; ujB⌲1鈁5Zx$ZX 9MK"YZO%1E+d]kpPӽCIbA`4s)'jT((6*c  6͛3|#!li :xph9 6%ݟ56Ut`5 i5xK(P{^?-^lێkd0Bi&TBg4m $z6= v^f ummYBܡzod<2ɰFI#D}zl%lL Σb;'JSQPK PM6Y sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-is-callable.phpUT^mPKK1WCk[ RdِL.wK53}򕇂@hS|N(S[e"104%lwgN=g=F6¡F`LR/(Y5"(s`&%ЕMMn[BړeXթWbSJ&<6)h#尦Q2*63߱CE5zm|#Z{KRL(`&gj%nh tr148c{@lCE@Aνxw;QFG!c`p5lV7F3(=Fh¡Eka/LRTt,]nd A]hkZd5xC(QS{^?-^lێd0B&TA4.$z,= v^f u.|,ܢ风zo.{Y{fk%"]w}xuJ{ rn5 !szE-潙ٓ$5zJwp*##xUJi; zn%A t AŞS\]PXs.!MZ ^ht4l[HCۥZ&Ć=5j% ~d¯ڔE8zs=?PK P$+7] sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-is-not-iterable.phpUT^mPMO@ﯘ FPA nn74ߝr^y;{rr;G~8U㑂U:@ zzn5 !qt-=0F 5Z p%(&AAͪAqNJmFdڲ5n-8C({ݼ,e: Z P!2j桉>' *(+52,f{|atAlu;*[@7a6$*=Uhs9րcm{%ܜDJ]hԳAA 'B});N&ĕ/i艣QPK PW_c7[ sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-is-not-object.phpUT^mPKO1Wl+AFb,[mv !wb&||$`N`4STPPkm"T!*XΖo2 F6h¶Eka/HRtL] 4?ЖM6J\hBvGiXMձȰK6Z.<4IPIuOYl)z ;[/_Z^"_PK P6[ sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-is-not-string.phpUT^mPKk@ﯘC*ҫV["BڛPdb&egV m{g}\Js |=w+5ˇt?6ÁU5=r)!qzy2!E :bS IPEhHEPƺ]J]ɱ m-PIzy: Pشd 8Z͹!' *( G.cб L449;]Θ)Ȋ׭dcc"gqfy8T #|HG]j5DZ%2l4¿W$^ ]PK Py:X sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-is-numeric.phpUT^mPMK1WC[⵭*--H)To 2ݝِL.w\o޼YIDӟh2ehXCm>m>LNI%SMh8h;Y',=)~PK PΙn9Y sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-is-resource.phpUT^mPMK1WC[⵭*--fglH&];ыK͛1;HIi8 w㹚NL-72S3TwkF-gp#6hDka.RbW sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-is-scalar.phpUT^mPJ1+-jVmłHaViv f!3i-;m޼7y:BIcKrVeS3k*  VOR g`PY`06W J9jRT{m'Q `(;K0TmjP\!zBŶvyyRb#Cg PųnHEPƺ}J]ɱ]نŶ|M{>^uj' tP}*RFsCN *hh=1b:6|d(4_:{m~ReKf T 03&Lד$>6O-tu:/ˇ˴OOˀ~ŊD$w oPK P)W sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-not-empty.phpUT^mOK1s-b?UZ*H)TofglIEζA0f%ih.Pd` oIPK +خzOG&6A`~G>PY\TZ>tkt%X%xw v2Ԟs/nٯ:ZLPCf*5\D'&Է( WQmLگ1n\)Qe)MUv/\rCŃq W'FS9՗ytM)L}PK PN\6W sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-not-false.phpUT^mPJ1+]⵭*-L`6IEw'=x޼fk%iνxw;QD%c`h+ج6o2g=F6¡A`/LRt,\TZЭ9 JFb64Ȧu-`GCݯi.t\#CJS Z&<)hrrP(عn۲CGw+ ׻yxmR)?d<* Ѱ*+c:M3TNbFñTg@ix/LȤ@;ooPK P J] sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-not-instance-of.phpUT^mPMO0 Wak7>:bIK]h(v6M r߳gסPi0҈%Z#rėiv>`ϵelC(+X=^3%tÚb[5JAs#HMP!ڷZ] 5X ]cb;*uۻէPnm*ao֎&g!5*K}9l*6, }جEMM9pXԛ,, :CO47ն3y_'p'9Ie3qjidd`~;z95*w;iNIRt8?PK PZ%V sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-not-null.phpUT^mOKk1W̡UJW[ EۛPMB2qYJ{gu =47s%ih.Pd` oIPK +خzNG&6A`~G ʽA&}9 JFK*d5K(P{ֽJwÉ*F F֘ j  6GMbTQP[J˔(rb1T0))Q䷘iTNiSϙ [h͗ڣ_`stNwe%K>{;/ʅ&z'GPK PvjGK sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/fail.phpUT^mQN0 +|N6`mBJk5"MTgnbgd=e.{G>H>ֆ@CհYo>;$MV氥hEka\b2Ir@Jא:| WEjLjɔ%Go/SuRPK P- sebastianbergmann-phpunit-6775051/tests/unit/UT^PK P7 sebastianbergmann-phpunit-6775051/tests/unit/Framework/UT^PK P> sebastianbergmann-phpunit-6775051/tests/unit/Framework/Assert/UT^PK PsO sebastianbergmann-phpunit-6775051/tests/unit/Framework/Assert/FunctionsTest.phpUT^Tk0(Y״fVJYOIf)hVD ޻wN9{S5)aG̦F:?OAJIPHߵ0=jirzY 8dpfZb\q_o1ʀ-F)ȪEiAPEeJCPpl%q>܌oUΖZu2o,氖7dȅrtH%R-8mf:6ZWiR 9 dZ9{[|j#W"e.T5z8Ɍ fέ 6c};^l#`5BU qA'T+?[=Geߺu’tUEٺ&KRzB}_r71$/&|u4vjwɗȥH ,soԋ6ƈ\mc4LSyVwc-[7w$x0DHt='w9PK P?xMrwE sebastianbergmann-phpunit-6775051/tests/unit/Framework/AssertTest.phpUT^]rHz)Ҵ(*JM(vS9bE2H2f1 *IUDv[g|o0ᣟy 矙H$LT5SksE.ohx\sl\=]CO٭k{;7lX_~`z8h(Zp}C-F׋Y޳ond:4-Dsz33]Sl>f>>"n/r]x&&9 s|ǝ{O1_fSu);fNT̵ha?@.G {5D^qq";8>S{r? ̹~'ll!{*s yW ;c-@ӣCAMr`}kEh -?,??V ~3IߊxI~^}Ӟ]{@ Oz~sMy^># [a"A*QĿO!9%c'kH,<jce&Kbh;3?pH8sx:Ư]CeBd\[[4L?~!~}3h w- Ȱe^if\ލ>T.w b Imrf1NL7Ż2$;:_ [3iЉ>f⇮No mTxn\qa*OV6;xm5aJt+\tBEj^*GOI?˹PP-+kQEuc|y ;|Qo~%dN8ڋ ?be'%*E+8tsM\g2v5 yk+O%# }_SsFpƻ>MEmjebVVU>Ҽ|fƐ̰Fulziʏ$X"*@N]?BNd_S>KeHNF sz\2!ߜa/OS) {7z %xvCALeamKus!y(P6XQs\lw٧ 0HAX ]?OCD /t^Ow30C'II%jS0c0!|0> -$5 |b Hꕔn ->'&qJT3^ d>|hHUX-O&cO&x E鸶E< '៺Ⱦq\Ã,$zTF}PB! Hȍc_&d4a[>BM ث&#Uj}I$ t=}̦DAa& {ǻg&Iͻ Ɩzqez)/t"ZVXkuHVF=3,j.a .-n4} SqC#̊+q7k aefhI "X(r^csݠ ·a@, ul<ÚVily;iQb+ֶ%>b9|>Fbm;Ǿ$\2|}2aJ /v$ E*=3Êv 6$AOCK=zֵe5'Y5㤬~LEf)5YMx u I=ь^d~\ {G׻_8|뱆*ͼȥAҜ!DSc׋6b1Qma{8K>+1>:;wY&{lPi8g[*x,^rNc?%#Ic?ļR/iZ]^^LۃKcfɟ.OwOv[Hip=£{Aۨ:@J$"=;P=B{=ϊomXzLIBMh[q"-!W+R".m}3l?˿[UpKuR\*UNԢ0UD7UT=8Wt\A-CQC$dúxuӼSBTT\5ppLɕ3/ Y6gd5N_S_yDU5>$  ƙuj%$- (RS :|~)QcX+Aqo*@pJ+>a% NJץ`u"┲T{EUt1̭qB5lJmRZ@5BAJh1:k&f(ĉlWx1FghT893_OUWtuۜKu5KN7Je˻{gjN uYPi!qEQ\xjSs\*yV#8! fg% cT%V~lmT!_J 4rn=p1:6$:D?KʊmDMM,wIbyքՑTGG#@hZ..JWiJ cQTV(~U-?_oKne`1!"lvVLe|'TQ `T u\Y,V}B3)NVS}cw. ˬ\%ns Z[s/U>ZoUjW/ZjYvSF]ӊ:V-~,w78[g` $;z s:2q 'npex+WaeU{ 'R$UO^'峸upUW*vgI` 8P5_r*\kR}~nb'4} c3aD}Wc5ųSCgO~AÏHM{Xl>ŹOrw [4H1oy<8IrhUz+Qkm{ӣC[2[u֕k DIWϤ ק7} uw i)X%AIhK/>qDW3+EX +<܏{#p? ?9G)($_~`kL`kR X1IY#M6 T3mZaSc"!2Ctp魚YT$] zr eN, Kޭ)/j_d"EA6ٟl4 zϷaR-m|U^1t˝'ɐ4¤PoݥE&un"?8SBd0R_q4\ɃJq# F5Vpkh,U[Qm>6_ ebZo{AvQ|hl*wT(:YRXǖͩu*crvD9(Gah̥lYu8K=0*LGh7Ej0 8GQϑ}Tbś HB7=l@>1#Vli3=kG6%(VQ'?$.K1HwKc/2䈭f ~g$YonኾwOx&W<|dYɔ\y=/7Ry L2޸i.d #^錉r%fJj(gق g+J׼=YimE8qȒ ]~;eytgXYEE9)vhy}E'bV6XdаߏC=T0 -l8Scߝ;"$5,g`˔amov|}ikx tG ՠc27IkJhH/a.)`Hc@]:m^G o)0;($拲wZ'{ * &9eKZJF/GV9zGӳENhhQI[x*RTQuV[_Yk2I(5DGQL֞!p2C4E~ 6aLLe@D匬PjpU$uJEt1n-5#;BD+dA$}2[cDpQrh]!/5^˜|ƦSwc̥o҆)Nr$TdN9(s.{@'g‡C1EչG3DK{AN`:%#&6%0ְ')Ǭa:׌3 F_=j@zzTgj (3t]3'Й.4}rfe*{":t=FCޒ08h0Sh^uc-[l֠PK PB sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/UT^PK P|E7U sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/ArrayHasKeyTest.phpUT^TMo@W!@zB"THSe=Uݝ*|R@{,yC2CKFIAE Z0NJ; W|N(0©h 5>v˅aJf.MAfya}DGڨDXN0oX͜ȅb[ خph !n8{*%Z(im(~%g b|3Ȭƅ[i4SZ#;a?bakB[8 O䯟KtaLυ|Jqm8z?/, 7Z K>.Ea{j&qXgOa->`mU()H<ZmU|MlR+I0]+*ffٝV+ `.phkPx0!HeոH1[]h?W#LY@lSl+cp-0|Am0^z&߳(h@s;.L'V#Rt?p+LƠ/K9޳CE6ϖ*UlBd'P_詾vͬ lB~܏LڛjsQ% X`Kv|"yDise4&ks[iZMGF& g2YOx{ams59.-]gcP]i;MlӞ 8ޙc %;pDذmHC'JxtTȮ-: AW jV?uruH8&=!ғ%ĔQ8m1`ŋ|KY wJ<g/ :M\cS+>lo4oPP}hubbISPH?x0S6FzDORHNc;slOj5s3q]?Ή76lkE\jن{GJhxv6Zmc, ë fd,P0EҔVr3(DXPO RFw,PplpY>~i\,LI&03ܹ3Jd CH9Rpl3rhi췇!~yRI*QRH~$gbBȬʅk7EQ54UZpFw%W:l^ٖG|J?aR-C'@!]&,*!YC4}ÉKNu'o+BKc1i(]BYJ _ݭwH5*: &iċ #QJ 8v?zyv4sJϒC5%;odwCR!9p})g0Fњ ֵ<=ms<۾H xMnoav M?ñHAk:edc&+^~9?3_usvEzPK PS[ua sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/ClassHasStaticAttributeTest.phpUT^Tn1}߯H, Ji(4T}T,ku{˥ ax朙3_Y \XY%3 tW^9&r a L wKN9l‘ޢͅw-PͶfd,P<iU@r%Q;&ԩsA69 -.˺0@Q&A$SORQ7ܹ3JdCםH9Bpl;rhiǁь!^yw*e*PRH02\I,^MToQ; n.l(UZpNq`oh;P\sMʼnESV25q aΙ5h־YXG&Zx@K1_B!ǒ?޽8{@l1H)N2Dj)%%˯ z̕Su72cҳf`꠮*"u偎'V@ .3lӜ !~?06hq71wcX~K( njgʦuhS';(EVWzf㭞?ZW/ߺԘp_zGfĬ\Cه%o}PK P\@!X sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/ConstraintTestCase.phpUT^TQk0~8JF5iaQJbc1Y6ҹY;ɉ-{Ӌ龻՗* D %#z `DΥL*+a ?jIcNp9a2n%)4|E-peknT;@=fY!^BdrC$K=Jسĝ]ܭn\)ώrAR&Ԅ)$|mYQuhQKá]i~ƋRs !5M塞Pe&I5ZZ0m. ׶Jyb$plz@"ԩC Lj7,'EYk`ϥL= ̠礹]?f6gY,$<|֦\le&4[- a1-V)Ac'{{uGrkWݻ%~?0][Cx@9h}>ESƒF8172}2X)'_W^t6yjɛIPK PblTO sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/CountTest.phpUT^XQoF~J!zɥ#p&QBU)Z1uZwրCL wmU ؝o~"Š6L"os`z#aC2 pO}2ϴL{T1|였bL+ Ce4Q|82D!Qhp)h}isvձ̈gnWҏ p͈fs-c#hvƨ#Fc\w Ku{ݖl0.́9CI|2:>FAFB%,1 ġЖ0V%;&*?'(|N[n $}ANUTV;"wPTvw,ʯ^Uh~N rQ7kdḁ3LujP1#tqsZEwá¡0Һ RfC ێƲGguHgҴGL q8$Y]7~11閶5n˕QGaL |Y+dkG~ ð3C%ke;%DvDzta{.[p.#ELٰ7sĤI q0w].D>e8OUK\X1NGf~)= _ǰ_cxMVЬK*!nyB @e`2i`tvCh& @@/T J/ Y: g52 %!^7_׽);k6pN|„c!ih.gNb}Xqeۨ{oj׵׫[;)|[>%b|Pj%-j(dZS)z{abW6IE26WIǎ?Eԃwf,\gɴ ;L.F& OVE˖G--P)7y]89'`yיlum`!-wzL dwkHj4h9,`'MS-)qߗc7:ghw}v1jUsf-L82fD@LJo]6L6$/s[PK P'`1UY sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/DirectoryExistsTest.phpUT^Tۊ@}WÀQe^u,22 mR1]ou,:uα_$T-҄ck<8b"7@]Ijp*p*,I+\(m=sD JY>eP:@|X)YڂQMw>Gw 0KKG`tŀT4pnc8Q j:aYd(^$isBn-I[ӃOa ( .GEemx034v ;Nc;w&pTOł4*EKodVHSG>lNJJ(WdyK-yay%FOШdo6l3^.5|D@IR)D//պ#):2Q p8&R ͪr~ \ {w`:gNٿfq-Js8™hDgCܳr븋߆h}}[in`ʞ:gUΝ@itkAPK PJJag@` sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/ExceptionMessageRegExpTest.phpUT^TmO@ _a @طUѐƄV&M[YuMvt}4-B Mv_.:?v|RL a1rdeBct `nr`* z ?)I}CGR(8GB)8rSNTy@'-B[aZ$̭rR(dqB5ն$S;?0P ;L8HdR0;]9Qu(Q3bFf~B*: mrAG}&NSЩ+EQ4R .N9GpPVj 0*8 63 6Bi㼄`m0uhFC4W]b^jkr&6BCG3PܠQ+*DY/*~P?h 2]Y˫#r lK̗?f/!yyƷLuWX(sDnse[(ox{ȸGc 7ih'8ia()h%5\4a~ނn9?Mgcɡ鄺`/c2kzHPK P4fUS sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/ExceptionTest.phpUT^mQ]k@|_H!Q~UJoB99Q{h)ٙ-aɩ>hяk h*W2U JG`2XJV4_s2Mv3ƎjδPڀ@u{>ѳtVwu:;6 _d(Ka1vdo=%ێ B9Uߕ&OZ-& q*)\h }=r#@BV 3(D΍ RFw*QpmpY>_iQ!A$SORQ7o%r n]%ed4hJS/;IWJҕ*]`LQzm)<(P$JX1] .W:spC#O94R`(\8QYMPù{,<$ol-R:̛.Daʍiu~Lg5Uu;i6,(24^S|wKɮ{j Y@|ypɩ(ڨ3npFrE}*ySi{ܙdGfHX$ou#7YYv h+B:x7C$O95S(\krq Ҋs%3s6CC*5Loh& O z۳< {=U2c^ =J wxɮkydV C|~[ '&h,ϷQ 7Q2JmM{=ٜc{zDX$ou-X<ކx{~}/~G^?93lӗ?K PK P{z#Q sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/IsEmptyTest.phpUT^UQO0~ϯ1&M*U4:Usm>>0|b?œ4C_܉ǘ$n[h]Mˆ 1M_FC)[芌q"BLτOR4L3p :#1#h"ә@( }BpH'ϱ8"!Y)/>_]HS aV8AA({2^U(f>G{sxV{猂 RqbYL!&P.1.|ϓ$Rt X+Β9"hR LD8IЇ " APȰx1ƀHKHpj:FKJCɲ)m&/#`#&9tFpqi(:# t;ȶ;HD K/qW J+ (6w9g *$`COLȆŸ@{U[һ,˥!- aGs#1H]˒ E;#.I:#TLdD,858؊ o,*e`r !(TW?8z乓`m%nD9JA?&byHhl@jF|NfuDBH<=I$3Ξ̎:hwB]'Gz[4t}UFifGg a-ccXj^"s w=6ƕ3̤puf 1۵AE !͐p󭊭M ,7-<8 saa ѱG}3ԣ3F^;!Ās[ e&/(%/Aު@^M^o.!oyC"s3|WqEn8~1ڷ%̓O[r*\@*AnblvOi9ȈK,JmODضD#?>}lCΘ {\ܤEH @zLEfV 07u?ީv-0[ʄ(˓6j@&S5\9p> *׶QP63)#=ݵP>ymb җU;l-d0];}5PkdA-"Kg^jt*H/Ե՞)޸i-zlXlrWu@?$*Cb[REm f൤ÍqX-hYҨNi6W!<z}e(+~+}SV9Y+yIr܉nC?%Q'(妱wl5Bv0g9:|0Вݧ 87ގ,Gm {#wKO֥Bl\`w3 ݃#ؚb }LVw2~oZ72 SVj3zM/Oa@:Rgs@zd{YпDoXof+Ρ7L!TYZɐKQ[q ڕ]P;s)ow-RHyiW*2K_ɜ-aEW$(hUMBJTt}c)B-ʤ\cz%L zR_ZԐ'q0v{3F';n PK P85U sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/IsIdenticalTest.phpUT^VmOHbTMhhITS'N{LYk:߬6IN@{u0y ,+tQ"0q]p9"#ߔ+I߾] G <)Fp oP̹0K݈ e6 ē2f(03(c^.CERSA%j΍Hd9n._񻋱Mwgfkd a!̌,ԹN2  v$N9a'TDu'rp!̀Lorߥ .~D\65SHYwsFz8o(1y҈6 Π 5TYOI)F`ƚWεtw"֞ kmB0lu[e VUJz}MtN(*";'xN8m0*ClNpIm:DlLB d']%zq/& wk?ɤq:(F Lj>AM0w; a7pg8"4`"[ƨAa eD=lkڛ8:eKPiFH7{L,k\([WZTz_<D &-4o_Ҭ7 1"k8>v,=kM'r_^BY%@V{VV% 8(+_1~V#Ov+Ա8oѯրpuݐϜurxA熗gs{sn<{~|ߢ/Je \섺w`F= V4WUJ,6|kJӽ$(6\? JF4Ȭn£],%J v"NXI |rZ:@N\U>՝Yc4{ܔ-#,*u, Ȕ7nY)}Y1TD>;3^NDgdVGA|HA2f v 4͛on 4TGr}?)qߞ:t~ZGHy޻HcS;w&i‡46JM?1ɰ>]{ȷCri'lWH`'r >f/8hݻzt|n^PK P!ogP sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/IsJsonTest.phpUT^TMo@W HPФԨ$*)Df()Q 3o޼7i([6)O^= c`L%03vK+:ӊ0Ʃp/h 5.vɍ2_ qPԌfY@dҍU@h P;ng.);&(8T~\Ûqrv p dJX)fLf#F=n]*8V 3Y3BiA接#ʹ:Qq|jfQ' n!$'4SZpwg\j`ɇE4`<ԑgI& 5K%Ѷ p[Eʬ2Oۛ&\ lh>4;u4\oMHmwSѣD<\챗} \FXJb]YCXL'߰ej܃֬L>˻eq.Jlz;g tխZ]z'Mj`Ney{nX6|i<FmS92oN:NXR(z:෡ݮvlm󡗇E5;\q)7PyɻȏٰVvuv2N#8T+=͂S "AQ >=c-~ގ-ls5T~kwYCΫH;?LVRp%PK P>î5P sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/IsNullTest.phpUT^SMo1ﯘC$v IШhQ#Ui$-Rec>Tw|t! *՗޼y e),ƎuaR(*[ K`rxM+a@21N#%4|B; vGn!32@}Y4ڪYA t7ԹsAT% -.kޗaQ|AtJ1j0E% Vfm-~UeX%j8iiytSdd+C/n&izƐ-(I*Q=ƗW; ϱة;F$BHSqz=<dgfHRL#O'xh+?PK P:+;P sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/IsTypeTest.phpUT^W]o6}ׯIzݣxi  %AQ`ҕM&5r W%r\=1BO0 ẃ30e@Fpg[26^Ѓ;\2m8pjaBHc(f&5B12yV|6D1Ph ("6p)hl1}LUY3LCm%`ܬi22URmG XQ?S4(_D 0'ջL>hwN LQv)BQk* aqqi WzNdOE[vxBL98@_.NbY6<;]瞼 4CC\KXo1,g,|)3Q)N&;*~wJx.= ֪NOpl]6u:T]Wܨq-j M8X f5xScSKúA=װh4̜5@B囧 nROO`oǺi{)2$F^M!K^Ca)45^H/"^k1{G퀣t@bRmDlf"+dg aJnyCӃt@YLu1?TZh q KlQ("7O^fTۚ nR_m*^hMLPxtTU}Tqu=\pHҵn6v>!:u0amfsePe)JߥI"]V:x>|P#ݣ#qx xMWȣf.sq~wl?ki.,B!7m]wMQWy63xi7Zƶ IaM:ona4))']bZTXlymSmɢ+)%ִwQ|-ILiz|1 _Q/PK PEiAT sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/IsWritableTest.phpUT^uR]k@|_%vP#@ivKu|ޭA%;ZKYaȓS)M)n[@+R:۷w1Lp&=)i+B*29c R[ndU@[@QropU󾿎$H+!SaYEJQعKe\w ~ʺ?#kXC*C}!* KL6jR~gP 9;5aycwЈQ|4nXCl )CismVPK PkZ i sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/JsonMatchesErrorMessageProviderTest.phpUT^VQoH~W!"RrQR5#:*x/ow@U{g6)Bڇn_e曙oyCavQ<43Q{:9j >s FW;+26 gp&/T ou}!R*0 B\)2_)>O 0ACX.E=r\88-$i0̵,T(BIK u*fzj!t a0.YU]&j3^g,MvR5|R0&}AGJ>\t➨mfPe\v̰tO)VG)x&Ù?ߎgۡ;o#I=3gB mſG߻aK5| s.C# 3m+f)wN7p~/avs=qC/;AS1hp5d̺m/'A08\3e}B)4 SnIJM^ֈ0ڗd% [sfC&bo:y*^NZtE*JK]2Q#=FmCI_G$Fu^M3Kip}Xӄ0fEje,DDFUMBt[rJn^2ȧŔ۟[k1x:ưPlI ʹ :yO쪨Ӯ[҃}!xc()pD\&uԵܾnu'<'Lyc: $Fom%>[Ҿ?_7qfovFW;v0}X-)Df!gsW.Wv/:TytAk>sl)̾Ǿ&oޅ^`Aҋ{+e/|v<`cۆqK@KR3k\ˬ+Ѳkw< 4[.AZhOf$\ d4Bq ' a``Ka~ JL^ s*tR1y9J]6[u^!r i!`]̠?ge nZsc9s6VLd5]3_CNT;YROAoMr*O2Ӎ΄< 6j߭~vyݨ|:.o*&r0MC'쭼"&2RCjFMHH;$MQ(z|^{I3j^z8qA$߱j#y}P ᘑn;=kgޟPCMec4t}ۓZunnP6HM5% + 2Gc®m'Ag$Cj؃agjmzXz=3?3.ꭀSiKf!qlFj݃NBŜbv.S}\)ȀTlb B_^i?GLZmŎ39K?(ꎛE4>٪YP=Ӝeť+WvC D]i{ޓq{srrhٰm]hЀѴǏ&-X3MǴ?u/)|?8;렰$CNmY^M'ףmɩlRU9>}Ȳ)!OCx+W!`řŋ-nzCs {cgC t]XUE:3{REs)$! "d-} >\AS$cK+jנSIUAv)-K3Pڈɱ k()*Jwy4z}E+R7c CIF=h.{+ ?"K|LyRńy8r4Tr%n qش@ FKUd 4hd)[Pރ;WD[{tjhAW$NJ*Xzث;\b~ӯ.TCJ΃әcrt*7XĉPWLNTDTJ-&p~yṷ%("nX20x۝ u8NLؔ Tm Nn;n?31Şs$Fo x֬Zsm6SCW>؆=![A# 8!yBc+ b@uUkIY3]ts~3-VL\we Ãe=KZ;:Of}{e _K4<YYݐEI1/ (y*RTqHyBxG5\7s;ejK&ոmp\pO5َu'V鶿$윓ͥ YVͥ;"n\$F݄m}(nOJ-"ΏOYէ^(eZ,] MPnMB$kB"4# 6Y r K0 L*&Ri=K2/N!X{2@cܒth0ˇl]ʿƁҹ^,Htd `SD4iYQ sK,P[OCҽ-An wrסrqPSnirD,} V?OAbe4#:\IԎ ꉱ3A&9 .Jw~;B8HUP2),eÝ;D.bi1CWm<-~yBiDwReRb~;'#tREfm.ܺ󲡉҂ȅs0w½\s!c_o*cO ]KָцQi ^Su&w͎ p3^S|:FvU9c8R A|z4 5K&h\ֺs*g?32aH۸3zβ U[òHU/tޥW2hK̀:'%tAsѬzo e),&VV7jEpB9UJXVt !'-Épwh35S Ȱ *r_ MjZA$junL2 5A. T:*B8Td 3X(*x;D.aPݎ6-~BiFwRejmCt) #1: "jnLe-(WZpnqp1i. uE^ؖg*?aR-G:07*kN3AȸӎyJ^`>GˍE0'NEc2y"DwϢJ`4Myj89aRdx49:0^SrkBvհvæ4J= j!9>np J륟њ ֹ5k~]FQ >ߋ4''{-H,Llixw|xbɉ)QخNCPK P~R sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/SameSizeTest.phpUT^]O0+) RHŨ&9%;'-qJK$>('}4?I1TX Y%st^t`R9mq e : U&y b<ӴJE4ت@R%Q;P)#S\*'ǭN[(# V~%0prg +'ѧkwl[.uyl4{i/ u2[[qFboV(ȷu{p2e҂I9谨~}*_>fxE1I-} x<`GZ1k ꉇkr&} z #؉uo"Wy-umag"-E>_"X_XPcnmvX&sBh{(|6N d2,*4~Goʗ?`Sh.q[{&^g(+}\ؾϦ;qcgU܂$Wy*u( ~4Y;=)I|t|]w;G 1h4xtäy$Ur~X -9`poPK P!xd X sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/StringContainsTest.phpUT^Vmk0_qBO#Mn-Kbc3GslvrNlK ItϣGEjH5c>$Es|X?rv؁^B.\\ʘ9Ƹ~b!PH M3;2 ,IWDǃ@GixC*=+ ic帷w,UE`$ 0)ܨLh>pI\5OtR9D,q2,S[[71@А 42N©$ c)XD]@8 $E e`.7;bMH> zJߦdUFހk9p c۟1HVzV 5Vܽ5WtK${'x-L}kP LNjk8_$>g[ `[iL{Xu =)鸠rJ[݀/ȏ]*K l63ei,W:mR6PUhq,lmLՍβ+fvhL˒2[hUG(;4VJOܟgۨ -po%*A/OQE01o5h保I3El:}ў=UggdU߿üaJVjLWؠ\BʧeGl6\׊7΍PK P X sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/StringEndsWithTest.phpUT^UmO0_qBHM/c0*&A}ALri%vfiaHx-4KUe|ޔY ƹ0Z22otQ[k,R#) Ng%i|Lτ%)C3/R0gy@ f P% 2ZU[<R D.vJWvKBí6<?U3.S^|ekcX;|c$g1ZS8܁s-fk5=P| ]p`]Kώ8 [4xa8Hn0q쐙)ʧ'V۱00bTA2oD'Q!- ϛ5m:1 KVb,XCuw3gL!uu-SS q31]/G~G]JHFd&8)QT@w|yЖ5sIE,߸7d&TsskIfQs|J3#"!IG0b).৾x߬k^gfq ?AS ua%36lɟ wƫx 55b˫P6bas{%`jJde5B(u^Tu^ca|=Dg<)ѼGᚰjLo&J~B@ɻ y_?S NXl}z_$Ȅ1=tg*m'L6ѳ#o6 Ԃ<6>2Pn{~ALԷy\e~w{ګĀ Yʸ2Z,_"_%G'7.W")r4m#5ImHQRSNqjQ:LYw-Yp-š%Fd?O֓d;Nd7$V.Iw)q8Dq3a{A3f$X0aFČ6/Ld/M47BͻCZoGG}V%⦪*@adhvYVsR3?Iq! u-|wXJ'Nj+Ǒ0oMBj[-YXFvc|"Ak?wKMmed$/EHgkW,F,k5 b1pf Vh(Pa̅W_=-0j+OaggZtEpAM2s¿ y뺰2j6Hc 7&DX$F\ۅ~Dtw'ħ%[έPK P)J Z sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/StringStartsWithTest.phpUT^VmO0_qBHMQM/&MHI.3-Lfz9Wy)&0Z22tS[k02Y w% g%i|NtaW’ ьJ,vȅx02WQN T LPY.2mJARu 8q>F T:XXHwrSK +ڙP^VDqiB* gJ'&Tk Ɠ+s-TgY.RE-(Jp' a- ؁ mƒ:+xU[U'/sFETz䌺@ peZ6~&d7b3T39<l/4449fpʹC?Ĺ]f$w ,jz}Qgm1ڴeqԕǷev-{poht_8jH`8wq RW<|OǮŽ1ҀVȂY ZWUW w rAfdqv$V8,$~аAV?S% m.?8;;!^w/S^<gྦྷ< VMǁ?I-FͿѼPK P ] sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/TraversableContainsTest.phpUT^WmsF_$ExML)L2O:9],ԻwO/٩q쳻VI@A, -^=`I c#w" ?A 8PT([aG3k!8@' #'P!2@e١k3$jC൙ċn2v a!.QJ…aV&@vc})1E^+9^cRnKo`@`ao`no%55Ȩ{YةX*04bƊQ̅usBZ&薻|%鈳IU\08|+.DE;Eg~fZx]ς+LxKklO5+ GW@Op&Td(,Z."7ܭBuMxpuȩ$9!wD_2aG);s]=".עeca#avTHX27vlKƽ"9,* +@7Qy.!D~3lWS7eKtz^^&΃0F,σ,s6P+KC=aAM|dRM RjT% j3_G_xg8/wM-VLpk2204T˾/bZ)iSǀ®{sM:߹0laq|OP\3o^t <ේeQmxZm,ˬQs@Yœ8O‴͝ЫKG"A==n{ڦPTxPK PGG? yI sebastianbergmann-phpunit-6775051/tests/unit/Framework/ConstraintTest.phpUT^]n8S$lv`;IP(MQ02mk+K^N.b,Q?ežhY<")]}Ba3 M.}C״(C8]{6 ϩТ zbpcB#YCzeѧYp^_;`9^:l@0(c&}R>\_5nZ iJN'¡cʖ<) ֜;#fPPZl2|Hט&COT9mud׫k᱖jf2N,Gӥ> Ӻo xzp|IJTMKpmgAXo 3= ې(?%/#G't\=ãcvTA.9L3 bajpiڳ{v~-Q%Oo#FD3xj_R9F5 U+r}\;pZH%W]hPѠZ*n`V!t? C$P8F1}GYn&wA ΅ܘDcd [ 0WU5\ۓZ$OThl_[pݵ 22s/13$(ch,KCn%t~5*YT qhJhȼBy8N뀜pͼ fս|:MU@ AlH+x^Qqݡ^D \sQwB0[J6~uQ$t<_<Hv`y7V.r }[KrɁGLCDZ+Iޥچӎ2^cnAPD"K@aXuL{5RIG4+ʛ8ftZ֋D`,vcq \S lD:lE */^B:|}S%Z2&l2NMV)jr@9hnN%DE~UfssׄF: ^ [d_'YZיOC &Mdf!nȰ;Vӄ 녩 W{<JõMj1:Y>-آW6(#RY+ Y\zٲ5۪R"F4Q^t=-ߋ@o x{@t@~fn`Y7Geշ_-75"j*oFqH3"H٭N;O;-KO#7sSǔe4/܂R ֱm$}:}l!7-܄4Rd=޵BF r<'SިNS+Cf>"#)oDoe=ҿG(lvNse->l>yfI]H{VaeKXoF^'h .\|"S dj/d' }&ړ=.[AN5+/cI7+ۛ3wߟ&v!LzWt8ϡsdžj@;Tز RwY,S:PFaH^W+]9M*=䥫VHLQt"(%ϓ& j' WE4-724B3v! ^GSLȁ̘Ҋ+}]9#Eޭ%_j" ke>iG}RXU%[0 HX^ķ Vgm2wV*R|Sg;M5p66ia4dۏ?S[-Uf d)%5LpLŦ>/qILPMs2;{fАa:::=41PT۰;k a us26ɘ5.yNj*RCd5%=vBg5m6#q,G_d֫|M)_TMtx*$Xe5Zy}5Dl5Ap$.jqY"\fK[H44J((1^Vlj9p-(#a-%Cw MVIUvbEg=.*=54'M'%Bh @aY\$fCȍA5ZcV'9{S| d M#k>v}ㅫe{^D5b2/ɣh {ACyЯ`*-q*1(XiZ_{T_i%|Mp&@F<&eOwwOס,Q.nhG:p|o. zFw_ݐ02^#%V ~vCq03t7Ff |=O_VlWoPK PA sebastianbergmann-phpunit-6775051/tests/unit/Framework/Exception/UT^PK P OjR sebastianbergmann-phpunit-6775051/tests/unit/Framework/Exception/ExceptionTest.phpUT^ePn0+PRZBOmƱ V{׼^xg2TFzLyhB{SvC@ƹ0Nzbѻẗ́ITR@ZZxB?_Hk.>TFAfXxaVp9>hg_H҅m3([j\t/[:OQ. V2@ciIJSv+CFma|=CwJBZpMh^įWN0*Rx}%[X:8WxdA,:nJs8ͣrԏ*N-958<'p X%ČUj-VqU)sJVo2 68]ToVPK PWha sebastianbergmann-phpunit-6775051/tests/unit/Framework/Exception/InvalidArgumentExceptionTest.phpUT^R]kA |_!5ݤƦ<Ȼ^gBh^vO7H{**dJdEag+Q:^dpq%@;>hQzBo{mVթT3 Rl#@ot|Ԇ~x@Ujnh}[LgWDըd] Y;)*fCRR=L7"o˲oGZb;,ޒPT>PT%g3hS(E%P.NAM"QHq3%-9=ň}:T!;Nf vنUKF  F-\z9A˪yb f]r ʓ(^lGSȌwfOD>OۺV?Fֺ59Ъ;O sebastianbergmann-phpunit-6775051/tests/unit/Framework/ExceptionWrapperTest.phpUT^UQO0~ϯ8!(]jJ[V&^*!׹4mٗ wNC>"M}Ź} e)&tK;S4Dpׅw+amK+ !'RxRB%Zh g)vDU(pԌ*,AsjUA$jτ:7n-H-Qplp[} G(@[!SeEVQOX7DսH5z+84;m;Z_s -0h'Ew u! Yj),Fs9pDzՒgO @銽 -oƨ.u9hiq)q5>cYy2|[ϖc`rwhh= -*OJkVm7|Jf7TMc/}kҸ?5o8#_?w{= "Q<:4Lo4 s|z5544~HCU^-u(RG\C p P[߾mcPK PWQ sebastianbergmann-phpunit-6775051/tests/unit/Framework/IncompleteTestCaseTest.phpUT^UMO@W̡( E\BH"nb;& 6V^{og}t'9D oȐn)G{|>w=؅q"-2E\%3?lCw’ L3م 7*\B*\!.B?9M !* UM&HjՁ @`Ӎ`w+n뮰,s㘎J86NpNtz\)Ž{8ih\XHB:UĤAY4bmz /wC/Y?{{uFwr"AKi'"6#Չ  E@^*eh5 PϭV(΅r=pyX0\ߵеN!#0K`J6U{}iKnC蓢R*V_cd)܅R3\n]7_$:B:?N6- ìκ ^!܅NZzzB e;A5ҳ##-*[J.2u"ƫ]a'mtIB`oi8hx6"b0}zh-bqͼMHxv&b;8\WG6kiqF/=grn d;==džes3}ւq~G`:̡R2t#YeϪY4Fw)Y쏍b0Ÿ9YM׸5tR[,T{Q7VG7NY& ڌ\ 0TeS=$*p,JR u-%v m& >~  G+[O[Z' YS@SFM2QNؘ+R^Mvacgɪ(]lx bRHHy֝Tܝј0?کrj9v (9*:kyN +S1GY?> 0U&ψfxrڨj,Oʘ%ͣiUCHt$:qovذJ=8@},Y7#&Nz kƅ̡ش@w3^ak/wku]_:-F Ly2mSs5gASVdDD:l޸:Ê{r~`Bn/,aAtw]X?r4VFw+s}{PuPI~Am<^j3YMX=gk1_x4}@W"~'NJ36eUh;(ɨ$ڼJ+~%\{+8i<3*uKHȦIZN9 |?q2])?VPK P^"\ sebastianbergmann-phpunit-6775051/tests/unit/Framework/MockObject/ConfigurableMethodTest.phpUT^[o1WCT I.Q#HhS$4fM{e"BTî9WM@Iʠ"׊pO38ITȿA*ywsg5S k|EݽJlgFU4k^k%1 d4PV܇ë۫$զViYd*a$.zEbTRJ}Y\PhPLG^VON}%,w- <@_~t"ۏ(Tڢh0:[y834&]12N6&0*QfjO7!MrD*:=X:]tNpߖB%$,݁Li"z6/r~X}:JWtH++"ώu6N'Q,9wo]Yej=d&}x#ugywdzBqͳk{ !{PK PhŃ$M] sebastianbergmann-phpunit-6775051/tests/unit/Framework/MockObject/ConfigurableMethodsTest.phpUT^So0~_qH*FvҺUeLq.īcGS  uywW˼dCn%wQ;ƹ @%3twp-j=!` N0]4)Wv[@D@p9BVI \K#fRD2m VM(%2= }_F}Vr`,;I*)̅鄔[]DW}(V-6f&C6[&vTeHPs_ L:Jdӓ{+ԬU&fa[tNY@GN bjʡɐ5Qto\ESs62M;Dk:E gEgy18N7[1ԴVQ8g^A%gIoo|JƍhZuSgX+!ڳuUy\\E|زs9| \ I,]8^ VPK Pq(S sebastianbergmann-phpunit-6775051/tests/unit/Framework/MockObject/GeneratorTest.phpUT^Zo7 B( ܹH0 }8u@mk%O9 to?6Mhc[$E_g !Tblg_hl=kg?agT"GG!X?h 6 xJ t[( !IxN"fdqN9Wl<1pиI5Iq@f(~7gp~O{'VL!TYK23\H`>j4"18Ut R dp5RN]Gmhx9(MմHp{t\'U]x .VrQLopq(UaM30rUK0mmMo lHzJ9w!8bbs5ljM B1sH!6ܷGL95@NA0/F,~D8d.YMo2)5|T_6lPX@%o]3iq uGG_ vDK҅6w34*os0l ÿ@n%2l[\t,M NfK)Tn֎(̋SN?\RI>jsGSk?pDj}yj8Z  aA PǫHwfK[*[fq-M0Z/m* ,Tz )2VG] Rp(hV61o~n{Z1^P>&OFR!UR>!~=izFU g;N.0o d΁Ԉ`Sv ۪Ϧp02Y,v6TP 62j88d8g%MmswJo0wιm|F! kZ`UZ&\Q!w27=iWP=.zmj[&JxZ>Z\yB (Y]g;9aYMdb m"џ@A]@n% %f8M_Fjq;:a'z3~q)oKܗ{qUvX%s {2D_#vrZ]gMY- v=MgI i&VVc:g=XNʘUOxȲ5뛫IB;%Z; WD-Fas0 %88^p] YVI/WP^YWyRK4hYd#НmxUR䮘6ݳo)H"_>"wq[9};*4KH۬휯mk Q@Z,ø r?:XXͰ#"}0{ F0bZ-/׳Wrlⷲ+ U,li)eWQYۀnQdoՐ*[4<d74MAGӯ^$҇xܞsfnGV0_w8჻>pׄռζJZ\Z}]vL8=\*ABә--`,D\3/PK PI^[ sebastianbergmann-phpunit-6775051/tests/unit/Framework/MockObject/InvocationHandlerTest.phpUT^mQn0 +x(XV욶,E[d,ѱVY$:N1G9i"0{͝o<(F#-Kq]]fp FGAj̀eKD$-,|ðipz_YKKЛ@XFKmB+H; A~X?jpG ES#TkjxΣDR\_eV!>pwy/Jβ.0Ҍ 1/FXح`0$Ъo_\8$g21x1a MV0`.(Q8[#mJJHu97"0AjMЪDFkSx4}˙$r !2)R"u/*qydX3m/7%y(.ޤX5#5eR3WFW^cn@sMȁ-5PHZh"2ހ7J@U8)jk?Na6<[~+!9 >hvvjPm-5E8:ZkfVAtXk` S(~/ 0a.@-(*:0c06lJG{Hojz-Cیr"erE5w)ŭYmPK P,$|QQ sebastianbergmann-phpunit-6775051/tests/unit/Framework/MockObject/MatcherTest.phpUT^W]o0}ϯ&՝((Jt AMn0׎l]߹v6}0@0Ц, HpXFeh_w`F@ߌk jg>Ծn pCnl%E}9Ržrc9Vl0ʅHe3^&AJCʑcnS%_@&S$ũ;<:8r<:p Sn N]%b &Cȍu4Qv MƩ,&<4U*t #rtQvi:mX& saONTChPC#θ벨5@cax{˯ЛHM(;s%=$$clq -<{=d^FԽPAZ;0QiSg3](}tF ;;-&ϼi$ɭuT\/ѳYijalujtыϰ2v{1}:ݱ kq"rZu`W4JRm˘Nנ]je>ɢyM\Pvk17r hg󖜇Xݧ&!V.yd-G S>3+A^ z [.kl.}4_"ۨt6B*2eA0MPB((ި-i.rShNɑȑbi̟P^\EqVhs-968 V߅:[dV\hOHjs3RAV-zX"w e{F`zSi04{ W t*"wbij}gUmg/dg5Cdcw|Jyoa!J́]mEaw|vx%&PK P^&#U sebastianbergmann-phpunit-6775051/tests/unit/Framework/MockObject/MockBuilderTest.phpUT^ZoF~XE'aNS}J9H >4jǰChu{g8!_|eydx!(-г ?.+o^Wk23E LjTiF99(䝚b#C3IH!d&h > \AQI=2Z_oZ]ۨ1dJdkɔ1~+KА7J8;F0Vxi*fr(B.+ 냊hZ C R$x}E *W^x#&3Q_D?—IP-N8 (oz yO^83pqa}e LBG" @4Uzb %0f8We:sF3JZV]/%4΁0-ʯn {=[Ms别7JǁaO8<{4qb!*<ﲨ'Tuo?!OO>RCoIxq]2 b=Rl1 +Vg|fd7}[Pт f%ΐ-ў%R,i Pk 'Ɔ8dg󤞝O8gDNp\fU2}9fp[=5*T>fuT/ŲmSPۂ|4g43WJ:+ݬY^q\,l$G Kr~qr-Qw:lTt9LhDac=r^o]\=HBbr ӛGnݒ5쒛\2lrܐ9q.-lW !&?|}¶P>F úY|W 愹l}5KJѩJqlck+tMrG5>G}-cO YHKLCDcub^?:pTߏnRT%V򦝪ۊQvj-zZ4I|0-{yc_tȼRE/d#slsbs͔ 5>i[-2BF%66xn!GDj?^yOz3`q )dʀLMlN09ӆ3Q- &m#5lAMH*0BZ9IJ|T|`"(45T3\92=p\r2Pɘ%Ӑpd^L`MF7\JH۞`Ql#f6RZJu?ƦyK6"}uo#2=w3)_Ts@DAvn Mih\02ʢ\-%tjNF"(P1xd1qa$O\ݺڞw$-H܈zE_7Q-ۭKݶ͚ҡZ_!`f(1:pƋъ5M og٧Tf* fnhݨ8ܠ>{'pdж* ]k9nTw=#>M|R8&y,O#>#=V!dR8:ߒ| Lᔴ^N]w㖥QKpb!=ެPK P?;=T sebastianbergmann-phpunit-6775051/tests/unit/Framework/MockObject/MockMethodTest.phpUT^Sk0~_q8%m id+iISb}Ȓ+M#MHEww}w~-ylE? 7r@wG9&Kf,gQr&% McB HpTL!UUfQ*(Ssf=(2p7aRyv6c6@]'bn3sJ#Jбh FhɴQzݪx},1;om]h,1OE#D226*F=ʵTG^ Id$-RZq;:E$I~;5Xq2UgxQOΝov\.kl4u[/?bwhKѸ5!|9\NrʸxPƴP{*G#Vp4T/R^>w(n 6Xa4/9]h[ *1 +^z ;Rneu*PK PD#T sebastianbergmann-phpunit-6775051/tests/unit/Framework/MockObject/MockObjectTest.phpUT^]{S9OJQ; $e7 uILΦpgd<+ɀ6Ҽ0>\cZYt0# .mK1vg m 3?bW2 d cEqّlh ,r9 Aé Nf̾ ] 9I\.t&ٵMnTg'O6R܉sd `*nl1H92Ȇ,\mlL%5O)crC~vBL<Œվ55Gj~ -kE~+#\H9~ݐ*;bihXb`QH r+kqt &j##jO䚰7ږgs,+hp9"v,- I޼Q5OP!M'N|(TykñbaXKw۽2$5?ǀjHl${s@%QiS%Rq҃Zpq^U,W{ojNV Y+ű6L KAFK|Q^t\NQƬ$׍9Xpލv8x'pK#]AkV46'2]'HjS`yȟSη<0mbHMWڈjĭ9('#Fބ?k}_%8w~3S ?Kt-7z-Y6d- nJGVy#Y#ZHD/b_X6n ?,vChoZg& Rlek-h3ofbKDȨ=T1YF4-;P*Vu+ִ+ /wA#x,C;Qw9&䲞7.bp|uUI2<0Eh"YUCr85 Z2\#k`s'Ĝ m3.1{2.&$Kk:VW؎.X?UdX` $MX;wPmHeAJ3"7v3E]6JN~NxIHUKzΏ;"D7;jm ͡Ԥâ4Sm Y9_%6:I%;ԂRZֺ *as sX.:#--4%X!#XΛʟT5E $9م)$,˿qi.W T-vޥSROL —avţ3 Ϗㄔz Sؚd~2A?].IV/c7>yc(a\u¿S*4 _M"0WOt**REGJBg,&uNA=< jM7b79bA`D^^z]^dh8JtF gHHjFuyl&HEn"PQTJpa ݌l~%%UnS]F$()?x6ґҙ_<_h=ԷS77_%إ܇om̛"p5/"_.#s6ڌ+~81k*9)kG* \qϱ-U En1gl" T;pk8`8DVeDQ]^+n(w8\/VnoozϺcs>O| }Z*W\ _'E嶶PKRGG訨/d ~>GoQ_ǣQZ|_V|򨹒ݘ8㉘KV,^ԅ_`FgES_!2s%uwc-$S(<ڧgj^ vlukf dĽH~|y_K3&%(E)Lz2isd!Tfn6*tRAw`#3H߫Fvu A#!&ޕdo:5x/x{)Ȟ7QE5=){__XdzDߪ>ɝ,P˙Ox9q{眥ωR*+vaPȆjSeS漭PYl?gj,/F%ޚTpu'0e/ ꋧ0*?#$wBZ^؍ƪlxy/j/LR&mG+h9eߑ8œRW굻ӳy^^9K03G7 0T̿t+LIxh@Ke"O tW`Sj ?. ΰ`ο!}b>(ɰkȣ$1,%I+Wk#'N)ҬaCd5l&vސ2?dx!PK PfS sebastianbergmann-phpunit-6775051/tests/unit/Framework/MockObject/MockTraitTest.phpUT^R_k0um, [[`k%O:7)}'Rڲ twxߔ (+a1rdtypR9(TFXS͗Zь|O$cN8RBGZh n}`gE[U M`վ$:JIԎ ual-H=B{nruYyN ;ٵ9|ʝiD&ѫN-jtZo&][.Kyw΃u/lђqC` p EHsCs+>Mc\K ?F+fmMG;7*Lf+sqeZ.81-F) |Q.9@u1zta43XlEu{JcoPK P^q, U sebastianbergmann-phpunit-6775051/tests/unit/Framework/MockObject/ProxyObjectTest.phpUT^UMo0 WP NѬ5ibY X`IKAX#$u]${|"t!OsQfb*Ih~8U! K`~>hE8DŽ # GJhv6ZÕ~BO1 J"@|m,%:LIԎ ع e P,~~z`)+1,;SX\(F2 F ɝ(v>ܬRՍ,+ $J V `hj]alxŔsKw'tܴ;cV=荃H ݅Qq [u{43ߔN$- L; Ԋ-e؃DY 7HFK.ޅUKa˖dG쌞xGKᆚҎc%{?;|+*wyBȨuTgJdlF(LN%TaT7l{׉c86 7x}2\w^%A80Mډq:jD,>PK PHy.N sebastianbergmann-phpunit-6775051/tests/unit/Framework/SkippedTestCaseTest.phpUT^TMO@W̡( E\BA7$xk ;|m|Y ƹr;5?H;`{3Me 9| l oK0nC7X+Ge s!^sjpy-g $ I(tQINq?9NVt)"HgrS2&0՜IF&'[(A?v`P\: M tWG?BٯԤ(=WDu=IcF o{f>T9SIU8+[>ῄ6~NmuC$)G&%zG"Dju[1ö4UB_e {M2@l T+&iN L!pQX2)ppdu‡VЗݙ&kj#kw[[2䑝`f@3I;Pكۣ"T5[U](wK~C5 =;$y4]Y|Fht8gW+.j;azV}[}y)u~p]9pMN9l6zJ2/[Jv4xcy ~PK PB4<J sebastianbergmann-phpunit-6775051/tests/unit/Framework/TestBuilderTest.phpUT^Wo<_aMR}mW6ƺ ie d #ہV@tC/X{suHHP Gvj0/q7$&T[br_)*80j!̨J|I$̃ ΀A'y4 q*Tr|a 4(cr%OH"la>{s壳 jɚ¸dZ`d`F:bn7$]I(d5Jߞ7#_lcқH@2޵cߦ\0=bڂC ܑ2ysn|k|tzUXZ=%14J 0ƛ;yFV3%# M.ȑ+R3ˣ _2|͍ݧ1` t܄#~s;DmƈچX92dcЦI9"أEw LEuP, [y\/`S-C? <7}&L@5< ~dƝN{tew$C@ +=C YQh iP %5[;sB 7 @bԐ˿ok c*п[`ATMwʋ1p^SUWs~Zr9Qrdx&%<` 10ᕯlcB~_9ZƯ|NϜM_bRXOMQUpT&:}r)q\&o^gG Sniת-O` yA4yrx0i*l03s a=-]7s'W_rN6A{y "h ?wQjMKjBhkM&&L&L&LQчĉ1/ވ,y}%>3~ x%бxU<8HfI]fb((0M_KV1 ʂ;/U%]oFrtsPҌV%E{Pޛݰ{Nڌ^.U(F|f9fEv{gCvbլ27cc8 XﰶvQ cQKQJuygdZķ`kz ȳXٌ{ř1nfqP^a6DڤjZ;7>%&t`%y]c6M bw6( fIАK¼鷧0Rdے n%*c.73>ڰ^|ͤmTt4{lw"(ý]uSßk܈X.Rm1+[J`e9JByWe7Ƴma$+yaSB# J?.ڦ;^ġElv(麐wu6}X 0q>OڙGD\bW+b7SQz.e5>E~xB Ct2{_uA<$ıgzpbbyJRnPt1"RE<;fpP^226MmZ^4`<ߞKZ8P(^,YTNhV:hOr%jcm*& 0c]aȓ',=l;vrVke%%5jJn}ޠXֻTApk&jnv!`w1ҁ9Rݨ>'lYjTu.Jw_!in-2m#?kYH;-+:ۡj. {Wḿ>$ 2"E⿟cF?\\UڹV<_RT+ DڬU+tn! #*H[Kpezގ8.+Ox6B3µËyGV3/Ċ'\LSDqu.DU[RR=tڱ=90L%s.{uԮܝc*7nHpY3.p˾ d]@#1}wc!">Nl23Z|сtxn "!_F2 Z7? y7NY\[:"RE.IIwNuQZ >.x ۍKuיv$XYesw깆 #F7qЀet-!7~!'n^Nn.gV)+)՛s bG%͹)-;w%^$Vh YIz^t%"'S |/)9uUDbKP/mKQtΠb/r޺ewh?uZ(J&}/mރypp|kaY-?a< sb2^YxUv`A5^Qxfx(ĥ A~n.7庅6"nr!lCλggҬ 8n`SHa`gDǓBwDuk*J'V+tYںn.=!S;"LNkxveE]+0e(cq]7'l hcv^k@(_)/#X8չ"h F羞8ؽETy/=#M  \(/^jW;ԉ~NcauD{[buiŗVǮGӢ[E+c!܀:Bj{> Jn6xG@46cRo-׵,}khf:gqa9SxkT;,jˍb4vdbRa9Bm_c)+Cǣ-tBfmM_uEO'؜Xic|āb 8~5wٌrlx=еqs927'8rx{b6-Wy\IowlF`*:mcUWsͼڤ3wR+il1uٕ7߾z"xV69Wp)g1E'x}z'Xf4]pbCB?PK P|اJ sebastianbergmann-phpunit-6775051/tests/unit/Framework/TestFailureTest.phpUT^ՖmO"1律K=!&' lsKvEstwYV vf:_? ݐ),kk)B}rX9rv؅^5X[.3m8pĄc=kDu4iK&@0WFOLxr /Ո.E=p'~/NeC%ٙ3 Jc h22V.DڬF#F}~[QX?GRRGI.zߔ# ٥Mh3 )n"G, <|.Cm2[|4(I' e{KŰ\Ã^b7k6O@B_ ڷf3ЂbN[Al.('W !ɱ-M픤21 5t]\:L&NM.6KY -YJkbts.mWR#KO+U 0e O+dL_,ֻSꈚ}y U8Pؓ1BװBy)vIm|G%L#s AQj,)booΒ}h@A8e'_%Ko9/7Q~I9)EYG[T ס5[7;gn\=Kꐣ xJ{d{p/\*_qX\)o=Ң(Ω\MRl߉d3꩘s,|*<ڄy3P 4PK P]XقN sebastianbergmann-phpunit-6775051/tests/unit/Framework/TestImplementorTest.phpUT^QN0+CX 겨HUX΄XutfU{Zb{s.~75 9+2"nN w zbn#%dNmXư8+`B3~.(eAIs G`B0,VEah{v-72*7[кd[:u9&F-U0hʬImv/!/y0~Ѡ0= h 'of MZ@Ϙ6ZG[{xEfm~B|iD Cy]4;%뫨Ff^l_'Im'fol dSzmUt!|YJs}N͑(nW8kPK PK sebastianbergmann-phpunit-6775051/tests/unit/Framework/TestListenerTest.phpUT^TMo0 WЃ4 z]ڬh`X[AZ"y,G|tۡ.(ٗy %}Mf^=W:@ wV;$L. B ǥ.6v͍b*P8jUe47^?V*0Z Ж/igϡ6(8Ҹnn?'_fDըJEE$TTqDn0dV,1Ԃc,fn-zz4$<gĘg2հL+W P4{J™orTf砍;BSF+p! yVNJM,?jUX>!rۮCM$q$ڂ ;@:V| YGX+3z„qz좥(&r`y*6˖f^lϢIɫ~~PK P:ГZ4P sebastianbergmann-phpunit-6775051/tests/unit/Framework/TestSuiteIteratorTest.phpUT^VQo0~ϯBծ+bUa4ULr4^M;;!%hK}ワSD/\%@5ZC(`LX ~&dc4|y7jvbsvz'$IB@}2‚|"j&1B6c0`5,:PMT&XOLȕXt *I\ yry4 mq@CØikT iozbvQ}_e /Q70gܿZG|8bYNbs:N]4#VݧnV:MU}5}Is{w*sf kDv'frɝoį; }? FJZ"L);4{X[rRFMև1XҔ{0DR}|VyZ4ky"!^^"+E;,NVg~^ޗT2XIʦ؛}[{4eK׾68 gЯ^Ր/]]hg*iJ.>:PK P.toH sebastianbergmann-phpunit-6775051/tests/unit/Framework/TestSuiteTest.phpUT^XQo8~W*v-WRW:]OIbmSZIH $fx3xTBCi}Pg͋@3Ȕy@S g'9 IF0J35ȗ9|V* HNHg@G4%s+TȧBΩfc Vw}u NϨ& ˌ'@KL ZD @E.OkA"g$-vQC߭WjN=Ο2NP*EƠ(`oޠj ay~ < ڷ/+@Q1.Lo4ɫ`1ϑ!%HRQ[e1bȴ-8|IːMo$gI &i#GFޣ)E)ka—l+Zo^m&3bϭ9"2 ()vQ׍c:=.:i*Opg QuDUt"#|0W2V+(pP W: *(bRwgYT 2|R7*:E #ǠQ*L'S-R$74]E0\E"ÏgbAqnV Xh9VH5S̠VYk4nNHWFW<? RH^T |vN(f,7VNB[轩2($M|:ԀpKyC4ŝ,EycZn C,e+-W##^ PK P; sebastianbergmann-phpunit-6775051/tests/unit/Runner/Filter/UT^PK P" U sebastianbergmann-phpunit-6775051/tests/unit/Runner/Filter/NameFilterIteratorTest.phpUT^Mk@sX ICu15!Υxwd-YݑUS;+q>Oy}vv.?U @y`mMc1.N38ye"ȷKz Tf)\}Z$45+*tQ҇5 jK(}nS+dh16$ˆICkGEb)Q_dkXŏ9 LaeM<&A[s|#$#YcX dQ\KPk1Fl*/I {OR"r* OdT͆#*/>IvĕCCyQ{|0FE)8NB$JQy!=eGarmg)88lDwy'[I  ,ۋ }S6Oe7yiʖقO ~LO+Xq|5;jl n;PK PovO sebastianbergmann-phpunit-6775051/tests/unit/Runner/NullTestResultCacheTest.phpUT^mPMO0W̡ b^X(D*EMV\VB^{XulE-+֗(3c;=҈e%=Гx:) ؇v:mE p-CdL)+hp-"iaC? k4.(e+Kƀt)~ VmdC۹0 7(xq3,5]G ؈J$D`i _] HaH,cuĈ~Zt>'[Z K^dNHi&dXI,MN/, 40f:VpF;/oB"Z)Ok26܊xϩJXVsxtZMV~dֆ3\8c~^g Nܮq>o/yX?!AX,5Sحw/PK P eM#H sebastianbergmann-phpunit-6775051/tests/unit/Runner/PhptTestCaseTest.phpUT^ZO8)-*tO1zZD6$͑ڑPЎ/uJҎi[54~~؟ދ.G#n9 W:."nUA[h8 0 ([Gr 0E~5==;b#iH 0D.xp5SKˀBM@qmr1h5XM9@.X]yDnV(axNftSJn)ף! v g2Gctx bW\"xjnL=P leV}#r+ VT|"`S0?voޢ=ߩlop{ Na{l=M6q Uߓ0d~w`tbs|TI'X#:/ߟŗS8pfVjR H^_yWޠCKJ-w Qwp}`uJ"s%-L5z?:4 ,[6JR~b;\8$ryL`>`Y씃oi$qmE=mxi2[¶:;jҧJ_4e5CA!c IS8NMrQ6bK=/\vI0?bS`F1 zP+&[dK&&2!)$b\^<$ A2]ѧdf6ڛ<y#FD3Aİ7GaiKAIp5š< n8J/a&3!ǜȦ^?` V=hkivTNjc*ow"C˨ R[M3f.*먙K,0s1[Bz,zM8O_KȌ]S[)dd>i·SIN +Ďs=u`qtusܛzkCXU*ݘMq7 ,sZߠA+"d)`lۃ']HGu(h@T`f>԰Ǥ> od'LYdAՇVsIy)o,gN7(Ҙc/TXFSRV${` WP|TCqRrrr ʩڔ)ZIޣeO7dīSC2qUg+I$ɻ-k.q(g/ JΒҰbpJ֤? "E]t5iu OXC*q9TK$K`s<4(UC (~[*FYX®1[>_2ӿ8"cꟃB%b|m0e<~AP@B)!jx\_.ƨ %=2acP,hO2XJzW tH0h~.[p=kِ7$Wy/"&X +Ur7At?+ dLcWX3it&%?M+!'?cO}j+;iA9wP<%ݧyiPirTpX:(s |~MPGPD`C d'0 uf%Xvg/Âۈ|6s+zkɋ)H֥Qxz^*|#)\V7l†.03PK PP sebastianbergmann-phpunit-6775051/tests/unit/Runner/ResultCacheExtensionTest.phpUT^WmoFί"aNkGH#{mͬ׀SJ+/33/ӯ<{!QZ~ԋf}h(!LOa`,j't|r1!m1PJ|޲{nb za!xql Ba@1et:$!gh{ wtn ;=g^? %O>z+\ũ89q0Y1a*J%U+DX>OF\Rh:}r{=4 `2y&4+ҘUhaCdyMc1{ ~ r* B"0 |`@YKXs{"R݅IJVtM} ĩ5%|Zelݩhnn[rvvC,Kbr;YSgrh1w6p,+KEeZ}8ԕ~OM }Y.0K= a,fD<5$vX σU O [&ndL3h u--1 5Y.ogXk1YNwK/2;} wpx?:5(il/Vh3i`Rņpu*4S CiduG{\ ԽEjDeM=+u~y>,+ЎO=x@=/U9@_rnX&^{X\7Ugb`w퍧钪퐵|PK PIeBK sebastianbergmann-phpunit-6775051/tests/unit/Runner/TestResultCacheTest.phpUT^Wmo"7ίEN!][iIKХ^;6%Is:Tl3+2O,7"gaUF9jlF,<ɘ1(l!-=>yqK2u|ȸMFƂ#o[-W"+̉zG)tq7iq9~#B_J_!cZUKZ,.1#(ӉÚhH{6b?OARwX^alW2xW3"]Ə Eq{'7O_ڇKWe˽DѬ8E9?K *^7tUii .:I@Tx , yCC}uus/,ۏ%W?*2V6F-X&ƎƝSsnH-ڋv[&̞UV<୻8~Q9"˹LPhDX6z0qO9aj_K AG6N |LvPaL2au20ɏo%f?+._,rn垙Ę ]B0$V}^{\m*3 H= wy{4[;3J`+z2IED+ ?{=0fjePlVM8 E\"dB~FlF[hvtnRj{_]A; ̙n`niՅ#ïl|F^i7pǖ3֛sT$yAo%kZ$ęLy; Gw{M~qFpTAZLSCj"Dp+iLKPK P I jK sebastianbergmann-phpunit-6775051/tests/unit/Runner/TestSuiteSorterTest.phpUT^]ms6_eFrGQ\Kz.}]@$dqHZRLb `h0">XU=scGLa=5&}0GT"+2UotXjé oR!ȏ:~* g#S0xr*|p TCj52 g=Xwg'N YỲ@59n$2T|R :dzDYԘP~ ᩂrR}2mN@f@:7i3|%O ]ԭȾ+W>CV>:)ZTcg;q=+~&'RhCH‡#%2T<‾-ѡ=R9@~~n4[f!iS@nu.8"F_%mu7Ng7f > ot#vAT *r$YdXzNA/KX PH$|ЭO_L\iP3qO_]Wܷ~OyQϠ\J믩'o3Z&ڛt:j-[>gTo )3-V^X"tLj ?'@aCuz Gsi5h7/ޟ6Ǩtd#kFLqV#5g6iGG?/7Mևt/8QIssztKJ#| DHp}l*u@(epώ^D_L tBw z,SK~Z_ d[mSZŅ!=)R,X,Ş}94r],rVIfuG568/]ݟlH[f. ˜pBYp(EZ9׈Ts/[obQuJGasP.uţ݁Yo4jdͲueG$p f0SC_ ?0og847Z{yqN^,.N7}ˉ&NgԗSc'9+?N(_t:U~FץSc (*Q}QxpDq1Cu M-cT 2R4[…];gzIAIˀ\ATLD *~2\u~+br:W?.*X M$A$d#/R ~9IuQFz0bS ^yJ jxY9(eo^)osyYVz/6CvyyfcpBj!nwM#05pR/Wu7zB0{e=}t Qv[Sc(/5̸̾ sLsLKU~\?T4WS`sfxdMes׳%*@> #vO4 7hR\A 4iG931e5,9j ĕB5Kd=yBj GH&("n ~32 λumd><$Ǡ;؁9LLY<.P{?#fsP LǕ1؋U4T" #P2T3 6?_tKҔh> t K3%Ƨ>U9sy7Dˆz9BY@A@(]~t(メH$<1HI$L1 E֎HߊEA,K&߅ ggKų-])# i:^ Ma8\s[%4-SaNF=^un.;`kV U{y;Y[Vĭ0tIAa[ pO葔ws>6emhp;JL^);P큲 }1xF&-sgSxo;Keg=NșX.p5FzqXA5nca9; (= IpʽCZϘ3oRBJR:h5'V q >À bS2 Cx7Jti YH1@)o:a39M6[ Ma%r{&"E>; AhM02qZ |3Pw2GZJf(k>xh`h#a50[-Oe.nH]pIL0n3?Y614fV`EᯑԚѰ U beh+H =ɬԊ )c.h,H\Dric9:{zb!8vBd O~{A<< lʦLPdF/ {Z-vh阤mS%CX6,>XB[e C%l"%;=>{wn'ZvsSj@1#8lBq OmCLQu;qcpIWN?PK P2 sebastianbergmann-phpunit-6775051/tests/unit/Util/UT^PK P= sebastianbergmann-phpunit-6775051/tests/unit/Util/Annotation/UT^PK P8M M sebastianbergmann-phpunit-6775051/tests/unit/Util/Annotation/RegistryTest.phpUT^VYo1~_1$C}! %i#(*}Uevkl/G *~Yl|i?" ca)7#/`SacLcts+9$+ӆ3g& uy!CU]\Jf0B.L 0AC T 3\}Hcdt68wzW^k;3eLCĭ'`sntC̵Td(B:KP gS!q&Z` mmaSˣJyZu|o퀞 'KcTImgղʾm\lTLƀ?$n[x<+ \ާ"گ~PK PMr)? sebastianbergmann-phpunit-6775051/tests/unit/Util/ColorTest.phpUT^Wn"7),4i~&$FZeQH ƀ{d{ lc}Os`& ?MR;H >||^ UQ|`zf1}zPkJd܍&C0*C䐴o nT5a} ejR!+@|v1#8@F3GcCILh(Rp)$ ۄ{}quӹB(SCT#~lO܌\X f_4d:`Kt ZRw zM{Ǵ%ƀɗ-|@o:10 #(X ч\PP:!>a _4Xg)u⟙XHv m%'gSCk߾@JM0D oXT,B~<6{uS!hYLIb5 ĨA%"Ɨf-"Zo:4)6iC{,cgiЩ: $AJ7$Qy{ A}V+aNx`hVJ@/&LZ>ջS ;*Oː%y2HT"咔bsviSL$`LQ-Rou-uAt9|~x/YWRym i֒R4>R1r?Š'cEpJ+u傒q 8>Cud;8Kuz0 Q[0*(l;w=.g} N wKx뱜j>W,nߴ *pA7?m y T):EIVOHszF +l6MpF!֚AB9Ld0k eǠVjf6OҡN*E-^^^]}׹jߞVoy#릢?W=9!2'Vaxp6Yل>FFNYIJBǟm[Pɐ()MK?Ļ1KPss3Lb T Bx];YĔe뼽Op\B֯̅Ep7[>^tVtCX㬩kyt]ÅzݮOWuU(~=z,ic Ԡᷯշ݆ /~nTV7PK P͏=P sebastianbergmann-phpunit-6775051/tests/unit/Util/ConfigurationGeneratorTest.phpUT^Umo0_q (+ ihrKcg/$s=w>Ëj@bQ *7 NΓ0CAja>t0 `Ʃ Whgs5 D>H̻*5yjV9ZB ui\8e45 =(lcջ@չJ8hTw(Ub+'mHbP%Z̑[$6M,Zc 1 `@v xAsQ0h 7Fjm51wkAa!¡}g?qtb Dڢkp<%c%'>@scwW9 G.xQb1!)F$wgfr<ȓa7hMg Rr9˲miv꺨p.&'t:%i?%%%1'E`=k$7H8"ь>c3ᝩa ,|JTbNHb} $Or8'/6߬fѻƻrп7Fn{[wq1`\ޖ`+PK PúPgG sebastianbergmann-phpunit-6775051/tests/unit/Util/ConfigurationTest.phpUT^]{s6? bI8WŖM'Il"!5E]o) GrD3[o~h!Cqwc;0QG[4] #94Fd~ n 9,trdٳAP<*9$KI D7_,c | sBWN쓰;Wh?x?p(]tbt0$$%IAֽG,rYZ~z(aG8\8!b$ 1/' 1e)Ogc̒ >~X r}9-Jgr@o5pC$ Kr^q1)迏| ԥCˌ雞Qc[$]ʯI$lK{HEO^^YÐNN?dj?}Uھ^Vj j`C6]RrB'"%!̥" l6C6NUyȋb՗f$I퓀Pq)M0l\wWpP]!q;qB۟4Y)NW뱥 fxO#+@OXIlԍ)LNFc2u:Zu2?\_a`7c;xl^:}BRW5ZꡒBo0tx4yѹk( д0|Mz;ye?1U`8 K^7GѱC#TSB`{i#BL8ǔ\e1`RyAIPyB1 :+4#$|.c^yР AQ_W~AEgݵp]|b0|mІڞO;[g`:˞ >8Zh|6fo^0E=X ^JhFGk3>$0YXZԪb.^tNe.dY8˜aNc[5U3kU&s(^{1L쐒o:txwp e%nTH;& ^Bz&z:H_5zMk'P_ ؇d|y(ǽz$*c%]eEjLNUR :7Ґ5ʣG`@$)"*h!CaCdkNQm^$U#ۈ C7H~[ @zc(kD,mJ,@7sZc5g<߆ӄGXRtVvmxeưe7T#N+ǐҰ;U/;vGƣ RdVZp~DOqyh NȦFͧr~_ڮ/s5mC߶ ǐ h}>Zd.E- t(ޥOߖFEu+A5ah(,3(ZYn2i^Bs;A-o9@&7hdgjӧzBJ?~`S}z9M W0}"=Vf*{Q 0|RĠW^O+E@ElY8ާd9zm[;5å(u97Ȧi/A"o_VMDn;9FBK5&uP~Qv=t,Мaq^oucvv^@aޓx%;5?/DÇ$d]?DǦHݼ3 v~z;?>{?sH-`PqoUgrRȣ)YS/.%[xKYCBx?V3~j bOmUvOw4kJ{s)w/ 96 z=a~"!@SOU Zo n\j O֦/"M,.Evы2Y 0nð/H>-Ix"jd1~nJ'I|\֛NEˍ S=ۭ&|(#JquE:A:0KeP.q{XL]R],ZT4qz1\-}D+R1 , ;gۛ-1|oř'p``̉==s~('gD||MyekET CrA-P߫(iv=h: PbCۜ~PS%k7ߋձTC;KK7En_LȽ"T'|?PK P#h@ sebastianbergmann-phpunit-6775051/tests/unit/Util/GetoptTest.phpUT^WQo6~8dvѮz]躠Ih$HlgC{dNڙ[ґv mN8%^/߾ AІ0#Zg:[dqKR^ﴙ 'K`.:/G4`gOrF0}=ok1Tc?G:ҚS[1,fЁcjlJ${?\ ،fI.RVXwa5[BPoLDGft?9Ž>ߧHA2в87t̓\_/G4e2Mٲ䩤.;ӸOv}w4ؐ'f^4R*@?-BDIMx.G1V gnw_v:k$YyP5dL'+FPtu>ك]H=E5 掠$κM\@W3Bs kS3e 'O(2Mz^4j2y\%Jƛʴ4Xslغh WGMP`,r{30ݮX_s-Fmtrbc}I'q|P,tpf_|5ÕWQπop0W4[pÞZ;8şPK PbE sebastianbergmann-phpunit-6775051/tests/unit/Util/GlobalStateTest.phpUT^RakA~bS^&4IӦ HLJYotɺ{SCi4/ f>$Z8w*##A n S\86QUXW't0vɍ@xt?E !Sa$h!nh2f+kk\+\oA'HSa! NƅG ?'[$2b o(*h[:F- +ZifBR+SF -c^x G# ?ɋ1d& sϤ(>ҀmN#ަVSڂUYJ*9F{ףQ{!~)g!Ixǜe8([4 NԤphk@@yF$a]/Ĕwx|<>iea /iPI?g7|*, E;y9/Ñ5ZVCè9%nw =jΦHtpA+n=F_PK PƴG > sebastianbergmann-phpunit-6775051/tests/unit/Util/JsonTest.phpUT^Vn@)+R4BKBO S=:fwT8p8V%; Mǡ+573|%La]#Ɯe4^sӃMO>O5cʀCI@pEG xGLӼ އjsZ:GfMW6juj S-uEɕVUDώ퇻Fd-? @kS 0OxaQ%2Vs.(XpKeχ'R.YV0r\n"u*o%^BՂB;SQgKQ!䟇B :\{_!\?1&ӭfs4m)]As)פ'_&?>L.&7w'ߊ*ȵQ,իSzkoi\ٗrQʫK/PkW}&!MI~81,oxu\i_\}oPK P6 sebastianbergmann-phpunit-6775051/tests/unit/Util/PHP/UT^PK Px"_ P sebastianbergmann-phpunit-6775051/tests/unit/Util/PHP/AbstractPhpProcessTest.phpUT^UQs8~ϯN'xkI6-QuÑNY)vSgti}<3Os&AdB*;ǭcT9 sn> PE`*K9ך=w : eX)2&L~m,EƵdc]gim`z38{7:Pْ;&W2-$[*Li;SXt\isu*ǭVCKKc?_HP^yDiNB2;.<ϭOeAK*?-FO-ݑ6F|~?,q;jأv R4Zx[%CЊyk֫ft*fz5o;q 4-D:jZVu{zSDm=.jkCSaޣn*G-ƽ@3ZvU.3@ `y}d5c QT4XeM,@>PWRHB&wN&lCkmp u7cbx$S,k|WCLns4,.f=x,#1OWLe+= GWnˁm~!B` fo{CUHm|=໷Hд{˚U~$7@!TB6&׸TTA˦)?7=7up. _Ct% gǗ:o9uIGp ucK&Xaz`2Q4KBx/Խ'%ߤzmKɘ!i&-8 ubB5V 5 ~am1LWb* 7r6XJA>mS(Ȏ]kն.;E{> {Nf^(po-7CUx!x_$**h4]\pv'C2l/sBKr Z7+#.rA=Y^F?bI Lqc⼀V٥X;8wFkG^!˹"ov)97l^*څZ5h41#Qw3zw[`iZF4ܰ,6V5ڮomǸ53@f\g*8Ռ G3"J$5_54#V5‡Ss7p j?}7 {(-h۪~G{VXFgQnkpZؘφ}GgӳA g(o\1P/,)J@8#1)'ZݡcivzȒ69fVx GX\՞w3FQړ2 a{| h*ONCLYE ! y#Wq2E#w&mh6&omYhjng=%MwP;s#DȘ uŰm8u{(w+mS@s"{j+lQa(x}Q0/t R4 >LpѮA8;l8 6R(fۢPLcr}˄`s^9|GLB0Q.x[*\F!fԖ WTC8bǽ.Eq pw='ʁ(uGpy\Nky*T'A@qzn%^kRjD/WjIO*T;KU1Xj붔+pe,2¼U^z^?*> \ r!^G_.3ϖn i@F^+K.#)DdnU7GBA7$c :9L|8VT T@MO3H$(Be#cOqEQ~O6NZ<\:k:919*@Mj6٘Q<]eJ%,g\=)`pIT6QqYO\(LUSW#CtD䃈8\;gJ,f )AHŃ4?>UhKlZݒlQ՟ nmV/ ɏχY0nv?0%a]"wZETEֶ]dk;τ-1ڲ.js ƥM7Q1^;4Yߡ! Z&Mp~^byAb1%6eoI SL i9 ,ipx,(.+b;~/rhOfpX4M,@ZdU@WN=17ͬU\ kH :@i`vqKA5"M|&e_d/⑷nȎ*HZOYb{wl*g;6FK8wٹK>bfmI1Ypˍr(iN#vC _윖BZ t&þ)/z\l"3+ضG̉͝Ђ2:NܽP=Bv +'6P hݰ)yѲ+*.fmLyd0[[%ed`0?&=4h-tHeMib/ bRi'uFLm59>3u~kuҮ.n-‘+g*UR Ɵ~<8`zsu^u>Gb=(b#Shͪ+H%o8sֵT)}ۙiiZoicTE6юMcz#wni5hs Ol{-:eآs?٢ \h͒j%n93ƥY7,,g[+[[_K|,z3倅-EGlQ-:fޱE?ECA˪ПO3W|eR)GZFNew" &|O`}l`"pM3< @cU Pu?*]a@Q#%c:ppMg!uEm*pNi@ڷ/7;$#&\0(yoTAV7h~u&˕`KublۃC$܄WLR`H"Slk4W(jao41>/sq7,YI06"?qȜ ᅫ:rq+{W@(7rAL}>/CMlw"H M<{^rve:u [_Q1&mA+NxѨgA%2p~>OdmlS"ks{<=nT͏w΍%kx+=Foӌ\Թ&)ϊip?m"& UknB0m`{MQ|hgZ % =G&9KzJ:6 X O G*B ^*Rsɀe.U^P)9A/Ը`>iL)ȄXXCH}Lמt{|~f1:axSB֞ Bt460~ EHhgΑ={ Wڌ5m19ɔ2K)e>9m%ę cOI\1$n8Ē2.ȕ2E=`U~=:ɍ-jl( Q_hIaз+qB,G03SLF^B D*"-$`vmԷX´cO(4"H+_ y Fr,38q`l##AWI di腋^a9f4qQ%Oo1~qwe' `z?~xN,3ZziXrl|ᕣtp ;Ș+K|˅VpJlO*) T~4}%;؛-jj W 1+-dd`@_JsiQ{ \Xk3:œ1l"p )ToYz$˰9gFf0hGuL-yrַ*zfQG"i#R+nM#lt׷Ͻ/CX~QEO\V,yLhCn S^~9V&Bc̫Zj&E _c*j m,jߕoooC/ B .xb"&NC+ w݄1H[7gUޕja-ooB|yaFvB(9v]CĴ;$nKN+ưz4jK;AIs_^<\2}!.NTO,d\D`8gϷ0\SU43& db1a?rM>(mۂ Iv[Y woDǟKJ)¨ &Sv+=hd[hi‹=8k$&Χrڔ22-? $G1,іTA\az|z>^O=RpD}0D}\I}d(zHr_La7~ضټ !Mo{b3nv-B[u:wv#ivzzo˦{/w__[- 8:Ezx^M~Zϧ?h=(+:5s^G2fƘ% UT]6Jv>QKA\u}{{{xb5PK P;P sebastianbergmann-phpunit-6775051/tests/unit/Util/TestDox/NamePrettifierTest.phpUT^XQO9~ϯ!M'(\S %:C9ՍzMhnX|3'oO" aj^[ܨ\@&tOqpv|Uҽ&ca α/B{4ÑP I;"x@Ř6bA$a@DڌZ!MPPXw98:=?bS; B$9~0kbzC[(Bzm*dryJ%?^ #Eo|$,kltN$6xPE&V+V.o/5զFCXW3r/ABN$XtݴZہ|s^Ϛ=P;š0Z-KDb5I v.caI$!D8{?w%m|7^y OSP>an2Pe%jK\.OdWcSuیڲKp'FѱZ "iqI>]?:Bwlk<"Y٣g,!Ki&ޭ)Ut2|_:׎m,XpFm* ZM6sPGu]3:h6{vcw:dˮsz 1mo0lca؛KYEh.w):C  '"ǥ$zP+:ffX:+3=ڊ"(K4@dC*}hK Q44K -hP JD&׏-7αl#l%j8aI0 Ҁ%8RdW)Z . Axn.PbF*@35wvbKǀ3"PEtV^+P%I`hPBc`nͫ}'5-G\:\[ghBsŅI=@nG 5X&44)! #Q,YFV[lB'΋γ0wQw5 Qk?o!geo\en&'njDкxĔ[CD9D&='[f&C:Z$pj9a!PƷDofG-:2ʴ9/I[ eB{%E lmP/Sw٪R"M:rʲiX]gj)jYYo t!{Ip$NA;Luo|wvm|>4h ^,6J56L9( W._PK POf= sebastianbergmann-phpunit-6775051/tests/unit/Util/XmlTest.phpUT^WmOF_1lsT*݅ěJh6I잳CYvP^_lgy{vv=|SjBn~7u4ڻ ؅Qjc )\}yO V\i2PLB%~ns*aDpT8 0CrTsfB)ZGH!;y0Z4:0LL&AB\Dq$G>ڨ cF< NRtHA/cl#<0Bm!!w ?94p;.Ҡ5@Wjl/aWJ.B%h8PŨB^S%,m`!C?II3^|&Y4ez>Չms.N M"tWvfv[^;U{t]W&k'$ϨןJmvEOY)` ~: OqeJGŤPs&rWgKE:v7 ͯ,p?Oh{ugΦU@Υ $ szIdB:3=iAKr(*jd09E>ρ/msaFI9r̎;&YpHQA'^ZyZl F֚Sӆ;UtQy2\ aBɪZLNl VofР@FnI[$lPM`ALT? HYO M%zO7Ϻ)UcÔ3LmEzl<6PK P" sebastianbergmann-phpunit-6775051/UT^PK PdM/ Isebastianbergmann-phpunit-6775051/.editorconfigUT^PK P6Fr0 "sebastianbergmann-phpunit-6775051/.gitattributesUT^PK P* sebastianbergmann-phpunit-6775051/.github/UT^PK PuI1JZ < sebastianbergmann-phpunit-6775051/.github/CODE_OF_CONDUCT.mdUT^PK P01 9 sebastianbergmann-phpunit-6775051/.github/CONTRIBUTING.mdUT^PK Pq=A5  sebastianbergmann-phpunit-6775051/.github/FUNDING.ymlUT^PK P9 t sebastianbergmann-phpunit-6775051/.github/ISSUE_TEMPLATE/UT^PK P5X  sebastianbergmann-phpunit-6775051/.github/ISSUE_TEMPLATE/BACKWARD_COMPATIBILITY_BREAK.mdUT^PK P*Fe? 1sebastianbergmann-phpunit-6775051/.github/ISSUE_TEMPLATE/BUG.mdUT^PK P"8K sebastianbergmann-phpunit-6775051/.github/ISSUE_TEMPLATE/FEATURE_REQUEST.mdUT^PK P@ sebastianbergmann-phpunit-6775051/.github/PULL_REQUEST_TEMPLATE/UT^PK PpfbO ksebastianbergmann-phpunit-6775051/.github/PULL_REQUEST_TEMPLATE/FAILING_TEST.mdUT^PK P!F sebastianbergmann-phpunit-6775051/.github/PULL_REQUEST_TEMPLATE/FIX.mdUT^PK PNN Osebastianbergmann-phpunit-6775051/.github/PULL_REQUEST_TEMPLATE/IMPROVEMENT.mdUT^PK P _N Hsebastianbergmann-phpunit-6775051/.github/PULL_REQUEST_TEMPLATE/NEW_FEATURE.mdUT^PK P4 Wsebastianbergmann-phpunit-6775051/.github/workflows/UT^PK PZp^5: sebastianbergmann-phpunit-6775051/.github/workflows/ci.ymlUT^PK PU, sebastianbergmann-phpunit-6775051/.gitignoreUT^PK P_=V. 4 sebastianbergmann-phpunit-6775051/.php_cs.distUT^PK PG4 'sebastianbergmann-phpunit-6775051/.phpstorm.meta.phpUT^PK P) (sebastianbergmann-phpunit-6775051/.psalm/UT^PK PsپN [A5 L)sebastianbergmann-phpunit-6775051/.psalm/baseline.xmlUT^PK Pݟ<e3 Z3sebastianbergmann-phpunit-6775051/.psalm/config.xmlUT^PK Pt(< 5sebastianbergmann-phpunit-6775051/.psalm/static-analysis.xmlUT^PK Pz8V 2 J8sebastianbergmann-phpunit-6775051/ChangeLog-8.5.mdUT^PK Pj20) <sebastianbergmann-phpunit-6775051/LICENSEUT^PK P:r + '@sebastianbergmann-phpunit-6775051/README.mdUT^PK P U+ =Dsebastianbergmann-phpunit-6775051/build.xmlUT^PK Pvwr3 / SOsebastianbergmann-phpunit-6775051/composer.jsonUT^PK PK$@+ Rsebastianbergmann-phpunit-6775051/phive.xmlUT^PK P9) Ssebastianbergmann-phpunit-6775051/phpunitUT^PK P>+- Vsebastianbergmann-phpunit-6775051/phpunit.xmlUT^PK Py[= B- Xsebastianbergmann-phpunit-6775051/phpunit.xsdUT^PK P& kbsebastianbergmann-phpunit-6775051/src/UT^PK PQ3 bsebastianbergmann-phpunit-6775051/src/Exception.phpUT^PK P0 ,dsebastianbergmann-phpunit-6775051/src/Framework/UT^PK P X%m: dsebastianbergmann-phpunit-6775051/src/Framework/Assert.phpUT^PK P7 <sebastianbergmann-phpunit-6775051/src/Framework/Assert/UT^PK P);D sebastianbergmann-phpunit-6775051/src/Framework/Assert/Functions.phpUT^PK P; sebastianbergmann-phpunit-6775051/src/Framework/Constraint/UT^PK P~yIJ sebastianbergmann-phpunit-6775051/src/Framework/Constraint/ArrayHasKey.phpUT^PK PkJ sebastianbergmann-phpunit-6775051/src/Framework/Constraint/ArraySubset.phpUT^PK PH sebastianbergmann-phpunit-6775051/src/Framework/Constraint/Attribute.phpUT^PK PG sebastianbergmann-phpunit-6775051/src/Framework/Constraint/Callback.phpUT^PK PdlZP sebastianbergmann-phpunit-6775051/src/Framework/Constraint/ClassHasAttribute.phpUT^PK PyV dsebastianbergmann-phpunit-6775051/src/Framework/Constraint/ClassHasStaticAttribute.phpUT^PK P7NH sebastianbergmann-phpunit-6775051/src/Framework/Constraint/Composite.phpUT^PK PoI  sebastianbergmann-phpunit-6775051/src/Framework/Constraint/Constraint.phpUT^PK P D sebastianbergmann-phpunit-6775051/src/Framework/Constraint/Count.phpUT^PK PujN sebastianbergmann-phpunit-6775051/src/Framework/Constraint/DirectoryExists.phpUT^PK Ph_H sebastianbergmann-phpunit-6775051/src/Framework/Constraint/Exception.phpUT^PK P;L {sebastianbergmann-phpunit-6775051/src/Framework/Constraint/ExceptionCode.phpUT^PK P N6O sebastianbergmann-phpunit-6775051/src/Framework/Constraint/ExceptionMessage.phpUT^PK P ]` sebastianbergmann-phpunit-6775051/src/Framework/Constraint/ExceptionMessageRegularExpression.phpUT^PK PzEPep[I fsebastianbergmann-phpunit-6775051/src/Framework/Constraint/FileExists.phpUT^PK PGJ Fsebastianbergmann-phpunit-6775051/src/Framework/Constraint/GreaterThan.phpUT^PK PtWI sebastianbergmann-phpunit-6775051/src/Framework/Constraint/IsAnything.phpUT^PK P'YGF sebastianbergmann-phpunit-6775051/src/Framework/Constraint/IsEmpty.phpUT^PK PzF sebastianbergmann-phpunit-6775051/src/Framework/Constraint/IsEqual.phpUT^PK P1F }sebastianbergmann-phpunit-6775051/src/Framework/Constraint/IsFalse.phpUT^PK P{0jR6G sebastianbergmann-phpunit-6775051/src/Framework/Constraint/IsFinite.phpUT^PK P㯳c1J sebastianbergmann-phpunit-6775051/src/Framework/Constraint/IsIdentical.phpUT^PK P>I ksebastianbergmann-phpunit-6775051/src/Framework/Constraint/IsInfinite.phpUT^PK P$f ZzK sebastianbergmann-phpunit-6775051/src/Framework/Constraint/IsInstanceOf.phpUT^PK Pg E bsebastianbergmann-phpunit-6775051/src/Framework/Constraint/IsJson.phpUT^PK P_h۸*D sebastianbergmann-phpunit-6775051/src/Framework/Constraint/IsNan.phpUT^PK Pɭw-E sebastianbergmann-phpunit-6775051/src/Framework/Constraint/IsNull.phpUT^PK PrdI sebastianbergmann-phpunit-6775051/src/Framework/Constraint/IsReadable.phpUT^PK P2Đ-E sebastianbergmann-phpunit-6775051/src/Framework/Constraint/IsTrue.phpUT^PK PKE sebastianbergmann-phpunit-6775051/src/Framework/Constraint/IsType.phpUT^PK P_PsdI  sebastianbergmann-phpunit-6775051/src/Framework/Constraint/IsWritable.phpUT^PK Pf` J  sebastianbergmann-phpunit-6775051/src/Framework/Constraint/JsonMatches.phpUT^PK P @^ 7sebastianbergmann-phpunit-6775051/src/Framework/Constraint/JsonMatchesErrorMessageProvider.phpUT^PK P 4CG sebastianbergmann-phpunit-6775051/src/Framework/Constraint/LessThan.phpUT^PK P2/Y I 7sebastianbergmann-phpunit-6775051/src/Framework/Constraint/LogicalAnd.phpUT^PK P?I sebastianbergmann-phpunit-6775051/src/Framework/Constraint/LogicalNot.phpUT^PK P"0l H "sebastianbergmann-phpunit-6775051/src/Framework/Constraint/LogicalOr.phpUT^PK P3n@ I &sebastianbergmann-phpunit-6775051/src/Framework/Constraint/LogicalXor.phpUT^PK Pt`bQ ^*sebastianbergmann-phpunit-6775051/src/Framework/Constraint/ObjectHasAttribute.phpUT^PK PFgCt5P ,sebastianbergmann-phpunit-6775051/src/Framework/Constraint/RegularExpression.phpUT^PK Pi*4G /sebastianbergmann-phpunit-6775051/src/Framework/Constraint/SameSize.phpUT^PK PN0TM F1sebastianbergmann-phpunit-6775051/src/Framework/Constraint/StringContains.phpUT^PK P !OM ~4sebastianbergmann-phpunit-6775051/src/Framework/Constraint/StringEndsWith.phpUT^PK PnGe ] 7sebastianbergmann-phpunit-6775051/src/Framework/Constraint/StringMatchesFormatDescription.phpUT^PK PFhO t;sebastianbergmann-phpunit-6775051/src/Framework/Constraint/StringStartsWith.phpUT^PK P75U R R>sebastianbergmann-phpunit-6775051/src/Framework/Constraint/TraversableContains.phpUT^PK P )W Bsebastianbergmann-phpunit-6775051/src/Framework/Constraint/TraversableContainsEqual.phpUT^PK Px[ Fsebastianbergmann-phpunit-6775051/src/Framework/Constraint/TraversableContainsIdentical.phpUT^PK P{( /ZV Jsebastianbergmann-phpunit-6775051/src/Framework/Constraint/TraversableContainsOnly.phpUT^PK Psə$I Nsebastianbergmann-phpunit-6775051/src/Framework/DataProviderTestSuite.phpUT^PK P6 Qsebastianbergmann-phpunit-6775051/src/Framework/Error/UT^PK PJD 2Rsebastianbergmann-phpunit-6775051/src/Framework/Error/Deprecated.phpUT^PK P u]W? Ssebastianbergmann-phpunit-6775051/src/Framework/Error/Error.phpUT^PK P"oF@ MUsebastianbergmann-phpunit-6775051/src/Framework/Error/Notice.phpUT^PK P}GA Vsebastianbergmann-phpunit-6775051/src/Framework/Error/Warning.phpUT^PK P: Wsebastianbergmann-phpunit-6775051/src/Framework/Exception/UT^PK PZYjR [Xsebastianbergmann-phpunit-6775051/src/Framework/Exception/AssertionFailedError.phpUT^PK P<߆]!S \Zsebastianbergmann-phpunit-6775051/src/Framework/Exception/CodeCoverageException.phpUT^PK Pp1] [sebastianbergmann-phpunit-6775051/src/Framework/Exception/CoveredCodeNotExecutedException.phpUT^PK P!L G ]sebastianbergmann-phpunit-6775051/src/Framework/Exception/Exception.phpUT^PK Pݘ,X ;bsebastianbergmann-phpunit-6775051/src/Framework/Exception/ExpectationFailedException.phpUT^PK P)R2Q dsebastianbergmann-phpunit-6775051/src/Framework/Exception/IncompleteTestError.phpUT^PK P6,V fsebastianbergmann-phpunit-6775051/src/Framework/Exception/InvalidArgumentException.phpUT^PK PU0Z Cisebastianbergmann-phpunit-6775051/src/Framework/Exception/InvalidCoversTargetException.phpUT^PK PR+Z jsebastianbergmann-phpunit-6775051/src/Framework/Exception/InvalidDataProviderException.phpUT^PK P12^ lsebastianbergmann-phpunit-6775051/src/Framework/Exception/MissingCoversAnnotationException.phpUT^PK P]N(W Wnsebastianbergmann-phpunit-6775051/src/Framework/Exception/NoChildTestSuiteException.phpUT^PK P:t(I osebastianbergmann-phpunit-6775051/src/Framework/Exception/OutputError.phpUT^PK P>G V qsebastianbergmann-phpunit-6775051/src/Framework/Exception/PHPTAssertionFailedError.phpUT^PK P9d'L ssebastianbergmann-phpunit-6775051/src/Framework/Exception/RiskyTestError.phpUT^PK P=@1N kusebastianbergmann-phpunit-6775051/src/Framework/Exception/SkippedTestError.phpUT^PK Pf4S wsebastianbergmann-phpunit-6775051/src/Framework/Exception/SkippedTestSuiteError.phpUT^PK Pi&L xsebastianbergmann-phpunit-6775051/src/Framework/Exception/SyntheticError.phpUT^PK Pӏ1S I{sebastianbergmann-phpunit-6775051/src/Framework/Exception/SyntheticSkippedError.phpUT^PK Pit.] |sebastianbergmann-phpunit-6775051/src/Framework/Exception/UnintentionallyCoveredCodeError.phpUT^PK P JcE ~sebastianbergmann-phpunit-6775051/src/Framework/Exception/Warning.phpUT^PK PtB D sebastianbergmann-phpunit-6775051/src/Framework/ExceptionWrapper.phpUT^PK P#9dB sebastianbergmann-phpunit-6775051/src/Framework/IncompleteTest.phpUT^PK P)HMoF )sebastianbergmann-phpunit-6775051/src/Framework/IncompleteTestCase.phpUT^PK P}#+R sebastianbergmann-phpunit-6775051/src/Framework/InvalidParameterGroupException.phpUT^PK P; sebastianbergmann-phpunit-6775051/src/Framework/MockObject/UT^PK P?  sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Api/UT^PK PN! F qsebastianbergmann-phpunit-6775051/src/Framework/MockObject/Api/Api.phpUT^PK P8q͕I sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Api/Method.phpUT^PK Pψa(T sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Api/MockedCloneMethod.phpUT^PK P!O pFV sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Api/UnmockedCloneMethod.phpUT^PK PC ͕sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Builder/UT^PK P}"O 7sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Builder/Identity.phpUT^PK PKᄑW 1sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Builder/InvocationMocker.phpUT^PK PX lsebastianbergmann-phpunit-6775051/src/Framework/MockObject/Builder/InvocationStubber.phpUT^PK PEL sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Builder/Match.phpUT^PK P}kCV sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Builder/MethodNameMatch.phpUT^PK P+}|V Lsebastianbergmann-phpunit-6775051/src/Framework/MockObject/Builder/ParametersMatch.phpUT^PK P? K Esebastianbergmann-phpunit-6775051/src/Framework/MockObject/Builder/Stub.phpUT^PK P Q Ysebastianbergmann-phpunit-6775051/src/Framework/MockObject/ConfigurableMethod.phpUT^PK PE sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Exception/UT^PK Pi9_ Wsebastianbergmann-phpunit-6775051/src/Framework/MockObject/Exception/BadMethodCallException.phpUT^PK P}-Jw sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Exception/ConfigurableMethodsAlreadyInitializedException.phpUT^PK P濷+R sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Exception/Exception.phpUT^PK Pt?i sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Exception/IncompatibleReturnValueException.phpUT^PK P"bB4Y qsebastianbergmann-phpunit-6775051/src/Framework/MockObject/Exception/RuntimeException.phpUT^PK P1wH %sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Generator.phpUT^PK PE Jsebastianbergmann-phpunit-6775051/src/Framework/MockObject/Generator/UT^PK PO5s7;T sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Generator/deprecation.tplUT^PK PwZ|U hsebastianbergmann-phpunit-6775051/src/Framework/MockObject/Generator/mocked_class.tplUT^PK P7iCMV `sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Generator/mocked_method.tplUT^PK P 6[  sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Generator/mocked_method_void.tplUT^PK P 4R] sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Generator/mocked_static_method.tplUT^PK P]W  sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Generator/proxied_method.tplUT^PK P&Z}\ sebastianbergmann-phpunit-6775051/src/Framework/MockObject/Generator/proxied_method_void.tplUT^PK P Csebastianbergmann-phpunit-6775051/src/Framework/TestResult.phpUT^PK P4\W= Osebastianbergmann-phpunit-6775051/src/Framework/TestSuite.phpUT^PK P4ىE 3sebastianbergmann-phpunit-6775051/src/Framework/TestSuiteIterator.phpUT^PK P$d2EC ,sebastianbergmann-phpunit-6775051/src/Framework/WarningTestCase.phpUT^PK P- sebastianbergmann-phpunit-6775051/src/Runner/UT^PK P!OP? sebastianbergmann-phpunit-6775051/src/Runner/BaseTestRunner.phpUT^PK P?]מG +sebastianbergmann-phpunit-6775051/src/Runner/DefaultTestResultCache.phpUT^PK Pm]*: 7sebastianbergmann-phpunit-6775051/src/Runner/Exception.phpUT^PK P4 sebastianbergmann-phpunit-6775051/src/Runner/Filter/UT^PK PċwBR sebastianbergmann-phpunit-6775051/src/Runner/Filter/ExcludeGroupFilterIterator.phpUT^PK PWpQ?  sebastianbergmann-phpunit-6775051/src/Runner/Filter/Factory.phpUT^PK P/K sebastianbergmann-phpunit-6775051/src/Runner/Filter/GroupFilterIterator.phpUT^PK PauAR sebastianbergmann-phpunit-6775051/src/Runner/Filter/IncludeGroupFilterIterator.phpUT^PK P; hl J sebastianbergmann-phpunit-6775051/src/Runner/Filter/NameFilterIterator.phpUT^PK P2 sebastianbergmann-phpunit-6775051/src/Runner/Hook/UT^PK P*K"M *sebastianbergmann-phpunit-6775051/src/Runner/Hook/AfterIncompleteTestHook.phpUT^PK P~FwG sebastianbergmann-phpunit-6775051/src/Runner/Hook/AfterLastTestHook.phpUT^PK PjYM H 5sebastianbergmann-phpunit-6775051/src/Runner/Hook/AfterRiskyTestHook.phpUT^PK PJ !J sebastianbergmann-phpunit-6775051/src/Runner/Hook/AfterSkippedTestHook.phpUT^PK Pj3M Vsebastianbergmann-phpunit-6775051/src/Runner/Hook/AfterSuccessfulTestHook.phpUT^PK PLX H sebastianbergmann-phpunit-6775051/src/Runner/Hook/AfterTestErrorHook.phpUT^PK Pzc"J usebastianbergmann-phpunit-6775051/src/Runner/Hook/AfterTestFailureHook.phpUT^PK PfTxtUC sebastianbergmann-phpunit-6775051/src/Runner/Hook/AfterTestHook.phpUT^PK Pֆ#J sebastianbergmann-phpunit-6775051/src/Runner/Hook/AfterTestWarningHook.phpUT^PK P. {I zsebastianbergmann-phpunit-6775051/src/Runner/Hook/BeforeFirstTestHook.phpUT^PK Pz D sebastianbergmann-phpunit-6775051/src/Runner/Hook/BeforeTestHook.phpUT^PK PkXM+: ksebastianbergmann-phpunit-6775051/src/Runner/Hook/Hook.phpUT^PK Pxᤸ<> sebastianbergmann-phpunit-6775051/src/Runner/Hook/TestHook.phpUT^PK P>P,I sebastianbergmann-phpunit-6775051/src/Runner/Hook/TestListenerAdapter.phpUT^PK PrvD sebastianbergmann-phpunit-6775051/src/Runner/NullTestResultCache.phpUT^PK PοW=Q= sebastianbergmann-phpunit-6775051/src/Runner/PhptTestCase.phpUT^PK Pz* E  sebastianbergmann-phpunit-6775051/src/Runner/ResultCacheExtension.phpUT^PK PqNp%H sebastianbergmann-phpunit-6775051/src/Runner/StandardTestSuiteLoader.phpUT^PK PY)n@ sebastianbergmann-phpunit-6775051/src/Runner/TestResultCache.phpUT^PK P+$I8@ sebastianbergmann-phpunit-6775051/src/Runner/TestSuiteLoader.phpUT^PK Pg5 q3@ Ksebastianbergmann-phpunit-6775051/src/Runner/TestSuiteSorter.phpUT^PK PME8 %sebastianbergmann-phpunit-6775051/src/Runner/Version.phpUT^PK P- s(sebastianbergmann-phpunit-6775051/src/TextUI/UT^PK P5o8 (sebastianbergmann-phpunit-6775051/src/TextUI/Command.phpUT^PK P-: Csebastianbergmann-phpunit-6775051/src/TextUI/Exception.phpUT^PK PN  05 #Esebastianbergmann-phpunit-6775051/src/TextUI/Help.phpUT^PK PW ::> Qsebastianbergmann-phpunit-6775051/src/TextUI/ResultPrinter.phpUT^PK PΕ(; ^sebastianbergmann-phpunit-6775051/src/TextUI/TestRunner.phpUT^PK P+ ~sebastianbergmann-phpunit-6775051/src/Util/UT^PK P6 c~sebastianbergmann-phpunit-6775051/src/Util/Annotation/UT^PK PvKB ~sebastianbergmann-phpunit-6775051/src/Util/Annotation/DocBlock.phpUT^PK Py8 B sebastianbergmann-phpunit-6775051/src/Util/Annotation/Registry.phpUT^PK Pvyw8 @sebastianbergmann-phpunit-6775051/src/Util/Blacklist.phpUT^PK P/4 4sebastianbergmann-phpunit-6775051/src/Util/Color.phpUT^PK Pg;c< sebastianbergmann-phpunit-6775051/src/Util/Configuration.phpUT^PK P+eE Ĺsebastianbergmann-phpunit-6775051/src/Util/ConfigurationGenerator.phpUT^PK P8Y#; [sebastianbergmann-phpunit-6775051/src/Util/ErrorHandler.phpUT^PK P#!>+8 sebastianbergmann-phpunit-6775051/src/Util/Exception.phpUT^PK Pz- 9 9sebastianbergmann-phpunit-6775051/src/Util/FileLoader.phpUT^PK P~F9 esebastianbergmann-phpunit-6775051/src/Util/Filesystem.phpUT^PK P_] 5 sebastianbergmann-phpunit-6775051/src/Util/Filter.phpUT^PK Pg\5 3sebastianbergmann-phpunit-6775051/src/Util/Getopt.phpUT^PK P`:UJ: sebastianbergmann-phpunit-6775051/src/Util/GlobalState.phpUT^PK P4E3F sebastianbergmann-phpunit-6775051/src/Util/InvalidDataSetException.phpUT^PK P=[= 3 sebastianbergmann-phpunit-6775051/src/Util/Json.phpUT^PK P/ Nsebastianbergmann-phpunit-6775051/src/Util/Log/UT^PK PjAxat-8 sebastianbergmann-phpunit-6775051/src/Util/Log/JUnit.phpUT^PK PE(  ); sebastianbergmann-phpunit-6775051/src/Util/Log/TeamCity.phpUT^PK P/ sebastianbergmann-phpunit-6775051/src/Util/PHP/UT^PK P: C*E msebastianbergmann-phpunit-6775051/src/Util/PHP/AbstractPhpProcess.phpUT^PK P/@D sebastianbergmann-phpunit-6775051/src/Util/PHP/DefaultPhpProcess.phpUT^PK P8 nsebastianbergmann-phpunit-6775051/src/Util/PHP/Template/UT^PK P̜bH sebastianbergmann-phpunit-6775051/src/Util/PHP/Template/PhptTestCase.tplUT^PK P3/Q I sebastianbergmann-phpunit-6775051/src/Util/PHP/Template/TestCaseClass.tplUT^PK Ps¾W J  sebastianbergmann-phpunit-6775051/src/Util/PHP/Template/TestCaseMethod.tplUT^PK P2KitD sebastianbergmann-phpunit-6775051/src/Util/PHP/WindowsPhpProcess.phpUT^PK P̋Q 6 sebastianbergmann-phpunit-6775051/src/Util/Printer.phpUT^PK Pnp[D@ sebastianbergmann-phpunit-6775051/src/Util/RegularExpression.phpUT^PK P@Lv3 sebastianbergmann-phpunit-6775051/src/Util/Test.phpUT^PK P3 .0sebastianbergmann-phpunit-6775051/src/Util/TestDox/UT^PK P7| D*H 0sebastianbergmann-phpunit-6775051/src/Util/TestDox/CliTestDoxPrinter.phpUT^PK Pw H ;sebastianbergmann-phpunit-6775051/src/Util/TestDox/HtmlResultPrinter.phpUT^PK P0M>!E ?sebastianbergmann-phpunit-6775051/src/Util/TestDox/NamePrettifier.phpUT^PK PHwD Isebastianbergmann-phpunit-6775051/src/Util/TestDox/ResultPrinter.phpUT^PK PH l )E ]Osebastianbergmann-phpunit-6775051/src/Util/TestDox/TestDoxPrinter.phpUT^PK Pzi>$H 5Ysebastianbergmann-phpunit-6775051/src/Util/TestDox/TextResultPrinter.phpUT^PK P G [sebastianbergmann-phpunit-6775051/src/Util/TestDox/XmlResultPrinter.phpUT^PK P7p@C bsebastianbergmann-phpunit-6775051/src/Util/TextTestListRenderer.phpUT^PK Pz#M3 esebastianbergmann-phpunit-6775051/src/Util/Type.phpUT^PK P/u[smH gsebastianbergmann-phpunit-6775051/src/Util/VersionComparisonOperator.phpUT^PK P»PJ jsebastianbergmann-phpunit-6775051/src/Util/XdebugFilterScriptGenerator.phpUT^PK P!b !2 nsebastianbergmann-phpunit-6775051/src/Util/Xml.phpUT^PK P`B;% B %xsebastianbergmann-phpunit-6775051/src/Util/XmlTestListRenderer.phpUT^PK P( {sebastianbergmann-phpunit-6775051/tests/UT^PK Pk 1 |sebastianbergmann-phpunit-6775051/tests/README.mdUT^PK P/ ۀsebastianbergmann-phpunit-6775051/tests/_files/UT^PK P^hv7 1sebastianbergmann-phpunit-6775051/tests/_files/3194.phpUT^PK PD8 sebastianbergmann-phpunit-6775051/tests/_files/3530.wsdlUT^PK P2H Qsebastianbergmann-phpunit-6775051/tests/_files/AbstractMockTestClass.phpUT^PK P? چsebastianbergmann-phpunit-6775051/tests/_files/AbstractTest.phpUT^PK PV?9f@ ^sebastianbergmann-phpunit-6775051/tests/_files/AbstractTrait.phpUT^PK PDh7*Z ؉sebastianbergmann-phpunit-6775051/tests/_files/AbstractVariousIterableDataProviderTest.phpUT^PK PcIC sebastianbergmann-phpunit-6775051/tests/_files/ActualOutputTest.phpUT^PK P<^B:> ɍsebastianbergmann-phpunit-6775051/tests/_files/AnInterface.phpUT^PK P=QL sebastianbergmann-phpunit-6775051/tests/_files/AnInterfaceWithReturnType.phpUT^PK P3CC |sebastianbergmann-phpunit-6775051/tests/_files/AnotherInterface.phpUT^PK P@  B ёsebastianbergmann-phpunit-6775051/tests/_files/ArrayAccessible.phpUT^PK PJ$ sebastianbergmann-phpunit-6775051/tests/_files/BankAccount.phpUT^PK P#yҙB sebastianbergmann-phpunit-6775051/tests/_files/BankAccountTest.phpUT^PK P:'"I&G ޝsebastianbergmann-phpunit-6775051/tests/_files/BankAccountTest.test.phpUT^PK PC sebastianbergmann-phpunit-6775051/tests/_files/BankAccountTest2.phpUT^PK P%%V6 ΢sebastianbergmann-phpunit-6775051/tests/_files/Bar.phpUT^PK P>UE  sebastianbergmann-phpunit-6775051/tests/_files/BeforeAndAfterTest.phpUT^PK P{ڍO sebastianbergmann-phpunit-6775051/tests/_files/BeforeClassAndAfterClassTest.phpUT^PK PJLQV sebastianbergmann-phpunit-6775051/tests/_files/BeforeClassWithOnlyDataProviderTest.phpUT^PK P w7 csebastianbergmann-phpunit-6775051/tests/_files/Book.phpUT^PK P= ɫsebastianbergmann-phpunit-6775051/tests/_files/Calculator.phpUT^PK P0CT Lsebastianbergmann-phpunit-6775051/tests/_files/ChangeCurrentWorkingDirectoryTest.phpUT^PK PDPAR  sebastianbergmann-phpunit-6775051/tests/_files/ClassThatImplementsSerializable.phpUT^PK PŁ|}R Ӱsebastianbergmann-phpunit-6775051/tests/_files/ClassWithAllPossibleReturnTypes.phpUT^PK P<*ΕO sebastianbergmann-phpunit-6775051/tests/_files/ClassWithNonPublicAttributes.phpUT^PK P$kR  sebastianbergmann-phpunit-6775051/tests/_files/ClassWithScalarTypeDeclarations.phpUT^PK P`RH sebastianbergmann-phpunit-6775051/tests/_files/ClassWithSelfTypeHint.phpUT^PK P;&YH sebastianbergmann-phpunit-6775051/tests/_files/ClassWithStaticMethod.phpUT^PK PPaTD Lsebastianbergmann-phpunit-6775051/tests/_files/ClassWithToString.phpUT^PK Ph(MMR Ⱥsebastianbergmann-phpunit-6775051/tests/_files/ClassWithVariadicArgumentMethod.phpUT^PK PzbB ]sebastianbergmann-phpunit-6775051/tests/_files/ConcreteTest.my.phpUT^PK Pk z? sebastianbergmann-phpunit-6775051/tests/_files/ConcreteTest.phpUT^PK P3%[B Rsebastianbergmann-phpunit-6775051/tests/_files/CountConstraint.phpUT^PK P)AL nsebastianbergmann-phpunit-6775051/tests/_files/CoverageClassExtendedTest.phpUT^PK P$:i7K "sebastianbergmann-phpunit-6775051/tests/_files/CoverageClassNothingTest.phpUT^PK P?l:D sebastianbergmann-phpunit-6775051/tests/_files/CoverageClassTest.phpUT^PK Pi5V psebastianbergmann-phpunit-6775051/tests/_files/CoverageClassWithoutAnnotationsTest.phpUT^PK P&fO'[ "sebastianbergmann-phpunit-6775051/tests/_files/CoverageCoversOverridesCoversNothingTest.phpUT^PK PLJ,4R sebastianbergmann-phpunit-6775051/tests/_files/CoverageFunctionParenthesesTest.phpUT^PK Pw>\ sebastianbergmann-phpunit-6775051/tests/_files/CoverageFunctionParenthesesWhitespaceTest.phpUT^PK P|9 .G asebastianbergmann-phpunit-6775051/tests/_files/CoverageFunctionTest.phpUT^PK PHT sebastianbergmann-phpunit-6775051/tests/_files/CoverageMethodNothingCoversMethod.phpUT^PK Pٵ<L sebastianbergmann-phpunit-6775051/tests/_files/CoverageMethodNothingTest.phpUT^PK PCGV osebastianbergmann-phpunit-6775051/tests/_files/CoverageMethodOneLineAnnotationTest.phpUT^PK P~v'*FP 3sebastianbergmann-phpunit-6775051/tests/_files/CoverageMethodParenthesesTest.phpUT^PK PKX{PZ sebastianbergmann-phpunit-6775051/tests/_files/CoverageMethodParenthesesWhitespaceTest.phpUT^PK P`W<E sebastianbergmann-phpunit-6775051/tests/_files/CoverageMethodTest.phpUT^PK P)Q isebastianbergmann-phpunit-6775051/tests/_files/CoverageNamespacedFunctionTest.phpUT^PK P/`+C  sebastianbergmann-phpunit-6775051/tests/_files/CoverageNoneTest.phpUT^PK PƏFI sebastianbergmann-phpunit-6775051/tests/_files/CoverageNotPrivateTest.phpUT^PK P1FK Usebastianbergmann-phpunit-6775051/tests/_files/CoverageNotProtectedTest.phpUT^PK P$5BH  sebastianbergmann-phpunit-6775051/tests/_files/CoverageNotPublicTest.phpUT^PK PG XBF sebastianbergmann-phpunit-6775051/tests/_files/CoveragePrivateTest.phpUT^PK PiCH msebastianbergmann-phpunit-6775051/tests/_files/CoverageProtectedTest.phpUT^PK P?E sebastianbergmann-phpunit-6775051/tests/_files/CoveragePublicTest.phpUT^PK P]GU sebastianbergmann-phpunit-6775051/tests/_files/CoverageTwoDefaultClassAnnotations.phpUT^PK P:f? sebastianbergmann-phpunit-6775051/tests/_files/CoveredClass.phpUT^PK Pu!B Csebastianbergmann-phpunit-6775051/tests/_files/CoveredFunction.phpUT^PK PDN@ sebastianbergmann-phpunit-6775051/tests/_files/CustomPrinter.phpUT^PK PPH sebastianbergmann-phpunit-6775051/tests/_files/DataProviderDebugTest.phpUT^PK Pq3<BM Bsebastianbergmann-phpunit-6775051/tests/_files/DataProviderDependencyTest.phpUT^PK P!I jsebastianbergmann-phpunit-6775051/tests/_files/DataProviderFilterTest.phpUT^PK PƧM zsebastianbergmann-phpunit-6775051/tests/_files/DataProviderIncompleteTest.phpUT^PK PE sebastianbergmann-phpunit-6775051/tests/_files/DataProviderIssue2833/UT^PK P5izpKR sebastianbergmann-phpunit-6775051/tests/_files/DataProviderIssue2833/FirstTest.phpUT^PK PKS sebastianbergmann-phpunit-6775051/tests/_files/DataProviderIssue2833/SecondTest.phpUT^PK PE sebastianbergmann-phpunit-6775051/tests/_files/DataProviderIssue2859/UT^PK P;+.}P sebastianbergmann-phpunit-6775051/tests/_files/DataProviderIssue2859/phpunit.xmlUT^PK PK sebastianbergmann-phpunit-6775051/tests/_files/DataProviderIssue2859/tests/UT^PK PS sebastianbergmann-phpunit-6775051/tests/_files/DataProviderIssue2859/tests/another/UT^PK P9d>o sebastianbergmann-phpunit-6775051/tests/_files/DataProviderIssue2859/tests/another/TestWithDataProviderTest.phpUT^PK PE sebastianbergmann-phpunit-6775051/tests/_files/DataProviderIssue2922/UT^PK PVh,iPR asebastianbergmann-phpunit-6775051/tests/_files/DataProviderIssue2922/FirstTest.phpUT^PK Pq_S Csebastianbergmann-phpunit-6775051/tests/_files/DataProviderIssue2922/SecondTest.phpUT^PK P~i.J sebastianbergmann-phpunit-6775051/tests/_files/DataProviderSkippedTest.phpUT^PK PB5uC 1sebastianbergmann-phpunit-6775051/tests/_files/DataProviderTest.phpUT^PK P[}ofvQ sebastianbergmann-phpunit-6775051/tests/_files/DataproviderExecutionOrderTest.phpUT^PK P|^ W sebastianbergmann-phpunit-6775051/tests/_files/DataproviderExecutionOrderTest_result_cache.txtUT^PK P$Ep$H \ sebastianbergmann-phpunit-6775051/tests/_files/DependencyFailureTest.phpUT^PK P ~JH  sebastianbergmann-phpunit-6775051/tests/_files/DependencySuccessTest.phpUT^PK P H sebastianbergmann-phpunit-6775051/tests/_files/DoNoAssertionTestCase.phpUT^PK P<ҦO'f sebastianbergmann-phpunit-6775051/tests/_files/DoesNotPerformAssertionsButPerformingAssertionsTest.phpUT^PK P_}5A sebastianbergmann-phpunit-6775051/tests/_files/DoubleTestCase.phpUT^PK P~y+&? sebastianbergmann-phpunit-6775051/tests/_files/DummyBarTest.phpUT^PK Pؖ(A Nsebastianbergmann-phpunit-6775051/tests/_files/DummyException.phpUT^PK P &? sebastianbergmann-phpunit-6775051/tests/_files/DummyFooTest.phpUT^PK PtmeL0O sebastianbergmann-phpunit-6775051/tests/_files/DuplicateKeyDataProviderTest.phpUT^PK Pf=H sebastianbergmann-phpunit-6775051/tests/_files/EmptyDataProviderTest.phpUT^PK PKCKD sebastianbergmann-phpunit-6775051/tests/_files/EmptyTestCaseTest.phpUT^PK PcY? sebastianbergmann-phpunit-6775051/tests/_files/ExampleTrait.phpUT^PK P)V @sebastianbergmann-phpunit-6775051/tests/_files/ExceptionInAssertPostConditionsTest.phpUT^PK P3(U O!sebastianbergmann-phpunit-6775051/tests/_files/ExceptionInAssertPreConditionsTest.phpUT^PK P3YpG \#sebastianbergmann-phpunit-6775051/tests/_files/ExceptionInSetUpTest.phpUT^PK P2TT ^%sebastianbergmann-phpunit-6775051/tests/_files/ExceptionInTearDownAfterClassTest.phpUT^PK PF7>J -'sebastianbergmann-phpunit-6775051/tests/_files/ExceptionInTearDownTest.phpUT^PK P8B <)sebastianbergmann-phpunit-6775051/tests/_files/ExceptionInTest.phpUT^PK PiT 2+sebastianbergmann-phpunit-6775051/tests/_files/ExceptionInTestDetectedInTeardown.phpUT^PK P.ZI /-sebastianbergmann-phpunit-6775051/tests/_files/ExceptionNamespaceTest.phpUT^PK P#wE V/sebastianbergmann-phpunit-6775051/tests/_files/ExceptionStackTest.phpUT^PK PoTUz @ 1sebastianbergmann-phpunit-6775051/tests/_files/ExceptionTest.phpUT^PK PrseI 4sebastianbergmann-phpunit-6775051/tests/_files/ExceptionWithThrowable.phpUT^PK PV: 6sebastianbergmann-phpunit-6775051/tests/_files/Failure.phpUT^PK PYu|> w7sebastianbergmann-phpunit-6775051/tests/_files/FailureTest.phpUT^PK P7R;B Q:sebastianbergmann-phpunit-6775051/tests/_files/FalsyConstraint.phpUT^PK PM(1@<  <sebastianbergmann-phpunit-6775051/tests/_files/FatalTest.phpUT^PK Pl= =sebastianbergmann-phpunit-6775051/tests/_files/FinalClass.phpUT^PK Ppi6 +?sebastianbergmann-phpunit-6775051/tests/_files/Foo.phpUT^PK Pn+C @sebastianbergmann-phpunit-6775051/tests/_files/FunctionCallback.phpUT^PK PM0$v C Bsebastianbergmann-phpunit-6775051/tests/_files/Go ogle-Sea.rch.wsdlUT^PK PM0$v @ Gsebastianbergmann-phpunit-6775051/tests/_files/GoogleSearch.wsdlUT^PK P^J Msebastianbergmann-phpunit-6775051/tests/_files/IgnoreCodeCoverageClass.phpUT^PK PH}N YOsebastianbergmann-phpunit-6775051/tests/_files/IgnoreCodeCoverageClassTest.phpUT^PK P2"A Qsebastianbergmann-phpunit-6775051/tests/_files/IncompleteTest.phpUT^PK P; Rsebastianbergmann-phpunit-6775051/tests/_files/Inheritance/UT^PK P.VK Ssebastianbergmann-phpunit-6775051/tests/_files/Inheritance/InheritanceA.phpUT^PK P |K jTsebastianbergmann-phpunit-6775051/tests/_files/Inheritance/InheritanceB.phpUT^PK P?H[D Usebastianbergmann-phpunit-6775051/tests/_files/InheritedTestCase.phpUT^PK PX8: JWsebastianbergmann-phpunit-6775051/tests/_files/IniTest.phpUT^PK PLV Xsebastianbergmann-phpunit-6775051/tests/_files/InterfaceWithSemiReservedMethodName.phpUT^PK P9PL QZsebastianbergmann-phpunit-6775051/tests/_files/InterfaceWithStaticMethod.phpUT^PK P$"F7:@ [sebastianbergmann-phpunit-6775051/tests/_files/IsolationTest.phpUT^PK P8 P]sebastianbergmann-phpunit-6775051/tests/_files/JsonData/UT^PK PP "H ]sebastianbergmann-phpunit-6775051/tests/_files/JsonData/arrayObject.jsonUT^PK PuI <^sebastianbergmann-phpunit-6775051/tests/_files/JsonData/simpleObject.jsonUT^PK P΍1aA ^sebastianbergmann-phpunit-6775051/tests/_files/MethodCallback.phpUT^PK P2L V`sebastianbergmann-phpunit-6775051/tests/_files/MethodCallbackByReference.phpUT^PK PW= asebastianbergmann-phpunit-6775051/tests/_files/MockRunner.phpUT^PK P$nD Zcsebastianbergmann-phpunit-6775051/tests/_files/MockTestInterface.phpUT^PK P@#`; dsebastianbergmann-phpunit-6775051/tests/_files/Mockable.phpUT^PK PG5N {fsebastianbergmann-phpunit-6775051/tests/_files/ModifiedConstructorTestCase.phpUT^PK P0R9K %hsebastianbergmann-phpunit-6775051/tests/_files/MultipleDataProviderTest.phpUT^PK Pq Q A xjsebastianbergmann-phpunit-6775051/tests/_files/MyTestListener.phpUT^PK PT)B 1msebastianbergmann-phpunit-6775051/tests/_files/NamedConstraint.phpUT^PK Pz|L U osebastianbergmann-phpunit-6775051/tests/_files/NamespaceCoverageClassExtendedTest.phpUT^PK PEM psebastianbergmann-phpunit-6775051/tests/_files/NamespaceCoverageClassTest.phpUT^PK PW9V4Y rsebastianbergmann-phpunit-6775051/tests/_files/NamespaceCoverageCoversClassPublicTest.phpUT^PK PeDhzS stsebastianbergmann-phpunit-6775051/tests/_files/NamespaceCoverageCoversClassTest.phpUT^PK P8GN gvsebastianbergmann-phpunit-6775051/tests/_files/NamespaceCoverageMethodTest.phpUT^PK PTP R #xsebastianbergmann-phpunit-6775051/tests/_files/NamespaceCoverageNotPrivateTest.phpUT^PK PU3#QT ysebastianbergmann-phpunit-6775051/tests/_files/NamespaceCoverageNotProtectedTest.phpUT^PK P MQ {sebastianbergmann-phpunit-6775051/tests/_files/NamespaceCoverageNotPublicTest.phpUT^PK PʫMO }}sebastianbergmann-phpunit-6775051/tests/_files/NamespaceCoveragePrivateTest.phpUT^PK PTCN Q @sebastianbergmann-phpunit-6775051/tests/_files/NamespaceCoverageProtectedTest.phpUT^PK Pgk@KN sebastianbergmann-phpunit-6775051/tests/_files/NamespaceCoveragePublicTest.phpUT^PK PTFvH Ƃsebastianbergmann-phpunit-6775051/tests/_files/NamespaceCoveredClass.phpUT^PK P&2K {sebastianbergmann-phpunit-6775051/tests/_files/NamespaceCoveredFunction.phpUT^PK P3E D ΅sebastianbergmann-phpunit-6775051/tests/_files/NoArgTestCaseTest.phpUT^PK PIXB Bsebastianbergmann-phpunit-6775051/tests/_files/NoTestCaseClass.phpUT^PK PZ×x> {sebastianbergmann-phpunit-6775051/tests/_files/NoTestCases.phpUT^PK P@ sebastianbergmann-phpunit-6775051/tests/_files/NothingTest.phpUT^PK PoThM sebastianbergmann-phpunit-6775051/tests/_files/NumericGroupAnnotationTest.phpUT^PK PHyc_> #sebastianbergmann-phpunit-6775051/tests/_files/OneTestCase.phpUT^PK POgk6\sA sebastianbergmann-phpunit-6775051/tests/_files/OutputTestCase.phpUT^PK PlxfC asebastianbergmann-phpunit-6775051/tests/_files/OverrideTestCase.phpUT^PK PPQ șsebastianbergmann-phpunit-6775051/tests/_files/ParseTestMethodAnnotationsMock.phpUT^PK PㄋE-G Csebastianbergmann-phpunit-6775051/tests/_files/PartialMockTestClass.phpUT^PK P!\mk4W ޜsebastianbergmann-phpunit-6775051/tests/_files/RequirementsClassBeforeClassHookTest.phpUT^PK PB'UP Ǟsebastianbergmann-phpunit-6775051/tests/_files/RequirementsClassDocBlockTest.phpUT^PK P $C sebastianbergmann-phpunit-6775051/tests/_files/RequirementsTest.phpUT^PK P  = sebastianbergmann-phpunit-6775051/tests/_files/RouterTest.phpUT^PK P)D sebastianbergmann-phpunit-6775051/tests/_files/SampleArrayAccess.phpUT^PK P>ű>> sebastianbergmann-phpunit-6775051/tests/_files/SampleClass.phpUT^PK P兺E]H `sebastianbergmann-phpunit-6775051/tests/_files/SeparateProcessesTest.phpUT^PK PF]< sebastianbergmann-phpunit-6775051/tests/_files/Singleton.phpUT^PK P:/IA sebastianbergmann-phpunit-6775051/tests/_files/SingletonClass.phpUT^PK PUf < Tsebastianbergmann-phpunit-6775051/tests/_files/SomeClass.phpUT^PK P:.F sebastianbergmann-phpunit-6775051/tests/_files/StaticMockTestClass.phpUT^PK P ؐ\G <sebastianbergmann-phpunit-6775051/tests/_files/StopOnErrorTestSuite.phpUT^PK PsH#I sebastianbergmann-phpunit-6775051/tests/_files/StopOnWarningTestSuite.phpUT^PK P[J |E sebastianbergmann-phpunit-6775051/tests/_files/StopsOnWarningTest.phpUT^PK Pe\B 7sebastianbergmann-phpunit-6775051/tests/_files/StringableClass.phpUT^PK P@~Um9 sebastianbergmann-phpunit-6775051/tests/_files/Struct.phpUT^PK P^~û: sebastianbergmann-phpunit-6775051/tests/_files/Success.phpUT^PK PW'F nsebastianbergmann-phpunit-6775051/tests/_files/TemplateMethodsTest.phpUT^PK Pl;1E sebastianbergmann-phpunit-6775051/tests/_files/TestAutoreferenced.phpUT^PK PAIbN (sebastianbergmann-phpunit-6775051/tests/_files/TestCaseWithExceptionInHook.phpUT^PK PmE sebastianbergmann-phpunit-6775051/tests/_files/TestGeneratorMaker.phpUT^PK Pv#A sebastianbergmann-phpunit-6775051/tests/_files/TestIncomplete.phpUT^PK Pg1jK?  sebastianbergmann-phpunit-6775051/tests/_files/TestIterator.phpUT^PK Pl1a@ sebastianbergmann-phpunit-6775051/tests/_files/TestIterator2.phpUT^PK Pݍ1H sebastianbergmann-phpunit-6775051/tests/_files/TestIteratorAggregate.phpUT^PK P*1I Esebastianbergmann-phpunit-6775051/tests/_files/TestIteratorAggregate2.phpUT^PK P_aC sebastianbergmann-phpunit-6775051/tests/_files/TestProxyFixture.phpUT^PK PZ< sebastianbergmann-phpunit-6775051/tests/_files/TestRisky.phpUT^PK PQf%> .sebastianbergmann-phpunit-6775051/tests/_files/TestSkipped.phpUT^PK P @ sebastianbergmann-phpunit-6775051/tests/_files/TestTestError.phpUT^PK P > -sebastianbergmann-phpunit-6775051/tests/_files/TestWarning.phpUT^PK P3F sebastianbergmann-phpunit-6775051/tests/_files/TestWithAnnotations.phpUT^PK P˓I sebastianbergmann-phpunit-6775051/tests/_files/TestWithDifferentNames.phpUT^PK PvIJ dsebastianbergmann-phpunit-6775051/tests/_files/TestWithDifferentOutput.phpUT^PK P`ƽ*I Ksebastianbergmann-phpunit-6775051/tests/_files/TestWithDifferentSizes.phpUT^PK PӚuL xsebastianbergmann-phpunit-6775051/tests/_files/TestWithDifferentStatuses.phpUT^PK PdR? sebastianbergmann-phpunit-6775051/tests/_files/TestWithTest.phpUT^PK P K _sebastianbergmann-phpunit-6775051/tests/_files/ThrowNoExceptionTestCase.phpUT^PK P G sebastianbergmann-phpunit-6775051/tests/_files/TraitWithConstructor.phpUT^PK P D5=O ksebastianbergmann-phpunit-6775051/tests/_files/TraversableMockTestInterface.phpUT^PK P_pR;C sebastianbergmann-phpunit-6775051/tests/_files/TruthyConstraint.phpUT^PK PE\U sebastianbergmann-phpunit-6775051/tests/_files/VariousDocblockDefinedDataProvider.phpUT^PK P H8R sebastianbergmann-phpunit-6775051/tests/_files/VariousIterableDataProviderTest.phpUT^PK P%Ѵ!9 #sebastianbergmann-phpunit-6775051/tests/_files/WasRun.phpUT^PK Pۡ}K sebastianbergmann-phpunit-6775051/tests/_files/WrapperIteratorAggregate.phpUT^PK P]{@6 sebastianbergmann-phpunit-6775051/tests/_files/bar.xmlUT^PK P!M sebastianbergmann-phpunit-6775051/tests/_files/configuration.colors.empty.xmlUT^PK Pԛ #M sebastianbergmann-phpunit-6775051/tests/_files/configuration.colors.false.xmlUT^PK Pf),O sebastianbergmann-phpunit-6775051/tests/_files/configuration.colors.invalid.xmlUT^PK Pߦ6"L sebastianbergmann-phpunit-6775051/tests/_files/configuration.colors.true.xmlUT^PK Pn^',P Psebastianbergmann-phpunit-6775051/tests/_files/configuration.columns.default.xmlUT^PK P f~'Q sebastianbergmann-phpunit-6775051/tests/_files/configuration.defaulttestsuite.xmlUT^PK P}ؽQmO sebastianbergmann-phpunit-6775051/tests/_files/configuration.one-file-suite.xmlUT^PK PF>G sebastianbergmann-phpunit-6775051/tests/_files/configuration.suites.xmlUT^PK PXT@ ssebastianbergmann-phpunit-6775051/tests/_files/configuration.xmlUT^PK P>F vsebastianbergmann-phpunit-6775051/tests/_files/configuration_empty.xmlUT^PK PWZX !sebastianbergmann-phpunit-6775051/tests/_files/configuration_execution_order_options.xmlUT^PK PuGGO [sebastianbergmann-phpunit-6775051/tests/_files/configuration_stop_on_defect.xmlUT^PK PXFFN sebastianbergmann-phpunit-6775051/tests/_files/configuration_stop_on_error.xmlUT^PK P~KKS sebastianbergmann-phpunit-6775051/tests/_files/configuration_stop_on_incomplete.xmlUT^PK Pss}FGP sebastianbergmann-phpunit-6775051/tests/_files/configuration_stop_on_warning.xmlUT^PK P;%HKH Usebastianbergmann-phpunit-6775051/tests/_files/configuration_testdox.xmlUT^PK Ps(V^U  sebastianbergmann-phpunit-6775051/tests/_files/configuration_testdox_printerClass.xmlUT^PK P<J sebastianbergmann-phpunit-6775051/tests/_files/configuration_whitelist.xmlUT^PK P4u I sebastianbergmann-phpunit-6775051/tests/_files/configuration_xinclude.xmlUT^PK PԨsE  sebastianbergmann-phpunit-6775051/tests/_files/expectedFileFormat.txtUT^PK Ph$6 ( sebastianbergmann-phpunit-6775051/tests/_files/foo.xmlUT^PK Pd{?  sebastianbergmann-phpunit-6775051/tests/_files/fooUppercase.xmlUT^PK P;  sebastianbergmann-phpunit-6775051/tests/_files/mock-object/UT^PK Pv]'K c [ sebastianbergmann-phpunit-6775051/tests/_files/mock-object/AnotherClassUsingConfigurableMethods.phpUT^PK PkQI 0 sebastianbergmann-phpunit-6775051/tests/_files/mock-object/ChildClass.phpUT^PK PoxF\ sebastianbergmann-phpunit-6775051/tests/_files/mock-object/ClassUsingConfigurableMethods.phpUT^PK PX `sebastianbergmann-phpunit-6775051/tests/_files/mock-object/ClassWithImplicitProtocol.phpUT^PK P]d sebastianbergmann-phpunit-6775051/tests/_files/mock-object/ClassWithoutParentButParentReturnType.phpUT^PK Pd8Q sebastianbergmann-phpunit-6775051/tests/_files/mock-object/MockClassGenerated.tplUT^PK Ph5F_ sebastianbergmann-phpunit-6775051/tests/_files/mock-object/MockClassWithConfigurableMethods.phpUT^PK P#iEHQ sebastianbergmann-phpunit-6775051/tests/_files/mock-object/MockTraitGenerated.tplUT^PK PAjJ Isebastianbergmann-phpunit-6775051/tests/_files/mock-object/ParentClass.phpUT^PK Pu-^ sebastianbergmann-phpunit-6775051/tests/_files/mock-object/ReinitializeConfigurableMethods.phpUT^PK P9 Vsebastianbergmann-phpunit-6775051/tests/_files/namespace/UT^PK PH sebastianbergmann-phpunit-6775051/tests/_files/namespace/someNamespaceA/UT^PK PM2[ %sebastianbergmann-phpunit-6775051/tests/_files/namespace/someNamespaceA/NamespacedClass.phpUT^PK PH sebastianbergmann-phpunit-6775051/tests/_files/namespace/someNamespaceB/UT^PK PU52[ sebastianbergmann-phpunit-6775051/tests/_files/namespace/someNamespaceB/NamespacedClass.phpUT^PK P E Psebastianbergmann-phpunit-6775051/tests/_files/phpt-for-coverage.phptUT^PK P2b”L Wsebastianbergmann-phpunit-6775051/tests/_files/phpt-unsupported-section.phptUT^PK P> _ sebastianbergmann-phpunit-6775051/tests/_files/phpt-xfail.phptUT^PK PI a!sebastianbergmann-phpunit-6775051/tests/_files/phpunit-example-extension/UT^PK Pd tT !sebastianbergmann-phpunit-6775051/tests/_files/phpunit-example-extension/phpunit.xmlUT^PK PO 4#sebastianbergmann-phpunit-6775051/tests/_files/phpunit-example-extension/tests/UT^PK P`2Z #sebastianbergmann-phpunit-6775051/tests/_files/phpunit-example-extension/tests/OneTest.phpUT^PK PO ]%sebastianbergmann-phpunit-6775051/tests/_files/phpunit-example-extension/tools/UT^PK PY %sebastianbergmann-phpunit-6775051/tests/_files/phpunit-example-extension/tools/phpunit.d/UT^PK PGR } S&sebastianbergmann-phpunit-6775051/tests/_files/phpunit-example-extension/tools/phpunit.d/phpunit-example-extension-3.0.3.pharUT^PK P O\ 2sebastianbergmann-phpunit-6775051/tests/_files/structureAttributesAreSameButValuesAreNot.xmlUT^PK P1?`ND T4sebastianbergmann-phpunit-6775051/tests/_files/structureExpected.xmlUT^PK P7lK 6sebastianbergmann-phpunit-6775051/tests/_files/structureIgnoreTextNodes.xmlUT^PK PtGj^N 7sebastianbergmann-phpunit-6775051/tests/_files/structureIsSameButDataIsNot.xmlUT^PK Po.+S 9sebastianbergmann-phpunit-6775051/tests/_files/structureWrongNumberOfAttributes.xmlUT^PK P\ WDN ;sebastianbergmann-phpunit-6775051/tests/_files/structureWrongNumberOfNodes.xmlUT^PK P. <sebastianbergmann-phpunit-6775051/tests/basic/UT^PK PjVU7 M=sebastianbergmann-phpunit-6775051/tests/basic/README.mdUT^PK P.lE ?sebastianbergmann-phpunit-6775051/tests/basic/configuration.basic.xmlUT^PK P3 @sebastianbergmann-phpunit-6775051/tests/basic/unit/UT^PK Pdna K @sebastianbergmann-phpunit-6775051/tests/basic/unit/SetUpBeforeClassTest.phpUT^PK P )@ aCsebastianbergmann-phpunit-6775051/tests/basic/unit/SetUpTest.phpUT^PK P \sebastianbergmann-phpunit-6775051/tests/end-to-end/cli/_files/UT^PK PX"[@K u\sebastianbergmann-phpunit-6775051/tests/end-to-end/cli/_files/MyCommand.phpUT^PK P~UW B^sebastianbergmann-phpunit-6775051/tests/end-to-end/cli/_files/output-cli-help-color.txtUT^PK PAjR fsebastianbergmann-phpunit-6775051/tests/end-to-end/cli/_files/output-cli-usage.txtUT^PK PP.G nsebastianbergmann-phpunit-6775051/tests/end-to-end/cli/columns-max.phptUT^PK PWG-C Ppsebastianbergmann-phpunit-6775051/tests/end-to-end/cli/columns.phptUT^PK PsuC=Z qsebastianbergmann-phpunit-6775051/tests/end-to-end/cli/deprecation-warning-with-class.phptUT^PK P6' \lR ssebastianbergmann-phpunit-6775051/tests/end-to-end/cli/generate-configuration.phptUT^PK Pv F usebastianbergmann-phpunit-6775051/tests/end-to-end/cli/help-color.phptUT^PK P}@ vsebastianbergmann-phpunit-6775051/tests/end-to-end/cli/help.phptUT^PK PNA wsebastianbergmann-phpunit-6775051/tests/end-to-end/cli/help2.phptUT^PK P<3d}E ysebastianbergmann-phpunit-6775051/tests/end-to-end/cli/mycommand.phptUT^PK P0CdCS zsebastianbergmann-phpunit-6775051/tests/end-to-end/cli/options-after-arguments.phptUT^PK P5yO |sebastianbergmann-phpunit-6775051/tests/end-to-end/cli/test-file-not-found.phptUT^PK P=nL }sebastianbergmann-phpunit-6775051/tests/end-to-end/code-coverage-ignore.phptUT^PK Pe J >sebastianbergmann-phpunit-6775051/tests/end-to-end/code-coverage-phpt.phptUT^PK PK sebastianbergmann-phpunit-6775051/tests/end-to-end/concrete-test-class.phptUT^PK Pxw O Asebastianbergmann-phpunit-6775051/tests/end-to-end/dataprovider-issue-2833.phptUT^PK P&O ׅsebastianbergmann-phpunit-6775051/tests/end-to-end/dataprovider-issue-2859.phptUT^PK PryL4O hsebastianbergmann-phpunit-6775051/tests/end-to-end/dataprovider-issue-2922.phptUT^PK P[ȉV sebastianbergmann-phpunit-6775051/tests/end-to-end/dataprovider-log-xml-isolation.phptUT^PK P#wL sebastianbergmann-phpunit-6775051/tests/end-to-end/dataprovider-log-xml.phptUT^PK Pn/I sebastianbergmann-phpunit-6775051/tests/end-to-end/default-isolation.phptUT^PK PJqR? sebastianbergmann-phpunit-6775051/tests/end-to-end/default.phptUT^PK P}JUTX #sebastianbergmann-phpunit-6775051/tests/end-to-end/defaulttestsuite-using-testsuite.phptUT^PK PKV:H sebastianbergmann-phpunit-6775051/tests/end-to-end/defaulttestsuite.phptUT^PK PHUT sebastianbergmann-phpunit-6775051/tests/end-to-end/disable-code-coverage-ignore.phptUT^PK Pse/J #sebastianbergmann-phpunit-6775051/tests/end-to-end/dump-xdebug-filter.phptUT^PK P $N;F Hsebastianbergmann-phpunit-6775051/tests/end-to-end/empty-testcase.phptUT^PK P}dn{G sebastianbergmann-phpunit-6775051/tests/end-to-end/exception-stack.phptUT^PK P./YO Qsebastianbergmann-phpunit-6775051/tests/end-to-end/exclude-group-isolation.phptUT^PK P]^ sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/stop-on-defect-via-cli.phptUT^PK PSa sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/stop-on-defect-via-config.phptUT^PK P۔4b] sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/stop-on-error-via-cli.phptUT^PK P? ϝ` sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/stop-on-error-via-config.phptUT^PK P't8b sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/stop-on-incomplete-via-cli.phptUT^PK P1y}e sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/stop-on-incomplete-via-config.phptUT^PK PӤ`__ sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/stop-on-warning-via-cli.phptUT^PK P\nb 'sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/stop-on-warning-via-config.phptUT^PK P`;(} Msebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/test-order-randomized-seed-with-dependency-resolution.phptUT^PK P)6x sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/test-order-randomized-with-dependency-resolution.phptUT^PK Pϴv sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/test-order-reversed-with-dependency-resolution.phptUT^PK P4oy Psebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/test-order-reversed-without-dependency-resolution.phptUT^PK Pwr sebastianbergmann-phpunit-6775051/tests/end-to-end/execution-order/test-order-size-with-dependency-resolution.phptUT^PK Pr` I sebastianbergmann-phpunit-6775051/tests/end-to-end/failure-isolation.phptUT^PK P+ ? sebastianbergmann-phpunit-6775051/tests/end-to-end/failure.phptUT^PK P)`MMG `sebastianbergmann-phpunit-6775051/tests/end-to-end/fatal-isolation.phptUT^PK P"z FxN sebastianbergmann-phpunit-6775051/tests/end-to-end/filter-class-isolation.phptUT^PK P 337D sebastianbergmann-phpunit-6775051/tests/end-to-end/filter-class.phptUT^PK PhKNl tsebastianbergmann-phpunit-6775051/tests/end-to-end/filter-dataprovider-by-classname-and-range-isolation.phptUT^PK P &:[b Usebastianbergmann-phpunit-6775051/tests/end-to-end/filter-dataprovider-by-classname-and-range.phptUT^PK P[{Kz_ sebastianbergmann-phpunit-6775051/tests/end-to-end/filter-dataprovider-by-number-isolation.phptUT^PK P 69U sebastianbergmann-phpunit-6775051/tests/end-to-end/filter-dataprovider-by-number.phptUT^PK P*aLqc sebastianbergmann-phpunit-6775051/tests/end-to-end/filter-dataprovider-by-only-range-isolation.phptUT^PK PuE80Y qsebastianbergmann-phpunit-6775051/tests/end-to-end/filter-dataprovider-by-only-range.phptUT^PK PZNxd )sebastianbergmann-phpunit-6775051/tests/end-to-end/filter-dataprovider-by-only-regexp-isolation.phptUT^PK Pb:7Z sebastianbergmann-phpunit-6775051/tests/end-to-end/filter-dataprovider-by-only-regexp.phptUT^PK P3L;N}d sebastianbergmann-phpunit-6775051/tests/end-to-end/filter-dataprovider-by-only-string-isolation.phptUT^PK Pmd9<Z sebastianbergmann-phpunit-6775051/tests/end-to-end/filter-dataprovider-by-only-string.phptUT^PK PQQRP^ Psebastianbergmann-phpunit-6775051/tests/end-to-end/filter-dataprovider-by-range-isolation.phptUT^PK PjD?=?T % sebastianbergmann-phpunit-6775051/tests/end-to-end/filter-dataprovider-by-range.phptUT^PK P(S_  sebastianbergmann-phpunit-6775051/tests/end-to-end/filter-dataprovider-by-regexp-isolation.phptUT^PK P?IU  sebastianbergmann-phpunit-6775051/tests/end-to-end/filter-dataprovider-by-regexp.phptUT^PK P R_ qsebastianbergmann-phpunit-6775051/tests/end-to-end/filter-dataprovider-by-string-isolation.phptUT^PK Pr=NU Isebastianbergmann-phpunit-6775051/tests/end-to-end/filter-dataprovider-by-string.phptUT^PK P={?IV sebastianbergmann-phpunit-6775051/tests/end-to-end/filter-method-case-insensitive.phptUT^PK P֢z+^ sebastianbergmann-phpunit-6775051/tests/end-to-end/filter-method-case-sensitive-no-result.phptUT^PK PJJRO nsebastianbergmann-phpunit-6775051/tests/end-to-end/filter-method-isolation.phptUT^PK Pap?KE 6sebastianbergmann-phpunit-6775051/tests/end-to-end/filter-method.phptUT^PK P$I sebastianbergmann-phpunit-6775051/tests/end-to-end/filter-no-results.phptUT^PK PJqRM usebastianbergmann-phpunit-6775051/tests/end-to-end/forward-compatibility.phptUT^PK Pc*S sebastianbergmann-phpunit-6775051/tests/end-to-end/getActualOutputForAssertion.phptUT^PK PPBPG sebastianbergmann-phpunit-6775051/tests/end-to-end/group-isolation.phptUT^PK P ׈l= gsebastianbergmann-phpunit-6775051/tests/end-to-end/group.phptUT^PK P7!wLE 7!sebastianbergmann-phpunit-6775051/tests/end-to-end/ini-isolation.phptUT^PK P4z5C "sebastianbergmann-phpunit-6775051/tests/end-to-end/list-groups.phptUT^PK PC $sebastianbergmann-phpunit-6775051/tests/end-to-end/list-suites.phptUT^PK PIO &sebastianbergmann-phpunit-6775051/tests/end-to-end/list-tests-dataprovider.phptUT^PK PEsS 'sebastianbergmann-phpunit-6775051/tests/end-to-end/list-tests-xml-dataprovider.phptUT^PK P; )sebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/UT^PK PB C*sebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/_files/UT^PK PĶ/N *sebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/_files/HookTest.phpUT^PK P1=1V ,sebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/_files/TestDoxGroupTest.phpUT^PK P )Yob {.sebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/_files/configuration.custom-printer.xmlUT^PK P~A1C K ]/sebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/_files/hooks.xmlUT^PK P*Z 0sebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/_files/raw_output_ColorTest.txtUT^PK PLu[ 3sebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/_files/raw_output_StatusTest.txtUT^PK P T 7sebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/custom-printer-debug.phptUT^PK Pz<bV 9sebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/custom-printer-verbose.phptUT^PK PY9.E ;sebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/debug.phptUT^PK P^k/ T ?sebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/failure-reverse-list.phptUT^PK P-5 E Csebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/hooks.phptUT^PK PmLN Esebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/log-junit-phpt.phptUT^PK P@LE\I vHsebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/log-junit.phptUT^PK P&,Q Lsebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/log-teamcity-phpt.phptUT^PK PXL Nsebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/log-teamcity.phptUT^PK P[b/NY YQsebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/teamcity-inner-exceptions.phptUT^PK PK"H Tsebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/teamcity.phptUT^PK P0AK5V Vsebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/testdox-colors-verbose.phptUT^PK Pcٳ3` Xsebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/testdox-dataprovider-placeholder.phptUT^PK PoU ZZsebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/testdox-exclude-group.phptUT^PK PWC<zS Y\sebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/testdox-force-flush.phptUT^PK P{M b^sebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/testdox-group.phptUT^PK P^L Q`sebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/testdox-html.phptUT^PK PDL csebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/testdox-text.phptUT^PK P[ K esebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/testdox-xml.phptUT^PK P}tG 7jsebastianbergmann-phpunit-6775051/tests/end-to-end/loggers/testdox.phptUT^PK P@ Bmsebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/UT^PK PJ msebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/UT^PK P޿hVR nsebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/232.phptUT^PK P59q psebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/3154_namespaced_constant_resolving.phptUT^PK PȴS tsebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/3530.phptUT^PK P91AS vsebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/3967.phptUT^PK PwM+SR ^ysebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/397.phptUT^PK PYS |sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/4139.phptUT^PK P= ] ~sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/abstract_class.phptUT^PK Psebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/class_with_method_named_method.phptUT^PK P.i? ̛sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/class_with_method_with_nullable_typehinted_variadic_arguments.phptUT^PK P1W5 sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/class_with_method_with_typehinted_variadic_arguments.phptUT^PK P6|#[x sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/class_with_method_with_variadic_arguments.phptUT^PK Pvvor _sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/constant_as_parameter_default_value.phptUT^PK P3?<NX  sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/interface.phptUT^PK PFm sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/invocation_object_clone_object.phptUT^PK P77-Z_ <sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/namespaced_class.phptUT^PK P8Rq sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/namespaced_class_call_parent_clone.phptUT^PK PsCXRw ٰsebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/namespaced_class_call_parent_constructor.phptUT^PK P"Qv ɲsebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/namespaced_class_dont_call_parent_clone.phptUT^PK PsCXR| sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/namespaced_class_dont_call_parent_constructor.phptUT^PK Plv9e sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/namespaced_class_implementing_interface_call_parent_constructor.phptUT^PK Plv9e Ƹsebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/namespaced_class_implementing_interface_dont_call_parent_constructor.phptUT^PK P !g sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/namespaced_class_partial.phptUT^PK PElc sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/namespaced_interface.phptUT^PK Pi.8` 5sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/nonexistent_class.phptUT^PK Pk Ao sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/nonexistent_class_with_namespace.phptUT^PK PaVB sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/nonexistent_class_with_namespace_starting_with_separator.phptUT^PK PkDX] sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/nullable_types.phptUT^PK PzNH4T Bsebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/proxy.phptUT^PK PZ,Uo sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/return_type_declarations_closure.phptUT^PK Pxϟm sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/return_type_declarations_final.phptUT^PK PUa[q 8sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/return_type_declarations_generator.phptUT^PK P ޟop sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/return_type_declarations_nullable.phptUT^PK PG^{ u xsebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/return_type_declarations_object_method.phptUT^PK PmS!n (sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/return_type_declarations_parent.phptUT^PK Pةdl sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/return_type_declarations_self.phptUT^PK PΫu zsebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/return_type_declarations_static_method.phptUT^PK P/l sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/return_type_declarations_void.phptUT^PK PT4~bg <sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/scalar_type_declarations.phptUT^PK PG$Y sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/wsdl_class.phptUT^PK P#c sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/wsdl_class_namespace.phptUT^PK Pwta nsebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/generator/wsdl_class_partial.phptUT^PK PL sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/UT^PK PNMs^ sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/call_original.phptUT^PK P^:$l sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/call_original_with_argument.phptUT^PK P3 u !sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/call_original_with_argument_variadic.phptUT^PK P t sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/call_original_with_return_type_void.phptUT^PK PR,":g nsebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/clone_method_arguments.phptUT^PK P1l sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/deprecated_with_description.phptUT^PK PPTo sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/deprecated_without_description.phptUT^PK P#>&_ Csebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/private_method.phptUT^PK P *a sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/protected_method.phptUT^PK P*&d sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/return_by_reference.phptUT^PK Pw?u Osebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/return_by_reference_with_return_type.phptUT^PK PA=\ sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/return_type.phptUT^PK PC%ZSc  sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/return_type_parent.phptUT^PK P=l5a  sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/return_type_self.phptUT^PK P?vO9^ sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/static_method.phptUT^PK PY=wTEo sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/static_method_with_return_type.phptUT^PK PF2^ sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/with_argument.phptUT^PK PS Bf sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/with_argument_default.phptUT^PK Pj !sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/with_argument_typed_array.phptUT^PK PgPDDm #sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/with_argument_typed_callable.phptUT^PK P4bGj c&sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/with_argument_typed_class.phptUT^PK P/ @k (sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/with_argument_typed_scalar.phptUT^PK P 5;i 9+sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/with_argument_typed_self.phptUT^PK PiLq -sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/with_argument_typed_unkown_class.phptUT^PK P&CCDm 0sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/with_argument_typed_variadic.phptUT^PK P@6g 2sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/with_argument_variadic.phptUT^PK P*J_ 4sebastianbergmann-phpunit-6775051/tests/end-to-end/mock-objects/mock-method/with_arguments.phptUT^PK PPS$UH I7sebastianbergmann-phpunit-6775051/tests/end-to-end/output-isolation.phptUT^PK P'Q  9sebastianbergmann-phpunit-6775051/tests/end-to-end/phar-extension-suppressed.phptUT^PK PrEnF :sebastianbergmann-phpunit-6775051/tests/end-to-end/phar-extension.phptUT^PK P1ZkA <<sebastianbergmann-phpunit-6775051/tests/end-to-end/phpt-args.phptUT^PK P-@ 9=sebastianbergmann-phpunit-6775051/tests/end-to-end/phpt-env.phptUT^PK P8sE T>sebastianbergmann-phpunit-6775051/tests/end-to-end/phpt-external.phptUT^PK P+@풖D 3?sebastianbergmann-phpunit-6775051/tests/end-to-end/phpt-parsing.phptUT^PK P:W:C 4Asebastianbergmann-phpunit-6775051/tests/end-to-end/phpt-stderr.phptUT^PK PݩB NBsebastianbergmann-phpunit-6775051/tests/end-to-end/phpt-stdin.phptUT^PK Puj{EB OCsebastianbergmann-phpunit-6775051/tests/end-to-end/phpt-xfail.phptUT^PK P8 Dsebastianbergmann-phpunit-6775051/tests/end-to-end/phpt/UT^PK P3l'"Z \Esebastianbergmann-phpunit-6775051/tests/end-to-end/phpt/expect-external-location-hint.phptUT^PK PPQ Hsebastianbergmann-phpunit-6775051/tests/end-to-end/phpt/expect-location-hint.phptUT^PK Pd\WQ Jsebastianbergmann-phpunit-6775051/tests/end-to-end/phpt/skipif-location-hint.phptUT^PK P> Msebastianbergmann-phpunit-6775051/tests/end-to-end/regression/UT^PK PE |Msebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/UT^PK P[>N Msebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1149.phptUT^PK PJ Osebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1149/UT^PK P2O=[  Psebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1149/Issue1149Test.phpUT^PK PgN Qsebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1216.phptUT^PK PJ Ssebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1216/UT^PK P;[ ETsebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1216/Issue1216Test.phpUT^PK PE>E[ Vsebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1216/bootstrap1216.phpUT^PK PwU,|Y vWsebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1216/phpunit1216.xmlUT^PK PG'N rXsebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1265.phptUT^PK PJ .Zsebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1265/UT^PK PK[ Zsebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1265/Issue1265Test.phpUT^PK PQCSY >\sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1265/phpunit1265.xmlUT^PK PK=G!N ]sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1330.phptUT^PK PJ ^sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1330/UT^PK PO&"[ ._sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1330/Issue1330Test.phpUT^PK PBTY `sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1330/phpunit1330.xmlUT^PK PݫR-CDN asebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1335.phptUT^PK PJ Lcsebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1335/UT^PK Pw(([ csebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1335/Issue1335Test.phpUT^PK Prl[ gfsebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1335/bootstrap1335.phpUT^PK Py<N Uhsebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1337.phptUT^PK PJ jsebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1337/UT^PK PK9aU[ wjsebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1337/Issue1337Test.phpUT^PK P^~"9N Zlsebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1348.phptUT^PK PJ nsebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/1348/UT^PK P@q sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2085-enforce-time-limit-options-via-config-without-invoker.phptUT^PK P nIXA^ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2085-without-invoker.phptUT^PK P[3N sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2085.phptUT^PK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2085/UT^PK PD[ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2085/Issue2085Test.phpUT^PK P<X`v לsebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2085/configuration_enforce_time_limit_options.xmlUT^PK P<бU ̝sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2137-filter.phptUT^PK PoX ןsebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2137-no_filter.phptUT^PK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2137/UT^PK PVZo[ Zsebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2137/Issue2137Test.phpUT^PK PcUN sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2145.phptUT^PK PJ lsebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2145/UT^PK PO0[ ݦsebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2145/Issue2145Test.phpUT^PK PQN sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2158.phptUT^PK PJ Usebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2158/UT^PK Pbj5[ ƪsebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2158/Issue2158Test.phpUT^PK P9:|BBV sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2158/constant.incUT^PK P |:N Эsebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2366.phptUT^PK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2366/UT^PK Pi[ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2366/Issue2366Test.phpUT^PK PX,N sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2380.phptUT^PK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2380/UT^PK P|b aX[ 'sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2380/Issue2380Test.phpUT^PK P;C4N  sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2382.phptUT^PK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2382/UT^PK Poکw[ $sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2382/Issue2382Test.phpUT^PK Pr<&N sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2435.phptUT^PK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2435/UT^PK P[A[ )sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2435/Issue2435Test.phpUT^PK Pz]_=\ ýsebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2448-existing-test.phptUT^PK P,\` sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2448-not-existing-test.phptUT^PK PJ Fsebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2448/UT^PK P/R sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2448/Test.phpUT^PK P\ pk ?sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2724-diff-pid-from-master-process.phptUT^PK PJ Ysebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2724/UT^PK P Mt sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2724/SeparateClassRunMethodInNewProcessTest.phpUT^PK PO _2n sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2725-separate-class-before-after-pid.phptUT^PK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2725/UT^PK Pi_e sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2725/BeforeAfterClassPidTest.phpUT^PK P`!vgN sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2731.phptUT^PK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2731/UT^PK P9:8=[  sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2731/Issue2731Test.phpUT^PK PY\7N sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2811.phptUT^PK PJ xsebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2811/UT^PK P+_1[ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2811/Issue2811Test.phpUT^PK PK/a>N sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2830.phptUT^PK PJ Osebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2830/UT^PK P.q1[<[ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2830/Issue2830Test.phpUT^PK PVHN sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2972.phptUT^PK PJ Zsebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2972/UT^PK PhW^ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2972/issue-2972-test.phptUT^PK P^F4n sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/2972/unconventiallyNamedIssue2972Test.phpUT^PK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3093/UT^PK PW8ކ[ $sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3093/Issue3093Test.phpUT^PK P%޷= ^ ,sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3093/issue-3093-test.phptUT^PK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3156/UT^PK Pg;Y[ _sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3156/Issue3156Test.phpUT^PK PͥWkM sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/322.phptUT^PK PI ysebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/322/UT^PK P<-Y sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/322/Issue322Test.phpUT^PK PẒkW sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/322/phpunit322.xmlUT^PK P XVZBN sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3379.phptUT^PK PJ ]sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3379/UT^PK P>N$[ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3379/Issue3379Test.phpUT^PK Pz\+c sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3379/Issue3379TestListener.phpUT^PK PB,.U sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3379/phpunit.xmlUT^PK PJ 5sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3380/UT^PK P B3^ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3380/issue-3380-test.phptUT^PK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3396/UT^PK P" n ^ Dsebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3396/issue-3396-test.phptUT^PK PWN sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3739.phptUT^PK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3739/UT^PK Pbwe[ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3739/Issue3739Test.phpUT^PK P:1-N Csebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3881.phptUT^PK PJ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3881/UT^PK Pk8[ V sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3881/Issue3881Test.phpUT^PK Ppa0P  sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3889-2.phptUT^PK P>A0N  sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3889.phptUT^PK PJ m sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3889/UT^PK PL5y#`  sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3889/Issue3889Test.test.phpUT^PK PL5y#]  sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3889/MyIssue3889Test.phpUT^PK PG=KVAN / sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3904.phptUT^PK PJ  sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3904/UT^PK Pv/[ k sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3904/Issue3904Test.phpUT^PK Pp7NN]  sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3904/Issue3904_2Test.phpUT^PK P꿅 L]  sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3904/Issue3904_3Test.phpUT^PK P\5P g sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3904_2.phptUT^PK P*X'P  sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3904_3.phptUT^PK PA P  sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3983-1.phptUT^PK P P c sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3983-2.phptUT^PK PJ  sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3983/UT^PK P#[ W sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/3983/Issue3983Test.phpUT^PK P6M  sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/433.phptUT^PK PI  sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/433/UT^PK PvZrX`Y  sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/433/Issue433Test.phpUT^PK P'M _ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/445.phptUT^PK PI  sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/445/UT^PK P)Qg`Y  sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/445/Issue445Test.phpUT^PK P8>M ! sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/498.phptUT^PK PI $ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/498/UT^PK PAY ~$ sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/498/Issue498Test.phpUT^PK P8M & sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/503.phptUT^PK PI ( sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/503/UT^PK P_=Y _) sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/503/Issue503Test.phpUT^PK PhZEM + sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/581.phptUT^PK PI m- sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/581/UT^PK Pecl6Y - sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/581/Issue581Test.phpUT^PK PC3L / sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/74.phptUT^PK PH 1 sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/74/UT^PK PaXXW 22 sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/74/Issue74Test.phpUT^PK Pq(&X 4 sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/74/NewException.phpUT^PK PqM _5 sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/765.phptUT^PK PI 7 sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/765/UT^PK PbY 7 sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/765/Issue765Test.phpUT^PK P~KsM 9 sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/797.phptUT^PK PI ; sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/797/UT^PK P0#VY < sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/797/Issue797Test.phpUT^PK PtIxY = sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/797/bootstrap797.phpUT^PK PXx~M m? sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/863.phptUT^PK PKEAM _A sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/873.phptUT^PK PI C sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/873/UT^PK PV.Y C sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/GitHub/873/Issue873Test.phpUT^PK PC  E sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/Trac/UT^PK P9^:L E sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/Trac/1021.phptUT^PK PH 7G sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/Trac/1021/UT^PK Pe&eY G sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/Trac/1021/Issue1021Test.phpUT^PK P_K I sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/Trac/578.phptUT^PK PG K sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/Trac/578/UT^PK P\sW &L sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/Trac/578/Issue578Test.phpUT^PK PkJK QN sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/Trac/684.phptUT^PK PG .P sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/Trac/684/UT^PK PZ/NW P sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/Trac/684/Issue684Test.phpUT^PK P&bhJ&K R sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/Trac/783.phptUT^PK PG S sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/Trac/783/UT^PK P'jH:U 9T sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/Trac/783/ChildSuite.phpUT^PK PAB(R U sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/Trac/783/OneTest.phpUT^PK PD@>V W sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/Trac/783/ParentSuite.phpUT^PK Ps-)R YY sebastianbergmann-phpunit-6775051/tests/end-to-end/regression/Trac/783/TwoTest.phpUT^PK P\C( Z sebastianbergmann-phpunit-6775051/tests/end-to-end/report-tests-performing-assertions-when-annotated-with-does-not-perform-assertions.phptUT^PK PM6 W ?] sebastianbergmann-phpunit-6775051/tests/end-to-end/report-useless-tests-incomplete.phptUT^PK P=V ^ sebastianbergmann-phpunit-6775051/tests/end-to-end/report-useless-tests-isolation.phptUT^PK PjfL ` sebastianbergmann-phpunit-6775051/tests/end-to-end/report-useless-tests.phptUT^PK P n Y b sebastianbergmann-phpunit-6775051/tests/end-to-end/requires-skip-code-location-hints.phptUT^PK P]8nO 9f sebastianbergmann-phpunit-6775051/tests/end-to-end/separate-processes-test.phptUT^PK P!G1L h sebastianbergmann-phpunit-6775051/tests/end-to-end/test-suffix-multiple.phptUT^PK P`+J i sebastianbergmann-phpunit-6775051/tests/end-to-end/test-suffix-single.phptUT^PK Pԁ? ]k sebastianbergmann-phpunit-6775051/tests/end-to-end/version.phptUT^PK P- l sebastianbergmann-phpunit-6775051/tests/fail/UT^PK Pcg6 l sebastianbergmann-phpunit-6775051/tests/fail/fail.phptUT^PK P8 m sebastianbergmann-phpunit-6775051/tests/static-analysis/UT^PK PG,!J n sebastianbergmann-phpunit-6775051/tests/static-analysis/TestUsingMocks.phpUT^PK PC p sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/UT^PK P>dT+S p sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-empty.phpUT^PK P1N8S r sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-false.phpUT^PK P 7Y St sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-instance-of.phpUT^PK P]b3V  v sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-is-array.phpUT^PK P]?3U w sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-is-bool.phpUT^PK PM6Y iy sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-is-callable.phpUT^PK Pwx3V { sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-is-float.phpUT^PK P{m1T | sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-is-int.phpUT^PK P`6Y {~ sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-is-iterable.phpUT^PK P\6Z 1 sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-is-not-array.phpUT^PK P˹6Y  sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-is-not-bool.phpUT^PK Pa9]  sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-is-not-callable.phpUT^PK Pߎ6Z [ sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-is-not-float.phpUT^PK P?6X  sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-is-not-int.phpUT^PK P$+7] Lj sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-is-not-iterable.phpUT^PK PO7\  sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-is-not-numeric.phpUT^PK PW_c7[ < sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-is-not-object.phpUT^PK Pv6]  sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-is-not-resource.phpUT^PK PO9[  sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-is-not-scalar.phpUT^PK P6[ j sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-is-not-string.phpUT^PK Py:X " sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-is-numeric.phpUT^PK PI{56W ۔ sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-is-object.phpUT^PK PΙn9Y  sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-is-resource.phpUT^PK PFO>W H sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-is-scalar.phpUT^PK Pt*6W  sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-is-string.phpUT^PK P)W  sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-not-empty.phpUT^PK PN\6W _ sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-not-false.phpUT^PK P J]  sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-not-instance-of.phpUT^PK PZ%V  sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-not-null.phpUT^PK PPH 5V  sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-not-true.phpUT^PK P"f<7R 5 sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-null.phpUT^PK P~C+R  sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-same.phpUT^PK P|;R  sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/assert-true.phpUT^PK PvjGK = sebastianbergmann-phpunit-6775051/tests/static-analysis/happy-path/fail.phpUT^PK P-  sebastianbergmann-phpunit-6775051/tests/unit/UT^PK P7 J sebastianbergmann-phpunit-6775051/tests/unit/Framework/UT^PK P>  sebastianbergmann-phpunit-6775051/tests/unit/Framework/Assert/UT^PK PsO  sebastianbergmann-phpunit-6775051/tests/unit/Framework/Assert/FunctionsTest.phpUT^PK P?xMrwE  sebastianbergmann-phpunit-6775051/tests/unit/Framework/AssertTest.phpUT^PK PB  sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/UT^PK P|E7U = sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/ArrayHasKeyTest.phpUT^PK P%w" U  sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/ArraySubsetTest.phpUT^PK P56R  sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/CallbackTest.phpUT^PK P0Pv[  sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/ClassHasAttributeTest.phpUT^PK PS[ua  sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/ClassHasStaticAttributeTest.phpUT^PK P\@!X  sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/ConstraintTestCase.phpUT^PK PblTO 1 sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/CountTest.phpUT^PK P'`1UY ` sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/DirectoryExistsTest.phpUT^PK P~0W 5 sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/ExceptionCodeTest.phpUT^PK PJJag@`  sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/ExceptionMessageRegExpTest.phpUT^PK Pg3lZ  sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/ExceptionMessageTest.phpUT^PK P4fUS  sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/ExceptionTest.phpUT^PK PA9k'T  sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/FileExistsTest.phpUT^PK PN`#oU  sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/GreaterThanTest.phpUT^PK P{z#Q , sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/IsEmptyTest.phpUT^PK PdQ > sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/IsEqualTest.phpUT^PK P85U  sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/IsIdenticalTest.phpUT^PK P߶KDV  sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/IsInstanceOfTest.phpUT^PK P!ogP b sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/IsJsonTest.phpUT^PK P>î5P  sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/IsNullTest.phpUT^PK PAT & sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/IsReadableTest.phpUT^PK P:+;P  sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/IsTypeTest.phpUT^PK PEiAT   sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/IsWritableTest.phpUT^PK PkZ i } sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/JsonMatchesErrorMessageProviderTest.phpUT^PK PFU  sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/JsonMatchesTest.phpUT^PK Pn%WR 2 sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/LessThanTest.phpUT^PK P[!T " sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/LogicalAndTest.phpUT^PK P sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/StringEndsWithTest.phpUT^PK P5X.h A sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/StringMatchesFormatDescriptionTest.phpUT^PK P)J Z G sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/StringStartsWithTest.phpUT^PK P ] J sebastianbergmann-phpunit-6775051/tests/unit/Framework/Constraint/TraversableContainsTest.phpUT^PK PGG? yI N sebastianbergmann-phpunit-6775051/tests/unit/Framework/ConstraintTest.phpUT^PK PA Y sebastianbergmann-phpunit-6775051/tests/unit/Framework/Exception/UT^PK P OjR XZ sebastianbergmann-phpunit-6775051/tests/unit/Framework/Exception/ExceptionTest.phpUT^PK PWha ;\ sebastianbergmann-phpunit-6775051/tests/unit/Framework/Exception/InvalidArgumentExceptionTest.phpUT^PK Pj>;O ^ sebastianbergmann-phpunit-6775051/tests/unit/Framework/ExceptionWrapperTest.phpUT^PK PWQ Pa sebastianbergmann-phpunit-6775051/tests/unit/Framework/IncompleteTestCaseTest.phpUT^PK PB Md sebastianbergmann-phpunit-6775051/tests/unit/Framework/MockObject/UT^PK PJ d sebastianbergmann-phpunit-6775051/tests/unit/Framework/MockObject/Builder/UT^PK P7K#b 'e sebastianbergmann-phpunit-6775051/tests/unit/Framework/MockObject/Builder/InvocationMockerTest.phpUT^PK P^"\ fk sebastianbergmann-phpunit-6775051/tests/unit/Framework/MockObject/ConfigurableMethodTest.phpUT^PK PhŃ$M] m sebastianbergmann-phpunit-6775051/tests/unit/Framework/MockObject/ConfigurableMethodsTest.phpUT^PK Pq(S pp sebastianbergmann-phpunit-6775051/tests/unit/Framework/MockObject/GeneratorTest.phpUT^PK PI^[ w sebastianbergmann-phpunit-6775051/tests/unit/Framework/MockObject/InvocationHandlerTest.phpUT^PK PJ y sebastianbergmann-phpunit-6775051/tests/unit/Framework/MockObject/Matcher/UT^PK PY g Jz sebastianbergmann-phpunit-6775051/tests/unit/Framework/MockObject/Matcher/ConsecutiveParametersTest.phpUT^PK P,$|QQ q} sebastianbergmann-phpunit-6775051/tests/unit/Framework/MockObject/MatcherTest.phpUT^PK P^&#U e sebastianbergmann-phpunit-6775051/tests/unit/Framework/MockObject/MockBuilderTest.phpUT^PK PRS n sebastianbergmann-phpunit-6775051/tests/unit/Framework/MockObject/MockClassTest.phpUT^PK P?;=T : sebastianbergmann-phpunit-6775051/tests/unit/Framework/MockObject/MockMethodTest.phpUT^PK PD#T  sebastianbergmann-phpunit-6775051/tests/unit/Framework/MockObject/MockObjectTest.phpUT^PK PfS  sebastianbergmann-phpunit-6775051/tests/unit/Framework/MockObject/MockTraitTest.phpUT^PK P^q, U  sebastianbergmann-phpunit-6775051/tests/unit/Framework/MockObject/ProxyObjectTest.phpUT^PK PHy.N  sebastianbergmann-phpunit-6775051/tests/unit/Framework/SkippedTestCaseTest.phpUT^PK PB4<J y sebastianbergmann-phpunit-6775051/tests/unit/Framework/TestBuilderTest.phpUT^PK PSnG  sebastianbergmann-phpunit-6775051/tests/unit/Framework/TestCaseTest.phpUT^PK P|اJ  sebastianbergmann-phpunit-6775051/tests/unit/Framework/TestFailureTest.phpUT^PK P]XقN g sebastianbergmann-phpunit-6775051/tests/unit/Framework/TestImplementorTest.phpUT^PK PK ^ sebastianbergmann-phpunit-6775051/tests/unit/Framework/TestListenerTest.phpUT^PK P:ГZ4P  sebastianbergmann-phpunit-6775051/tests/unit/Framework/TestSuiteIteratorTest.phpUT^PK P.toH ` sebastianbergmann-phpunit-6775051/tests/unit/Framework/TestSuiteTest.phpUT^PK P4 > sebastianbergmann-phpunit-6775051/tests/unit/Runner/UT^PK Pz}R  sebastianbergmann-phpunit-6775051/tests/unit/Runner/DefaultTestResultCacheTest.phpUT^PK P;  sebastianbergmann-phpunit-6775051/tests/unit/Runner/Filter/UT^PK P" U * sebastianbergmann-phpunit-6775051/tests/unit/Runner/Filter/NameFilterIteratorTest.phpUT^PK PovO  sebastianbergmann-phpunit-6775051/tests/unit/Runner/NullTestResultCacheTest.phpUT^PK P eM#H  sebastianbergmann-phpunit-6775051/tests/unit/Runner/PhptTestCaseTest.phpUT^PK PP  sebastianbergmann-phpunit-6775051/tests/unit/Runner/ResultCacheExtensionTest.phpUT^PK PIeBK k sebastianbergmann-phpunit-6775051/tests/unit/Runner/TestResultCacheTest.phpUT^PK P I jK  sebastianbergmann-phpunit-6775051/tests/unit/Runner/TestSuiteSorterTest.phpUT^PK P2 \ sebastianbergmann-phpunit-6775051/tests/unit/Util/UT^PK P=  sebastianbergmann-phpunit-6775051/tests/unit/Util/Annotation/UT^PK P8M M  sebastianbergmann-phpunit-6775051/tests/unit/Util/Annotation/RegistryTest.phpUT^PK PMr)?  sebastianbergmann-phpunit-6775051/tests/unit/Util/ColorTest.phpUT^PK P͏=P  sebastianbergmann-phpunit-6775051/tests/unit/Util/ConfigurationGeneratorTest.phpUT^PK PúPgG n sebastianbergmann-phpunit-6775051/tests/unit/Util/ConfigurationTest.phpUT^PK P#h@  sebastianbergmann-phpunit-6775051/tests/unit/Util/GetoptTest.phpUT^PK PbE  sebastianbergmann-phpunit-6775051/tests/unit/Util/GlobalStateTest.phpUT^PK PƴG > w sebastianbergmann-phpunit-6775051/tests/unit/Util/JsonTest.phpUT^PK P6 # sebastianbergmann-phpunit-6775051/tests/unit/Util/PHP/UT^PK Px"_ P  sebastianbergmann-phpunit-6775051/tests/unit/Util/PHP/AbstractPhpProcessTest.phpUT^PK PZGA=`K V sebastianbergmann-phpunit-6775051/tests/unit/Util/RegularExpressionTest.phpUT^PK P/ C  sebastianbergmann-phpunit-6775051/tests/unit/Util/TestClassTest.phpUT^PK P: z5 sebastianbergmann-phpunit-6775051/tests/unit/Util/TestDox/UT^PK P4rX 5 sebastianbergmann-phpunit-6775051/tests/unit/Util/TestDox/CliTestDoxPrinterColorTest.phpUT^PK PDvIS  9 sebastianbergmann-phpunit-6775051/tests/unit/Util/TestDox/CliTestDoxPrinterTest.phpUT^PK P;P w= sebastianbergmann-phpunit-6775051/tests/unit/Util/TestDox/NamePrettifierTest.phpUT^PK P2kq U B sebastianbergmann-phpunit-6775051/tests/unit/Util/XDebugFilterScriptGeneratorTest.phpUT^PK POf= E sebastianbergmann-phpunit-6775051/tests/unit/Util/XmlTest.phpUT^PK{{VJ (67750516bc02f300e2742fed2f50177f8f37bedfPK!)V phpunit.xmlnuIw tests/Framework tests/Extensions tests/Runner tests/Util tests/TextUI tests/Regression src src/Framework/Assert/Functions.php src/Util/PHP/eval-stdin.php PK!ZGkk README.mdnuIw# PHPUnit PHPUnit is a programmer-oriented testing framework for PHP. It is an instance of the xUnit architecture for unit testing frameworks. [![Latest Stable Version](https://img.shields.io/packagist/v/phpunit/phpunit.svg?style=flat-square)](https://packagist.org/packages/phpunit/phpunit) [![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%205.6-8892BF.svg?style=flat-square)](https://php.net/) [![Build Status](https://img.shields.io/travis/sebastianbergmann/phpunit/5.7.svg?style=flat-square)](https://phpunit.de/build-status.html) ## Installation We distribute a [PHP Archive (PHAR)](https://php.net/phar) that has all required (as well as some optional) dependencies of PHPUnit bundled in a single file: ```bash $ wget https://phar.phpunit.de/phpunit.phar $ chmod +x phpunit.phar $ mv phpunit.phar /usr/local/bin/phpunit ``` You can also immediately use the PHAR after you have downloaded it, of course: ```bash $ wget https://phar.phpunit.de/phpunit.phar $ php phpunit.phar ``` Alternatively, you may use [Composer](https://getcomposer.org/) to download and install PHPUnit as well as its dependencies. Please refer to the [documentation](https://phpunit.de/documentation.html) for details on how to do this. ## Contribute Please refer to [CONTRIBUTING.md](https://github.com/sebastianbergmann/phpunit/blob/master/.github/CONTRIBUTING.md) for information on how to contribute to PHPUnit and its related projects. ## List of Contributors Thanks to everyone who has contributed to PHPUnit! You can find a detailed list of contributors on every PHPUnit related package on GitHub. This list shows only the major components: * [PHPUnit](https://github.com/sebastianbergmann/phpunit/graphs/contributors) * [PHP_CodeCoverage](https://github.com/sebastianbergmann/php-code-coverage/graphs/contributors) * [PHPUnit_MockObject](https://github.com/sebastianbergmann/phpunit-mock-objects/graphs/contributors) A very special thanks to everyone who has contributed to the documentation and helps maintain the translations: * [PHPUnit Documentation](https://github.com/sebastianbergmann/phpunit-documentation/graphs/contributors) PK!Sϯ//ChangeLog-5.7.mdnuIw# Changes in PHPUnit 5.7 All notable changes of the PHPUnit 5.7 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. ## [5.7.27] - 2018-02-01 ### Fixed * Fixed [#2236](https://github.com/sebastianbergmann/phpunit/issues/2236): Exceptions in `tearDown()` do not affect `getStatus()` * Fixed [#2950](https://github.com/sebastianbergmann/phpunit/issues/2950): Class extending `PHPUnit\Framework\TestSuite` does not extend `PHPUnit\FrameworkTestCase` * Fixed [#2972](https://github.com/sebastianbergmann/phpunit/issues/2972): PHPUnit crashes when test suite contains both `.phpt` files and unconventionally named tests ## [5.7.26] - 2017-12-17 ### Fixed * Fixed [#2472](https://github.com/sebastianbergmann/phpunit/issues/2472): `PHPUnit\Util\Getopt` uses deprecated `each()` function * Fixed [#2833](https://github.com/sebastianbergmann/phpunit/issues/2833): Test class loaded during data provider execution is not discovered * Fixed [#2922](https://github.com/sebastianbergmann/phpunit/issues/2922): Test class is not discovered when there is a test class with `@group` and provider throwing exception in it, tests are run with `--exclude-group` for that group, there is another class called later (after the class from above), and the name of that another class does not match its filename ## [5.7.25] - 2017-11-14 ### Fixed * Fixed [#2859](https://github.com/sebastianbergmann/phpunit/issues/2859): Regression caused by fix for [#2833](https://github.com/sebastianbergmann/phpunit/issues/2833) ## [5.7.24] - 2017-11-14 ### Fixed * Fixed [#2833](https://github.com/sebastianbergmann/phpunit/issues/2833): Test class loaded during data provider execution is not discovered ## [5.7.23] - 2017-10-15 ### Fixed * Fixed [#2731](https://github.com/sebastianbergmann/phpunit/issues/2731): Empty exception message cannot be expected ## [5.7.22] - 2017-09-24 ### Fixed * Fixed [#2769](https://github.com/sebastianbergmann/phpunit/issues/2769): Usage of `setUseErrorHandler()` produces `Undefined variable` error ## [5.7.21] - 2017-06-21 ### Added * Added `PHPUnit\Framework\AssertionFailedError`, `PHPUnit\Framework\Test`, and `PHPUnit\Framework\TestSuite` to the forward compatibility layer for PHPUnit 6 ### Fixed * Fixed [#2705](https://github.com/sebastianbergmann/phpunit/issues/2705): `stderr` parameter in `phpunit.xml` always considered `true` ## [5.7.20] - 2017-05-22 ### Fixed * Fixed [#2563](https://github.com/sebastianbergmann/phpunit/pull/2563): `phpunit --version` does not display version when running unsupported PHP ## [5.7.19] - 2017-04-03 ### Fixed * Fixed [#2638](https://github.com/sebastianbergmann/phpunit/pull/2638): Regression in `PHPUnit\Framework\TestCase:registerMockObjectsFromTestArguments()` ## [5.7.18] - 2017-04-02 ### Fixed * Fixed [#2145](https://github.com/sebastianbergmann/phpunit/issues/2145): `--stop-on-failure` fails to stop on PHP 7 * Fixed [#2572](https://github.com/sebastianbergmann/phpunit/issues/2572): `PHPUnit\Framework\TestCase:registerMockObjectsFromTestArguments()` does not correctly handle arrays that reference themselves ## [5.7.17] - 2017-03-19 ### Fixed * Fixed [#2016](https://github.com/sebastianbergmann/phpunit/issues/2016): `prophesize()` does not work when static attributes are backed up * Fixed [#2568](https://github.com/sebastianbergmann/phpunit/issues/2568): `ArraySubsetConstraint` uses invalid cast to array * Fixed [#2573](https://github.com/sebastianbergmann/phpunit/issues/2573): `getMockFromWsdl()` does not handle URLs with query parameters * `PHPUnit\Util\Test::getDataFromTestWithAnnotation()` raises notice when docblock contains Windows line endings ## [5.7.16] - 2017-03-15 ### Fixed * Fixed [#2547](https://github.com/sebastianbergmann/phpunit/issues/2547): Code Coverage data is collected for test annotated with `@coversNothing` * Fixed [#2558](https://github.com/sebastianbergmann/phpunit/issues/2558): `countOf()` function is missing ## [5.7.15] - 2017-03-02 ### Fixed * Fixed [#1999](https://github.com/sebastianbergmann/phpunit/issues/1999): Handler is inherited from previous custom option with handler * Fixed [#2149](https://github.com/sebastianbergmann/phpunit/issues/2149): `assertCount()` does not handle generators properly * Fixed [#2478](https://github.com/sebastianbergmann/phpunit/issues/2478): Tests that take too long are not reported as risky test ## [5.7.14] - 2017-02-19 ### Fixed * Fixed [#2489](https://github.com/sebastianbergmann/phpunit/issues/2489): `processUncoveredFilesFromWhitelist` is not handled correctly * Fixed default values for `addUncoveredFilesFromWhitelist` and `processUncoveredFilesFromWhitelist` in `phpunit.xsd` ## [5.7.13] - 2017-02-10 ### Fixed * Fixed [#2493](https://github.com/sebastianbergmann/phpunit/issues/2493): Fix for [#2475](https://github.com/sebastianbergmann/phpunit/pull/2475) does not apply to PHPUnit 5.7 ## [5.7.12] - 2017-02-08 ### Fixed * Fixed [#2475](https://github.com/sebastianbergmann/phpunit/pull/2475): Defining a test suite with only one file does not work ## [5.7.11] - 2017-02-05 ### Fixed * Deprecation errors when used with PHP 7.2 ## [5.7.10] - 2017-02-04 ### Fixed * Fixed [#2462](https://github.com/sebastianbergmann/phpunit/issues/2462): Code Coverage whitelist is filled even if no code coverage data is to be collected ## [5.7.9] - 2017-01-28 ### Fixed * Fixed [#2447](https://github.com/sebastianbergmann/phpunit/issues/2447): Reverted backwards incompatible change to handling of boolean environment variable values specified in XML ## [5.7.8] - 2017-01-26 ### Fixed * Fixed [#2446](https://github.com/sebastianbergmann/phpunit/issues/2446): Reverted backwards incompatible change to exit code in case of warnings ## [5.7.7] - 2017-01-25 ### Fixed * Fixed [#1896](https://github.com/sebastianbergmann/phpunit/issues/1896): Wrong test location when `@depends` and `@dataProvider` are combined * Fixed [#1983](https://github.com/sebastianbergmann/phpunit/pull/1983): Tests with `@expectedException` annotation cannot be skipped * Fixed [#2137](https://github.com/sebastianbergmann/phpunit/issues/2137): Warnings for invalid data providers are suppressed when test execution is filtered * Fixed [#2275](https://github.com/sebastianbergmann/phpunit/pull/2275): Invalid UTF-8 characters can lead to missing output * Fixed [#2299](https://github.com/sebastianbergmann/phpunit/issues/2299): `expectExceptionMessage()` and `expectExceptionCode()` do not work without `expectException()` * Fixed [#2328](https://github.com/sebastianbergmann/phpunit/issues/2328): `TestListener` callbacks `startTest()` and `endTest()` are not called when test is skipped due to `@depends` * Fixed [#2331](https://github.com/sebastianbergmann/phpunit/issues/2331): Boolean environment variable values specified in XML get mangled * Fixed [#2333](https://github.com/sebastianbergmann/phpunit/issues/2333): `assertContains()` and `assertNotContains()` do not handle UTF-8 strings correctly * Fixed [#2340](https://github.com/sebastianbergmann/phpunit/pull/2340): Data providers that use `yield` or implement `Iterator` cannot be combined * Fixed [#2349](https://github.com/sebastianbergmann/phpunit/pull/2349): `PHPUnit_TextUI_Command` does not `exit()` when it should * Fixed [#2392](https://github.com/sebastianbergmann/phpunit/issues/2392): Empty (but valid) data provider should skip the test * Fixed [#2431](https://github.com/sebastianbergmann/phpunit/issues/2431): `assertArraySubset()` does not support `ArrayAccess` * Fixed [#2435](https://github.com/sebastianbergmann/phpunit/issues/2435): Empty `@group` annotation causes error on PHP 7.2+ ## [5.7.6] - 2017-01-22 ### Fixed * Fixed [#2424](https://github.com/sebastianbergmann/phpunit/issues/2424): `TestCase::getStatus()` returns `STATUS_PASSED` instead of `STATUS_RISKY` for risky test * Fixed [#2427](https://github.com/sebastianbergmann/phpunit/issues/2427): TestDox group configuration is not handled * Fixed [#2428](https://github.com/sebastianbergmann/phpunit/pull/2428): Nested arrays specificied in XML configuration file are not handled correctly ## [5.7.5] - 2016-12-28 ### Fixed * Fixed [#2404](https://github.com/sebastianbergmann/phpunit/pull/2404): `assertDirectoryNotIsWriteable()` calls itself ## [5.7.4] - 2016-12-13 ### Fixed * Fixed [#2394](https://github.com/sebastianbergmann/phpunit/issues/2394): Do not treat `AssertionError` as assertion failure on PHP 5 ## [5.7.3] - 2016-12-09 ### Fixed * Fixed [#2384](https://github.com/sebastianbergmann/phpunit/pull/2384): Handle `PHPUnit_Framework_Exception` correctly when expecting exceptions ## [5.7.2] - 2016-12-03 ### Fixed * Fixed [#2382](https://github.com/sebastianbergmann/phpunit/issues/2382): Uncloneable test doubles passed via data provider do not work ## [5.7.1] - 2016-12-02 ### Fixed * Fixed [#2380](https://github.com/sebastianbergmann/phpunit/issues/2380): Data Providers cannot be generators anymore ## [5.7.0] - 2016-12-02 ### Added * Merged [#2223](https://github.com/sebastianbergmann/phpunit/pull/2223): Add support for multiple data providers * Added `extensionsDirectory` configuration directive to configure a directory from which all `.phar` files are loaded as PHPUnit extensions * Added `--no-extensions` commandline option to suppress loading of extensions (from configured extension directory) * Added `PHPUnit\Framework\Assert` as an alias for `PHPUnit_Framework_Assert` for forward compatibility * Added `PHPUnit\Framework\BaseTestListener` as an alias for `PHPUnit_Framework_BaseTestListener` for forward compatibility * Added `PHPUnit\Framework\TestListener` as an alias for `PHPUnit_Framework_TestListener` for forward compatibility ### Changed * The `--log-json` commandline option has been deprecated * The `--tap` and `--log-tap` commandline options have been deprecated * The `--self-update` and `--self-upgrade` commandline options have been deprecated (PHAR binary only) [5.7.27]: https://github.com/sebastianbergmann/phpunit/compare/5.7.26...5.7.27 [5.7.26]: https://github.com/sebastianbergmann/phpunit/compare/5.7.25...5.7.26 [5.7.25]: https://github.com/sebastianbergmann/phpunit/compare/5.7.24...5.7.25 [5.7.24]: https://github.com/sebastianbergmann/phpunit/compare/5.7.23...5.7.24 [5.7.23]: https://github.com/sebastianbergmann/phpunit/compare/5.7.22...5.7.23 [5.7.22]: https://github.com/sebastianbergmann/phpunit/compare/5.7.21...5.7.22 [5.7.21]: https://github.com/sebastianbergmann/phpunit/compare/5.7.20...5.7.21 [5.7.20]: https://github.com/sebastianbergmann/phpunit/compare/5.7.19...5.7.20 [5.7.19]: https://github.com/sebastianbergmann/phpunit/compare/5.7.18...5.7.19 [5.7.18]: https://github.com/sebastianbergmann/phpunit/compare/5.7.17...5.7.18 [5.7.17]: https://github.com/sebastianbergmann/phpunit/compare/5.7.16...5.7.17 [5.7.16]: https://github.com/sebastianbergmann/phpunit/compare/5.7.15...5.7.16 [5.7.15]: https://github.com/sebastianbergmann/phpunit/compare/5.7.14...5.7.15 [5.7.14]: https://github.com/sebastianbergmann/phpunit/compare/5.7.13...5.7.14 [5.7.13]: https://github.com/sebastianbergmann/phpunit/compare/5.7.12...5.7.13 [5.7.12]: https://github.com/sebastianbergmann/phpunit/compare/5.7.11...5.7.12 [5.7.11]: https://github.com/sebastianbergmann/phpunit/compare/5.7.10...5.7.11 [5.7.10]: https://github.com/sebastianbergmann/phpunit/compare/5.7.9...5.7.10 [5.7.9]: https://github.com/sebastianbergmann/phpunit/compare/5.7.8...5.7.9 [5.7.8]: https://github.com/sebastianbergmann/phpunit/compare/5.7.7...5.7.8 [5.7.7]: https://github.com/sebastianbergmann/phpunit/compare/5.7.6...5.7.7 [5.7.6]: https://github.com/sebastianbergmann/phpunit/compare/5.7.5...5.7.6 [5.7.5]: https://github.com/sebastianbergmann/phpunit/compare/5.7.4...5.7.5 [5.7.4]: https://github.com/sebastianbergmann/phpunit/compare/5.7.3...5.7.4 [5.7.3]: https://github.com/sebastianbergmann/phpunit/compare/5.7.2...5.7.3 [5.7.2]: https://github.com/sebastianbergmann/phpunit/compare/5.7.1...5.7.2 [5.7.1]: https://github.com/sebastianbergmann/phpunit/compare/5.7.0...5.7.1 [5.7.0]: https://github.com/sebastianbergmann/phpunit/compare/5.6...5.7.0 PK!34LICENSEnuIwPHPUnit Copyright (c) 2001-2018, Sebastian Bergmann . All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Sebastian Bergmann nor the names of his contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. PK!&tests/_files/DependencyFailureTest.phpnuIwfail(); } /** * @depends testOne */ public function testTwo() { } /** * @depends !clone testTwo */ public function testThree() { } /** * @depends clone testOne */ public function testFour() { } } PK! Xl"tests/_files/CoverageClassTest.phpnuIwpublicMethod(); } } PK!,Uwxtests/_files/phpt-xfail.phptnuIw--TEST-- PHPT runner supports XFAIL section --FILE-- --XFAIL-- Syntax Error in PHPT is supposed to fail --EXPECT-- Should not see this PK!?ѣpp#tests/_files/StopsOnWarningTest.phpnuIwttests/_files/Failure.phpnuIwfail(); } } PK!#%)tests/_files/CoverageNotProtectedTest.phpnuIw */ public function testSomething() { $o = new CoveredClass; $o->publicMethod(); } } PK!rstests/_files/OneTestCase.phpnuIw */ public function testSomething() { $o = new CoveredClass; $o->publicMethod(); } } PK!3 tests/_files/NoTestCaseClass.phpnuIwassertFalse($this->isInIsolation()); } public function testIsInIsolationReturnsTrue() { $this->assertTrue($this->isInIsolation()); } } PK!~pptests/_files/configuration.xmlnuIw /path/to/files /path/to/MyTest.php name name name name /path/to/files /path/to/file /path/to/file /path/to/files /path/to/file Sebastian 22 April 19.78 MyTestFile.php MyRelativePath 42 . /path/to/lib PK!ZE`$tests/_files/TemplateMethodsTest.phpnuIwassertTrue(true); } public function testTwo() { print __METHOD__ . "\n"; $this->assertTrue(false); } protected function assertPostConditions() { print __METHOD__ . "\n"; } protected function tearDown() { print __METHOD__ . "\n"; } public static function tearDownAfterClass() { print __METHOD__ . "\n"; } protected function onNotSuccessfulTest(Exception $e) { print __METHOD__ . "\n"; throw $e; } } PK!Dш"tests/_files/ClassWithToString.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * A class with a __toString() method. * */ class ClassWithToString { public function __toString() { return 'string representation'; } } PK!o.1tests/_files/structureWrongNumberOfAttributes.xmlnuIw Image 1: Dette er en test caption PK!?(*'tests/_files/BaseTestListenerSample.phpnuIwendCount++; } } PK! | 22tests/_files/DummyException.phpnuIwassertTrue(true); } } PK!OO0tests/_files/DataProviderIssue2833/FirstTest.phpnuIwassertTrue(true); } public function provide() { SecondTest::DUMMY; return [[true]]; } } PK!EV))5tests/_files/RequirementsClassBeforeClassHookTest.phpnuIwassertSame(self::$dependency, $dependency); } /** * @depends !clone testOne */ public function testThree($dependency) { $this->assertSame(self::$dependency, $dependency); } /** * @depends clone testOne */ public function testFour($dependency) { $this->assertNotSame(self::$dependency, $dependency); } } PK!87hhtests/_files/Success.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * A book. * */ class Book { // the order of properties is important for testing the cycle! public $author = null; } PK!*tests/_files/CoverageClassExtendedTest.phpnuIw */ public function testSomething() { $o = new CoveredClass; $o->publicMethod(); } } PK!$tests/_files/CoverageNothingTest.phpnuIwpublicMethod(); } } PK! 'tests/_files/CoverageNotPrivateTest.phpnuIw */ public function testSomething() { $o = new CoveredClass; $o->publicMethod(); } } PK!u'tests/_files/JsonData/simpleObject.jsonnuIw{"Mascott":"Tux"}PK!P ""&tests/_files/JsonData/arrayObject.jsonnuIw["Mascott", "Tux", "OS", "Linux"] PK!5AA4tests/_files/BeforeClassWithOnlyDataProviderTest.phpnuIwassertFalse(false); } } PK! Y$$ tests/_files/CoveredFunction.phpnuIwaddTestSuite('NoTestCases'); $suite->addTestSuite('CoverageClassTest'); return $suite; } } PK!L'zxxtests/_files/MockRunner.phpnuIwpublicMethod(); } } PK!}`3tests/_files/NamespaceCoverageClassExtendedTest.phpnuIw */ public function testSomething() { $o = new Foo\CoveredClass; $o->publicMethod(); } } PK!yc$tests/_files/MultiDependencyTest.phpnuIwassertEquals('foo', $a); $this->assertEquals('bar', $b); } } PK!55 4tests/_files/ExceptionInAssertPostConditionsTest.phpnuIwsetUp = true; } protected function assertPreConditions() { $this->assertPreConditions = true; } public function testSomething() { $this->testSomething = true; } protected function assertPostConditions() { $this->assertPostConditions = true; throw new Exception; } protected function tearDown() { $this->tearDown = true; } } PK!=cȱ#tests/_files/TestGeneratorMaker.phpnuIw $value) { yield $key => $value; } } } PK!$tests/_files/CoveragePrivateTest.phpnuIw */ public function testSomething() { $o = new CoveredClass; $o->publicMethod(); } } PK!gJJ3tests/_files/CoverageTwoDefaultClassAnnotations.phpnuIw */ public function testSomething() { $o = new Foo\CoveredClass; $o->publicMethod(); } } PK!y ii!tests/_files/OverrideTestCase.phpnuIwdoSomething(); } } PK!C0tests/_files/NamespaceCoverageNotPrivateTest.phpnuIw */ public function testSomething() { $o = new Foo\CoveredClass; $o->publicMethod(); } } PK!fvvtests/_files/Struct.phpnuIwvar = $var; } } PK!!m(tests/_files/ExceptionInTearDownTest.phpnuIwsetUp = true; } protected function assertPreConditions() { $this->assertPreConditions = true; } public function testSomething() { $this->testSomething = true; } protected function assertPostConditions() { $this->assertPostConditions = true; } protected function tearDown() { $this->tearDown = true; throw new Exception; } } PK!k#tests/_files/TestAutoreferenced.phpnuIwmyTestData = $data; } } PK!k.qq)tests/_files/Inheritance/InheritanceB.phpnuIwconstructorCalled = false; } public function foo() { return true; } public function bar() { return true; } public function __clone() { $this->cloned = true; } } PK!.1tests/_files/NamespaceCoverageCoversClassTest.phpnuIwpublicMethod(); } } PK!\,O1tests/_files/DataProviderIssue2922/SecondTest.phpnuIwassertTrue(true); } } PK!PPP0tests/_files/DataProviderIssue2922/FirstTest.phpnuIwassertTrue(true); } public function provide() { throw new \Exception(); } } PK!&:tests/_files/CoverageFunctionParenthesesWhitespaceTest.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ use PHPUnit\Framework\TestCase; class BankAccountTest extends TestCase { private $ba; protected function setUp() { $this->ba = new BankAccount; } public function testBalanceIsInitiallyZero() { $ba = new BankAccount; $balance = $ba->getBalance(); $this->assertEquals(0, $balance); } public function testBalanceCannotBecomeNegative() { try { $this->ba->withdrawMoney(1); } catch (BankAccountException $e) { $this->assertEquals(0, $this->ba->getBalance()); return; } $this->fail(); } public function testBalanceCannotBecomeNegative2() { try { $this->ba->depositMoney(-1); } catch (BankAccountException $e) { $this->assertEquals(0, $this->ba->getBalance()); return; } $this->fail(); } } PK!7)tests/_files/structureIgnoreTextNodes.xmlnuIw textnode textnode textnode Image 1: Dette er en test caption textnode PK!Klltests/_files/NoTestCases.phpnuIw PK!%_"ee2tests/_files/phpunit-example-extension/phpunit.xmlnuIw tests PK!Cʵ8tests/_files/phpunit-example-extension/tests/OneTest.phpnuIwassertExampleExtensionInitialized(); } } PK!s s [tests/_files/phpunit-example-extension/tools/phpunit.d/phpunit-example-extension-1.0.0.pharnuIw $phpunit-example-extension-1.0.0.pharLICENSE78X manifest.xml778X7Gy;+phpunit-example-extension/TestCaseTrait.php\78X\VOPHPUnit Example Extension Copyright (c) 2016, Sebastian Bergmann . All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Sebastian Bergmann nor the names of his contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PHPUnit\ExampleExtension; trait TestCaseTrait { /** * @var bool */ private $initialized = false; /** * @before */ protected function init() { $this->initialized = true; } public function assertExampleExtensionInitialized() { $this->assertTrue($this->initialized); } } f1!=f!1XۯcQBME@fs×\?ni9+GBMBPK!ߦ6""*tests/_files/configuration.colors.true.xmlnuIw PK!;HV.tests/_files/NotExistingCoveredElementTest.phpnuIw */ public function testThree() { } } PK!"((7tests/_files/NamespaceCoverageCoversClassPublicTest.phpnuIwpublicMethod(); } } PK!{U(tests/_files/DataProviderSkippedTest.phpnuIwassertTrue(true); } /** * @dataProvider providerMethod */ public function testAdd($a, $b, $c) { $this->assertEquals($c, $a + $b); } public function skippedTestProviderMethod() { $this->markTestSkipped('skipped'); return [ [0, 0, 0], [0, 1, 1], ]; } public static function providerMethod() { return [ [0, 0, 0], [0, 1, 1], ]; } } PK!`Z~~~!tests/_files/DataProviderTest.phpnuIwassertEquals($c, $a + $b); } public static function providerMethod() { return [ [0, 0, 0], [0, 1, 1], [1, 1, 3], [1, 0, 1] ]; } } PK!-b[DCCtests/_files/CustomPrinter.phpnuIwassertEquals([1], [2], 'message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $message = $e->getMessage() . $e->getComparisonFailure()->getDiff(); throw new PHPUnit_Framework_Exception("Child exception\n$message", 101, $e); } } public function testNestedExceptions() { $exceptionThree = new Exception('Three'); $exceptionTwo = new InvalidArgumentException('Two', 0, $exceptionThree); $exceptionOne = new Exception('One', 0, $exceptionTwo); throw $exceptionOne; } } PK!%tests/_files/CoverageFunctionTest.phpnuIwassertCount(0, $stack); array_push($stack, 'foo'); $this->assertEquals('foo', $stack[count($stack)-1]); $this->assertCount(1, $stack); return $stack; } /** * @depends testPush */ public function testPop(array $stack) { $this->assertEquals('foo', array_pop($stack)); $this->assertCount(0, $stack); } } PK!(7FFtests/_files/TestIterator.phpnuIwarray = $array; } public function rewind() { $this->position = 0; } public function valid() { return $this->position < count($this->array); } public function key() { return $this->position; } public function current() { return $this->array[$this->position]; } public function next() { $this->position++; } } PK!W.tests/_files/RequirementsClassDocBlockTest.phpnuIwmarkTestSkipped('Skipped test'); } } PK!U 0tests/_files/CoverageFunctionParenthesesTest.phpnuIw PK!tests/_files/TestIterator2.phpnuIwdata = $array; } public function current() { return current($this->data); } public function next() { next($this->data); } public function key() { return key($this->data); } public function valid() { return key($this->data) !== null; } public function rewind() { reset($this->data); } } PK!ʪcss)tests/_files/ThrowNoExceptionTestCase.phpnuIw Image 1: Dette er en test caption PK! ך+tests/_files/DataProviderIncompleteTest.phpnuIwassertTrue(true); } /** * @dataProvider providerMethod */ public function testAdd($a, $b, $c) { $this->assertEquals($c, $a + $b); } public function incompleteTestProviderMethod() { $this->markTestIncomplete('incomplete'); return [ [0, 0, 0], [0, 1, 1], ]; } public static function providerMethod() { return [ [0, 0, 0], [0, 1, 1], ]; } } PK!g3tests/_files/ExceptionInAssertPreConditionsTest.phpnuIwsetUp = true; } protected function assertPreConditions() { $this->assertPreConditions = true; throw new Exception; } public function testSomething() { $this->testSomething = true; } protected function assertPostConditions() { $this->assertPostConditions = true; } protected function tearDown() { $this->tearDown = true; } } PK!ss}GG.tests/_files/configuration_stop_on_warning.xmlnuIw PK!/2tests/_files/ChangeCurrentWorkingDirectoryTest.phpnuIwassertTrue(true); } } PK!^H~   tests/_files/ArrayAccessible.phpnuIwarray = $array; } public function offsetExists($offset) { return array_key_exists($offset, $this->array); } public function offsetGet($offset) { return $this->array[$offset]; } public function offsetSet($offset, $value) { if (null === $offset) { $this->array[] = $value; } else { $this->array[$offset] = $value; } } public function offsetUnset($offset) { unset($this->array[$offset]); } public function getIterator() { return new ArrayIterator($this->array); } } PK!ߴ4tests/_files/CoverageMethodOneLineAnnotationTest.phpnuIwpublicMethod(); } } PK!h$tests/_files/foo.xmlnuIw PK!&tests/_files/CoverageNotPublicTest.phpnuIw */ public function testSomething() { $o = new CoveredClass; $o->publicMethod(); } } PK!]{@tests/_files/bar.xmlnuIw PK!@7/"tests/_files/NotPublicTestCase.phpnuIw PK!F [[&tests/_files/NamespaceCoveredClass.phpnuIwprivateMethod(); } public function publicMethod() { $this->protectedMethod(); } } class CoveredClass extends CoveredParentClass { private function privateMethod() { } protected function protectedMethod() { parent::protectedMethod(); $this->privateMethod(); } public function publicMethod() { parent::publicMethod(); $this->protectedMethod(); } } PK!tȧ tests/_files/ExceptionTest.phpnuIw Image is not the same 1: Dette er en test caption PK!V2!!$tests/_files/DependencyTestSuite.phpnuIwaddTestSuite('DependencySuccessTest'); $suite->addTestSuite('DependencyFailureTest'); return $suite; } } PK!# (tests/_files/DataProviderTestDoxTest.phpnuIw [1], 'two' => [2] ]; } } PK!N//#tests/_files/BeforeAndAfterTest.phpnuIwlongOptions['my-option='] = 'myHandler'; $this->longOptions['my-other-option'] = null; } public function myHandler($value) { echo __METHOD__ . " $value\n"; } } PK!c+'tests/_files/DataProviderFilterTest.phpnuIwassertTrue($truth); } public static function truthProvider() { return [ [true], [true], [true], [true] ]; } /** * @dataProvider falseProvider */ public function testFalse($false) { $this->assertFalse($false); } public static function falseProvider() { return [ 'false test' => [false], 'false test 2' => [false], 'other false test' => [false], 'other false test2'=> [false] ]; } } PK!43zmmtests/_files/NothingTest.phpnuIw PK! :tests/_files/structureAttributesAreSameButValuesAreNot.xmlnuIw Image 1: Dette er en test caption PK!%tests/_files/ExceptionInSetUpTest.phpnuIwsetUp = true; throw new Exception; } protected function assertPreConditions() { $this->assertPreConditions = true; } public function testSomething() { $this->testSomething = true; } protected function assertPostConditions() { $this->assertPostConditions = true; } protected function tearDown() { $this->tearDown = true; } } PK!`עtests/_files/SampleClass.phpnuIwa = $a; $this->b = $b; $this->c = $c; } } PK! p.tests/_files/CoverageMethodParenthesesTest.phpnuIwpublicMethod(); } } PK!D7#tests/_files/CoverageMethodTest.phpnuIwpublicMethod(); } } PK!|٧^^"tests/_files/InheritedTestCase.phpnuIwassertEquals('application/x-test', ini_get('default_mimetype')); } } PK![">EE"tests/_files/EmptyTestCaseTest.phpnuIw PK!`tests/_files/WasRun.phpnuIwwasRun = true; } } PK![!tests/_files/TestDoxGroupTest.phpnuIwassertEquals([1], [2], 'message'); } public function testAssertIntegerEqualsInteger() { $this->assertEquals(1, 2, 'message'); } public function testAssertObjectEqualsObject() { $a = new StdClass; $a->foo = 'bar'; $b = new StdClass; $b->bar = 'foo'; $this->assertEquals($a, $b, 'message'); } public function testAssertNullEqualsString() { $this->assertEquals(null, 'bar', 'message'); } public function testAssertStringEqualsString() { $this->assertEquals('foo', 'bar', 'message'); } public function testAssertTextEqualsText() { $this->assertEquals("foo\nbar\n", "foo\nbaz\n", 'message'); } public function testAssertStringMatchesFormat() { $this->assertStringMatchesFormat('*%s*', '**', 'message'); } public function testAssertNumericEqualsNumeric() { $this->assertEquals(1, 2, 'message'); } public function testAssertTextSameText() { $this->assertSame('foo', 'bar', 'message'); } public function testAssertObjectSameObject() { $this->assertSame(new StdClass, new StdClass, 'message'); } public function testAssertObjectSameNull() { $this->assertSame(new StdClass, null, 'message'); } public function testAssertFloatSameFloat() { $this->assertSame(1.0, 1.5, 'message'); } // Note that due to the implementation of this assertion it counts as 2 asserts public function testAssertStringMatchesFormatFile() { $this->assertStringMatchesFormatFile(__DIR__ . '/expectedFileFormat.txt', '...BAR...'); } } PK!ss"tests/_files/NoArgTestCaseTest.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Tests for the BankAccount class. * */ class BankAccountTest extends PHPUnit_Framework_TestCase { protected $ba; protected function setUp() { $this->ba = new BankAccount; } /** * @covers BankAccount::getBalance * @group balanceIsInitiallyZero * @group specification */ public function testBalanceIsInitiallyZero() { /* @Given a fresh bank account */ $ba = new BankAccount; /* @When I ask it for its balance */ $balance = $ba->getBalance(); /* @Then I should get 0 */ $this->assertEquals(0, $balance); } /** * @covers BankAccount::withdrawMoney * @group balanceCannotBecomeNegative * @group specification */ public function testBalanceCannotBecomeNegative() { try { $this->ba->withdrawMoney(1); } catch (BankAccountException $e) { $this->assertEquals(0, $this->ba->getBalance()); return; } $this->fail(); } /** * @covers BankAccount::depositMoney * @group balanceCannotBecomeNegative * @group specification */ public function testBalanceCannotBecomeNegative2() { try { $this->ba->depositMoney(-1); } catch (BankAccountException $e) { $this->assertEquals(0, $this->ba->getBalance()); return; } $this->fail(); } /* * @covers BankAccount::getBalance * @covers BankAccount::depositMoney * @covers BankAccount::withdrawMoney * @group balanceCannotBecomeNegative */ /* public function testDepositingAndWithdrawingMoneyWorks() { $this->assertEquals(0, $this->ba->getBalance()); $this->ba->depositMoney(1); $this->assertEquals(1, $this->ba->getBalance()); $this->ba->withdrawMoney(1); $this->assertEquals(0, $this->ba->getBalance()); } */ } PK!;+..tests/_files/DataProviderIssue2859/phpunit.xmlnuIw ./tests/ ./tests/*/ PK!Rl~BBMtests/_files/DataProviderIssue2859/tests/another/TestWithDataProviderTest.phpnuIwassertTrue(true); } public function provide() { return [[true]]; } } PK!RRtests/_files/NonStatic.phpnuIwassertEquals($c, $a + $b); } public static function providerMethod() { return [ [0, 0, 0], [0, 1, 1], [1, 1, 3], [1, 0, 1] ]; } } PK!oo,tests/_files/IgnoreCodeCoverageClassTest.phpnuIwassertTrue($sut->returnTrue()); } public function testReturnFalse() { $sut = new IgnoreCodeCoverageClass(); $this->assertFalse($sut->returnFalse()); } } PK!)tests/_files/MultipleDataProviderTest.phpnuIwgetIterator(); } } PK!$c+tests/_files/TestIncomplete.phpnuIwmarkTestIncomplete('Incomplete test'); } } PK!CC tests/_files/NotVoidTestCase.phpnuIw */ public function testSomething() { $o = new Foo\CoveredClass; $o->publicMethod(); } } PK!,tests/_files/NamespaceCoverageMethodTest.phpnuIwpublicMethod(); } } PK! 'tests/_files/configuration_xinclude.xmlnuIw . /path/to/lib PK!'-I(%tests/_files/BankAccountTest.test.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Tests for the BankAccount class. * */ class BankAccountWithCustomExtensionTest extends PHPUnit_Framework_TestCase { protected $ba; protected function setUp() { $this->ba = new BankAccount; } /** * @covers BankAccount::getBalance * @group balanceIsInitiallyZero * @group specification */ public function testBalanceIsInitiallyZero() { $this->assertEquals(0, $this->ba->getBalance()); } /** * @covers BankAccount::withdrawMoney * @group balanceCannotBecomeNegative * @group specification */ public function testBalanceCannotBecomeNegative() { try { $this->ba->withdrawMoney(1); } catch (BankAccountException $e) { $this->assertEquals(0, $this->ba->getBalance()); return; } $this->fail(); } /** * @covers BankAccount::depositMoney * @group balanceCannotBecomeNegative * @group specification */ public function testBalanceCannotBecomeNegative2() { try { $this->ba->depositMoney(-1); } catch (BankAccountException $e) { $this->assertEquals(0, $this->ba->getBalance()); return; } $this->fail(); } /* * @covers BankAccount::getBalance * @covers BankAccount::depositMoney * @covers BankAccount::withdrawMoney * @group balanceCannotBecomeNegative */ /* public function testDepositingAndWithdrawingMoneyWorks() { $this->assertEquals(0, $this->ba->getBalance()); $this->ba->depositMoney(1); $this->assertEquals(1, $this->ba->getBalance()); $this->ba->withdrawMoney(1); $this->assertEquals(0, $this->ba->getBalance()); } */ } PK!ԛ##+tests/_files/configuration.colors.false.xmlnuIw PK!* \\tests/_files/ConcreteTest.phpnuIw 99 */ public function testPHPVersionOperatorGreaterThan() { } /** * @requires PHP >= 99 */ public function testPHPVersionOperatorGreaterThanEquals() { } /** * @requires PHP = 5.4 */ public function testPHPVersionOperatorEquals() { } /** * @requires PHP == 5.4 */ public function testPHPVersionOperatorDoubleEquals() { } /** * @requires PHP != 99 */ public function testPHPVersionOperatorBangEquals() { } /** * @requires PHP <> 99 */ public function testPHPVersionOperatorNotEquals() { } /** * @requires PHP >=99 */ public function testPHPVersionOperatorNoSpace() { } /** * @requires PHPUnit < 1.0 */ public function testPHPUnitVersionOperatorLessThan() { } /** * @requires PHPUnit <= 1.0 */ public function testPHPUnitVersionOperatorLessThanEquals() { } /** * @requires PHPUnit > 99 */ public function testPHPUnitVersionOperatorGreaterThan() { } /** * @requires PHPUnit >= 99 */ public function testPHPUnitVersionOperatorGreaterThanEquals() { } /** * @requires PHPUnit = 1.0 */ public function testPHPUnitVersionOperatorEquals() { } /** * @requires PHPUnit == 1.0 */ public function testPHPUnitVersionOperatorDoubleEquals() { } /** * @requires PHPUnit != 99 */ public function testPHPUnitVersionOperatorBangEquals() { } /** * @requires PHPUnit <> 99 */ public function testPHPUnitVersionOperatorNotEquals() { } /** * @requires PHPUnit >=99 */ public function testPHPUnitVersionOperatorNoSpace() { } /** * @requires extension testExtOne < 1.0 */ public function testExtensionVersionOperatorLessThan() { } /** * @requires extension testExtOne <= 1.0 */ public function testExtensionVersionOperatorLessThanEquals() { } /** * @requires extension testExtOne > 99 */ public function testExtensionVersionOperatorGreaterThan() { } /** * @requires extension testExtOne >= 99 */ public function testExtensionVersionOperatorGreaterThanEquals() { } /** * @requires extension testExtOne = 1.0 */ public function testExtensionVersionOperatorEquals() { } /** * @requires extension testExtOne == 1.0 */ public function testExtensionVersionOperatorDoubleEquals() { } /** * @requires extension testExtOne != 99 */ public function testExtensionVersionOperatorBangEquals() { } /** * @requires extension testExtOne <> 99 */ public function testExtensionVersionOperatorNotEquals() { } /** * @requires extension testExtOne >=99 */ public function testExtensionVersionOperatorNoSpace() { } } PK!\ WDD,tests/_files/structureWrongNumberOfNodes.xmlnuIw PK!o4??+tests/_files/DataProviderDependencyTest.phpnuIwmarkTestSkipped('This test should be skipped.'); $this->assertTrue(true); } /** * @see https://github.com/sebastianbergmann/phpunit/issues/1896 * @depends testReference * @dataProvider provider */ public function testDependency($param) { } public function provider() { $this->markTestSkipped('Any test with this data provider should be skipped.'); return []; } } PK!^[-tests/_files/NamespaceCoveragePrivateTest.phpnuIw */ public function testSomething() { $o = new Foo\CoveredClass; $o->publicMethod(); } } PK!|7Ђ-tests/_files/BeforeClassAndAfterClassTest.phpnuIwtestCase = $testCase; } public function count() { return 2; } public function run(PHPUnit_Framework_TestResult $result = null) { $result->startTest($this); $this->testCase->runBare(); $this->testCase->runBare(); $result->endTest($this, 0); } } PK!$sstests/_files/AbstractTest.phpnuIwpublicMethod(); } } PK!} tests/_files/ExceptionInTest.phpnuIwsetUp = true; } protected function assertPreConditions() { $this->assertPreConditions = true; } public function testSomething() { $this->testSomething = true; throw new Exception; } protected function assertPostConditions() { $this->assertPostConditions = true; } protected function tearDown() { $this->tearDown = true; } } PK! /tests/_files/NamespaceCoverageNotPublicTest.phpnuIw */ public function testSomething() { $o = new Foo\CoveredClass; $o->publicMethod(); } } PK!^lU#tests/_files/phpt-for-coverage.phptnuIw--TEST-- PHPT for testing coverage --FILE-- publicMethod(); --EXPECT-- PK!bfPtests/_files/FatalTest.phpnuIw */ public function testSomething() { $o = new Foo\CoveredClass; $o->publicMethod(); } } PK!YcRlltests/_files/Singleton.phpnuIw */ public function testSomething() { $o = new Foo\CoveredClass; $o->publicMethod(); } } PK!DYtests/_files/Author.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * An author. * */ class Author { // the order of properties is important for testing the cycle! public $books = []; private $name = ''; public function __construct($name) { $this->name = $name; } } PK!oPtests/_files/Calculator.phpnuIwmarkTestIncomplete('Test incomplete'); } } PK!  tests/_files/BankAccount.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class BankAccountException extends RuntimeException { } /** * A bank account. * */ class BankAccount { /** * The bank account's balance. * * @var float */ protected $balance = 0; /** * Returns the bank account's balance. * * @return float */ public function getBalance() { return $this->balance; } /** * Sets the bank account's balance. * * @param float $balance * * @throws BankAccountException */ protected function setBalance($balance) { if ($balance >= 0) { $this->balance = $balance; } else { throw new BankAccountException; } } /** * Deposits an amount of money to the bank account. * * @param float $balance * * @throws BankAccountException */ public function depositMoney($balance) { $this->setBalance($this->getBalance() + $balance); return $this->getBalance(); } /** * Withdraws an amount of money from the bank account. * * @param float $balance * * @throws BankAccountException */ public function withdrawMoney($balance) { $this->setBalance($this->getBalance() - $balance); return $this->getBalance(); } } PK!չZ&tests/_files/CoverageProtectedTest.phpnuIw */ public function testSomething() { $o = new CoveredClass; $o->publicMethod(); } } PK!l\(tests/_files/IgnoreCodeCoverageClass.phpnuIwexpectOutputString('foo'); print 'foo'; } public function testExpectOutputStringFooActualBar() { $this->expectOutputString('foo'); print 'bar'; } public function testExpectOutputRegexFooActualFoo() { $this->expectOutputRegex('/foo/'); print 'foo'; } public function testExpectOutputRegexFooActualBar() { $this->expectOutputRegex('/foo/'); print 'bar'; } } PK!Q΃"tests/_files/SampleArrayAccess.phpnuIwcontainer = []; } public function offsetSet($offset, $value) { if (is_null($offset)) { $this->container[] = $value; } else { $this->container[$offset] = $value; } } public function offsetExists($offset) { return isset($this->container[$offset]); } public function offsetUnset($offset) { unset($this->container[$offset]); } public function offsetGet($offset) { return isset($this->container[$offset]) ? $this->container[$offset] : null; } } PK!qq tests/_files/ConcreteTest.my.phpnuIwassertTrue(true); } public function testFailure() { $this->assertTrue(false); } public function testError() { throw new \Exception; } public function testIncomplete() { $this->markTestIncomplete(); } public function testSkipped() { $this->markTestSkipped(); } public function testRisky() { } public function testWarning() { throw new PHPUnit_Framework_Warning; } } PK! Bί!tests/_files/CoverageNoneTest.phpnuIwpublicMethod(); } } PK!oKKtests/_files/CoveredClass.phpnuIwprivateMethod(); } public function publicMethod() { $this->protectedMethod(); } } class CoveredClass extends CoveredParentClass { private function privateMethod() { } protected function protectedMethod() { parent::protectedMethod(); $this->privateMethod(); } public function publicMethod() { parent::publicMethod(); $this->protectedMethod(); } } PK!E&tests/_files/DataProviderDebugTest.phpnuIwassertTrue(true); } public static function provider() { $obj2 = new \stdClass(); $obj2->foo = 'bar'; $obj3 = (object) [1,2,"Test\r\n",4,5,6,7,8]; $obj = new \stdClass(); //@codingStandardsIgnoreStart $obj->null = null; //@codingStandardsIgnoreEnd $obj->boolean = true; $obj->integer = 1; $obj->double = 1.2; $obj->string = '1'; $obj->text = "this\nis\na\nvery\nvery\nvery\nvery\nvery\nvery\rlong\n\rtext"; $obj->object = $obj2; $obj->objectagain = $obj2; $obj->array = ['foo' => 'bar']; $obj->self = $obj; $storage = new \SplObjectStorage(); $storage->attach($obj2); $storage->foo = $obj2; return [ [null, true, 1, 1.0], [1.2, fopen('php://memory', 'r'), '1'], [[[1,2,3], [3,4,5]]], // \n\r and \r is converted to \n ["this\nis\na\nvery\nvery\nvery\nvery\nvery\nvery\rlong\n\rtext"], [new \stdClass(), $obj, [], $storage, $obj3], [chr(0) . chr(1) . chr(2) . chr(3) . chr(4) . chr(5), implode('', array_map('chr', range(0x0e, 0x1f)))], [chr(0x00) . chr(0x09)] ]; } } PK!ggtests/Fail/fail.phptnuIw--TEST-- // This test intentionally fails and it is checked by Travis. --FILE-- --EXPECTF-- unexpected PK!)I.e#tests/Runner/BaseTestRunnerTest.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class Runner_BaseTestRunnerTest extends PHPUnit_Framework_TestCase { public function testInvokeNonStaticSuite() { $runner = new MockRunner; $runner->getTest('NonStatic'); } } PK!3Jߏtests/bootstrap.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class Extensions_PhptTestCaseTest extends \PHPUnit_Framework_TestCase { const EXPECT_CONTENT = << --EXPECT-- Hello PHPUnit! EOF; const EXPECTF_CONTENT = << --EXPECTF-- Hello %s! EOF; const EXPECTREGEX_CONTENT = << --EXPECTREGEX-- Hello [HPU]{4}[nit]{3}! EOF; const FILE_SECTION = << EOF; protected $filename; protected $testCase; protected $phpUtil; protected function setUp() { $this->filename = sys_get_temp_dir() . '/phpunit.phpt'; touch($this->filename); $this->phpUtil = $this->getMockForAbstractClass('PHPUnit_Util_PHP', [], '', false); $this->testCase = new PHPUnit_Extensions_PhptTestCase($this->filename, $this->phpUtil); } protected function tearDown() { @unlink($this->filename); $this->filename = null; $this->testCase = null; } /** * Defines the content of the current PHPT test. * * @param string $content */ private function setPhpContent($content) { file_put_contents($this->filename, $content); } public function testShouldRunFileSectionAsTest() { $this->setPhpContent(self::EXPECT_CONTENT); $fileSection = '' . PHP_EOL; $this->phpUtil ->expects($this->once()) ->method('runJob') ->with($fileSection) ->will($this->returnValue(['stdout' => '', 'stderr' => ''])); $this->testCase->run(); } public function testShouldRunSkipifSectionWhenExists() { $skipifSection = '' . PHP_EOL; $phptContent = self::EXPECT_CONTENT . PHP_EOL; $phptContent .= '--SKIPIF--' . PHP_EOL; $phptContent .= $skipifSection; $this->setPhpContent($phptContent); $this->phpUtil ->expects($this->at(0)) ->method('runJob') ->with($skipifSection) ->will($this->returnValue(['stdout' => '', 'stderr' => ''])); $this->testCase->run(); } public function testShouldNotRunTestSectionIfSkipifSectionReturnsOutputWithSkipWord() { $skipifSection = '' . PHP_EOL; $phptContent = self::EXPECT_CONTENT . PHP_EOL; $phptContent .= '--SKIPIF--' . PHP_EOL; $phptContent .= $skipifSection; $this->setPhpContent($phptContent); $this->phpUtil ->expects($this->once()) ->method('runJob') ->with($skipifSection) ->will($this->returnValue(['stdout' => 'skip: Reason', 'stderr' => ''])); $this->testCase->run(); } public function testShouldRunCleanSectionWhenDefined() { $cleanSection = '' . PHP_EOL; $phptContent = self::EXPECT_CONTENT . PHP_EOL; $phptContent .= '--CLEAN--' . PHP_EOL; $phptContent .= $cleanSection; $this->setPhpContent($phptContent); $this->phpUtil ->expects($this->at(1)) ->method('runJob') ->with($cleanSection); $this->testCase->run(); } /** * @expectedException PHPUnit_Framework_Exception * @expectedExceptionMessage Invalid PHPT file */ public function testShouldThrowsAnExceptionWhenPhptFileIsEmpty() { $this->setPhpContent(''); $this->testCase->run(); } /** * @expectedException PHPUnit_Framework_Exception * @expectedExceptionMessage Invalid PHPT file */ public function testShouldThrowsAnExceptionWhenFileSectionIsMissing() { $this->setPhpContent( <<testCase->run(); } /** * @expectedException PHPUnit_Framework_Exception * @expectedExceptionMessage Invalid PHPT file */ public function testShouldThrowsAnExceptionWhenThereIsNoExpecOrExpectifOrExpecregexSectionInPhptFile() { $this->setPhpContent( << EOF ); $this->testCase->run(); } public function testShouldValidateExpectSession() { $this->setPhpContent(self::EXPECT_CONTENT); $this->phpUtil ->expects($this->once()) ->method('runJob') ->with(self::FILE_SECTION) ->will($this->returnValue(['stdout' => 'Hello PHPUnit!', 'stderr' => ''])); $result = $this->testCase->run(); $this->assertTrue($result->wasSuccessful()); } public function testShouldValidateExpectfSession() { $this->setPhpContent(self::EXPECTF_CONTENT); $this->phpUtil ->expects($this->once()) ->method('runJob') ->with(self::FILE_SECTION) ->will($this->returnValue(['stdout' => 'Hello PHPUnit!', 'stderr' => ''])); $result = $this->testCase->run(); $this->assertTrue($result->wasSuccessful()); } public function testShouldValidateExpectregexSession() { $this->setPhpContent(self::EXPECTREGEX_CONTENT); $this->phpUtil ->expects($this->once()) ->method('runJob') ->with(self::FILE_SECTION) ->will($this->returnValue(['stdout' => 'Hello PHPUnit!', 'stderr' => ''])); $result = $this->testCase->run(); $this->assertTrue($result->wasSuccessful()); } public function testParseIniSection() { $phptTestCase = new PhpTestCaseProxy(__FILE__); $settings = $phptTestCase->parseIniSection("foo=1\nbar = 2\rbaz = 3\r\nempty=\nignore"); $expected = [ 'foo=1', 'bar = 2', 'baz = 3', 'empty=', 'ignore', ]; $this->assertEquals($expected, $settings); } } class PhpTestCaseProxy extends PHPUnit_Extensions_PhptTestCase { public function parseIniSection($content) { return parent::parseIniSection($content); } } PK! +:%tests/Extensions/RepeatedTestTest.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class Extensions_RepeatedTestTest extends PHPUnit_Framework_TestCase { protected $suite; public function __construct() { $this->suite = new PHPUnit_Framework_TestSuite; $this->suite->addTest(new Success); $this->suite->addTest(new Success); } public function testRepeatedOnce() { $test = new PHPUnit_Extensions_RepeatedTest($this->suite, 1); $this->assertCount(2, $test); $result = $test->run(); $this->assertCount(2, $result); } public function testRepeatedMoreThanOnce() { $test = new PHPUnit_Extensions_RepeatedTest($this->suite, 3); $this->assertCount(6, $test); $result = $test->run(); $this->assertCount(6, $result); } public function testRepeatedZero() { $test = new PHPUnit_Extensions_RepeatedTest($this->suite, 0); $this->assertCount(0, $test); $result = $test->run(); $this->assertCount(0, $result); } public function testRepeatedNegative() { try { $test = new PHPUnit_Extensions_RepeatedTest($this->suite, -1); } catch (Exception $e) { return; } $this->fail('Should throw an Exception'); } } PK!`<<)tests/Framework/Constraint/IsJsonTest.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class Framework_Constraint_IsJsonTest extends PHPUnit_Framework_TestCase { /** * @dataProvider evaluateDataprovider */ public function testEvaluate($expected, $jsonOther) { $constraint = new PHPUnit_Framework_Constraint_IsJson(); $this->assertEquals($expected, $constraint->evaluate($jsonOther, '', true)); } public static function evaluateDataprovider() { return [ 'valid JSON' => [true, '{}'], 'empty string should be treated as invalid JSON' => [false, ''], ]; } } PK!(.tests/Framework/Constraint/ArraySubsetTest.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class PHPUnit_Framework_Constraint_ArraySubsetTest extends PHPUnit_Framework_TestCase { /** * @param bool $expected * @param array|Traversable $subset * @param array|Traversable $other * @param bool $strict * @dataProvider evaluateDataProvider */ public function testEvaluate($expected, $subset, $other, $strict) { $constraint = new PHPUnit_Framework_Constraint_ArraySubset($subset, $strict); $this->assertSame($expected, $constraint->evaluate($other, '', true)); } public static function evaluateDataProvider() { return [ 'loose array subset and array other' => [ 'expected' => true, 'subset' => ['bar' => 0], 'other' => ['foo' => '', 'bar' => '0'], 'strict' => false ], 'strict array subset and array other' => [ 'expected' => false, 'subset' => ['bar' => 0], 'other' => ['foo' => '', 'bar' => '0'], 'strict' => true ], 'loose array subset and ArrayObject other' => [ 'expected' => true, 'subset' => ['bar' => 0], 'other' => new ArrayObject(['foo' => '', 'bar' => '0']), 'strict' => false ], 'strict ArrayObject subset and array other' => [ 'expected' => true, 'subset' => new ArrayObject(['bar' => 0]), 'other' => ['foo' => '', 'bar' => 0], 'strict' => true ], ]; } public function testEvaluateWithArrayAccess() { $arrayAccess = new ArrayAccessible(['foo' => 'bar']); $constraint = new PHPUnit_Framework_Constraint_ArraySubset(['foo' => 'bar']); $this->assertTrue($constraint->evaluate($arrayAccess, '', true)); } } PK!%.OO3tests/Framework/Constraint/ExceptionMessageTest.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class ExceptionMessageTest extends PHPUnit_Framework_TestCase { /** * @expectedException \Exception * @expectedExceptionMessage A literal exception message */ public function testLiteralMessage() { throw new Exception('A literal exception message'); } /** * @expectedException \Exception * @expectedExceptionMessage A partial */ public function testPartialMessageBegin() { throw new Exception('A partial exception message'); } /** * @expectedException \Exception * @expectedExceptionMessage partial exception */ public function testPartialMessageMiddle() { throw new Exception('A partial exception message'); } /** * @expectedException \Exception * @expectedExceptionMessage exception message */ public function testPartialMessageEnd() { throw new Exception('A partial exception message'); } } PK!cGH H (tests/Framework/Constraint/CountTest.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class CountTest extends PHPUnit_Framework_TestCase { public function testCount() { $countConstraint = new PHPUnit_Framework_Constraint_Count(3); $this->assertTrue($countConstraint->evaluate([1, 2, 3], '', true)); $countConstraint = new PHPUnit_Framework_Constraint_Count(0); $this->assertTrue($countConstraint->evaluate([], '', true)); $countConstraint = new PHPUnit_Framework_Constraint_Count(2); $it = new TestIterator([1, 2]); $this->assertTrue($countConstraint->evaluate($it, '', true)); } public function testCountDoesNotChangeIteratorKey() { $countConstraint = new PHPUnit_Framework_Constraint_Count(2); // test with 1st implementation of Iterator $it = new TestIterator([1, 2]); $countConstraint->evaluate($it, '', true); $this->assertEquals(1, $it->current()); $it->next(); $countConstraint->evaluate($it, '', true); $this->assertEquals(2, $it->current()); $it->next(); $countConstraint->evaluate($it, '', true); $this->assertFalse($it->valid()); // test with 2nd implementation of Iterator $it = new TestIterator2([1, 2]); $countConstraint = new PHPUnit_Framework_Constraint_Count(2); $countConstraint->evaluate($it, '', true); $this->assertEquals(1, $it->current()); $it->next(); $countConstraint->evaluate($it, '', true); $this->assertEquals(2, $it->current()); $it->next(); $countConstraint->evaluate($it, '', true); $this->assertFalse($it->valid()); } public function testCountGeneratorsDoNotRewind() { $generatorMaker = new TestGeneratorMaker(); $countConstraint = new PHPUnit_Framework_Constraint_Count(3); $generator = $generatorMaker->create([1, 2, 3]); $this->assertEquals(1, $generator->current()); $countConstraint->evaluate($generator, '', true); $this->assertEquals(null, $generator->current()); $countConstraint = new PHPUnit_Framework_Constraint_Count(2); $generator = $generatorMaker->create([1, 2, 3]); $this->assertEquals(1, $generator->current()); $generator->next(); $this->assertEquals(2, $generator->current()); $countConstraint->evaluate($generator, '', true); $this->assertEquals(null, $generator->current()); $countConstraint = new PHPUnit_Framework_Constraint_Count(1); $generator = $generatorMaker->create([1, 2, 3]); $this->assertEquals(1, $generator->current()); $generator->next(); $this->assertEquals(2, $generator->current()); $generator->next(); $this->assertEquals(3, $generator->current()); $countConstraint->evaluate($generator, '', true); $this->assertEquals(null, $generator->current()); } } PK! Ctests/Framework/Constraint/JsonMatches/ErrorMessageProviderTest.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class Framework_Constraint_JsonMatches_ErrorMessageProviderTest extends PHPUnit_Framework_TestCase { /** * @dataProvider translateTypeToPrefixDataprovider */ public function testTranslateTypeToPrefix($expected, $type) { $this->assertEquals( $expected, PHPUnit_Framework_Constraint_JsonMatches_ErrorMessageProvider::translateTypeToPrefix($type) ); } /** * @dataProvider determineJsonErrorDataprovider */ public function testDetermineJsonError($expected, $error, $prefix) { $this->assertEquals( $expected, PHPUnit_Framework_Constraint_JsonMatches_ErrorMessageProvider::determineJsonError( $error, $prefix ) ); } public static function determineJsonErrorDataprovider() { return [ 'JSON_ERROR_NONE' => [ null, 'json_error_none', '' ], 'JSON_ERROR_DEPTH' => [ 'Maximum stack depth exceeded', JSON_ERROR_DEPTH, '' ], 'prefixed JSON_ERROR_DEPTH' => [ 'TUX: Maximum stack depth exceeded', JSON_ERROR_DEPTH, 'TUX: ' ], 'JSON_ERROR_STATE_MISMatch' => [ 'Underflow or the modes mismatch', JSON_ERROR_STATE_MISMATCH, '' ], 'JSON_ERROR_CTRL_CHAR' => [ 'Unexpected control character found', JSON_ERROR_CTRL_CHAR, '' ], 'JSON_ERROR_SYNTAX' => [ 'Syntax error, malformed JSON', JSON_ERROR_SYNTAX, '' ], 'JSON_ERROR_UTF8`' => [ 'Malformed UTF-8 characters, possibly incorrectly encoded', JSON_ERROR_UTF8, '' ], 'Invalid error indicator' => [ 'Unknown error', 55, '' ], ]; } public static function translateTypeToPrefixDataprovider() { return [ 'expected' => ['Expected value JSON decode error - ', 'expected'], 'actual' => ['Actual value JSON decode error - ', 'actual'], 'default' => ['', ''], ]; } } PK!:ϝ9tests/Framework/Constraint/ExceptionMessageRegExpTest.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class ExceptionMessageRegExpTest extends PHPUnit_Framework_TestCase { /** * @expectedException \Exception * @expectedExceptionMessageRegExp /^A polymorphic \w+ message/ */ public function testRegexMessage() { throw new Exception('A polymorphic exception message'); } /** * @expectedException \Exception * @expectedExceptionMessageRegExp /^a poly[a-z]+ [a-zA-Z0-9_]+ me(s){2}age$/i */ public function testRegexMessageExtreme() { throw new Exception('A polymorphic exception message'); } /** * @runInSeparateProcess * @requires extension xdebug * @expectedException \Exception * @expectedExceptionMessageRegExp #Screaming preg_match# */ public function testMessageXdebugScreamCompatibility() { ini_set('xdebug.scream', '1'); throw new Exception('Screaming preg_match'); } /** * @expectedException \Exception variadic * @expectedExceptionMessageRegExp /^A variadic \w+ message/ */ public function testSimultaneousLiteralAndRegExpExceptionMessage() { throw new Exception('A variadic exception message'); } } PK!.tests/Framework/Constraint/JsonMatchesTest.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class Framework_Constraint_JsonMatchesTest extends PHPUnit_Framework_TestCase { /** * @dataProvider evaluateDataprovider */ public function testEvaluate($expected, $jsonOther, $jsonValue) { $constraint = new PHPUnit_Framework_Constraint_JsonMatches($jsonValue); $this->assertEquals($expected, $constraint->evaluate($jsonOther, '', true)); } public function testToString() { $jsonValue = json_encode(['Mascott' => 'Tux']); $constraint = new PHPUnit_Framework_Constraint_JsonMatches($jsonValue); $this->assertEquals('matches JSON string "' . $jsonValue . '"', $constraint->toString()); } public static function evaluateDataprovider() { return [ 'valid JSON' => [true, json_encode(['Mascott' => 'Tux']), json_encode(['Mascott' => 'Tux'])], 'error syntax' => [false, '{"Mascott"::}', json_encode(['Mascott' => 'Tux'])], 'error UTF-8' => [false, json_encode('\xB1\x31'), json_encode(['Mascott' => 'Tux'])], 'invalid JSON in class instantiation' => [false, json_encode(['Mascott' => 'Tux']), '{"Mascott"::}'], ]; } } PK!VSS tests/Framework/TestCaseTest.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'NoArgTestCaseTest.php'; require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'Singleton.php'; require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'Mockable.php'; $GLOBALS['a'] = 'a'; $_ENV['b'] = 'b'; $_POST['c'] = 'c'; $_GET['d'] = 'd'; $_COOKIE['e'] = 'e'; $_SERVER['f'] = 'f'; $_FILES['g'] = 'g'; $_REQUEST['h'] = 'h'; $GLOBALS['i'] = 'i'; class Framework_TestCaseTest extends PHPUnit_Framework_TestCase { protected $backupGlobalsBlacklist = ['i', 'singleton']; /** * Used be testStaticAttributesBackupPre */ protected static $testStatic = 0; public function testCaseToString() { $this->assertEquals( 'Framework_TestCaseTest::testCaseToString', $this->toString() ); } public function testSuccess() { $test = new Success; $result = $test->run(); $this->assertEquals(PHPUnit_Runner_BaseTestRunner::STATUS_PASSED, $test->getStatus()); $this->assertEquals(0, $result->errorCount()); $this->assertEquals(0, $result->failureCount()); $this->assertEquals(0, $result->skippedCount()); $this->assertCount(1, $result); } public function testFailure() { $test = new Failure; $result = $test->run(); $this->assertEquals(PHPUnit_Runner_BaseTestRunner::STATUS_FAILURE, $test->getStatus()); $this->assertEquals(0, $result->errorCount()); $this->assertEquals(1, $result->failureCount()); $this->assertEquals(0, $result->skippedCount()); $this->assertCount(1, $result); } public function testError() { $test = new TestError; $result = $test->run(); $this->assertEquals(PHPUnit_Runner_BaseTestRunner::STATUS_ERROR, $test->getStatus()); $this->assertEquals(1, $result->errorCount()); $this->assertEquals(0, $result->failureCount()); $this->assertEquals(0, $result->skippedCount()); $this->assertCount(1, $result); } public function testSkipped() { $test = new TestSkipped(); $result = $test->run(); $this->assertEquals(PHPUnit_Runner_BaseTestRunner::STATUS_SKIPPED, $test->getStatus()); $this->assertEquals('Skipped test', $test->getStatusMessage()); $this->assertEquals(0, $result->errorCount()); $this->assertEquals(0, $result->failureCount()); $this->assertEquals(1, $result->skippedCount()); $this->assertCount(1, $result); } public function testIncomplete() { $test = new TestIncomplete(); $result = $test->run(); $this->assertEquals(PHPUnit_Runner_BaseTestRunner::STATUS_INCOMPLETE, $test->getStatus()); $this->assertEquals('Incomplete test', $test->getStatusMessage()); $this->assertEquals(0, $result->errorCount()); $this->assertEquals(0, $result->failureCount()); $this->assertEquals(0, $result->skippedCount()); $this->assertCount(1, $result); } public function testExceptionInSetUp() { $test = new ExceptionInSetUpTest('testSomething'); $result = $test->run(); $this->assertTrue($test->setUp); $this->assertFalse($test->assertPreConditions); $this->assertFalse($test->testSomething); $this->assertFalse($test->assertPostConditions); $this->assertTrue($test->tearDown); } public function testExceptionInAssertPreConditions() { $test = new ExceptionInAssertPreConditionsTest('testSomething'); $result = $test->run(); $this->assertTrue($test->setUp); $this->assertTrue($test->assertPreConditions); $this->assertFalse($test->testSomething); $this->assertFalse($test->assertPostConditions); $this->assertTrue($test->tearDown); } public function testExceptionInTest() { $test = new ExceptionInTest('testSomething'); $result = $test->run(); $this->assertTrue($test->setUp); $this->assertTrue($test->assertPreConditions); $this->assertTrue($test->testSomething); $this->assertFalse($test->assertPostConditions); $this->assertTrue($test->tearDown); } public function testExceptionInAssertPostConditions() { $test = new ExceptionInAssertPostConditionsTest('testSomething'); $result = $test->run(); $this->assertTrue($test->setUp); $this->assertTrue($test->assertPreConditions); $this->assertTrue($test->testSomething); $this->assertTrue($test->assertPostConditions); $this->assertTrue($test->tearDown); } public function testExceptionInTearDown() { $test = new ExceptionInTearDownTest('testSomething'); $result = $test->run(); $this->assertTrue($test->setUp); $this->assertTrue($test->assertPreConditions); $this->assertTrue($test->testSomething); $this->assertTrue($test->assertPostConditions); $this->assertTrue($test->tearDown); $this->assertEquals(PHPUnit_Runner_BaseTestRunner::STATUS_ERROR, $test->getStatus()); } public function testNoArgTestCasePasses() { $result = new PHPUnit_Framework_TestResult; $t = new PHPUnit_Framework_TestSuite('NoArgTestCaseTest'); $t->run($result); $this->assertCount(1, $result); $this->assertEquals(0, $result->failureCount()); $this->assertEquals(0, $result->errorCount()); } public function testWasRun() { $test = new WasRun; $test->run(); $this->assertTrue($test->wasRun); } public function testException() { $test = new ThrowExceptionTestCase('test'); $test->expectException(RuntimeException::class); $result = $test->run(); $this->assertCount(1, $result); $this->assertTrue($result->wasSuccessful()); } public function testExceptionWithEmptyMessage() { $test = new ThrowExceptionTestCase('test'); $test->expectException(RuntimeException::class, ''); $result = $test->run(); $this->assertCount(1, $result); $this->assertTrue($result->wasSuccessful()); } public function testExceptionWithNullMessage() { $test = new ThrowExceptionTestCase('test'); $test->expectException(RuntimeException::class, null); $result = $test->run(); $this->assertCount(1, $result); $this->assertTrue($result->wasSuccessful()); } public function testExceptionWithMessage() { $test = new ThrowExceptionTestCase('test'); $test->expectException(RuntimeException::class); $test->expectExceptionMessage('A runtime error occurred'); $result = $test->run(); $this->assertCount(1, $result); $this->assertTrue($result->wasSuccessful()); } public function testExceptionWithWrongMessage() { $test = new ThrowExceptionTestCase('test'); $test->expectException(RuntimeException::class); $test->expectExceptionMessage('A logic error occurred'); $result = $test->run(); $this->assertEquals(1, $result->failureCount()); $this->assertCount(1, $result); $this->assertEquals( "Failed asserting that exception message 'A runtime error occurred' contains 'A logic error occurred'.", $test->getStatusMessage() ); } public function testExceptionWithRegexpMessage() { $test = new ThrowExceptionTestCase('test'); $test->expectException(RuntimeException::class); $test->expectExceptionMessageRegExp('/runtime .*? occurred/'); $result = $test->run(); $this->assertCount(1, $result); $this->assertTrue($result->wasSuccessful()); } public function testExceptionWithWrongRegexpMessage() { $test = new ThrowExceptionTestCase('test'); $test->expectException(RuntimeException::class); $test->expectExceptionMessageRegExp('/logic .*? occurred/'); $result = $test->run(); $this->assertEquals(1, $result->failureCount()); $this->assertCount(1, $result); $this->assertEquals( "Failed asserting that exception message 'A runtime error occurred' matches '/logic .*? occurred/'.", $test->getStatusMessage() ); } public function testExceptionWithInvalidRegexpMessage() { $test = new ThrowExceptionTestCase('test'); $test->expectException(RuntimeException::class); $test->expectExceptionMessageRegExp('#runtime .*? occurred/'); $test->run(); $this->assertEquals( "Invalid expected exception message regex given: '#runtime .*? occurred/'", $test->getStatusMessage() ); } public function testNoException() { $test = new ThrowNoExceptionTestCase('test'); $test->expectException(RuntimeException::class); $result = $test->run(); $this->assertEquals(1, $result->failureCount()); $this->assertCount(1, $result); } public function testWrongException() { $test = new ThrowExceptionTestCase('test'); $test->expectException(InvalidArgumentException::class); $result = $test->run(); $this->assertEquals(1, $result->failureCount()); $this->assertCount(1, $result); } /** * @backupGlobals enabled */ public function testGlobalsBackupPre() { global $a; global $i; $this->assertEquals('a', $a); $this->assertEquals('a', $GLOBALS['a']); $this->assertEquals('b', $_ENV['b']); $this->assertEquals('c', $_POST['c']); $this->assertEquals('d', $_GET['d']); $this->assertEquals('e', $_COOKIE['e']); $this->assertEquals('f', $_SERVER['f']); $this->assertEquals('g', $_FILES['g']); $this->assertEquals('h', $_REQUEST['h']); $this->assertEquals('i', $i); $this->assertEquals('i', $GLOBALS['i']); $GLOBALS['a'] = 'aa'; $GLOBALS['foo'] = 'bar'; $_ENV['b'] = 'bb'; $_POST['c'] = 'cc'; $_GET['d'] = 'dd'; $_COOKIE['e'] = 'ee'; $_SERVER['f'] = 'ff'; $_FILES['g'] = 'gg'; $_REQUEST['h'] = 'hh'; $GLOBALS['i'] = 'ii'; $this->assertEquals('aa', $a); $this->assertEquals('aa', $GLOBALS['a']); $this->assertEquals('bar', $GLOBALS['foo']); $this->assertEquals('bb', $_ENV['b']); $this->assertEquals('cc', $_POST['c']); $this->assertEquals('dd', $_GET['d']); $this->assertEquals('ee', $_COOKIE['e']); $this->assertEquals('ff', $_SERVER['f']); $this->assertEquals('gg', $_FILES['g']); $this->assertEquals('hh', $_REQUEST['h']); $this->assertEquals('ii', $i); $this->assertEquals('ii', $GLOBALS['i']); } public function testGlobalsBackupPost() { global $a; global $i; $this->assertEquals('a', $a); $this->assertEquals('a', $GLOBALS['a']); $this->assertEquals('b', $_ENV['b']); $this->assertEquals('c', $_POST['c']); $this->assertEquals('d', $_GET['d']); $this->assertEquals('e', $_COOKIE['e']); $this->assertEquals('f', $_SERVER['f']); $this->assertEquals('g', $_FILES['g']); $this->assertEquals('h', $_REQUEST['h']); $this->assertEquals('ii', $i); $this->assertEquals('ii', $GLOBALS['i']); $this->assertArrayNotHasKey('foo', $GLOBALS); } /** * @backupGlobals enabled * @backupStaticAttributes enabled */ public function testStaticAttributesBackupPre() { $GLOBALS['singleton'] = Singleton::getInstance(); self::$testStatic = 123; } /** * @depends testStaticAttributesBackupPre */ public function testStaticAttributesBackupPost() { $this->assertNotSame($GLOBALS['singleton'], Singleton::getInstance()); $this->assertSame(0, self::$testStatic); } public function testIsInIsolationReturnsFalse() { $test = new IsolationTest('testIsInIsolationReturnsFalse'); $result = $test->run(); $this->assertCount(1, $result); $this->assertTrue($result->wasSuccessful()); } public function testIsInIsolationReturnsTrue() { $test = new IsolationTest('testIsInIsolationReturnsTrue'); $test->setRunTestInSeparateProcess(true); $result = $test->run(); $this->assertCount(1, $result); $this->assertTrue($result->wasSuccessful()); } public function testExpectOutputStringFooActualFoo() { $test = new OutputTestCase('testExpectOutputStringFooActualFoo'); $result = $test->run(); $this->assertCount(1, $result); $this->assertTrue($result->wasSuccessful()); } public function testExpectOutputStringFooActualBar() { $test = new OutputTestCase('testExpectOutputStringFooActualBar'); $result = $test->run(); $this->assertCount(1, $result); $this->assertFalse($result->wasSuccessful()); } public function testExpectOutputRegexFooActualFoo() { $test = new OutputTestCase('testExpectOutputRegexFooActualFoo'); $result = $test->run(); $this->assertCount(1, $result); $this->assertTrue($result->wasSuccessful()); } public function testExpectOutputRegexFooActualBar() { $test = new OutputTestCase('testExpectOutputRegexFooActualBar'); $result = $test->run(); $this->assertCount(1, $result); $this->assertFalse($result->wasSuccessful()); } public function testSkipsIfRequiresHigherVersionOfPHPUnit() { $test = new RequirementsTest('testAlwaysSkip'); $result = $test->run(); $this->assertEquals(1, $result->skippedCount()); $this->assertEquals( 'PHPUnit >= 1111111 is required.', $test->getStatusMessage() ); } public function testSkipsIfRequiresHigherVersionOfPHP() { $test = new RequirementsTest('testAlwaysSkip2'); $result = $test->run(); $this->assertEquals(1, $result->skippedCount()); $this->assertEquals( 'PHP >= 9999999 is required.', $test->getStatusMessage() ); } public function testSkipsIfRequiresNonExistingOs() { $test = new RequirementsTest('testAlwaysSkip3'); $result = $test->run(); $this->assertEquals(1, $result->skippedCount()); $this->assertEquals( 'Operating system matching /DOESNOTEXIST/i is required.', $test->getStatusMessage() ); } public function testSkipsIfRequiresNonExistingFunction() { $test = new RequirementsTest('testNine'); $result = $test->run(); $this->assertEquals(1, $result->skippedCount()); $this->assertEquals( 'Function testFunc is required.', $test->getStatusMessage() ); } public function testSkipsIfRequiresNonExistingExtension() { $test = new RequirementsTest('testTen'); $result = $test->run(); $this->assertEquals( 'Extension testExt is required.', $test->getStatusMessage() ); } public function testSkipsIfRequiresExtensionWithAMinimumVersion() { $test = new RequirementsTest('testSpecificExtensionVersion'); $result = $test->run(); $this->assertEquals( 'Extension testExt >= 1.8.0 is required.', $test->getStatusMessage() ); } public function testSkipsProvidesMessagesForAllSkippingReasons() { $test = new RequirementsTest('testAllPossibleRequirements'); $result = $test->run(); $this->assertEquals( 'PHP >= 99-dev is required.' . PHP_EOL . 'PHPUnit >= 9-dev is required.' . PHP_EOL . 'Operating system matching /DOESNOTEXIST/i is required.' . PHP_EOL . 'Function testFuncOne is required.' . PHP_EOL . 'Function testFuncTwo is required.' . PHP_EOL . 'Extension testExtOne is required.' . PHP_EOL . 'Extension testExtTwo is required.' . PHP_EOL . 'Extension testExtThree >= 2.0 is required.', $test->getStatusMessage() ); } public function testRequiringAnExistingMethodDoesNotSkip() { $test = new RequirementsTest('testExistingMethod'); $result = $test->run(); $this->assertEquals(0, $result->skippedCount()); } public function testRequiringAnExistingFunctionDoesNotSkip() { $test = new RequirementsTest('testExistingFunction'); $result = $test->run(); $this->assertEquals(0, $result->skippedCount()); } public function testRequiringAnExistingExtensionDoesNotSkip() { $test = new RequirementsTest('testExistingExtension'); $result = $test->run(); $this->assertEquals(0, $result->skippedCount()); } public function testRequiringAnExistingOsDoesNotSkip() { $test = new RequirementsTest('testExistingOs'); $result = $test->run(); $this->assertEquals(0, $result->skippedCount()); } public function testCurrentWorkingDirectoryIsRestored() { $expectedCwd = getcwd(); $test = new ChangeCurrentWorkingDirectoryTest('testSomethingThatChangesTheCwd'); $test->run(); $this->assertSame($expectedCwd, getcwd()); } /** * @requires PHP 7 * @expectedException TypeError */ public function testTypeErrorCanBeExpected() { $o = new ClassWithScalarTypeDeclarations; $o->foo(null, null); } public function testCreateMockFromClassName() { $mock = $this->createMock(Mockable::class); $this->assertInstanceOf(Mockable::class, $mock); $this->assertInstanceOf(PHPUnit_Framework_MockObject_MockObject::class, $mock); } public function testCreateMockMocksAllMethods() { /** @var Mockable $mock */ $mock = $this->createMock(Mockable::class); $this->assertNull($mock->foo()); $this->assertNull($mock->bar()); } public function testCreatePartialMockDoesNotMockAllMethods() { /** @var Mockable $mock */ $mock = $this->createPartialMock(Mockable::class, ['foo']); $this->assertNull($mock->foo()); $this->assertTrue($mock->bar()); } public function testCreatePartialMockCanMockNoMethods() { /** @var Mockable $mock */ $mock = $this->createPartialMock(Mockable::class, []); $this->assertTrue($mock->foo()); $this->assertTrue($mock->bar()); } public function testCreateMockSkipsConstructor() { /** @var Mockable $mock */ $mock = $this->createMock(Mockable::class); $this->assertFalse($mock->constructorCalled); } public function testCreateMockDisablesOriginalClone() { /** @var Mockable $mock */ $mock = $this->createMock(Mockable::class); $cloned = clone $mock; $this->assertFalse($cloned->cloned); } public function testConfiguredMockCanBeCreated() { /** @var Mockable $mock */ $mock = $this->createConfiguredMock( Mockable::class, [ 'foo' => false ] ); $this->assertFalse($mock->foo()); $this->assertNull($mock->bar()); } public function testProvidingOfAutoreferencedArray() { $test = new \TestAutoreferenced('testJsonEncodeException', $this->getAutoreferencedArray()); $test->runBare(); $this->assertInternalType('array', $test->myTestData); $this->assertArrayHasKey('data', $test->myTestData); $this->assertEquals($test->myTestData['data'][0], $test->myTestData['data']); } /** * @return array */ private function getAutoreferencedArray() { $recursionData = []; $recursionData[] = &$recursionData; return [ 'RECURSION' => [ 'data' => $recursionData ] ]; } public function testProvidingArrayThatMixesObjectsAndScalars() { $data = [ [123], ['foo'], [$this->createMock(Mockable::class)], ]; $test = new \TestAutoreferenced('testJsonEncodeException', [$data]); $test->runBare(); $this->assertInternalType('array', $test->myTestData); $this->assertSame($data, $test->myTestData); } } PK!w $tests/Framework/TestListenerTest.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class Framework_TestListenerTest extends PHPUnit_Framework_TestCase implements PHPUnit_Framework_TestListener { protected $endCount; protected $errorCount; protected $failureCount; protected $warningCount; protected $notImplementedCount; protected $riskyCount; protected $skippedCount; protected $result; protected $startCount; public function addError(PHPUnit_Framework_Test $test, Exception $e, $time) { $this->errorCount++; } public function addWarning(PHPUnit_Framework_Test $test, PHPUnit_Framework_Warning $e, $time) { $this->warningCount++; } public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time) { $this->failureCount++; } public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time) { $this->notImplementedCount++; } public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time) { $this->riskyCount++; } public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time) { $this->skippedCount++; } public function startTestSuite(PHPUnit_Framework_TestSuite $suite) { } public function endTestSuite(PHPUnit_Framework_TestSuite $suite) { } public function startTest(PHPUnit_Framework_Test $test) { $this->startCount++; } public function endTest(PHPUnit_Framework_Test $test, $time) { $this->endCount++; } protected function setUp() { $this->result = new PHPUnit_Framework_TestResult; $this->result->addListener($this); $this->endCount = 0; $this->failureCount = 0; $this->notImplementedCount = 0; $this->riskyCount = 0; $this->skippedCount = 0; $this->startCount = 0; } public function testError() { $test = new TestError; $test->run($this->result); $this->assertEquals(1, $this->errorCount); $this->assertEquals(1, $this->endCount); } public function testFailure() { $test = new Failure; $test->run($this->result); $this->assertEquals(1, $this->failureCount); $this->assertEquals(1, $this->endCount); } public function testStartStop() { $test = new Success; $test->run($this->result); $this->assertEquals(1, $this->startCount); $this->assertEquals(1, $this->endCount); } } PK!ewMM"tests/Framework/ConstraintTest.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class Framework_ConstraintTest extends PHPUnit_Framework_TestCase { public function testConstraintArrayHasKey() { $constraint = PHPUnit_Framework_Assert::arrayHasKey(0); $this->assertFalse($constraint->evaluate([], '', true)); $this->assertEquals('has the key 0', $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate([]); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals(<<fail(); } public function testConstraintArrayHasKey2() { $constraint = PHPUnit_Framework_Assert::arrayHasKey(0); try { $constraint->evaluate([], 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintArrayNotHasKey() { $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::arrayHasKey(0) ); $this->assertFalse($constraint->evaluate([0 => 1], '', true)); $this->assertEquals('does not have the key 0', $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate([0 => 1]); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintArrayNotHasKey2() { $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::arrayHasKey(0) ); try { $constraint->evaluate([0], 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintIsReadable() { $constraint = PHPUnit_Framework_Assert::isReadable(); $this->assertFalse($constraint->evaluate('foo', '', true)); $this->assertEquals('is readable', $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate('foo'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintIsWritable() { $constraint = PHPUnit_Framework_Assert::isWritable(); $this->assertFalse($constraint->evaluate('foo', '', true)); $this->assertEquals('is writable', $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate('foo'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintDirectoryExists() { $constraint = PHPUnit_Framework_Assert::directoryExists(); $this->assertFalse($constraint->evaluate('foo', '', true)); $this->assertEquals('directory exists', $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate('foo'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintFileExists() { $constraint = PHPUnit_Framework_Assert::fileExists(); $this->assertFalse($constraint->evaluate('foo', '', true)); $this->assertEquals('file exists', $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate('foo'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintFileExists2() { $constraint = PHPUnit_Framework_Assert::fileExists(); try { $constraint->evaluate('foo', 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals(<<fail(); } public function testConstraintFileNotExists() { $file = dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'ClassWithNonPublicAttributes.php'; $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::fileExists() ); $this->assertFalse($constraint->evaluate($file, '', true)); $this->assertEquals('file does not exist', $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate($file); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintFileNotExists2() { $file = dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'ClassWithNonPublicAttributes.php'; $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::fileExists() ); try { $constraint->evaluate($file, 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals(<<fail(); } public function testConstraintGreaterThan() { $constraint = PHPUnit_Framework_Assert::greaterThan(1); $this->assertFalse($constraint->evaluate(0, '', true)); $this->assertTrue($constraint->evaluate(2, '', true)); $this->assertEquals('is greater than 1', $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate(0); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintGreaterThan2() { $constraint = PHPUnit_Framework_Assert::greaterThan(1); try { $constraint->evaluate(0, 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintNotGreaterThan() { $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::greaterThan(1) ); $this->assertTrue($constraint->evaluate(1, '', true)); $this->assertEquals('is not greater than 1', $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate(2); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintNotGreaterThan2() { $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::greaterThan(1) ); try { $constraint->evaluate(2, 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintGreaterThanOrEqual() { $constraint = PHPUnit_Framework_Assert::greaterThanOrEqual(1); $this->assertTrue($constraint->evaluate(1, '', true)); $this->assertFalse($constraint->evaluate(0, '', true)); $this->assertEquals('is equal to 1 or is greater than 1', $constraint->toString()); $this->assertCount(2, $constraint); try { $constraint->evaluate(0); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintGreaterThanOrEqual2() { $constraint = PHPUnit_Framework_Assert::greaterThanOrEqual(1); try { $constraint->evaluate(0, 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintNotGreaterThanOrEqual() { $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::greaterThanOrEqual(1) ); $this->assertFalse($constraint->evaluate(1, '', true)); $this->assertEquals('not( is equal to 1 or is greater than 1 )', $constraint->toString()); $this->assertCount(2, $constraint); try { $constraint->evaluate(1); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintNotGreaterThanOrEqual2() { $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::greaterThanOrEqual(1) ); try { $constraint->evaluate(1, 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintIsAnything() { $constraint = PHPUnit_Framework_Assert::anything(); $this->assertTrue($constraint->evaluate(null, '', true)); $this->assertNull($constraint->evaluate(null)); $this->assertEquals('is anything', $constraint->toString()); $this->assertCount(0, $constraint); } public function testConstraintNotIsAnything() { $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::anything() ); $this->assertFalse($constraint->evaluate(null, '', true)); $this->assertEquals('is not anything', $constraint->toString()); $this->assertCount(0, $constraint); try { $constraint->evaluate(null); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintIsEqual() { $constraint = PHPUnit_Framework_Assert::equalTo(1); $this->assertTrue($constraint->evaluate(1, '', true)); $this->assertFalse($constraint->evaluate(0, '', true)); $this->assertEquals('is equal to 1', $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate(0); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function isEqualProvider() { $a = new stdClass; $a->foo = 'bar'; $b = new stdClass; $ahash = spl_object_hash($a); $bhash = spl_object_hash($b); $c = new stdClass; $c->foo = 'bar'; $c->int = 1; $c->array = [0, [1], [2], 3]; $c->related = new stdClass; $c->related->foo = "a\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk"; $c->self = $c; $c->c = $c; $d = new stdClass; $d->foo = 'bar'; $d->int = 2; $d->array = [0, [4], [2], 3]; $d->related = new stdClass; $d->related->foo = "a\np\nc\nd\ne\nf\ng\nh\ni\nw\nk"; $d->self = $d; $d->c = $c; $storage1 = new SplObjectStorage; $storage1->attach($a); $storage1->attach($b); $storage2 = new SplObjectStorage; $storage2->attach($b); $storage1hash = spl_object_hash($storage1); $storage2hash = spl_object_hash($storage2); $dom1 = new DOMDocument; $dom1->preserveWhiteSpace = false; $dom1->loadXML(''); $dom2 = new DOMDocument; $dom2->preserveWhiteSpace = false; $dom2->loadXML(''); $data = [ [1, 0, << 0 + 0 => 1 ) EOF ], [[true], ['true'], << true + 0 => 'true' ) EOF ], [[0, [1], [2], 3], [0, [4], [2], 3], << 0 1 => Array ( - 0 => 1 + 0 => 4 ) 2 => Array (...) 3 => 3 ) EOF ], [$a, [0], << 'bar' ) EOF ], [$c, $d, << 'bar' - 'int' => 1 + 'int' => 2 'array' => Array ( 0 => 0 1 => Array ( - 0 => 1 + 0 => 4 @@ @@ 'foo' => 'a - b + p @@ @@ i - j + w k' ) 'self' => stdClass Object (...) 'c' => stdClass Object (...) ) EOF ], [$dom1, $dom2, << - + + + EOF ], [ new DateTime('2013-03-29 04:13:35', new DateTimeZone('America/New_York')), new DateTime('2013-03-29 04:13:35', new DateTimeZone('America/Chicago')), << Array &0 ( - 'obj' => stdClass Object &$ahash ( - 'foo' => 'bar' - ) - 'inf' => null - ) - '$bhash' => Array &1 ( +SplObjectStorage Object &$storage2hash ( + '$bhash' => Array &0 ( 'obj' => stdClass Object &$bhash () 'inf' => null ) ) EOF ]; } else { $data[] = [$storage1, $storage2, << Array &0 ( - 'obj' => stdClass Object &$ahash ( - 'foo' => 'bar' - ) - 'inf' => null - ) - '$bhash' => Array &1 ( +SplObjectStorage Object &$storage2hash ( + '$bhash' => Array &0 ( 'obj' => stdClass Object &$bhash () 'inf' => null ) ) EOF ]; } return $data; } /** * @dataProvider isEqualProvider */ public function testConstraintIsEqual2($expected, $actual, $message) { $constraint = PHPUnit_Framework_Assert::equalTo($expected); try { $constraint->evaluate($actual, 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( "custom message\n$message", $this->trimnl(PHPUnit_Framework_TestFailure::exceptionToString($e)) ); return; } $this->fail(); } public function testConstraintIsNotEqual() { $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::equalTo(1) ); $this->assertTrue($constraint->evaluate(0, '', true)); $this->assertFalse($constraint->evaluate(1, '', true)); $this->assertEquals('is not equal to 1', $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate(1); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintIsNotEqual2() { $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::equalTo(1) ); try { $constraint->evaluate(1, 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintIsIdentical() { $a = new stdClass; $b = new stdClass; $constraint = PHPUnit_Framework_Assert::identicalTo($a); $this->assertFalse($constraint->evaluate($b, '', true)); $this->assertTrue($constraint->evaluate($a, '', true)); $this->assertEquals('is identical to an object of class "stdClass"', $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate($b); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals(<<fail(); } public function testConstraintIsIdentical2() { $a = new stdClass; $b = new stdClass; $constraint = PHPUnit_Framework_Assert::identicalTo($a); try { $constraint->evaluate($b, 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals(<<fail(); } public function testConstraintIsIdentical3() { $constraint = PHPUnit_Framework_Assert::identicalTo('a'); try { $constraint->evaluate('b', 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals(<<fail(); } public function testConstraintIsNotIdentical() { $a = new stdClass; $b = new stdClass; $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::identicalTo($a) ); $this->assertTrue($constraint->evaluate($b, '', true)); $this->assertFalse($constraint->evaluate($a, '', true)); $this->assertEquals('is not identical to an object of class "stdClass"', $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate($a); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals(<<trimnl(PHPUnit_Framework_TestFailure::exceptionToString($e)) ); return; } $this->fail(); } public function testConstraintIsNotIdentical2() { $a = new stdClass; $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::identicalTo($a) ); try { $constraint->evaluate($a, 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals(<<fail(); } public function testConstraintIsNotIdentical3() { $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::identicalTo('a') ); try { $constraint->evaluate('a', 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals(<<trimnl(PHPUnit_Framework_TestFailure::exceptionToString($e)) ); return; } $this->fail(); } public function testConstraintIsInstanceOf() { $constraint = PHPUnit_Framework_Assert::isInstanceOf('Exception'); $this->assertFalse($constraint->evaluate(new stdClass, '', true)); $this->assertTrue($constraint->evaluate(new Exception, '', true)); $this->assertEquals('is instance of class "Exception"', $constraint->toString()); $this->assertCount(1, $constraint); $interfaceConstraint = PHPUnit_Framework_Assert::isInstanceOf('Countable'); $this->assertFalse($interfaceConstraint->evaluate(new stdClass, '', true)); $this->assertTrue($interfaceConstraint->evaluate(new ArrayObject, '', true)); $this->assertEquals('is instance of interface "Countable"', $interfaceConstraint->toString()); try { $constraint->evaluate(new stdClass); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintIsInstanceOf2() { $constraint = PHPUnit_Framework_Assert::isInstanceOf('Exception'); try { $constraint->evaluate(new stdClass, 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals(<<fail(); } public function testConstraintIsNotInstanceOf() { $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::isInstanceOf('stdClass') ); $this->assertFalse($constraint->evaluate(new stdClass, '', true)); $this->assertTrue($constraint->evaluate(new Exception, '', true)); $this->assertEquals('is not instance of class "stdClass"', $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate(new stdClass); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintIsNotInstanceOf2() { $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::isInstanceOf('stdClass') ); try { $constraint->evaluate(new stdClass, 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals(<<fail(); } public function testConstraintIsType() { $constraint = PHPUnit_Framework_Assert::isType('string'); $this->assertFalse($constraint->evaluate(0, '', true)); $this->assertTrue($constraint->evaluate('', '', true)); $this->assertEquals('is of type "string"', $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate(new stdClass); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertStringMatchesFormat(<<trimnl(PHPUnit_Framework_TestFailure::exceptionToString($e)) ); return; } $this->fail(); } public function testConstraintIsType2() { $constraint = PHPUnit_Framework_Assert::isType('string'); try { $constraint->evaluate(new stdClass, 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertStringMatchesFormat(<<trimnl(PHPUnit_Framework_TestFailure::exceptionToString($e)) ); return; } $this->fail(); } public function resources() { $fh = fopen(__FILE__, 'r'); fclose($fh); return [ 'open resource' => [fopen(__FILE__, 'r')], 'closed resource' => [$fh], ]; } /** * @dataProvider resources */ public function testConstraintIsResourceTypeEvaluatesCorrectlyWithResources($resource) { $constraint = PHPUnit_Framework_Assert::isType('resource'); $this->assertTrue($constraint->evaluate($resource, '', true)); @fclose($resource); } public function testConstraintIsNotType() { $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::isType('string') ); $this->assertTrue($constraint->evaluate(0, '', true)); $this->assertFalse($constraint->evaluate('', '', true)); $this->assertEquals('is not of type "string"', $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate(''); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintIsNotType2() { $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::isType('string') ); try { $constraint->evaluate('', 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals(<<fail(); } public function testConstraintIsNull() { $constraint = PHPUnit_Framework_Assert::isNull(); $this->assertFalse($constraint->evaluate(0, '', true)); $this->assertTrue($constraint->evaluate(null, '', true)); $this->assertEquals('is null', $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate(0); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals(<<fail(); } public function testConstraintIsNull2() { $constraint = PHPUnit_Framework_Assert::isNull(); try { $constraint->evaluate(0, 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals(<<fail(); } public function testConstraintIsNotNull() { $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::isNull() ); $this->assertFalse($constraint->evaluate(null, '', true)); $this->assertTrue($constraint->evaluate(0, '', true)); $this->assertEquals('is not null', $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate(null); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals(<<fail(); } public function testConstraintIsNotNull2() { $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::isNull() ); try { $constraint->evaluate(null, 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals(<<fail(); } public function testConstraintLessThan() { $constraint = PHPUnit_Framework_Assert::lessThan(1); $this->assertTrue($constraint->evaluate(0, '', true)); $this->assertFalse($constraint->evaluate(1, '', true)); $this->assertEquals('is less than 1', $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate(1); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintLessThan2() { $constraint = PHPUnit_Framework_Assert::lessThan(1); try { $constraint->evaluate(1, 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintNotLessThan() { $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::lessThan(1) ); $this->assertTrue($constraint->evaluate(1, '', true)); $this->assertFalse($constraint->evaluate(0, '', true)); $this->assertEquals('is not less than 1', $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate(0); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintNotLessThan2() { $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::lessThan(1) ); try { $constraint->evaluate(0, 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintLessThanOrEqual() { $constraint = PHPUnit_Framework_Assert::lessThanOrEqual(1); $this->assertTrue($constraint->evaluate(1, '', true)); $this->assertFalse($constraint->evaluate(2, '', true)); $this->assertEquals('is equal to 1 or is less than 1', $constraint->toString()); $this->assertCount(2, $constraint); try { $constraint->evaluate(2); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintCallback() { $closureReflect = function ($parameter) { return $parameter; }; $closureWithoutParameter = function () { return true; }; $constraint = PHPUnit_Framework_Assert::callback($closureWithoutParameter); $this->assertTrue($constraint->evaluate('', '', true)); $constraint = PHPUnit_Framework_Assert::callback($closureReflect); $this->assertTrue($constraint->evaluate(true, '', true)); $this->assertFalse($constraint->evaluate(false, '', true)); $callback = [$this, 'callbackReturningTrue']; $constraint = PHPUnit_Framework_Assert::callback($callback); $this->assertTrue($constraint->evaluate(false, '', true)); $callback = ['Framework_ConstraintTest', 'staticCallbackReturningTrue']; $constraint = PHPUnit_Framework_Assert::callback($callback); $this->assertTrue($constraint->evaluate(null, '', true)); $this->assertEquals('is accepted by specified callback', $constraint->toString()); } /** * @expectedException PHPUnit_Framework_ExpectationFailedException * @expectedExceptionMessage Failed asserting that 'This fails' is accepted by specified callback. */ public function testConstraintCallbackFailure() { $constraint = PHPUnit_Framework_Assert::callback(function () { return false; }); $constraint->evaluate('This fails'); } public function callbackReturningTrue() { return true; } public static function staticCallbackReturningTrue() { return true; } public function testConstraintLessThanOrEqual2() { $constraint = PHPUnit_Framework_Assert::lessThanOrEqual(1); try { $constraint->evaluate(2, 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintNotLessThanOrEqual() { $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::lessThanOrEqual(1) ); $this->assertTrue($constraint->evaluate(2, '', true)); $this->assertFalse($constraint->evaluate(1, '', true)); $this->assertEquals('not( is equal to 1 or is less than 1 )', $constraint->toString()); $this->assertCount(2, $constraint); try { $constraint->evaluate(1); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintNotLessThanOrEqual2() { $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::lessThanOrEqual(1) ); try { $constraint->evaluate(1, 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintClassHasAttribute() { $constraint = PHPUnit_Framework_Assert::classHasAttribute('privateAttribute'); $this->assertTrue($constraint->evaluate('ClassWithNonPublicAttributes', '', true)); $this->assertFalse($constraint->evaluate('stdClass', '', true)); $this->assertEquals('has attribute "privateAttribute"', $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate('stdClass'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintClassHasAttribute2() { $constraint = PHPUnit_Framework_Assert::classHasAttribute('privateAttribute'); try { $constraint->evaluate('stdClass', 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals(<<fail(); } public function testConstraintClassNotHasAttribute() { $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::classHasAttribute('privateAttribute') ); $this->assertTrue($constraint->evaluate('stdClass', '', true)); $this->assertFalse($constraint->evaluate('ClassWithNonPublicAttributes', '', true)); $this->assertEquals('does not have attribute "privateAttribute"', $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate('ClassWithNonPublicAttributes'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintClassNotHasAttribute2() { $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::classHasAttribute('privateAttribute') ); try { $constraint->evaluate('ClassWithNonPublicAttributes', 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals(<<fail(); } public function testConstraintClassHasStaticAttribute() { $constraint = PHPUnit_Framework_Assert::classHasStaticAttribute('privateStaticAttribute'); $this->assertTrue($constraint->evaluate('ClassWithNonPublicAttributes', '', true)); $this->assertFalse($constraint->evaluate('stdClass', '', true)); $this->assertEquals('has static attribute "privateStaticAttribute"', $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate('stdClass'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintClassHasStaticAttribute2() { $constraint = PHPUnit_Framework_Assert::classHasStaticAttribute('foo'); try { $constraint->evaluate('stdClass', 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals(<<fail(); } public function testConstraintClassNotHasStaticAttribute() { $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::classHasStaticAttribute('privateStaticAttribute') ); $this->assertTrue($constraint->evaluate('stdClass', '', true)); $this->assertFalse($constraint->evaluate('ClassWithNonPublicAttributes', '', true)); $this->assertEquals('does not have static attribute "privateStaticAttribute"', $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate('ClassWithNonPublicAttributes'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintClassNotHasStaticAttribute2() { $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::classHasStaticAttribute('privateStaticAttribute') ); try { $constraint->evaluate('ClassWithNonPublicAttributes', 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals(<<fail(); } public function testConstraintObjectHasAttribute() { $constraint = PHPUnit_Framework_Assert::objectHasAttribute('privateAttribute'); $this->assertTrue($constraint->evaluate(new ClassWithNonPublicAttributes, '', true)); $this->assertFalse($constraint->evaluate(new stdClass, '', true)); $this->assertEquals('has attribute "privateAttribute"', $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate(new stdClass); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintObjectHasAttribute2() { $constraint = PHPUnit_Framework_Assert::objectHasAttribute('privateAttribute'); try { $constraint->evaluate(new stdClass, 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals(<<fail(); } public function testConstraintObjectNotHasAttribute() { $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::objectHasAttribute('privateAttribute') ); $this->assertTrue($constraint->evaluate(new stdClass, '', true)); $this->assertFalse($constraint->evaluate(new ClassWithNonPublicAttributes, '', true)); $this->assertEquals('does not have attribute "privateAttribute"', $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate(new ClassWithNonPublicAttributes); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintObjectNotHasAttribute2() { $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::objectHasAttribute('privateAttribute') ); try { $constraint->evaluate(new ClassWithNonPublicAttributes, 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals(<<fail(); } public function testConstraintPCREMatch() { $constraint = PHPUnit_Framework_Assert::matchesRegularExpression('/foo/'); $this->assertFalse($constraint->evaluate('barbazbar', '', true)); $this->assertTrue($constraint->evaluate('barfoobar', '', true)); $this->assertEquals('matches PCRE pattern "/foo/"', $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate('barbazbar'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintPCREMatch2() { $constraint = PHPUnit_Framework_Assert::matchesRegularExpression('/foo/'); try { $constraint->evaluate('barbazbar', 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals(<<fail(); } public function testConstraintPCRENotMatch() { $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::matchesRegularExpression('/foo/') ); $this->assertTrue($constraint->evaluate('barbazbar', '', true)); $this->assertFalse($constraint->evaluate('barfoobar', '', true)); $this->assertEquals('does not match PCRE pattern "/foo/"', $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate('barfoobar'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintPCRENotMatch2() { $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::matchesRegularExpression('/foo/') ); try { $constraint->evaluate('barfoobar', 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals(<<fail(); } public function testConstraintStringMatches() { $constraint = PHPUnit_Framework_Assert::matches('*%c*'); $this->assertFalse($constraint->evaluate('**', '', true)); $this->assertTrue($constraint->evaluate('***', '', true)); $this->assertEquals('matches PCRE pattern "/^\*.\*$/s"', $constraint->toString()); $this->assertCount(1, $constraint); } public function testConstraintStringMatches2() { $constraint = PHPUnit_Framework_Assert::matches('*%s*'); $this->assertFalse($constraint->evaluate('**', '', true)); $this->assertTrue($constraint->evaluate('***', '', true)); $this->assertEquals('matches PCRE pattern "/^\*[^\r\n]+\*$/s"', $constraint->toString()); $this->assertCount(1, $constraint); } public function testConstraintStringMatches3() { $constraint = PHPUnit_Framework_Assert::matches('*%i*'); $this->assertFalse($constraint->evaluate('**', '', true)); $this->assertTrue($constraint->evaluate('*0*', '', true)); $this->assertEquals('matches PCRE pattern "/^\*[+-]?\d+\*$/s"', $constraint->toString()); $this->assertCount(1, $constraint); } public function testConstraintStringMatches4() { $constraint = PHPUnit_Framework_Assert::matches('*%d*'); $this->assertFalse($constraint->evaluate('**', '', true)); $this->assertTrue($constraint->evaluate('*0*', '', true)); $this->assertEquals('matches PCRE pattern "/^\*\d+\*$/s"', $constraint->toString()); $this->assertCount(1, $constraint); } public function testConstraintStringMatches5() { $constraint = PHPUnit_Framework_Assert::matches('*%x*'); $this->assertFalse($constraint->evaluate('**', '', true)); $this->assertTrue($constraint->evaluate('*0f0f0f*', '', true)); $this->assertEquals('matches PCRE pattern "/^\*[0-9a-fA-F]+\*$/s"', $constraint->toString()); $this->assertCount(1, $constraint); } public function testConstraintStringMatches6() { $constraint = PHPUnit_Framework_Assert::matches('*%f*'); $this->assertFalse($constraint->evaluate('**', '', true)); $this->assertTrue($constraint->evaluate('*1.0*', '', true)); $this->assertEquals('matches PCRE pattern "/^\*[+-]?\.?\d+\.?\d*(?:[Ee][+-]?\d+)?\*$/s"', $constraint->toString()); $this->assertCount(1, $constraint); } public function testConstraintStringStartsWith() { $constraint = PHPUnit_Framework_Assert::stringStartsWith('prefix'); $this->assertFalse($constraint->evaluate('foo', '', true)); $this->assertTrue($constraint->evaluate('prefixfoo', '', true)); $this->assertEquals('starts with "prefix"', $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate('foo'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintStringStartsWith2() { $constraint = PHPUnit_Framework_Assert::stringStartsWith('prefix'); try { $constraint->evaluate('foo', 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintStringStartsNotWith() { $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::stringStartsWith('prefix') ); $this->assertTrue($constraint->evaluate('foo', '', true)); $this->assertFalse($constraint->evaluate('prefixfoo', '', true)); $this->assertEquals('starts not with "prefix"', $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate('prefixfoo'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintStringStartsNotWith2() { $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::stringStartsWith('prefix') ); try { $constraint->evaluate('prefixfoo', 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintStringContains() { $constraint = PHPUnit_Framework_Assert::stringContains('foo'); $this->assertFalse($constraint->evaluate('barbazbar', '', true)); $this->assertTrue($constraint->evaluate('barfoobar', '', true)); $this->assertEquals('contains "foo"', $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate('barbazbar'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintStringContainsWhenIgnoreCase() { $constraint = PHPUnit_Framework_Assert::stringContains('oryginał', true); $this->assertFalse($constraint->evaluate('oryginal', '', true)); $this->assertTrue($constraint->evaluate('ORYGINAŁ', '', true)); $this->assertTrue($constraint->evaluate('oryginał', '', true)); $this->assertEquals('contains "oryginał"', $constraint->toString()); $this->assertEquals(1, count($constraint)); try { $constraint->evaluate('oryginal'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintStringContainsForUtf8StringWhenNotIgnoreCase() { $constraint = PHPUnit_Framework_Assert::stringContains('oryginał', false); $this->assertFalse($constraint->evaluate('oryginal', '', true)); $this->assertFalse($constraint->evaluate('ORYGINAŁ', '', true)); $this->assertTrue($constraint->evaluate('oryginał', '', true)); $this->assertEquals('contains "oryginał"', $constraint->toString()); $this->assertEquals(1, count($constraint)); try { $constraint->evaluate('oryginal'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintStringContains2() { $constraint = PHPUnit_Framework_Assert::stringContains('foo'); try { $constraint->evaluate('barbazbar', 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintStringNotContains() { $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::stringContains('foo') ); $this->assertTrue($constraint->evaluate('barbazbar', '', true)); $this->assertFalse($constraint->evaluate('barfoobar', '', true)); $this->assertEquals('does not contain "foo"', $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate('barfoobar'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintStringNotContainsWhenIgnoreCase() { $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::stringContains('oryginał') ); $this->assertTrue($constraint->evaluate('original', '', true)); $this->assertFalse($constraint->evaluate('ORYGINAŁ', '', true)); $this->assertFalse($constraint->evaluate('oryginał', '', true)); $this->assertEquals('does not contain "oryginał"', $constraint->toString()); $this->assertEquals(1, count($constraint)); try { $constraint->evaluate('ORYGINAŁ'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintStringNotContainsForUtf8StringWhenNotIgnoreCase() { $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::stringContains('oryginał', false) ); $this->assertTrue($constraint->evaluate('original', '', true)); $this->assertTrue($constraint->evaluate('ORYGINAŁ', '', true)); $this->assertFalse($constraint->evaluate('oryginał', '', true)); $this->assertEquals('does not contain "oryginał"', $constraint->toString()); $this->assertEquals(1, count($constraint)); try { $constraint->evaluate('oryginał'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintStringNotContains2() { $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::stringContains('foo') ); try { $constraint->evaluate('barfoobar', 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintStringEndsWith() { $constraint = PHPUnit_Framework_Assert::stringEndsWith('suffix'); $this->assertFalse($constraint->evaluate('foo', '', true)); $this->assertTrue($constraint->evaluate('foosuffix', '', true)); $this->assertEquals('ends with "suffix"', $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate('foo'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintStringEndsWith2() { $constraint = PHPUnit_Framework_Assert::stringEndsWith('suffix'); try { $constraint->evaluate('foo', 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintStringEndsNotWith() { $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::stringEndsWith('suffix') ); $this->assertTrue($constraint->evaluate('foo', '', true)); $this->assertFalse($constraint->evaluate('foosuffix', '', true)); $this->assertEquals('ends not with "suffix"', $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate('foosuffix'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintStringEndsNotWith2() { $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::stringEndsWith('suffix') ); try { $constraint->evaluate('foosuffix', 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintArrayContainsCheckForObjectIdentity() { // Check for primitive type. $constraint = new PHPUnit_Framework_Constraint_TraversableContains('foo', true, true); $this->assertFalse($constraint->evaluate([0], '', true)); $this->assertFalse($constraint->evaluate([true], '', true)); // Default case. $constraint = new PHPUnit_Framework_Constraint_TraversableContains('foo'); $this->assertTrue($constraint->evaluate([0], '', true)); $this->assertTrue($constraint->evaluate([true], '', true)); } public function testConstraintArrayContains() { $constraint = new PHPUnit_Framework_Constraint_TraversableContains('foo'); $this->assertFalse($constraint->evaluate(['bar'], '', true)); $this->assertTrue($constraint->evaluate(['foo'], '', true)); $this->assertEquals("contains 'foo'", $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate(['bar']); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintArrayContains2() { $constraint = new PHPUnit_Framework_Constraint_TraversableContains('foo'); try { $constraint->evaluate(['bar'], 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintArrayNotContains() { $constraint = PHPUnit_Framework_Assert::logicalNot( new PHPUnit_Framework_Constraint_TraversableContains('foo') ); $this->assertTrue($constraint->evaluate(['bar'], '', true)); $this->assertFalse($constraint->evaluate(['foo'], '', true)); $this->assertEquals("does not contain 'foo'", $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate(['foo']); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintArrayNotContains2() { $constraint = PHPUnit_Framework_Assert::logicalNot( new PHPUnit_Framework_Constraint_TraversableContains('foo') ); try { $constraint->evaluate(['foo'], 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintSplObjectStorageContains() { $object = new StdClass; $constraint = new PHPUnit_Framework_Constraint_TraversableContains($object); $this->assertStringMatchesFormat('contains stdClass Object &%s ()', $constraint->toString()); $storage = new SplObjectStorage; $this->assertFalse($constraint->evaluate($storage, '', true)); $storage->attach($object); $this->assertTrue($constraint->evaluate($storage, '', true)); try { $constraint->evaluate(new SplObjectStorage); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertStringMatchesFormat( <<fail(); } public function testConstraintSplObjectStorageContains2() { $object = new StdClass; $constraint = new PHPUnit_Framework_Constraint_TraversableContains($object); try { $constraint->evaluate(new SplObjectStorage, 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertStringMatchesFormat( <<fail(); } public function testAttributeEqualTo() { $object = new ClassWithNonPublicAttributes; $constraint = PHPUnit_Framework_Assert::attributeEqualTo('foo', 1); $this->assertTrue($constraint->evaluate($object, '', true)); $this->assertEquals('attribute "foo" is equal to 1', $constraint->toString()); $this->assertCount(1, $constraint); $constraint = PHPUnit_Framework_Assert::attributeEqualTo('foo', 2); $this->assertFalse($constraint->evaluate($object, '', true)); try { $constraint->evaluate($object); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testAttributeEqualTo2() { $object = new ClassWithNonPublicAttributes; $constraint = PHPUnit_Framework_Assert::attributeEqualTo('foo', 2); try { $constraint->evaluate($object, 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testAttributeNotEqualTo() { $object = new ClassWithNonPublicAttributes; $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::attributeEqualTo('foo', 2) ); $this->assertTrue($constraint->evaluate($object, '', true)); $this->assertEquals('attribute "foo" is not equal to 2', $constraint->toString()); $this->assertCount(1, $constraint); $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::attributeEqualTo('foo', 1) ); $this->assertFalse($constraint->evaluate($object, '', true)); try { $constraint->evaluate($object); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testAttributeNotEqualTo2() { $object = new ClassWithNonPublicAttributes; $constraint = PHPUnit_Framework_Assert::logicalNot( PHPUnit_Framework_Assert::attributeEqualTo('foo', 1) ); try { $constraint->evaluate($object, 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintIsEmpty() { $constraint = new PHPUnit_Framework_Constraint_IsEmpty; $this->assertFalse($constraint->evaluate(['foo'], '', true)); $this->assertTrue($constraint->evaluate([], '', true)); $this->assertFalse($constraint->evaluate(new ArrayObject(['foo']), '', true)); $this->assertTrue($constraint->evaluate(new ArrayObject([]), '', true)); $this->assertEquals('is empty', $constraint->toString()); $this->assertCount(1, $constraint); try { $constraint->evaluate(['foo']); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintIsEmpty2() { $constraint = new PHPUnit_Framework_Constraint_IsEmpty; try { $constraint->evaluate(['foo'], 'custom message'); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintCountWithAnArray() { $constraint = new PHPUnit_Framework_Constraint_Count(5); $this->assertTrue($constraint->evaluate([1, 2, 3, 4, 5], '', true)); $this->assertFalse($constraint->evaluate([1, 2, 3, 4], '', true)); } public function testConstraintCountWithAnIteratorWhichDoesNotImplementCountable() { $constraint = new PHPUnit_Framework_Constraint_Count(5); $this->assertTrue($constraint->evaluate(new TestIterator([1, 2, 3, 4, 5]), '', true)); $this->assertFalse($constraint->evaluate(new TestIterator([1, 2, 3, 4]), '', true)); } public function testConstraintCountWithAnObjectImplementingCountable() { $constraint = new PHPUnit_Framework_Constraint_Count(5); $this->assertTrue($constraint->evaluate(new ArrayObject([1, 2, 3, 4, 5]), '', true)); $this->assertFalse($constraint->evaluate(new ArrayObject([1, 2, 3, 4]), '', true)); } public function testConstraintCountFailing() { $constraint = new PHPUnit_Framework_Constraint_Count(5); try { $constraint->evaluate([1, 2]); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintNotCountFailing() { $constraint = PHPUnit_Framework_Assert::logicalNot( new PHPUnit_Framework_Constraint_Count(2) ); try { $constraint->evaluate([1, 2]); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintSameSizeWithAnArray() { $constraint = new PHPUnit_Framework_Constraint_SameSize([1, 2, 3, 4, 5]); $this->assertTrue($constraint->evaluate([6, 7, 8, 9, 10], '', true)); $this->assertFalse($constraint->evaluate([1, 2, 3, 4], '', true)); } public function testConstraintSameSizeWithAnIteratorWhichDoesNotImplementCountable() { $constraint = new PHPUnit_Framework_Constraint_SameSize(new TestIterator([1, 2, 3, 4, 5])); $this->assertTrue($constraint->evaluate(new TestIterator([6, 7, 8, 9, 10]), '', true)); $this->assertFalse($constraint->evaluate(new TestIterator([1, 2, 3, 4]), '', true)); } public function testConstraintSameSizeWithAnObjectImplementingCountable() { $constraint = new PHPUnit_Framework_Constraint_SameSize(new ArrayObject([1, 2, 3, 4, 5])); $this->assertTrue($constraint->evaluate(new ArrayObject([6, 7, 8, 9, 10]), '', true)); $this->assertFalse($constraint->evaluate(new ArrayObject([1, 2, 3, 4]), '', true)); } public function testConstraintSameSizeFailing() { $constraint = new PHPUnit_Framework_Constraint_SameSize([1, 2, 3, 4, 5]); try { $constraint->evaluate([1, 2]); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintNotSameSizeFailing() { $constraint = PHPUnit_Framework_Assert::logicalNot( new PHPUnit_Framework_Constraint_SameSize([1, 2]) ); try { $constraint->evaluate([3, 4]); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } public function testConstraintException() { $constraint = new PHPUnit_Framework_Constraint_Exception('FoobarException'); $exception = new DummyException('Test'); $stackTrace = PHPUnit_Util_Filter::getFilteredStacktrace($exception); try { $constraint->evaluate($exception); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( <<fail(); } /** * Removes spaces in front of newlines * * @param string $string * * @return string */ private function trimnl($string) { return preg_replace('/[ ]*\n/', "\n", $string); } } PK!`$$tests/Framework/SuiteTest.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'BeforeAndAfterTest.php'; require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'BeforeClassAndAfterClassTest.php'; require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'TestWithTest.php'; require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'BeforeClassWithOnlyDataProviderTest.php'; require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'DataProviderSkippedTest.php'; require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'DataProviderDependencyTest.php'; require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'DataProviderIncompleteTest.php'; require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'InheritedTestCase.php'; require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'NoTestCaseClass.php'; require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'NoTestCases.php'; require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'NotPublicTestCase.php'; require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'NotVoidTestCase.php'; require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'OverrideTestCase.php'; require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'RequirementsClassBeforeClassHookTest.php'; class Framework_SuiteTest extends PHPUnit_Framework_TestCase { protected $result; protected function setUp() { $this->result = new PHPUnit_Framework_TestResult; } public static function suite() { $suite = new PHPUnit_Framework_TestSuite; $suite->addTest(new self('testAddTestSuite')); $suite->addTest(new self('testInheritedTests')); $suite->addTest(new self('testNoTestCases')); $suite->addTest(new self('testNoTestCaseClass')); $suite->addTest(new self('testNotExistingTestCase')); $suite->addTest(new self('testNotPublicTestCase')); $suite->addTest(new self('testNotVoidTestCase')); $suite->addTest(new self('testOneTestCase')); $suite->addTest(new self('testShadowedTests')); $suite->addTest(new self('testBeforeClassAndAfterClassAnnotations')); $suite->addTest(new self('testBeforeClassWithDataProviders')); $suite->addTest(new self('testBeforeAnnotation')); $suite->addTest(new self('testTestWithAnnotation')); $suite->addTest(new self('testSkippedTestDataProvider')); $suite->addTest(new self('testTestDataProviderDependency')); $suite->addTest(new self('testIncompleteTestDataProvider')); $suite->addTest(new self('testRequirementsBeforeClassHook')); $suite->addTest(new self('testDontSkipInheritedClass')); return $suite; } public function testAddTestSuite() { $suite = new PHPUnit_Framework_TestSuite( 'OneTestCase' ); $suite->run($this->result); $this->assertCount(1, $this->result); } public function testInheritedTests() { $suite = new PHPUnit_Framework_TestSuite( 'InheritedTestCase' ); $suite->run($this->result); $this->assertTrue($this->result->wasSuccessful()); $this->assertCount(2, $this->result); } public function testNoTestCases() { $suite = new PHPUnit_Framework_TestSuite( 'NoTestCases' ); $suite->run($this->result); $this->assertTrue(!$this->result->wasSuccessful()); $this->assertEquals(0, $this->result->failureCount()); $this->assertEquals(1, $this->result->warningCount()); $this->assertCount(1, $this->result); } /** * @expectedException PHPUnit_Framework_Exception */ public function testNoTestCaseClass() { $suite = new PHPUnit_Framework_TestSuite('NoTestCaseClass'); } public function testNotExistingTestCase() { $suite = new self('notExistingMethod'); $suite->run($this->result); $this->assertEquals(0, $this->result->errorCount()); $this->assertEquals(1, $this->result->failureCount()); $this->assertCount(1, $this->result); } public function testNotPublicTestCase() { $suite = new PHPUnit_Framework_TestSuite( 'NotPublicTestCase' ); $this->assertCount(2, $suite); } public function testNotVoidTestCase() { $suite = new PHPUnit_Framework_TestSuite( 'NotVoidTestCase' ); $this->assertCount(1, $suite); } public function testOneTestCase() { $suite = new PHPUnit_Framework_TestSuite( 'OneTestCase' ); $suite->run($this->result); $this->assertEquals(0, $this->result->errorCount()); $this->assertEquals(0, $this->result->failureCount()); $this->assertCount(1, $this->result); $this->assertTrue($this->result->wasSuccessful()); } public function testShadowedTests() { $suite = new PHPUnit_Framework_TestSuite( 'OverrideTestCase' ); $suite->run($this->result); $this->assertCount(1, $this->result); } public function testBeforeClassAndAfterClassAnnotations() { $suite = new PHPUnit_Framework_TestSuite( 'BeforeClassAndAfterClassTest' ); BeforeClassAndAfterClassTest::resetProperties(); $suite->run($this->result); $this->assertEquals(1, BeforeClassAndAfterClassTest::$beforeClassWasRun, '@beforeClass method was not run once for the whole suite.'); $this->assertEquals(1, BeforeClassAndAfterClassTest::$afterClassWasRun, '@afterClass method was not run once for the whole suite.'); } public function testBeforeClassWithDataProviders() { $suite = new PHPUnit_Framework_TestSuite( 'BeforeClassWithOnlyDataProviderTest' ); BeforeClassWithOnlyDataProviderTest::resetProperties(); $suite->run($this->result); $this->assertTrue(BeforeClassWithOnlyDataProviderTest::$setUpBeforeClassWasCalled, 'setUpBeforeClass method was not run.'); $this->assertTrue(BeforeClassWithOnlyDataProviderTest::$beforeClassWasCalled, '@beforeClass method was not run.'); } public function testBeforeAnnotation() { $test = new PHPUnit_Framework_TestSuite( 'BeforeAndAfterTest' ); BeforeAndAfterTest::resetProperties(); $result = $test->run(); $this->assertEquals(2, BeforeAndAfterTest::$beforeWasRun); $this->assertEquals(2, BeforeAndAfterTest::$afterWasRun); } public function testTestWithAnnotation() { $test = new PHPUnit_Framework_TestSuite( 'TestWithTest' ); BeforeAndAfterTest::resetProperties(); $result = $test->run(); $this->assertCount(4, $result->passed()); } public function testSkippedTestDataProvider() { $suite = new PHPUnit_Framework_TestSuite('DataProviderSkippedTest'); $suite->run($this->result); $this->assertEquals(3, $this->result->count()); $this->assertEquals(1, $this->result->skippedCount()); } public function testTestDataProviderDependency() { $suite = new PHPUnit_Framework_TestSuite('DataProviderDependencyTest'); $suite->run($this->result); $skipped = $this->result->skipped(); $lastSkippedResult = array_pop($skipped); $message = $lastSkippedResult->thrownException()->getMessage(); $this->assertContains('Test for DataProviderDependencyTest::testDependency skipped by data provider', $message); } public function testIncompleteTestDataProvider() { $suite = new PHPUnit_Framework_TestSuite('DataProviderIncompleteTest'); $suite->run($this->result); $this->assertEquals(3, $this->result->count()); $this->assertEquals(1, $this->result->notImplementedCount()); } public function testRequirementsBeforeClassHook() { $suite = new PHPUnit_Framework_TestSuite( 'RequirementsClassBeforeClassHookTest' ); $suite->run($this->result); $this->assertEquals(0, $this->result->errorCount()); $this->assertEquals(1, $this->result->skippedCount()); } public function testDontSkipInheritedClass() { $suite = new PHPUnit_Framework_TestSuite( 'DontSkipInheritedClass' ); $dir = dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'Inheritance' . DIRECTORY_SEPARATOR; $suite->addTestFile($dir . 'InheritanceA.php'); $suite->addTestFile($dir . 'InheritanceB.php'); $result = $suite->run(); $this->assertCount(2, $result); } } PK!>8j(tests/Framework/BaseTestListenerTest.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class Framework_BaseTestListenerTest extends PHPUnit_Framework_TestCase { /** * @var PHPUnit_Framework_TestResult */ private $result; public function testEndEventsAreCounted() { $this->result = new PHPUnit_Framework_TestResult; $listener = new BaseTestListenerSample(); $this->result->addListener($listener); $test = new Success; $test->run($this->result); $this->assertEquals(1, $listener->endCount); } } PK!䛷tests/Framework/AssertTest.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class Framework_AssertTest extends PHPUnit_Framework_TestCase { /** * @var string */ private $filesDirectory; protected function setUp() { $this->filesDirectory = dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR; } public function testFail() { try { $this->fail(); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } throw new PHPUnit_Framework_AssertionFailedError('Fail did not throw fail exception'); } public function testAssertSplObjectStorageContainsObject() { $a = new stdClass; $b = new stdClass; $c = new SplObjectStorage; $c->attach($a); $this->assertContains($a, $c); try { $this->assertContains($b, $c); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertArrayContainsObject() { $a = new stdClass; $b = new stdClass; $this->assertContains($a, [$a]); try { $this->assertContains($a, [$b]); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertArrayContainsString() { $this->assertContains('foo', ['foo']); try { $this->assertContains('foo', ['bar']); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertArrayContainsNonObject() { $this->assertContains('foo', [true]); try { $this->assertContains('foo', [true], '', false, true, true); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertContainsOnlyInstancesOf() { $test = [ new Book(), new Book ]; $this->assertContainsOnlyInstancesOf('Book', $test); $this->assertContainsOnlyInstancesOf('stdClass', [new stdClass()]); $test2 = [ new Author('Test') ]; try { $this->assertContainsOnlyInstancesOf('Book', $test2); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertArrayHasKeyThrowsExceptionForInvalidFirstArgument() { $this->assertArrayHasKey(null, []); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertArrayHasKeyThrowsExceptionForInvalidSecondArgument() { $this->assertArrayHasKey(0, null); } public function testAssertArrayHasIntegerKey() { $this->assertArrayHasKey(0, ['foo']); try { $this->assertArrayHasKey(1, ['foo']); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertArraySubset() { $array = [ 'a' => 'item a', 'b' => 'item b', 'c' => ['a2' => 'item a2', 'b2' => 'item b2'], 'd' => ['a2' => ['a3' => 'item a3', 'b3' => 'item b3']] ]; $this->assertArraySubset(['a' => 'item a', 'c' => ['a2' => 'item a2']], $array); $this->assertArraySubset(['a' => 'item a', 'd' => ['a2' => ['b3' => 'item b3']]], $array); $arrayAccessData = new ArrayObject($array); $this->assertArraySubset(['a' => 'item a', 'c' => ['a2' => 'item a2']], $arrayAccessData); $this->assertArraySubset(['a' => 'item a', 'd' => ['a2' => ['b3' => 'item b3']]], $arrayAccessData); try { $this->assertArraySubset(['a' => 'bad value'], $array); } catch (PHPUnit_Framework_AssertionFailedError $e) { } try { $this->assertArraySubset(['d' => ['a2' => ['bad index' => 'item b3']]], $array); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertArraySubsetWithDeepNestedArrays() { $array = [ 'path' => [ 'to' => [ 'the' => [ 'cake' => 'is a lie' ] ] ] ]; $this->assertArraySubset(['path' => []], $array); $this->assertArraySubset(['path' => ['to' => []]], $array); $this->assertArraySubset(['path' => ['to' => ['the' => []]]], $array); $this->assertArraySubset(['path' => ['to' => ['the' => ['cake' => 'is a lie']]]], $array); try { $this->assertArraySubset(['path' => ['to' => ['the' => ['cake' => 'is not a lie']]]], $array); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertArraySubsetWithNoStrictCheckAndObjects() { $obj = new \stdClass; $reference = &$obj; $array = ['a' => $obj]; $this->assertArraySubset(['a' => $reference], $array); $this->assertArraySubset(['a' => new \stdClass], $array); } public function testAssertArraySubsetWithStrictCheckAndObjects() { $obj = new \stdClass; $reference = &$obj; $array = ['a' => $obj]; $this->assertArraySubset(['a' => $reference], $array, true); try { $this->assertArraySubset(['a' => new \stdClass], $array, true); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail('Strict recursive array check fail.'); } /** * @expectedException PHPUnit_Framework_Exception * @expectedExceptionMessage array or ArrayAccess * @dataProvider assertArraySubsetInvalidArgumentProvider */ public function testAssertArraySubsetRaisesExceptionForInvalidArguments($partial, $subject) { $this->assertArraySubset($partial, $subject); } /** * @return array */ public function assertArraySubsetInvalidArgumentProvider() { return [ [false, []], [[], false], ]; } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertArrayNotHasKeyThrowsExceptionForInvalidFirstArgument() { $this->assertArrayNotHasKey(null, []); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertArrayNotHasKeyThrowsExceptionForInvalidSecondArgument() { $this->assertArrayNotHasKey(0, null); } public function testAssertArrayNotHasIntegerKey() { $this->assertArrayNotHasKey(1, ['foo']); try { $this->assertArrayNotHasKey(0, ['foo']); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertArrayHasStringKey() { $this->assertArrayHasKey('foo', ['foo' => 'bar']); try { $this->assertArrayHasKey('bar', ['foo' => 'bar']); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertArrayNotHasStringKey() { $this->assertArrayNotHasKey('bar', ['foo' => 'bar']); try { $this->assertArrayNotHasKey('foo', ['foo' => 'bar']); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertArrayHasKeyAcceptsArrayObjectValue() { $array = new ArrayObject(); $array['foo'] = 'bar'; $this->assertArrayHasKey('foo', $array); } /** * @expectedException PHPUnit_Framework_AssertionFailedError */ public function testAssertArrayHasKeyProperlyFailsWithArrayObjectValue() { $array = new ArrayObject(); $array['bar'] = 'bar'; $this->assertArrayHasKey('foo', $array); } public function testAssertArrayHasKeyAcceptsArrayAccessValue() { $array = new SampleArrayAccess(); $array['foo'] = 'bar'; $this->assertArrayHasKey('foo', $array); } /** * @expectedException PHPUnit_Framework_AssertionFailedError */ public function testAssertArrayHasKeyProperlyFailsWithArrayAccessValue() { $array = new SampleArrayAccess(); $array['bar'] = 'bar'; $this->assertArrayHasKey('foo', $array); } public function testAssertArrayNotHasKeyAcceptsArrayAccessValue() { $array = new ArrayObject(); $array['foo'] = 'bar'; $this->assertArrayNotHasKey('bar', $array); } /** * @expectedException PHPUnit_Framework_AssertionFailedError */ public function testAssertArrayNotHasKeyPropertlyFailsWithArrayAccessValue() { $array = new ArrayObject(); $array['bar'] = 'bar'; $this->assertArrayNotHasKey('bar', $array); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertContainsThrowsException() { $this->assertContains(null, null); } public function testAssertIteratorContainsObject() { $foo = new stdClass; $this->assertContains($foo, new TestIterator([$foo])); try { $this->assertContains($foo, new TestIterator([new stdClass])); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertIteratorContainsString() { $this->assertContains('foo', new TestIterator(['foo'])); try { $this->assertContains('foo', new TestIterator(['bar'])); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertStringContainsString() { $this->assertContains('foo', 'foobar'); try { $this->assertContains('foo', 'bar'); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertStringContainsStringForUtf8() { $this->assertContains('oryginał', 'oryginał'); try { $this->assertContains('ORYGINAŁ', 'oryginał'); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertStringContainsStringForUtf8WhenIgnoreCase() { $this->assertContains('oryginał', 'oryginał', '', true); $this->assertContains('ORYGINAŁ', 'oryginał', '', true); try { $this->assertContains('foo', 'oryginał', '', true); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertNotContainsThrowsException() { $this->assertNotContains(null, null); } public function testAssertSplObjectStorageNotContainsObject() { $a = new stdClass; $b = new stdClass; $c = new SplObjectStorage; $c->attach($a); $this->assertNotContains($b, $c); try { $this->assertNotContains($a, $c); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertArrayNotContainsObject() { $a = new stdClass; $b = new stdClass; $this->assertNotContains($a, [$b]); try { $this->assertNotContains($a, [$a]); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertArrayNotContainsString() { $this->assertNotContains('foo', ['bar']); try { $this->assertNotContains('foo', ['foo']); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertArrayNotContainsNonObject() { $this->assertNotContains('foo', [true], '', false, true, true); try { $this->assertNotContains('foo', [true]); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertStringNotContainsString() { $this->assertNotContains('foo', 'bar'); try { $this->assertNotContains('foo', 'foo'); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertStringNotContainsStringForUtf8() { $this->assertNotContains('ORYGINAŁ', 'oryginał'); try { $this->assertNotContains('oryginał', 'oryginał'); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertStringNotContainsStringForUtf8WhenIgnoreCase() { try { $this->assertNotContains('ORYGINAŁ', 'oryginał', '', true); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertContainsOnlyThrowsException() { $this->assertContainsOnly(null, null); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertNotContainsOnlyThrowsException() { $this->assertNotContainsOnly(null, null); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertContainsOnlyInstancesOfThrowsException() { $this->assertContainsOnlyInstancesOf(null, null); } public function testAssertArrayContainsOnlyIntegers() { $this->assertContainsOnly('integer', [1, 2, 3]); try { $this->assertContainsOnly('integer', ['1', 2, 3]); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertArrayNotContainsOnlyIntegers() { $this->assertNotContainsOnly('integer', ['1', 2, 3]); try { $this->assertNotContainsOnly('integer', [1, 2, 3]); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertArrayContainsOnlyStdClass() { $this->assertContainsOnly('StdClass', [new stdClass]); try { $this->assertContainsOnly('StdClass', ['StdClass']); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertArrayNotContainsOnlyStdClass() { $this->assertNotContainsOnly('StdClass', ['StdClass']); try { $this->assertNotContainsOnly('StdClass', [new stdClass]); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } protected function sameValues() { $object = new SampleClass(4, 8, 15); // cannot use $filesDirectory, because neither setUp() nor // setUpBeforeClass() are executed before the data providers $file = dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'foo.xml'; $resource = fopen($file, 'r'); return [ // null [null, null], // strings ['a', 'a'], // integers [0, 0], // floats [2.3, 2.3], [1 / 3, 1 - 2 / 3], [log(0), log(0)], // arrays [[], []], [[0 => 1], [0 => 1]], [[0 => null], [0 => null]], [['a', 'b' => [1, 2]], ['a', 'b' => [1, 2]]], // objects [$object, $object], // resources [$resource, $resource], ]; } protected function notEqualValues() { // cyclic dependencies $book1 = new Book; $book1->author = new Author('Terry Pratchett'); $book1->author->books[] = $book1; $book2 = new Book; $book2->author = new Author('Terry Pratch'); $book2->author->books[] = $book2; $book3 = new Book; $book3->author = 'Terry Pratchett'; $book4 = new stdClass; $book4->author = 'Terry Pratchett'; $object1 = new SampleClass(4, 8, 15); $object2 = new SampleClass(16, 23, 42); $object3 = new SampleClass(4, 8, 15); $storage1 = new SplObjectStorage; $storage1->attach($object1); $storage2 = new SplObjectStorage; $storage2->attach($object3); // same content, different object // cannot use $filesDirectory, because neither setUp() nor // setUpBeforeClass() are executed before the data providers $file = dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'foo.xml'; return [ // strings ['a', 'b'], ['a', 'A'], // https://github.com/sebastianbergmann/phpunit/issues/1023 ['9E6666666','9E7777777'], // integers [1, 2], [2, 1], // floats [2.3, 4.2], [2.3, 4.2, 0.5], [[2.3], [4.2], 0.5], [[[2.3]], [[4.2]], 0.5], [new Struct(2.3), new Struct(4.2), 0.5], [[new Struct(2.3)], [new Struct(4.2)], 0.5], // NAN [NAN, NAN], // arrays [[], [0 => 1]], [[0 => 1], []], [[0 => null], []], [[0 => 1, 1 => 2], [0 => 1, 1 => 3]], [['a', 'b' => [1, 2]], ['a', 'b' => [2, 1]]], // objects [new SampleClass(4, 8, 15), new SampleClass(16, 23, 42)], [$object1, $object2], [$book1, $book2], [$book3, $book4], // same content, different class // resources [fopen($file, 'r'), fopen($file, 'r')], // SplObjectStorage [$storage1, $storage2], // DOMDocument [ PHPUnit_Util_XML::load(''), PHPUnit_Util_XML::load(''), ], [ PHPUnit_Util_XML::load(''), PHPUnit_Util_XML::load(''), ], [ PHPUnit_Util_XML::load(' bar '), PHPUnit_Util_XML::load(''), ], [ PHPUnit_Util_XML::load(''), PHPUnit_Util_XML::load(''), ], [ PHPUnit_Util_XML::load(' bar '), PHPUnit_Util_XML::load(' bir '), ], [ new DateTime('2013-03-29 04:13:35', new DateTimeZone('America/New_York')), new DateTime('2013-03-29 03:13:35', new DateTimeZone('America/New_York')), ], [ new DateTime('2013-03-29 04:13:35', new DateTimeZone('America/New_York')), new DateTime('2013-03-29 03:13:35', new DateTimeZone('America/New_York')), 3500 ], [ new DateTime('2013-03-29 04:13:35', new DateTimeZone('America/New_York')), new DateTime('2013-03-29 05:13:35', new DateTimeZone('America/New_York')), 3500 ], [ new DateTime('2013-03-29', new DateTimeZone('America/New_York')), new DateTime('2013-03-30', new DateTimeZone('America/New_York')), ], [ new DateTime('2013-03-29', new DateTimeZone('America/New_York')), new DateTime('2013-03-30', new DateTimeZone('America/New_York')), 43200 ], [ new DateTime('2013-03-29 04:13:35', new DateTimeZone('America/New_York')), new DateTime('2013-03-29 04:13:35', new DateTimeZone('America/Chicago')), ], [ new DateTime('2013-03-29 04:13:35', new DateTimeZone('America/New_York')), new DateTime('2013-03-29 04:13:35', new DateTimeZone('America/Chicago')), 3500 ], [ new DateTime('2013-03-30', new DateTimeZone('America/New_York')), new DateTime('2013-03-30', new DateTimeZone('America/Chicago')), ], [ new DateTime('2013-03-29T05:13:35-0600'), new DateTime('2013-03-29T04:13:35-0600'), ], [ new DateTime('2013-03-29T05:13:35-0600'), new DateTime('2013-03-29T05:13:35-0500'), ], // Exception //array(new Exception('Exception 1'), new Exception('Exception 2')), // different types [new SampleClass(4, 8, 15), false], [false, new SampleClass(4, 8, 15)], [[0 => 1, 1 => 2], false], [false, [0 => 1, 1 => 2]], [[], new stdClass], [new stdClass, []], // PHP: 0 == 'Foobar' => true! // We want these values to differ [0, 'Foobar'], ['Foobar', 0], [3, acos(8)], [acos(8), 3] ]; } protected function equalValues() { // cyclic dependencies $book1 = new Book; $book1->author = new Author('Terry Pratchett'); $book1->author->books[] = $book1; $book2 = new Book; $book2->author = new Author('Terry Pratchett'); $book2->author->books[] = $book2; $object1 = new SampleClass(4, 8, 15); $object2 = new SampleClass(4, 8, 15); $storage1 = new SplObjectStorage; $storage1->attach($object1); $storage2 = new SplObjectStorage; $storage2->attach($object1); return [ // strings ['a', 'A', 0, false, true], // ignore case // arrays [['a' => 1, 'b' => 2], ['b' => 2, 'a' => 1]], [[1], ['1']], [[3, 2, 1], [2, 3, 1], 0, true], // canonicalized comparison // floats [2.3, 2.5, 0.5], [[2.3], [2.5], 0.5], [[[2.3]], [[2.5]], 0.5], [new Struct(2.3), new Struct(2.5), 0.5], [[new Struct(2.3)], [new Struct(2.5)], 0.5], // numeric with delta [1, 2, 1], // objects [$object1, $object2], [$book1, $book2], // SplObjectStorage [$storage1, $storage2], // DOMDocument [ PHPUnit_Util_XML::load(''), PHPUnit_Util_XML::load(''), ], [ PHPUnit_Util_XML::load(''), PHPUnit_Util_XML::load(''), ], [ PHPUnit_Util_XML::load(''), PHPUnit_Util_XML::load(''), ], [ PHPUnit_Util_XML::load("\n \n"), PHPUnit_Util_XML::load(''), ], [ new DateTime('2013-03-29 04:13:35', new DateTimeZone('America/New_York')), new DateTime('2013-03-29 04:13:35', new DateTimeZone('America/New_York')), ], [ new DateTime('2013-03-29 04:13:35', new DateTimeZone('America/New_York')), new DateTime('2013-03-29 04:13:25', new DateTimeZone('America/New_York')), 10 ], [ new DateTime('2013-03-29 04:13:35', new DateTimeZone('America/New_York')), new DateTime('2013-03-29 04:14:40', new DateTimeZone('America/New_York')), 65 ], [ new DateTime('2013-03-29', new DateTimeZone('America/New_York')), new DateTime('2013-03-29', new DateTimeZone('America/New_York')), ], [ new DateTime('2013-03-29 04:13:35', new DateTimeZone('America/New_York')), new DateTime('2013-03-29 03:13:35', new DateTimeZone('America/Chicago')), ], [ new DateTime('2013-03-29 04:13:35', new DateTimeZone('America/New_York')), new DateTime('2013-03-29 03:13:49', new DateTimeZone('America/Chicago')), 15 ], [ new DateTime('2013-03-30', new DateTimeZone('America/New_York')), new DateTime('2013-03-29 23:00:00', new DateTimeZone('America/Chicago')), ], [ new DateTime('2013-03-30', new DateTimeZone('America/New_York')), new DateTime('2013-03-29 23:01:30', new DateTimeZone('America/Chicago')), 100 ], [ new DateTime('@1364616000'), new DateTime('2013-03-29 23:00:00', new DateTimeZone('America/Chicago')), ], [ new DateTime('2013-03-29T05:13:35-0500'), new DateTime('2013-03-29T04:13:35-0600'), ], // Exception //array(new Exception('Exception 1'), new Exception('Exception 1')), // mixed types [0, '0'], ['0', 0], [2.3, '2.3'], ['2.3', 2.3], [(string) (1 / 3), 1 - 2 / 3], [1 / 3, (string) (1 - 2 / 3)], ['string representation', new ClassWithToString], [new ClassWithToString, 'string representation'], ]; } public function equalProvider() { // same |= equal return array_merge($this->equalValues(), $this->sameValues()); } public function notEqualProvider() { return $this->notEqualValues(); } public function sameProvider() { return $this->sameValues(); } public function notSameProvider() { // not equal |= not same // equal, ¬same |= not same return array_merge($this->notEqualValues(), $this->equalValues()); } /** * @dataProvider equalProvider */ public function testAssertEqualsSucceeds($a, $b, $delta = 0.0, $canonicalize = false, $ignoreCase = false) { $this->assertEquals($a, $b, '', $delta, 10, $canonicalize, $ignoreCase); } /** * @dataProvider notEqualProvider */ public function testAssertEqualsFails($a, $b, $delta = 0.0, $canonicalize = false, $ignoreCase = false) { try { $this->assertEquals($a, $b, '', $delta, 10, $canonicalize, $ignoreCase); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } /** * @dataProvider notEqualProvider */ public function testAssertNotEqualsSucceeds($a, $b, $delta = 0.0, $canonicalize = false, $ignoreCase = false) { $this->assertNotEquals($a, $b, '', $delta, 10, $canonicalize, $ignoreCase); } /** * @dataProvider equalProvider */ public function testAssertNotEqualsFails($a, $b, $delta = 0.0, $canonicalize = false, $ignoreCase = false) { try { $this->assertNotEquals($a, $b, '', $delta, 10, $canonicalize, $ignoreCase); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } /** * @dataProvider sameProvider */ public function testAssertSameSucceeds($a, $b) { $this->assertSame($a, $b); } /** * @dataProvider notSameProvider */ public function testAssertSameFails($a, $b) { try { $this->assertSame($a, $b); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } /** * @dataProvider notSameProvider */ public function testAssertNotSameSucceeds($a, $b) { $this->assertNotSame($a, $b); } /** * @dataProvider sameProvider */ public function testAssertNotSameFails($a, $b) { try { $this->assertNotSame($a, $b); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertXmlFileEqualsXmlFile() { $this->assertXmlFileEqualsXmlFile( $this->filesDirectory . 'foo.xml', $this->filesDirectory . 'foo.xml' ); try { $this->assertXmlFileEqualsXmlFile( $this->filesDirectory . 'foo.xml', $this->filesDirectory . 'bar.xml' ); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertXmlFileNotEqualsXmlFile() { $this->assertXmlFileNotEqualsXmlFile( $this->filesDirectory . 'foo.xml', $this->filesDirectory . 'bar.xml' ); try { $this->assertXmlFileNotEqualsXmlFile( $this->filesDirectory . 'foo.xml', $this->filesDirectory . 'foo.xml' ); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertXmlStringEqualsXmlFile() { $this->assertXmlStringEqualsXmlFile( $this->filesDirectory . 'foo.xml', file_get_contents($this->filesDirectory . 'foo.xml') ); try { $this->assertXmlStringEqualsXmlFile( $this->filesDirectory . 'foo.xml', file_get_contents($this->filesDirectory . 'bar.xml') ); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testXmlStringNotEqualsXmlFile() { $this->assertXmlStringNotEqualsXmlFile( $this->filesDirectory . 'foo.xml', file_get_contents($this->filesDirectory . 'bar.xml') ); try { $this->assertXmlStringNotEqualsXmlFile( $this->filesDirectory . 'foo.xml', file_get_contents($this->filesDirectory . 'foo.xml') ); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertXmlStringEqualsXmlString() { $this->assertXmlStringEqualsXmlString('', ''); try { $this->assertXmlStringEqualsXmlString('', ''); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } /** * @expectedException PHPUnit_Framework_Exception * @ticket 1860 */ public function testAssertXmlStringEqualsXmlString2() { $this->assertXmlStringEqualsXmlString('', ''); } /** * @ticket 1860 */ public function testAssertXmlStringEqualsXmlString3() { $expected = << XML; $actual = << XML; $this->assertXmlStringEqualsXmlString($expected, $actual); } public function testAssertXmlStringNotEqualsXmlString() { $this->assertXmlStringNotEqualsXmlString('', ''); try { $this->assertXmlStringNotEqualsXmlString('', ''); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testXMLStructureIsSame() { $expected = new DOMDocument; $expected->load($this->filesDirectory . 'structureExpected.xml'); $actual = new DOMDocument; $actual->load($this->filesDirectory . 'structureExpected.xml'); $this->assertEqualXMLStructure( $expected->firstChild, $actual->firstChild, true ); } /** * @expectedException PHPUnit_Framework_ExpectationFailedException */ public function testXMLStructureWrongNumberOfAttributes() { $expected = new DOMDocument; $expected->load($this->filesDirectory . 'structureExpected.xml'); $actual = new DOMDocument; $actual->load($this->filesDirectory . 'structureWrongNumberOfAttributes.xml'); $this->assertEqualXMLStructure( $expected->firstChild, $actual->firstChild, true ); } /** * @expectedException PHPUnit_Framework_ExpectationFailedException */ public function testXMLStructureWrongNumberOfNodes() { $expected = new DOMDocument; $expected->load($this->filesDirectory . 'structureExpected.xml'); $actual = new DOMDocument; $actual->load($this->filesDirectory . 'structureWrongNumberOfNodes.xml'); $this->assertEqualXMLStructure( $expected->firstChild, $actual->firstChild, true ); } public function testXMLStructureIsSameButDataIsNot() { $expected = new DOMDocument; $expected->load($this->filesDirectory . 'structureExpected.xml'); $actual = new DOMDocument; $actual->load($this->filesDirectory . 'structureIsSameButDataIsNot.xml'); $this->assertEqualXMLStructure( $expected->firstChild, $actual->firstChild, true ); } public function testXMLStructureAttributesAreSameButValuesAreNot() { $expected = new DOMDocument; $expected->load($this->filesDirectory . 'structureExpected.xml'); $actual = new DOMDocument; $actual->load($this->filesDirectory . 'structureAttributesAreSameButValuesAreNot.xml'); $this->assertEqualXMLStructure( $expected->firstChild, $actual->firstChild, true ); } public function testXMLStructureIgnoreTextNodes() { $expected = new DOMDocument; $expected->load($this->filesDirectory . 'structureExpected.xml'); $actual = new DOMDocument; $actual->load($this->filesDirectory . 'structureIgnoreTextNodes.xml'); $this->assertEqualXMLStructure( $expected->firstChild, $actual->firstChild, true ); } public function testAssertStringEqualsNumeric() { $this->assertEquals('0', 0); try { $this->assertEquals('0', 1); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertStringEqualsNumeric2() { $this->assertNotEquals('A', 0); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertIsReadableThrowsException() { $this->assertIsReadable(null); } public function testAssertIsReadable() { $this->assertIsReadable(__FILE__); try { $this->assertIsReadable(__DIR__ . DIRECTORY_SEPARATOR . 'NotExisting'); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertNotIsReadableThrowsException() { $this->assertNotIsReadable(null); } public function testAssertNotIsReadable() { try { $this->assertNotIsReadable(__FILE__); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertIsWritableThrowsException() { $this->assertIsWritable(null); } public function testAssertIsWritable() { $this->assertIsWritable(__FILE__); try { $this->assertIsWritable(__DIR__ . DIRECTORY_SEPARATOR . 'NotExisting'); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertNotIsWritableThrowsException() { $this->assertNotIsWritable(null); } public function testAssertNotIsWritable() { try { $this->assertNotIsWritable(__FILE__); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertDirectoryExistsThrowsException() { $this->assertDirectoryExists(null); } public function testAssertDirectoryExists() { $this->assertDirectoryExists(__DIR__); try { $this->assertDirectoryExists(__DIR__ . DIRECTORY_SEPARATOR . 'NotExisting'); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertDirectoryNotExistsThrowsException() { $this->assertDirectoryNotExists(null); } public function testAssertDirectoryNotExists() { $this->assertDirectoryNotExists(__DIR__ . DIRECTORY_SEPARATOR . 'NotExisting'); try { $this->assertDirectoryNotExists(__DIR__); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertDirectoryIsReadableThrowsException() { $this->assertDirectoryIsReadable(null); } public function testAssertDirectoryIsReadable() { $this->assertDirectoryIsReadable(__DIR__); try { $this->assertDirectoryIsReadable(__DIR__ . DIRECTORY_SEPARATOR . 'NotExisting'); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertDirectoryNotIsReadableThrowsException() { $this->assertDirectoryNotIsReadable(null); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertDirectoryIsWritableThrowsException() { $this->assertDirectoryIsWritable(null); } public function testAssertDirectoryIsWritable() { $this->assertDirectoryIsWritable(__DIR__); try { $this->assertDirectoryIsWritable(__DIR__ . DIRECTORY_SEPARATOR . 'NotExisting'); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertDirectoryNotIsWritableThrowsException() { $this->assertDirectoryNotIsWritable(null); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertFileExistsThrowsException() { $this->assertFileExists(null); } public function testAssertFileExists() { $this->assertFileExists(__FILE__); try { $this->assertFileExists(__DIR__ . DIRECTORY_SEPARATOR . 'NotExisting'); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertFileNotExistsThrowsException() { $this->assertFileNotExists(null); } public function testAssertFileNotExists() { $this->assertFileNotExists(__DIR__ . DIRECTORY_SEPARATOR . 'NotExisting'); try { $this->assertFileNotExists(__FILE__); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertFileIsReadableThrowsException() { $this->assertFileIsReadable(null); } public function testAssertFileIsReadable() { $this->assertFileIsReadable(__FILE__); try { $this->assertFileIsReadable(__DIR__ . DIRECTORY_SEPARATOR . 'NotExisting'); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertFileNotIsReadableThrowsException() { $this->assertFileNotIsReadable(null); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertFileIsWritableThrowsException() { $this->assertFileIsWritable(null); } public function testAssertFileIsWritable() { $this->assertFileIsWritable(__FILE__); try { $this->assertFileIsWritable(__DIR__ . DIRECTORY_SEPARATOR . 'NotExisting'); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertFileNotIsWritableThrowsException() { $this->assertFileNotIsWritable(null); } public function testAssertObjectHasAttribute() { $o = new Author('Terry Pratchett'); $this->assertObjectHasAttribute('name', $o); try { $this->assertObjectHasAttribute('foo', $o); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertObjectNotHasAttribute() { $o = new Author('Terry Pratchett'); $this->assertObjectNotHasAttribute('foo', $o); try { $this->assertObjectNotHasAttribute('name', $o); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertFinite() { $this->assertFinite(1); try { $this->assertFinite(INF); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertInfinite() { $this->assertInfinite(INF); try { $this->assertInfinite(1); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertNan() { $this->assertNan(NAN); try { $this->assertNan(1); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertNull() { $this->assertNull(null); try { $this->assertNull(new stdClass); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertNotNull() { $this->assertNotNull(new stdClass); try { $this->assertNotNull(null); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertTrue() { $this->assertTrue(true); try { $this->assertTrue(false); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertNotTrue() { $this->assertNotTrue(false); $this->assertNotTrue(1); $this->assertNotTrue('true'); try { $this->assertNotTrue(true); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertFalse() { $this->assertFalse(false); try { $this->assertFalse(true); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertNotFalse() { $this->assertNotFalse(true); $this->assertNotFalse(0); $this->assertNotFalse(''); try { $this->assertNotFalse(false); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertRegExpThrowsException() { $this->assertRegExp(null, null); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertRegExpThrowsException2() { $this->assertRegExp('', null); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertNotRegExpThrowsException() { $this->assertNotRegExp(null, null); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertNotRegExpThrowsException2() { $this->assertNotRegExp('', null); } public function testAssertRegExp() { $this->assertRegExp('/foo/', 'foobar'); try { $this->assertRegExp('/foo/', 'bar'); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertNotRegExp() { $this->assertNotRegExp('/foo/', 'bar'); try { $this->assertNotRegExp('/foo/', 'foobar'); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertSame() { $o = new stdClass; $this->assertSame($o, $o); try { $this->assertSame( new stdClass, new stdClass ); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertSame2() { $this->assertSame(true, true); $this->assertSame(false, false); try { $this->assertSame(true, false); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertNotSame() { $this->assertNotSame( new stdClass, null ); $this->assertNotSame( null, new stdClass ); $this->assertNotSame( new stdClass, new stdClass ); $o = new stdClass; try { $this->assertNotSame($o, $o); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertNotSame2() { $this->assertNotSame(true, false); $this->assertNotSame(false, true); try { $this->assertNotSame(true, true); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertNotSameFailsNull() { try { $this->assertNotSame(null, null); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testGreaterThan() { $this->assertGreaterThan(1, 2); try { $this->assertGreaterThan(2, 1); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAttributeGreaterThan() { $this->assertAttributeGreaterThan( 1, 'bar', new ClassWithNonPublicAttributes ); try { $this->assertAttributeGreaterThan( 1, 'foo', new ClassWithNonPublicAttributes ); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testGreaterThanOrEqual() { $this->assertGreaterThanOrEqual(1, 2); try { $this->assertGreaterThanOrEqual(2, 1); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAttributeGreaterThanOrEqual() { $this->assertAttributeGreaterThanOrEqual( 1, 'bar', new ClassWithNonPublicAttributes ); try { $this->assertAttributeGreaterThanOrEqual( 2, 'foo', new ClassWithNonPublicAttributes ); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testLessThan() { $this->assertLessThan(2, 1); try { $this->assertLessThan(1, 2); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAttributeLessThan() { $this->assertAttributeLessThan( 2, 'foo', new ClassWithNonPublicAttributes ); try { $this->assertAttributeLessThan( 1, 'bar', new ClassWithNonPublicAttributes ); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testLessThanOrEqual() { $this->assertLessThanOrEqual(2, 1); try { $this->assertLessThanOrEqual(1, 2); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAttributeLessThanOrEqual() { $this->assertAttributeLessThanOrEqual( 2, 'foo', new ClassWithNonPublicAttributes ); try { $this->assertAttributeLessThanOrEqual( 1, 'bar', new ClassWithNonPublicAttributes ); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testReadAttribute() { $obj = new ClassWithNonPublicAttributes; $this->assertEquals('foo', $this->readAttribute($obj, 'publicAttribute')); $this->assertEquals('bar', $this->readAttribute($obj, 'protectedAttribute')); $this->assertEquals('baz', $this->readAttribute($obj, 'privateAttribute')); $this->assertEquals('bar', $this->readAttribute($obj, 'protectedParentAttribute')); //$this->assertEquals('bar', $this->readAttribute($obj, 'privateParentAttribute')); } public function testReadAttribute2() { $this->assertEquals('foo', $this->readAttribute('ClassWithNonPublicAttributes', 'publicStaticAttribute')); $this->assertEquals('bar', $this->readAttribute('ClassWithNonPublicAttributes', 'protectedStaticAttribute')); $this->assertEquals('baz', $this->readAttribute('ClassWithNonPublicAttributes', 'privateStaticAttribute')); $this->assertEquals('foo', $this->readAttribute('ClassWithNonPublicAttributes', 'protectedStaticParentAttribute')); $this->assertEquals('foo', $this->readAttribute('ClassWithNonPublicAttributes', 'privateStaticParentAttribute')); } /** * @expectedException PHPUnit_Framework_Exception */ public function testReadAttribute3() { $this->readAttribute('StdClass', null); } /** * @expectedException PHPUnit_Framework_Exception */ public function testReadAttribute4() { $this->readAttribute('NotExistingClass', 'foo'); } /** * @expectedException PHPUnit_Framework_Exception */ public function testReadAttribute5() { $this->readAttribute(null, 'foo'); } /** * @expectedException PHPUnit_Framework_Exception */ public function testReadAttributeIfAttributeNameIsNotValid() { $this->readAttribute('StdClass', '2'); } /** * @expectedException PHPUnit_Framework_Exception */ public function testGetStaticAttributeRaisesExceptionForInvalidFirstArgument() { $this->getStaticAttribute(null, 'foo'); } /** * @expectedException PHPUnit_Framework_Exception */ public function testGetStaticAttributeRaisesExceptionForInvalidFirstArgument2() { $this->getStaticAttribute('NotExistingClass', 'foo'); } /** * @expectedException PHPUnit_Framework_Exception */ public function testGetStaticAttributeRaisesExceptionForInvalidSecondArgument() { $this->getStaticAttribute('stdClass', null); } /** * @expectedException PHPUnit_Framework_Exception */ public function testGetStaticAttributeRaisesExceptionForInvalidSecondArgument2() { $this->getStaticAttribute('stdClass', '0'); } /** * @expectedException PHPUnit_Framework_Exception */ public function testGetStaticAttributeRaisesExceptionForInvalidSecondArgument3() { $this->getStaticAttribute('stdClass', 'foo'); } /** * @expectedException PHPUnit_Framework_Exception */ public function testGetObjectAttributeRaisesExceptionForInvalidFirstArgument() { $this->getObjectAttribute(null, 'foo'); } /** * @expectedException PHPUnit_Framework_Exception */ public function testGetObjectAttributeRaisesExceptionForInvalidSecondArgument() { $this->getObjectAttribute(new stdClass, null); } /** * @expectedException PHPUnit_Framework_Exception */ public function testGetObjectAttributeRaisesExceptionForInvalidSecondArgument2() { $this->getObjectAttribute(new stdClass, '0'); } /** * @expectedException PHPUnit_Framework_Exception */ public function testGetObjectAttributeRaisesExceptionForInvalidSecondArgument3() { $this->getObjectAttribute(new stdClass, 'foo'); } public function testGetObjectAttributeWorksForInheritedAttributes() { $this->assertEquals( 'bar', $this->getObjectAttribute(new ClassWithNonPublicAttributes, 'privateParentAttribute') ); } public function testAssertPublicAttributeContains() { $obj = new ClassWithNonPublicAttributes; $this->assertAttributeContains('foo', 'publicArray', $obj); try { $this->assertAttributeContains('bar', 'publicArray', $obj); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertPublicAttributeContainsOnly() { $obj = new ClassWithNonPublicAttributes; $this->assertAttributeContainsOnly('string', 'publicArray', $obj); try { $this->assertAttributeContainsOnly('integer', 'publicArray', $obj); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertPublicAttributeNotContains() { $obj = new ClassWithNonPublicAttributes; $this->assertAttributeNotContains('bar', 'publicArray', $obj); try { $this->assertAttributeNotContains('foo', 'publicArray', $obj); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertPublicAttributeNotContainsOnly() { $obj = new ClassWithNonPublicAttributes; $this->assertAttributeNotContainsOnly('integer', 'publicArray', $obj); try { $this->assertAttributeNotContainsOnly('string', 'publicArray', $obj); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertProtectedAttributeContains() { $obj = new ClassWithNonPublicAttributes; $this->assertAttributeContains('bar', 'protectedArray', $obj); try { $this->assertAttributeContains('foo', 'protectedArray', $obj); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertProtectedAttributeNotContains() { $obj = new ClassWithNonPublicAttributes; $this->assertAttributeNotContains('foo', 'protectedArray', $obj); try { $this->assertAttributeNotContains('bar', 'protectedArray', $obj); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertPrivateAttributeContains() { $obj = new ClassWithNonPublicAttributes; $this->assertAttributeContains('baz', 'privateArray', $obj); try { $this->assertAttributeContains('foo', 'privateArray', $obj); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertPrivateAttributeNotContains() { $obj = new ClassWithNonPublicAttributes; $this->assertAttributeNotContains('foo', 'privateArray', $obj); try { $this->assertAttributeNotContains('baz', 'privateArray', $obj); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertAttributeContainsNonObject() { $obj = new ClassWithNonPublicAttributes; $this->assertAttributeContains(true, 'privateArray', $obj); try { $this->assertAttributeContains(true, 'privateArray', $obj, '', false, true, true); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertAttributeNotContainsNonObject() { $obj = new ClassWithNonPublicAttributes; $this->assertAttributeNotContains(true, 'privateArray', $obj, '', false, true, true); try { $this->assertAttributeNotContains(true, 'privateArray', $obj); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertPublicAttributeEquals() { $obj = new ClassWithNonPublicAttributes; $this->assertAttributeEquals('foo', 'publicAttribute', $obj); try { $this->assertAttributeEquals('bar', 'publicAttribute', $obj); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertPublicAttributeNotEquals() { $obj = new ClassWithNonPublicAttributes; $this->assertAttributeNotEquals('bar', 'publicAttribute', $obj); try { $this->assertAttributeNotEquals('foo', 'publicAttribute', $obj); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertPublicAttributeSame() { $obj = new ClassWithNonPublicAttributes; $this->assertAttributeSame('foo', 'publicAttribute', $obj); try { $this->assertAttributeSame('bar', 'publicAttribute', $obj); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertPublicAttributeNotSame() { $obj = new ClassWithNonPublicAttributes; $this->assertAttributeNotSame('bar', 'publicAttribute', $obj); try { $this->assertAttributeNotSame('foo', 'publicAttribute', $obj); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertProtectedAttributeEquals() { $obj = new ClassWithNonPublicAttributes; $this->assertAttributeEquals('bar', 'protectedAttribute', $obj); try { $this->assertAttributeEquals('foo', 'protectedAttribute', $obj); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertProtectedAttributeNotEquals() { $obj = new ClassWithNonPublicAttributes; $this->assertAttributeNotEquals('foo', 'protectedAttribute', $obj); try { $this->assertAttributeNotEquals('bar', 'protectedAttribute', $obj); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertPrivateAttributeEquals() { $obj = new ClassWithNonPublicAttributes; $this->assertAttributeEquals('baz', 'privateAttribute', $obj); try { $this->assertAttributeEquals('foo', 'privateAttribute', $obj); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertPrivateAttributeNotEquals() { $obj = new ClassWithNonPublicAttributes; $this->assertAttributeNotEquals('foo', 'privateAttribute', $obj); try { $this->assertAttributeNotEquals('baz', 'privateAttribute', $obj); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertPublicStaticAttributeEquals() { $this->assertAttributeEquals('foo', 'publicStaticAttribute', 'ClassWithNonPublicAttributes'); try { $this->assertAttributeEquals('bar', 'publicStaticAttribute', 'ClassWithNonPublicAttributes'); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertPublicStaticAttributeNotEquals() { $this->assertAttributeNotEquals('bar', 'publicStaticAttribute', 'ClassWithNonPublicAttributes'); try { $this->assertAttributeNotEquals('foo', 'publicStaticAttribute', 'ClassWithNonPublicAttributes'); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertProtectedStaticAttributeEquals() { $this->assertAttributeEquals('bar', 'protectedStaticAttribute', 'ClassWithNonPublicAttributes'); try { $this->assertAttributeEquals('foo', 'protectedStaticAttribute', 'ClassWithNonPublicAttributes'); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertProtectedStaticAttributeNotEquals() { $this->assertAttributeNotEquals('foo', 'protectedStaticAttribute', 'ClassWithNonPublicAttributes'); try { $this->assertAttributeNotEquals('bar', 'protectedStaticAttribute', 'ClassWithNonPublicAttributes'); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertPrivateStaticAttributeEquals() { $this->assertAttributeEquals('baz', 'privateStaticAttribute', 'ClassWithNonPublicAttributes'); try { $this->assertAttributeEquals('foo', 'privateStaticAttribute', 'ClassWithNonPublicAttributes'); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertPrivateStaticAttributeNotEquals() { $this->assertAttributeNotEquals('foo', 'privateStaticAttribute', 'ClassWithNonPublicAttributes'); try { $this->assertAttributeNotEquals('baz', 'privateStaticAttribute', 'ClassWithNonPublicAttributes'); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertClassHasAttributeThrowsException() { $this->assertClassHasAttribute(null, null); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertClassHasAttributeThrowsException2() { $this->assertClassHasAttribute('foo', null); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertClassHasAttributeThrowsExceptionIfAttributeNameIsNotValid() { $this->assertClassHasAttribute('1', 'ClassWithNonPublicAttributes'); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertClassNotHasAttributeThrowsException() { $this->assertClassNotHasAttribute(null, null); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertClassNotHasAttributeThrowsException2() { $this->assertClassNotHasAttribute('foo', null); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertClassNotHasAttributeThrowsExceptionIfAttributeNameIsNotValid() { $this->assertClassNotHasAttribute('1', 'ClassWithNonPublicAttributes'); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertClassHasStaticAttributeThrowsException() { $this->assertClassHasStaticAttribute(null, null); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertClassHasStaticAttributeThrowsException2() { $this->assertClassHasStaticAttribute('foo', null); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertClassHasStaticAttributeThrowsExceptionIfAttributeNameIsNotValid() { $this->assertClassHasStaticAttribute('1', 'ClassWithNonPublicAttributes'); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertClassNotHasStaticAttributeThrowsException() { $this->assertClassNotHasStaticAttribute(null, null); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertClassNotHasStaticAttributeThrowsException2() { $this->assertClassNotHasStaticAttribute('foo', null); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertClassNotHasStaticAttributeThrowsExceptionIfAttributeNameIsNotValid() { $this->assertClassNotHasStaticAttribute('1', 'ClassWithNonPublicAttributes'); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertObjectHasAttributeThrowsException() { $this->assertObjectHasAttribute(null, null); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertObjectHasAttributeThrowsException2() { $this->assertObjectHasAttribute('foo', null); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertObjectHasAttributeThrowsExceptionIfAttributeNameIsNotValid() { $this->assertObjectHasAttribute('1', 'ClassWithNonPublicAttributes'); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertObjectNotHasAttributeThrowsException() { $this->assertObjectNotHasAttribute(null, null); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertObjectNotHasAttributeThrowsException2() { $this->assertObjectNotHasAttribute('foo', null); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertObjectNotHasAttributeThrowsExceptionIfAttributeNameIsNotValid() { $this->assertObjectNotHasAttribute('1', 'ClassWithNonPublicAttributes'); } public function testClassHasPublicAttribute() { $this->assertClassHasAttribute('publicAttribute', 'ClassWithNonPublicAttributes'); try { $this->assertClassHasAttribute('attribute', 'ClassWithNonPublicAttributes'); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testClassNotHasPublicAttribute() { $this->assertClassNotHasAttribute('attribute', 'ClassWithNonPublicAttributes'); try { $this->assertClassNotHasAttribute('publicAttribute', 'ClassWithNonPublicAttributes'); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testClassHasPublicStaticAttribute() { $this->assertClassHasStaticAttribute('publicStaticAttribute', 'ClassWithNonPublicAttributes'); try { $this->assertClassHasStaticAttribute('attribute', 'ClassWithNonPublicAttributes'); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testClassNotHasPublicStaticAttribute() { $this->assertClassNotHasStaticAttribute('attribute', 'ClassWithNonPublicAttributes'); try { $this->assertClassNotHasStaticAttribute('publicStaticAttribute', 'ClassWithNonPublicAttributes'); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testObjectHasPublicAttribute() { $obj = new ClassWithNonPublicAttributes; $this->assertObjectHasAttribute('publicAttribute', $obj); try { $this->assertObjectHasAttribute('attribute', $obj); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testObjectNotHasPublicAttribute() { $obj = new ClassWithNonPublicAttributes; $this->assertObjectNotHasAttribute('attribute', $obj); try { $this->assertObjectNotHasAttribute('publicAttribute', $obj); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testObjectHasOnTheFlyAttribute() { $obj = new stdClass; $obj->foo = 'bar'; $this->assertObjectHasAttribute('foo', $obj); try { $this->assertObjectHasAttribute('bar', $obj); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testObjectNotHasOnTheFlyAttribute() { $obj = new stdClass; $obj->foo = 'bar'; $this->assertObjectNotHasAttribute('bar', $obj); try { $this->assertObjectNotHasAttribute('foo', $obj); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testObjectHasProtectedAttribute() { $obj = new ClassWithNonPublicAttributes; $this->assertObjectHasAttribute('protectedAttribute', $obj); try { $this->assertObjectHasAttribute('attribute', $obj); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testObjectNotHasProtectedAttribute() { $obj = new ClassWithNonPublicAttributes; $this->assertObjectNotHasAttribute('attribute', $obj); try { $this->assertObjectNotHasAttribute('protectedAttribute', $obj); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testObjectHasPrivateAttribute() { $obj = new ClassWithNonPublicAttributes; $this->assertObjectHasAttribute('privateAttribute', $obj); try { $this->assertObjectHasAttribute('attribute', $obj); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testObjectNotHasPrivateAttribute() { $obj = new ClassWithNonPublicAttributes; $this->assertObjectNotHasAttribute('attribute', $obj); try { $this->assertObjectNotHasAttribute('privateAttribute', $obj); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertThatAttributeEquals() { $this->assertThat( new ClassWithNonPublicAttributes, $this->attribute( $this->equalTo('foo'), 'publicAttribute' ) ); } /** * @expectedException PHPUnit_Framework_AssertionFailedError */ public function testAssertThatAttributeEquals2() { $this->assertThat( new ClassWithNonPublicAttributes, $this->attribute( $this->equalTo('bar'), 'publicAttribute' ) ); } public function testAssertThatAttributeEqualTo() { $this->assertThat( new ClassWithNonPublicAttributes, $this->attributeEqualTo('publicAttribute', 'foo') ); } public function testAssertThatAnything() { $this->assertThat('anything', $this->anything()); } public function testAssertThatIsTrue() { $this->assertThat(true, $this->isTrue()); } public function testAssertThatIsFalse() { $this->assertThat(false, $this->isFalse()); } public function testAssertThatIsJson() { $this->assertThat('{}', $this->isJson()); } public function testAssertThatAnythingAndAnything() { $this->assertThat( 'anything', $this->logicalAnd( $this->anything(), $this->anything() ) ); } public function testAssertThatAnythingOrAnything() { $this->assertThat( 'anything', $this->logicalOr( $this->anything(), $this->anything() ) ); } public function testAssertThatAnythingXorNotAnything() { $this->assertThat( 'anything', $this->logicalXor( $this->anything(), $this->logicalNot($this->anything()) ) ); } public function testAssertThatContains() { $this->assertThat(['foo'], $this->contains('foo')); } public function testAssertThatStringContains() { $this->assertThat('barfoobar', $this->stringContains('foo')); } public function testAssertThatContainsOnly() { $this->assertThat(['foo'], $this->containsOnly('string')); } public function testAssertThatContainsOnlyInstancesOf() { $this->assertThat([new Book], $this->containsOnlyInstancesOf('Book')); } public function testAssertThatArrayHasKey() { $this->assertThat(['foo' => 'bar'], $this->arrayHasKey('foo')); } public function testAssertThatClassHasAttribute() { $this->assertThat( new ClassWithNonPublicAttributes, $this->classHasAttribute('publicAttribute') ); } public function testAssertThatClassHasStaticAttribute() { $this->assertThat( new ClassWithNonPublicAttributes, $this->classHasStaticAttribute('publicStaticAttribute') ); } public function testAssertThatObjectHasAttribute() { $this->assertThat( new ClassWithNonPublicAttributes, $this->objectHasAttribute('publicAttribute') ); } public function testAssertThatEqualTo() { $this->assertThat('foo', $this->equalTo('foo')); } public function testAssertThatIdenticalTo() { $value = new stdClass; $constraint = $this->identicalTo($value); $this->assertThat($value, $constraint); } public function testAssertThatIsInstanceOf() { $this->assertThat(new stdClass, $this->isInstanceOf('StdClass')); } public function testAssertThatIsType() { $this->assertThat('string', $this->isType('string')); } public function testAssertThatIsEmpty() { $this->assertThat([], $this->isEmpty()); } public function testAssertThatFileExists() { $this->assertThat(__FILE__, $this->fileExists()); } public function testAssertThatGreaterThan() { $this->assertThat(2, $this->greaterThan(1)); } public function testAssertThatGreaterThanOrEqual() { $this->assertThat(2, $this->greaterThanOrEqual(1)); } public function testAssertThatLessThan() { $this->assertThat(1, $this->lessThan(2)); } public function testAssertThatLessThanOrEqual() { $this->assertThat(1, $this->lessThanOrEqual(2)); } public function testAssertThatMatchesRegularExpression() { $this->assertThat('foobar', $this->matchesRegularExpression('/foo/')); } public function testAssertThatCallback() { $this->assertThat( null, $this->callback(function ($other) { return true; }) ); } public function testAssertThatCountOf() { $this->assertThat([1], $this->countOf(1)); } public function testAssertFileEquals() { $this->assertFileEquals( $this->filesDirectory . 'foo.xml', $this->filesDirectory . 'foo.xml' ); try { $this->assertFileEquals( $this->filesDirectory . 'foo.xml', $this->filesDirectory . 'bar.xml' ); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertFileNotEquals() { $this->assertFileNotEquals( $this->filesDirectory . 'foo.xml', $this->filesDirectory . 'bar.xml' ); try { $this->assertFileNotEquals( $this->filesDirectory . 'foo.xml', $this->filesDirectory . 'foo.xml' ); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertStringEqualsFile() { $this->assertStringEqualsFile( $this->filesDirectory . 'foo.xml', file_get_contents($this->filesDirectory . 'foo.xml') ); try { $this->assertStringEqualsFile( $this->filesDirectory . 'foo.xml', file_get_contents($this->filesDirectory . 'bar.xml') ); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertStringNotEqualsFile() { $this->assertStringNotEqualsFile( $this->filesDirectory . 'foo.xml', file_get_contents($this->filesDirectory . 'bar.xml') ); try { $this->assertStringNotEqualsFile( $this->filesDirectory . 'foo.xml', file_get_contents($this->filesDirectory . 'foo.xml') ); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertStringStartsWithThrowsException() { $this->assertStringStartsWith(null, null); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertStringStartsWithThrowsException2() { $this->assertStringStartsWith('', null); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertStringStartsNotWithThrowsException() { $this->assertStringStartsNotWith(null, null); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertStringStartsNotWithThrowsException2() { $this->assertStringStartsNotWith('', null); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertStringEndsWithThrowsException() { $this->assertStringEndsWith(null, null); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertStringEndsWithThrowsException2() { $this->assertStringEndsWith('', null); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertStringEndsNotWithThrowsException() { $this->assertStringEndsNotWith(null, null); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertStringEndsNotWithThrowsException2() { $this->assertStringEndsNotWith('', null); } public function testAssertStringStartsWith() { $this->assertStringStartsWith('prefix', 'prefixfoo'); try { $this->assertStringStartsWith('prefix', 'foo'); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertStringStartsNotWith() { $this->assertStringStartsNotWith('prefix', 'foo'); try { $this->assertStringStartsNotWith('prefix', 'prefixfoo'); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertStringEndsWith() { $this->assertStringEndsWith('suffix', 'foosuffix'); try { $this->assertStringEndsWith('suffix', 'foo'); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertStringEndsNotWith() { $this->assertStringEndsNotWith('suffix', 'foo'); try { $this->assertStringEndsNotWith('suffix', 'foosuffix'); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertStringMatchesFormatRaisesExceptionForInvalidFirstArgument() { $this->assertStringMatchesFormat(null, ''); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertStringMatchesFormatRaisesExceptionForInvalidSecondArgument() { $this->assertStringMatchesFormat('', null); } public function testAssertStringMatchesFormat() { $this->assertStringMatchesFormat('*%s*', '***'); } /** * @expectedException PHPUnit_Framework_AssertionFailedError */ public function testAssertStringMatchesFormatFailure() { $this->assertStringMatchesFormat('*%s*', '**'); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertStringNotMatchesFormatRaisesExceptionForInvalidFirstArgument() { $this->assertStringNotMatchesFormat(null, ''); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertStringNotMatchesFormatRaisesExceptionForInvalidSecondArgument() { $this->assertStringNotMatchesFormat('', null); } public function testAssertStringNotMatchesFormat() { $this->assertStringNotMatchesFormat('*%s*', '**'); try { $this->assertStringMatchesFormat('*%s*', '**'); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertEmpty() { $this->assertEmpty([]); try { $this->assertEmpty(['foo']); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertNotEmpty() { $this->assertNotEmpty(['foo']); try { $this->assertNotEmpty([]); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertAttributeEmpty() { $o = new stdClass; $o->a = []; $this->assertAttributeEmpty('a', $o); try { $o->a = ['b']; $this->assertAttributeEmpty('a', $o); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertAttributeNotEmpty() { $o = new stdClass; $o->a = ['b']; $this->assertAttributeNotEmpty('a', $o); try { $o->a = []; $this->assertAttributeNotEmpty('a', $o); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testMarkTestIncomplete() { try { $this->markTestIncomplete('incomplete'); } catch (PHPUnit_Framework_IncompleteTestError $e) { $this->assertEquals('incomplete', $e->getMessage()); return; } $this->fail(); } public function testMarkTestSkipped() { try { $this->markTestSkipped('skipped'); } catch (PHPUnit_Framework_SkippedTestError $e) { $this->assertEquals('skipped', $e->getMessage()); return; } $this->fail(); } public function testAssertCount() { $this->assertCount(2, [1, 2]); try { $this->assertCount(2, [1, 2, 3]); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertCountTraversable() { $this->assertCount(2, new ArrayIterator([1, 2])); try { $this->assertCount(2, new ArrayIterator([1, 2, 3])); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertCountThrowsExceptionIfExpectedCountIsNoInteger() { try { $this->assertCount('a', []); } catch (PHPUnit_Framework_Exception $e) { $this->assertEquals('Argument #1 (No Value) of PHPUnit_Framework_Assert::assertCount() must be a integer', $e->getMessage()); return; } $this->fail(); } public function testAssertCountThrowsExceptionIfElementIsNotCountable() { try { $this->assertCount(2, ''); } catch (PHPUnit_Framework_Exception $e) { $this->assertEquals('Argument #2 (No Value) of PHPUnit_Framework_Assert::assertCount() must be a countable or traversable', $e->getMessage()); return; } $this->fail(); } public function testAssertAttributeCount() { $o = new stdClass; $o->a = []; $this->assertAttributeCount(0, 'a', $o); } public function testAssertNotCount() { $this->assertNotCount(2, [1, 2, 3]); try { $this->assertNotCount(2, [1, 2]); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertNotCountThrowsExceptionIfExpectedCountIsNoInteger() { $this->assertNotCount('a', []); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertNotCountThrowsExceptionIfElementIsNotCountable() { $this->assertNotCount(2, ''); } public function testAssertAttributeNotCount() { $o = new stdClass; $o->a = []; $this->assertAttributeNotCount(1, 'a', $o); } public function testAssertSameSize() { $this->assertSameSize([1, 2], [3, 4]); try { $this->assertSameSize([1, 2], [1, 2, 3]); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertSameSizeThrowsExceptionIfExpectedIsNotCountable() { try { $this->assertSameSize('a', []); } catch (PHPUnit_Framework_Exception $e) { $this->assertEquals('Argument #1 (No Value) of PHPUnit_Framework_Assert::assertSameSize() must be a countable or traversable', $e->getMessage()); return; } $this->fail(); } public function testAssertSameSizeThrowsExceptionIfActualIsNotCountable() { try { $this->assertSameSize([], ''); } catch (PHPUnit_Framework_Exception $e) { $this->assertEquals('Argument #2 (No Value) of PHPUnit_Framework_Assert::assertSameSize() must be a countable or traversable', $e->getMessage()); return; } $this->fail(); } public function testAssertNotSameSize() { $this->assertNotSameSize([1, 2], [1, 2, 3]); try { $this->assertNotSameSize([1, 2], [3, 4]); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertNotSameSizeThrowsExceptionIfExpectedIsNotCountable() { $this->assertNotSameSize('a', []); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertNotSameSizeThrowsExceptionIfActualIsNotCountable() { $this->assertNotSameSize([], ''); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertJsonRaisesExceptionForInvalidArgument() { $this->assertJson(null); } public function testAssertJson() { $this->assertJson('{}'); } public function testAssertJsonStringEqualsJsonString() { $expected = '{"Mascott" : "Tux"}'; $actual = '{"Mascott" : "Tux"}'; $message = 'Given Json strings do not match'; $this->assertJsonStringEqualsJsonString($expected, $actual, $message); } /** * @dataProvider validInvalidJsonDataprovider */ public function testAssertJsonStringEqualsJsonStringErrorRaised($expected, $actual) { try { $this->assertJsonStringEqualsJsonString($expected, $actual); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail('Expected exception not found'); } public function testAssertJsonStringNotEqualsJsonString() { $expected = '{"Mascott" : "Beastie"}'; $actual = '{"Mascott" : "Tux"}'; $message = 'Given Json strings do match'; $this->assertJsonStringNotEqualsJsonString($expected, $actual, $message); } /** * @dataProvider validInvalidJsonDataprovider */ public function testAssertJsonStringNotEqualsJsonStringErrorRaised($expected, $actual) { try { $this->assertJsonStringNotEqualsJsonString($expected, $actual); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail('Expected exception not found'); } public function testAssertJsonStringEqualsJsonFile() { $file = __DIR__ . '/../_files/JsonData/simpleObject.json'; $actual = json_encode(['Mascott' => 'Tux']); $message = ''; $this->assertJsonStringEqualsJsonFile($file, $actual, $message); } public function testAssertJsonStringEqualsJsonFileExpectingExpectationFailedException() { $file = __DIR__ . '/../_files/JsonData/simpleObject.json'; $actual = json_encode(['Mascott' => 'Beastie']); $message = ''; try { $this->assertJsonStringEqualsJsonFile($file, $actual, $message); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->assertEquals( 'Failed asserting that \'{"Mascott":"Beastie"}\' matches JSON string "{"Mascott":"Tux"}".', $e->getMessage() ); return; } $this->fail('Expected Exception not thrown.'); } public function testAssertJsonStringEqualsJsonFileExpectingException() { $file = __DIR__ . '/../_files/JsonData/simpleObject.json'; try { $this->assertJsonStringEqualsJsonFile($file, null); } catch (PHPUnit_Framework_Exception $e) { return; } $this->fail('Expected Exception not thrown.'); } public function testAssertJsonStringNotEqualsJsonFile() { $file = __DIR__ . '/../_files/JsonData/simpleObject.json'; $actual = json_encode(['Mascott' => 'Beastie']); $message = ''; $this->assertJsonStringNotEqualsJsonFile($file, $actual, $message); } public function testAssertJsonStringNotEqualsJsonFileExpectingException() { $file = __DIR__ . '/../_files/JsonData/simpleObject.json'; try { $this->assertJsonStringNotEqualsJsonFile($file, null); } catch (PHPUnit_Framework_Exception $e) { return; } $this->fail('Expected exception not found.'); } public function testAssertJsonFileNotEqualsJsonFile() { $fileExpected = __DIR__ . '/../_files/JsonData/simpleObject.json'; $fileActual = __DIR__ . '/../_files/JsonData/arrayObject.json'; $message = ''; $this->assertJsonFileNotEqualsJsonFile($fileExpected, $fileActual, $message); } public function testAssertJsonFileEqualsJsonFile() { $file = __DIR__ . '/../_files/JsonData/simpleObject.json'; $message = ''; $this->assertJsonFileEqualsJsonFile($file, $file, $message); } public function testAssertInstanceOf() { $this->assertInstanceOf('stdClass', new stdClass); try { $this->assertInstanceOf('Exception', new stdClass); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertInstanceOfThrowsExceptionForInvalidArgument() { $this->assertInstanceOf(null, new stdClass); } public function testAssertAttributeInstanceOf() { $o = new stdClass; $o->a = new stdClass; $this->assertAttributeInstanceOf('stdClass', 'a', $o); } public function testAssertNotInstanceOf() { $this->assertNotInstanceOf('Exception', new stdClass); try { $this->assertNotInstanceOf('stdClass', new stdClass); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertNotInstanceOfThrowsExceptionForInvalidArgument() { $this->assertNotInstanceOf(null, new stdClass); } public function testAssertAttributeNotInstanceOf() { $o = new stdClass; $o->a = new stdClass; $this->assertAttributeNotInstanceOf('Exception', 'a', $o); } public function testAssertInternalType() { $this->assertInternalType('integer', 1); try { $this->assertInternalType('string', 1); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } public function testAssertInternalTypeDouble() { $this->assertInternalType('double', 1.0); try { $this->assertInternalType('double', 1); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertInternalTypeThrowsExceptionForInvalidArgument() { $this->assertInternalType(null, 1); } public function testAssertAttributeInternalType() { $o = new stdClass; $o->a = 1; $this->assertAttributeInternalType('integer', 'a', $o); } public function testAssertNotInternalType() { $this->assertNotInternalType('string', 1); try { $this->assertNotInternalType('integer', 1); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertNotInternalTypeThrowsExceptionForInvalidArgument() { $this->assertNotInternalType(null, 1); } public function testAssertAttributeNotInternalType() { $o = new stdClass; $o->a = 1; $this->assertAttributeNotInternalType('string', 'a', $o); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertStringMatchesFormatFileThrowsExceptionForInvalidArgument() { $this->assertStringMatchesFormatFile('not_existing_file', ''); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertStringMatchesFormatFileThrowsExceptionForInvalidArgument2() { $this->assertStringMatchesFormatFile($this->filesDirectory . 'expectedFileFormat.txt', null); } public function testAssertStringMatchesFormatFile() { $this->assertStringMatchesFormatFile($this->filesDirectory . 'expectedFileFormat.txt', "FOO\n"); try { $this->assertStringMatchesFormatFile($this->filesDirectory . 'expectedFileFormat.txt', "BAR\n"); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertStringNotMatchesFormatFileThrowsExceptionForInvalidArgument() { $this->assertStringNotMatchesFormatFile('not_existing_file', ''); } /** * @expectedException PHPUnit_Framework_Exception */ public function testAssertStringNotMatchesFormatFileThrowsExceptionForInvalidArgument2() { $this->assertStringNotMatchesFormatFile($this->filesDirectory . 'expectedFileFormat.txt', null); } public function testAssertStringNotMatchesFormatFile() { $this->assertStringNotMatchesFormatFile($this->filesDirectory . 'expectedFileFormat.txt', "BAR\n"); try { $this->assertStringNotMatchesFormatFile($this->filesDirectory . 'expectedFileFormat.txt', "FOO\n"); } catch (PHPUnit_Framework_AssertionFailedError $e) { return; } $this->fail(); } /** * @return array */ public static function validInvalidJsonDataprovider() { return [ 'error syntax in expected JSON' => ['{"Mascott"::}', '{"Mascott" : "Tux"}'], 'error UTF-8 in actual JSON' => ['{"Mascott" : "Tux"}', '{"Mascott" : :}'], ]; } } PK!aVobb#tests/Framework/TestFailureTest.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class Framework_TestFailureTest extends PHPUnit_Framework_TestCase { public function testToString() { $test = new self(__FUNCTION__); $exception = new PHPUnit_Framework_Exception('message'); $failure = new PHPUnit_Framework_TestFailure($test, $exception); $this->assertEquals(__METHOD__ . ': message', $failure->toString()); } } PK!U/'tests/Framework/TestImplementorTest.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class Framework_TestImplementorTest extends PHPUnit_Framework_TestCase { public function testSuccessfulRun() { $result = new PHPUnit_Framework_TestResult; $test = new DoubleTestCase(new Success); $test->run($result); $this->assertCount(count($test), $result); $this->assertEquals(0, $result->errorCount()); $this->assertEquals(0, $result->failureCount()); } } PK! tests/Util/XMLTest.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class Util_XMLTest extends PHPUnit_Framework_TestCase { /** * @dataProvider charProvider */ public function testPrepareString($char) { $e = null; $escapedString = PHPUnit_Util_XML::prepareString($char); $xml = "$escapedString"; $dom = new DomDocument('1.0', 'UTF-8'); try { $dom->loadXML($xml); } catch (Exception $e) { } $this->assertNull($e, sprintf( 'PHPUnit_Util_XML::prepareString("\x%02x") should not crash DomDocument', ord($char) )); } public function charProvider() { $data = []; for ($i = 0; $i < 256; $i++) { $data[] = [chr($i)]; } return $data; } /** * @expectedException PHPUnit_Framework_Exception * @expectedExceptionMessage Could not load XML from empty string */ public function testLoadEmptyString() { PHPUnit_Util_XML::load(''); } /** * @expectedException PHPUnit_Framework_Exception * @expectedExceptionMessage Could not load XML from array */ public function testLoadArray() { PHPUnit_Util_XML::load([1, 2, 3]); } /** * @expectedException PHPUnit_Framework_Exception * @expectedExceptionMessage Could not load XML from boolean */ public function testLoadBoolean() { PHPUnit_Util_XML::load(false); } public function testNestedXmlToVariable() { $xml = 'foobar'; $dom = new DOMDocument(); $dom->loadXML($xml); $expected = [ 'a' => [ 'b' => 'foo', ], 'c' => 'bar', ]; $actual = PHPUnit_Util_XML::xmlToVariable($dom->documentElement); $this->assertSame($expected, $actual); } } PK!8tests/Util/GlobalStateTest.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class Util_GlobalStateTest extends PHPUnit_Framework_TestCase { public function testIncludedFilesAsStringSkipsVfsProtocols() { $dir = __DIR__; $files = [ 'phpunit', // The 0 index is not used $dir . '/ConfigurationTest.php', $dir . '/GlobalStateTest.php', 'vfs://' . $dir . '/RegexTest.php', 'phpvfs53e46260465c7://' . $dir . '/TestTest.php', 'file://' . $dir . '/XMLTest.php' ]; $this->assertEquals( "require_once '" . $dir . "/ConfigurationTest.php';\n" . "require_once '" . $dir . "/GlobalStateTest.php';\n" . "require_once 'file://" . $dir . "/XMLTest.php';\n", PHPUnit_Util_GlobalState::processIncludedFilesAsString($files)); } } PK!b7t7ttests/Util/TestTest.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ if (!defined('TEST_FILES_PATH')) { define( 'TEST_FILES_PATH', dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR ); } require TEST_FILES_PATH . 'CoverageNamespacedFunctionTest.php'; require TEST_FILES_PATH . 'NamespaceCoveredFunction.php'; require TEST_FILES_PATH . 'MultipleDataProviderTest.php'; class Util_TestTest extends PHPUnit_Framework_TestCase { /** * @todo Split up in separate tests */ public function testGetExpectedException() { $this->assertArraySubset( ['class' => 'FooBarBaz', 'code' => null, 'message' => ''], PHPUnit_Util_Test::getExpectedException('ExceptionTest', 'testOne') ); $this->assertArraySubset( ['class' => 'Foo_Bar_Baz', 'code' => null, 'message' => ''], PHPUnit_Util_Test::getExpectedException('ExceptionTest', 'testTwo') ); $this->assertArraySubset( ['class' => 'Foo\Bar\Baz', 'code' => null, 'message' => ''], PHPUnit_Util_Test::getExpectedException('ExceptionTest', 'testThree') ); $this->assertArraySubset( ['class' => 'ほげ', 'code' => null, 'message' => ''], PHPUnit_Util_Test::getExpectedException('ExceptionTest', 'testFour') ); $this->assertArraySubset( ['class' => 'Class', 'code' => 1234, 'message' => 'Message'], PHPUnit_Util_Test::getExpectedException('ExceptionTest', 'testFive') ); $this->assertArraySubset( ['class' => 'Class', 'code' => 1234, 'message' => 'Message'], PHPUnit_Util_Test::getExpectedException('ExceptionTest', 'testSix') ); $this->assertArraySubset( ['class' => 'Class', 'code' => 'ExceptionCode', 'message' => 'Message'], PHPUnit_Util_Test::getExpectedException('ExceptionTest', 'testSeven') ); $this->assertArraySubset( ['class' => 'Class', 'code' => 0, 'message' => 'Message'], PHPUnit_Util_Test::getExpectedException('ExceptionTest', 'testEight') ); $this->assertArraySubset( ['class' => 'Class', 'code' => ExceptionTest::ERROR_CODE, 'message' => ExceptionTest::ERROR_MESSAGE], PHPUnit_Util_Test::getExpectedException('ExceptionTest', 'testNine') ); $this->assertArraySubset( ['class' => 'Class', 'code' => null, 'message' => ''], PHPUnit_Util_Test::getExpectedException('ExceptionTest', 'testSingleLine') ); $this->assertArraySubset( ['class' => 'Class', 'code' => My\Space\ExceptionNamespaceTest::ERROR_CODE, 'message' => My\Space\ExceptionNamespaceTest::ERROR_MESSAGE], PHPUnit_Util_Test::getExpectedException('My\Space\ExceptionNamespaceTest', 'testConstants') ); // Ensure the Class::CONST expression is only evaluated when the constant really exists $this->assertArraySubset( ['class' => 'Class', 'code' => 'ExceptionTest::UNKNOWN_CODE_CONSTANT', 'message' => 'ExceptionTest::UNKNOWN_MESSAGE_CONSTANT'], PHPUnit_Util_Test::getExpectedException('ExceptionTest', 'testUnknownConstants') ); $this->assertArraySubset( ['class' => 'Class', 'code' => 'My\Space\ExceptionNamespaceTest::UNKNOWN_CODE_CONSTANT', 'message' => 'My\Space\ExceptionNamespaceTest::UNKNOWN_MESSAGE_CONSTANT'], PHPUnit_Util_Test::getExpectedException('My\Space\ExceptionNamespaceTest', 'testUnknownConstants') ); } public function testGetExpectedRegExp() { $this->assertArraySubset( ['message_regex' => '#regex#'], PHPUnit_Util_Test::getExpectedException('ExceptionTest', 'testWithRegexMessage') ); $this->assertArraySubset( ['message_regex' => '#regex#'], PHPUnit_Util_Test::getExpectedException('ExceptionTest', 'testWithRegexMessageFromClassConstant') ); $this->assertArraySubset( ['message_regex' => 'ExceptionTest::UNKNOWN_MESSAGE_REGEX_CONSTANT'], PHPUnit_Util_Test::getExpectedException('ExceptionTest', 'testWithUnknowRegexMessageFromClassConstant') ); } /** * @dataProvider requirementsProvider */ public function testGetRequirements($test, $result) { $this->assertEquals( $result, PHPUnit_Util_Test::getRequirements('RequirementsTest', $test) ); } public function requirementsProvider() { return [ ['testOne', []], ['testTwo', ['PHPUnit' => ['version' => '1.0', 'operator' => '']]], ['testThree', ['PHP' => ['version' => '2.0', 'operator' => '']]], ['testFour', [ 'PHPUnit' => ['version' => '2.0', 'operator' => ''], 'PHP' => ['version' => '1.0', 'operator' => '']] ], ['testFive', ['PHP' => ['version' => '5.4.0RC6', 'operator' => '']]], ['testSix', ['PHP' => ['version' => '5.4.0-alpha1', 'operator' => '']]], ['testSeven', ['PHP' => ['version' => '5.4.0beta2', 'operator' => '']]], ['testEight', ['PHP' => ['version' => '5.4-dev', 'operator' => '']]], ['testNine', ['functions' => ['testFunc']]], ['testTen', ['extensions' => ['testExt']]], ['testEleven', ['OS' => '/Linux/i']], [ 'testSpace', [ 'extensions' => ['spl'], 'OS' => '/.*/i' ] ], [ 'testAllPossibleRequirements', [ 'PHP' => ['version' => '99-dev', 'operator' => ''], 'PHPUnit' => ['version' => '9-dev', 'operator' => ''], 'OS' => '/DOESNOTEXIST/i', 'functions' => [ 'testFuncOne', 'testFuncTwo', ], 'extensions' => [ 'testExtOne', 'testExtTwo', 'testExtThree', ], 'extension_versions' => [ 'testExtThree' => ['version' => '2.0', 'operator' => ''] ] ] ], ['testSpecificExtensionVersion', [ 'extension_versions' => ['testExt' => ['version' => '1.8.0', 'operator' => '']], 'extensions' => ['testExt'] ] ], ['testPHPVersionOperatorLessThan', [ 'PHP' => ['version' => '5.4', 'operator' => '<'] ] ], ['testPHPVersionOperatorLessThanEquals', [ 'PHP' => ['version' => '5.4', 'operator' => '<='] ] ], ['testPHPVersionOperatorGreaterThan', [ 'PHP' => ['version' => '99', 'operator' => '>'] ] ], ['testPHPVersionOperatorGreaterThanEquals', [ 'PHP' => ['version' => '99', 'operator' => '>='] ] ], ['testPHPVersionOperatorEquals', [ 'PHP' => ['version' => '5.4', 'operator' => '='] ] ], ['testPHPVersionOperatorDoubleEquals', [ 'PHP' => ['version' => '5.4', 'operator' => '=='] ] ], ['testPHPVersionOperatorBangEquals', [ 'PHP' => ['version' => '99', 'operator' => '!='] ] ], ['testPHPVersionOperatorNotEquals', [ 'PHP' => ['version' => '99', 'operator' => '<>'] ] ], ['testPHPVersionOperatorNoSpace', [ 'PHP' => ['version' => '99', 'operator' => '>='] ] ], ['testPHPUnitVersionOperatorLessThan', [ 'PHPUnit' => ['version' => '1.0', 'operator' => '<'] ] ], ['testPHPUnitVersionOperatorLessThanEquals', [ 'PHPUnit' => ['version' => '1.0', 'operator' => '<='] ] ], ['testPHPUnitVersionOperatorGreaterThan', [ 'PHPUnit' => ['version' => '99', 'operator' => '>'] ] ], ['testPHPUnitVersionOperatorGreaterThanEquals', [ 'PHPUnit' => ['version' => '99', 'operator' => '>='] ] ], ['testPHPUnitVersionOperatorEquals', [ 'PHPUnit' => ['version' => '1.0', 'operator' => '='] ] ], ['testPHPUnitVersionOperatorDoubleEquals', [ 'PHPUnit' => ['version' => '1.0', 'operator' => '=='] ] ], ['testPHPUnitVersionOperatorBangEquals', [ 'PHPUnit' => ['version' => '99', 'operator' => '!='] ] ], ['testPHPUnitVersionOperatorNotEquals', [ 'PHPUnit' => ['version' => '99', 'operator' => '<>'] ] ], ['testPHPUnitVersionOperatorNoSpace', [ 'PHPUnit' => ['version' => '99', 'operator' => '>='] ] ], ['testExtensionVersionOperatorLessThanEquals', [ 'extensions' => ['testExtOne'], 'extension_versions' => ['testExtOne' => ['version' => '1.0', 'operator' => '<=']] ] ], ['testExtensionVersionOperatorGreaterThan', [ 'extensions' => ['testExtOne'], 'extension_versions' => ['testExtOne' => ['version' => '99', 'operator' => '>']] ] ], ['testExtensionVersionOperatorGreaterThanEquals', [ 'extensions' => ['testExtOne'], 'extension_versions' => ['testExtOne' => ['version' => '99', 'operator' => '>=']] ] ], ['testExtensionVersionOperatorEquals', [ 'extensions' => ['testExtOne'], 'extension_versions' => ['testExtOne' => ['version' => '1.0', 'operator' => '=']] ] ], ['testExtensionVersionOperatorDoubleEquals', [ 'extensions' => ['testExtOne'], 'extension_versions' => ['testExtOne' => ['version' => '1.0', 'operator' => '==']] ] ], ['testExtensionVersionOperatorBangEquals', [ 'extensions' => ['testExtOne'], 'extension_versions' => ['testExtOne' => ['version' => '99', 'operator' => '!=']] ] ], ['testExtensionVersionOperatorNotEquals', [ 'extensions' => ['testExtOne'], 'extension_versions' => ['testExtOne' => ['version' => '99', 'operator' => '<>']] ] ], ['testExtensionVersionOperatorNoSpace', [ 'extensions' => ['testExtOne'], 'extension_versions' => ['testExtOne' => ['version' => '99', 'operator' => '>=']] ] ], ]; } public function testGetRequirementsMergesClassAndMethodDocBlocks() { $expectedAnnotations = [ 'PHP' => ['version' => '5.4', 'operator' => ''], 'PHPUnit' => ['version' => '3.7', 'operator' => ''], 'OS' => '/WINNT/i', 'functions' => [ 'testFuncClass', 'testFuncMethod', ], 'extensions' => [ 'testExtClass', 'testExtMethod', ] ]; $this->assertEquals( $expectedAnnotations, PHPUnit_Util_Test::getRequirements('RequirementsClassDocBlockTest', 'testMethod') ); } /** * @dataProvider missingRequirementsProvider */ public function testGetMissingRequirements($test, $result) { $this->assertEquals( $result, PHPUnit_Util_Test::getMissingRequirements('RequirementsTest', $test) ); } public function missingRequirementsProvider() { return [ ['testOne', []], ['testNine', ['Function testFunc is required.']], ['testTen', ['Extension testExt is required.']], ['testAlwaysSkip', ['PHPUnit >= 1111111 is required.']], ['testAlwaysSkip2', ['PHP >= 9999999 is required.']], ['testAlwaysSkip3', ['Operating system matching /DOESNOTEXIST/i is required.']], ['testAllPossibleRequirements', [ 'PHP >= 99-dev is required.', 'PHPUnit >= 9-dev is required.', 'Operating system matching /DOESNOTEXIST/i is required.', 'Function testFuncOne is required.', 'Function testFuncTwo is required.', 'Extension testExtOne is required.', 'Extension testExtTwo is required.', 'Extension testExtThree >= 2.0 is required.', ]], ['testPHPVersionOperatorLessThan', ['PHP < 5.4 is required.']], ['testPHPVersionOperatorLessThanEquals', ['PHP <= 5.4 is required.']], ['testPHPVersionOperatorGreaterThan', ['PHP > 99 is required.']], ['testPHPVersionOperatorGreaterThanEquals', ['PHP >= 99 is required.']], ['testPHPVersionOperatorNoSpace', ['PHP >= 99 is required.']], ['testPHPVersionOperatorEquals', ['PHP = 5.4 is required.']], ['testPHPVersionOperatorDoubleEquals', ['PHP == 5.4 is required.']], ['testPHPUnitVersionOperatorLessThan', ['PHPUnit < 1.0 is required.']], ['testPHPUnitVersionOperatorLessThanEquals', ['PHPUnit <= 1.0 is required.']], ['testPHPUnitVersionOperatorGreaterThan', ['PHPUnit > 99 is required.']], ['testPHPUnitVersionOperatorGreaterThanEquals', ['PHPUnit >= 99 is required.']], ['testPHPUnitVersionOperatorEquals', ['PHPUnit = 1.0 is required.']], ['testPHPUnitVersionOperatorDoubleEquals', ['PHPUnit == 1.0 is required.']], ['testPHPUnitVersionOperatorNoSpace', ['PHPUnit >= 99 is required.']], ['testExtensionVersionOperatorLessThan', ['Extension testExtOne < 1.0 is required.']], ['testExtensionVersionOperatorLessThanEquals', ['Extension testExtOne <= 1.0 is required.']], ['testExtensionVersionOperatorGreaterThan', ['Extension testExtOne > 99 is required.']], ['testExtensionVersionOperatorGreaterThanEquals', ['Extension testExtOne >= 99 is required.']], ['testExtensionVersionOperatorEquals', ['Extension testExtOne = 1.0 is required.']], ['testExtensionVersionOperatorDoubleEquals', ['Extension testExtOne == 1.0 is required.']], ['testExtensionVersionOperatorNoSpace', ['Extension testExtOne >= 99 is required.']], ]; } /** * @todo This test does not really test functionality of PHPUnit_Util_Test */ public function testGetProvidedDataRegEx() { $result = preg_match(PHPUnit_Util_Test::REGEX_DATA_PROVIDER, '@dataProvider method', $matches); $this->assertEquals(1, $result); $this->assertEquals('method', $matches[1]); $result = preg_match(PHPUnit_Util_Test::REGEX_DATA_PROVIDER, '@dataProvider class::method', $matches); $this->assertEquals(1, $result); $this->assertEquals('class::method', $matches[1]); $result = preg_match(PHPUnit_Util_Test::REGEX_DATA_PROVIDER, '@dataProvider namespace\class::method', $matches); $this->assertEquals(1, $result); $this->assertEquals('namespace\class::method', $matches[1]); $result = preg_match(PHPUnit_Util_Test::REGEX_DATA_PROVIDER, '@dataProvider namespace\namespace\class::method', $matches); $this->assertEquals(1, $result); $this->assertEquals('namespace\namespace\class::method', $matches[1]); $result = preg_match(PHPUnit_Util_Test::REGEX_DATA_PROVIDER, '@dataProvider メソッド', $matches); $this->assertEquals(1, $result); $this->assertEquals('メソッド', $matches[1]); } /** * Check if all data providers are being merged. */ public function testMultipleDataProviders() { $dataSets = PHPUnit_Util_Test::getProvidedData('MultipleDataProviderTest', 'testOne'); $this->assertCount(9, $dataSets); $aCount = 0; $bCount = 0; $cCount = 0; for ($i = 0; $i < 9; $i++) { $aCount += $dataSets[$i][0] != null ? 1 : 0; $bCount += $dataSets[$i][1] != null ? 1 : 0; $cCount += $dataSets[$i][2] != null ? 1 : 0; } $this->assertEquals(3, $aCount); $this->assertEquals(3, $bCount); $this->assertEquals(3, $cCount); } /** * Check with a multiple yield / iterator data providers. */ public function testMultipleYieldIteratorDataProviders() { $dataSets = PHPUnit_Util_Test::getProvidedData('MultipleDataProviderTest', 'testTwo'); $this->assertEquals(9, count($dataSets)); $aCount = 0; $bCount = 0; $cCount = 0; for ($i = 0; $i < 9; $i++) { $aCount += $dataSets[$i][0] != null ? 1 : 0; $bCount += $dataSets[$i][1] != null ? 1 : 0; $cCount += $dataSets[$i][2] != null ? 1 : 0; } $this->assertEquals(3, $aCount); $this->assertEquals(3, $bCount); $this->assertEquals(3, $cCount); } public function testTestWithEmptyAnnotation() { $result = PHPUnit_Util_Test::getDataFromTestWithAnnotation("/**\n * @anotherAnnotation\n */"); $this->assertNull($result); } public function testTestWithSimpleCase() { $result = PHPUnit_Util_Test::getDataFromTestWithAnnotation('/** * @testWith [1] */'); $this->assertEquals([[1]], $result); } public function testTestWithMultiLineMultiParameterCase() { $result = PHPUnit_Util_Test::getDataFromTestWithAnnotation('/** * @testWith [1, 2] * [3, 4] */'); $this->assertEquals([[1, 2], [3, 4]], $result); } public function testTestWithVariousTypes() { $result = PHPUnit_Util_Test::getDataFromTestWithAnnotation('/** * @testWith ["ab"] * [true] * [null] */'); $this->assertEquals([['ab'], [true], [null]], $result); } public function testTestWithAnnotationAfter() { $result = PHPUnit_Util_Test::getDataFromTestWithAnnotation('/** * @testWith [1] * [2] * @annotation */'); $this->assertEquals([[1], [2]], $result); } public function testTestWithSimpleTextAfter() { $result = PHPUnit_Util_Test::getDataFromTestWithAnnotation('/** * @testWith [1] * [2] * blah blah */'); $this->assertEquals([[1], [2]], $result); } public function testTestWithCharacterEscape() { $result = PHPUnit_Util_Test::getDataFromTestWithAnnotation('/** * @testWith ["\"", "\""] */'); $this->assertEquals([['"', '"']], $result); } public function testTestWithThrowsProperExceptionIfDatasetCannotBeParsed() { $this->expectException(PHPUnit_Framework_Exception::class); $this->expectExceptionMessageRegExp('/^The dataset for the @testWith annotation cannot be parsed:/'); PHPUnit_Util_Test::getDataFromTestWithAnnotation('/** * @testWith [s] */'); } public function testTestWithThrowsProperExceptionIfMultiLineDatasetCannotBeParsed() { $this->expectException(PHPUnit_Framework_Exception::class); $this->expectExceptionMessageRegExp('/^The dataset for the @testWith annotation cannot be parsed:/'); PHPUnit_Util_Test::getDataFromTestWithAnnotation('/** * @testWith ["valid"] * [invalid] */'); } /** * @todo Not sure what this test tests (name is misleading at least) */ public function testParseAnnotation() { $this->assertEquals( ['Foo', 'ほげ'], PHPUnit_Util_Test::getDependencies(get_class($this), 'methodForTestParseAnnotation') ); } /** * @depends Foo * @depends ほげ * * @todo Remove fixture from test class */ public function methodForTestParseAnnotation() { } public function testParseAnnotationThatIsOnlyOneLine() { $this->assertEquals( ['Bar'], PHPUnit_Util_Test::getDependencies(get_class($this), 'methodForTestParseAnnotationThatIsOnlyOneLine') ); } /** @depends Bar */ public function methodForTestParseAnnotationThatIsOnlyOneLine() { // TODO Remove fixture from test class } /** * @dataProvider getLinesToBeCoveredProvider */ public function testGetLinesToBeCovered($test, $lines) { if (strpos($test, 'Namespace') === 0) { $expected = [ TEST_FILES_PATH . 'NamespaceCoveredClass.php' => $lines ]; } elseif ($test === 'CoverageNoneTest') { $expected = []; } elseif ($test === 'CoverageNothingTest') { $expected = false; } elseif ($test === 'CoverageFunctionTest') { $expected = [ TEST_FILES_PATH . 'CoveredFunction.php' => $lines ]; } else { $expected = [TEST_FILES_PATH . 'CoveredClass.php' => $lines]; } $this->assertEquals( $expected, PHPUnit_Util_Test::getLinesToBeCovered( $test, 'testSomething' ) ); } /** * @expectedException PHPUnit_Framework_CodeCoverageException */ public function testGetLinesToBeCovered2() { PHPUnit_Util_Test::getLinesToBeCovered( 'NotExistingCoveredElementTest', 'testOne' ); } /** * @expectedException PHPUnit_Framework_CodeCoverageException */ public function testGetLinesToBeCovered3() { PHPUnit_Util_Test::getLinesToBeCovered( 'NotExistingCoveredElementTest', 'testTwo' ); } /** * @expectedException PHPUnit_Framework_CodeCoverageException */ public function testGetLinesToBeCovered4() { PHPUnit_Util_Test::getLinesToBeCovered( 'NotExistingCoveredElementTest', 'testThree' ); } public function testGetLinesToBeCoveredSkipsNonExistentMethods() { $this->assertSame( [], PHPUnit_Util_Test::getLinesToBeCovered( 'NotExistingCoveredElementTest', 'methodDoesNotExist' ) ); } /** * @expectedException PHPUnit_Framework_CodeCoverageException */ public function testTwoCoversDefaultClassAnnoationsAreNotAllowed() { PHPUnit_Util_Test::getLinesToBeCovered( 'CoverageTwoDefaultClassAnnotations', 'testSomething' ); } public function testFunctionParenthesesAreAllowed() { $this->assertSame( [TEST_FILES_PATH . 'CoveredFunction.php' => range(2, 4)], PHPUnit_Util_Test::getLinesToBeCovered( 'CoverageFunctionParenthesesTest', 'testSomething' ) ); } public function testFunctionParenthesesAreAllowedWithWhitespace() { $this->assertSame( [TEST_FILES_PATH . 'CoveredFunction.php' => range(2, 4)], PHPUnit_Util_Test::getLinesToBeCovered( 'CoverageFunctionParenthesesWhitespaceTest', 'testSomething' ) ); } public function testMethodParenthesesAreAllowed() { $this->assertSame( [TEST_FILES_PATH . 'CoveredClass.php' => range(31, 35)], PHPUnit_Util_Test::getLinesToBeCovered( 'CoverageMethodParenthesesTest', 'testSomething' ) ); } public function testMethodParenthesesAreAllowedWithWhitespace() { $this->assertSame( [TEST_FILES_PATH . 'CoveredClass.php' => range(31, 35)], PHPUnit_Util_Test::getLinesToBeCovered( 'CoverageMethodParenthesesWhitespaceTest', 'testSomething' ) ); } public function testNamespacedFunctionCanBeCoveredOrUsed() { $this->assertEquals( [ TEST_FILES_PATH . 'NamespaceCoveredFunction.php' => range(4, 7) ], PHPUnit_Util_Test::getLinesToBeCovered( 'CoverageNamespacedFunctionTest', 'testFunc' ) ); } public function getLinesToBeCoveredProvider() { return [ [ 'CoverageNoneTest', [] ], [ 'CoverageClassExtendedTest', array_merge(range(19, 36), range(2, 17)) ], [ 'CoverageClassTest', range(19, 36) ], [ 'CoverageMethodTest', range(31, 35) ], [ 'CoverageMethodOneLineAnnotationTest', range(31, 35) ], [ 'CoverageNotPrivateTest', array_merge(range(25, 29), range(31, 35)) ], [ 'CoverageNotProtectedTest', array_merge(range(21, 23), range(31, 35)) ], [ 'CoverageNotPublicTest', array_merge(range(21, 23), range(25, 29)) ], [ 'CoveragePrivateTest', range(21, 23) ], [ 'CoverageProtectedTest', range(25, 29) ], [ 'CoveragePublicTest', range(31, 35) ], [ 'CoverageFunctionTest', range(2, 4) ], [ 'NamespaceCoverageClassExtendedTest', array_merge(range(21, 38), range(4, 19)) ], [ 'NamespaceCoverageClassTest', range(21, 38) ], [ 'NamespaceCoverageMethodTest', range(33, 37) ], [ 'NamespaceCoverageNotPrivateTest', array_merge(range(27, 31), range(33, 37)) ], [ 'NamespaceCoverageNotProtectedTest', array_merge(range(23, 25), range(33, 37)) ], [ 'NamespaceCoverageNotPublicTest', array_merge(range(23, 25), range(27, 31)) ], [ 'NamespaceCoveragePrivateTest', range(23, 25) ], [ 'NamespaceCoverageProtectedTest', range(27, 31) ], [ 'NamespaceCoveragePublicTest', range(33, 37) ], [ 'NamespaceCoverageCoversClassTest', array_merge(range(23, 25), range(27, 31), range(33, 37), range(6, 8), range(10, 13), range(15, 18)) ], [ 'NamespaceCoverageCoversClassPublicTest', range(33, 37) ], [ 'CoverageNothingTest', false ] ]; } } PK!/5tests/Util/GetoptTest.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class Util_GetoptTest extends PHPUnit_Framework_TestCase { public function testItIncludeTheLongOptionsAfterTheArgument() { $args = [ 'command', 'myArgument', '--colors', ]; $actual = PHPUnit_Util_Getopt::getopt($args, '', ['colors==']); $expected = [ [ [ '--colors', null, ], ], [ 'myArgument', ], ]; $this->assertEquals($expected, $actual); } public function testItIncludeTheShortOptionsAfterTheArgument() { $args = [ 'command', 'myArgument', '-v', ]; $actual = PHPUnit_Util_Getopt::getopt($args, 'v'); $expected = [ [ [ 'v', null, ], ], [ 'myArgument', ], ]; $this->assertEquals($expected, $actual); } } PK!Itests/Util/RegexTest.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class Util_RegexTest extends PHPUnit_Framework_TestCase { public function validRegexpProvider() { return [ ['#valid regexp#', 'valid regexp', 1], [';val.*xp;', 'valid regexp', 1], ['/val.*xp/i', 'VALID REGEXP', 1], ['/a val.*p/','valid regexp', 0], ]; } public function invalidRegexpProvider() { return [ ['valid regexp', 'valid regexp'], [';val.*xp', 'valid regexp'], ['val.*xp/i', 'VALID REGEXP'], ]; } /** * @dataProvider validRegexpProvider */ public function testValidRegex($pattern, $subject, $return) { $this->assertEquals($return, PHPUnit_Util_Regex::pregMatchSafe($pattern, $subject)); } /** * @dataProvider invalidRegexpProvider */ public function testInvalidRegex($pattern, $subject) { $this->assertFalse(PHPUnit_Util_Regex::pregMatchSafe($pattern, $subject)); } } PK!Z솪== tests/Util/ConfigurationTest.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class Util_ConfigurationTest extends PHPUnit_Framework_TestCase { /** * @var PHPUnit_Util_Configuration */ protected $configuration; protected function setUp() { $this->configuration = PHPUnit_Util_Configuration::getInstance( dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'configuration.xml' ); } /** * @expectedException PHPUnit_Framework_Exception */ public function testExceptionIsThrownForNotExistingConfigurationFile() { PHPUnit_Util_Configuration::getInstance('not_existing_file.xml'); } public function testShouldReadColorsWhenTrueInConfigurationfile() { $configurationFilename = dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'configuration.colors.true.xml'; $configurationInstance = PHPUnit_Util_Configuration::getInstance($configurationFilename); $configurationValues = $configurationInstance->getPHPUnitConfiguration(); $this->assertEquals(PHPUnit_TextUI_ResultPrinter::COLOR_AUTO, $configurationValues['colors']); } public function testShouldReadColorsWhenFalseInConfigurationfile() { $configurationFilename = dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'configuration.colors.false.xml'; $configurationInstance = PHPUnit_Util_Configuration::getInstance($configurationFilename); $configurationValues = $configurationInstance->getPHPUnitConfiguration(); $this->assertEquals(PHPUnit_TextUI_ResultPrinter::COLOR_NEVER, $configurationValues['colors']); } public function testShouldReadColorsWhenEmptyInConfigurationfile() { $configurationFilename = dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'configuration.colors.empty.xml'; $configurationInstance = PHPUnit_Util_Configuration::getInstance($configurationFilename); $configurationValues = $configurationInstance->getPHPUnitConfiguration(); $this->assertEquals(PHPUnit_TextUI_ResultPrinter::COLOR_NEVER, $configurationValues['colors']); } public function testShouldReadColorsWhenInvalidInConfigurationfile() { $configurationFilename = dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'configuration.colors.invalid.xml'; $configurationInstance = PHPUnit_Util_Configuration::getInstance($configurationFilename); $configurationValues = $configurationInstance->getPHPUnitConfiguration(); $this->assertEquals(PHPUnit_TextUI_ResultPrinter::COLOR_NEVER, $configurationValues['colors']); } public function testFilterConfigurationIsReadCorrectly() { $this->assertEquals( [ 'whitelist' => [ 'addUncoveredFilesFromWhitelist' => true, 'processUncoveredFilesFromWhitelist' => false, 'include' => [ 'directory' => [ 0 => [ 'path' => '/path/to/files', 'prefix' => '', 'suffix' => '.php', 'group' => 'DEFAULT' ], ], 'file' => [ 0 => '/path/to/file', 1 => '/path/to/file', ], ], 'exclude' => [ 'directory' => [ 0 => [ 'path' => '/path/to/files', 'prefix' => '', 'suffix' => '.php', 'group' => 'DEFAULT' ], ], 'file' => [ 0 => '/path/to/file', ], ], ], ], $this->configuration->getFilterConfiguration() ); } public function testGroupConfigurationIsReadCorrectly() { $this->assertEquals( [ 'include' => [ 0 => 'name', ], 'exclude' => [ 0 => 'name', ], ], $this->configuration->getGroupConfiguration() ); } public function testTestdoxGroupConfigurationIsReadCorrectly() { $this->assertEquals( [ 'include' => [ 0 => 'name', ], 'exclude' => [ 0 => 'name', ], ], $this->configuration->getTestdoxGroupConfiguration() ); } public function testListenerConfigurationIsReadCorrectly() { $dir = __DIR__; $includePath = ini_get('include_path'); ini_set('include_path', $dir . PATH_SEPARATOR . $includePath); $this->assertEquals( [ 0 => [ 'class' => 'MyListener', 'file' => '/optional/path/to/MyListener.php', 'arguments' => [ 0 => [ 0 => 'Sebastian', ], 1 => 22, 2 => 'April', 3 => 19.78, 4 => null, 5 => new stdClass, 6 => dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'MyTestFile.php', 7 => dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'MyRelativePath', ], ], [ 'class' => 'IncludePathListener', 'file' => __FILE__, 'arguments' => [] ], [ 'class' => 'CompactArgumentsListener', 'file' => '/CompactArgumentsListener.php', 'arguments' => [ 0 => 42 ], ], ], $this->configuration->getListenerConfiguration() ); ini_set('include_path', $includePath); } public function testLoggingConfigurationIsReadCorrectly() { $this->assertEquals( [ 'lowUpperBound' => '50', 'highLowerBound' => '90', 'coverage-html' => '/tmp/report', 'coverage-clover' => '/tmp/clover.xml', 'json' => '/tmp/logfile.json', 'plain' => '/tmp/logfile.txt', 'tap' => '/tmp/logfile.tap', 'logIncompleteSkipped' => false, 'junit' => '/tmp/logfile.xml', 'testdox-html' => '/tmp/testdox.html', 'testdox-text' => '/tmp/testdox.txt', 'testdox-xml' => '/tmp/testdox.xml' ], $this->configuration->getLoggingConfiguration() ); } public function testPHPConfigurationIsReadCorrectly() { $this->assertEquals( [ 'include_path' => [ dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . '.', '/path/to/lib' ], 'ini' => ['foo' => 'bar'], 'const' => ['FOO' => false, 'BAR' => true], 'var' => ['foo' => false], 'env' => ['foo' => true], 'post' => ['foo' => 'bar'], 'get' => ['foo' => 'bar'], 'cookie' => ['foo' => 'bar'], 'server' => ['foo' => 'bar'], 'files' => ['foo' => 'bar'], 'request'=> ['foo' => 'bar'], ], $this->configuration->getPHPConfiguration() ); } /** * @backupGlobals enabled */ public function testPHPConfigurationIsHandledCorrectly() { $this->configuration->handlePHPConfiguration(); $path = dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . '.' . PATH_SEPARATOR . '/path/to/lib'; $this->assertStringStartsWith($path, ini_get('include_path')); $this->assertEquals(false, FOO); $this->assertEquals(true, BAR); $this->assertEquals(false, $GLOBALS['foo']); $this->assertEquals(true, $_ENV['foo']); $this->assertEquals(true, getenv('foo')); $this->assertEquals('bar', $_POST['foo']); $this->assertEquals('bar', $_GET['foo']); $this->assertEquals('bar', $_COOKIE['foo']); $this->assertEquals('bar', $_SERVER['foo']); $this->assertEquals('bar', $_FILES['foo']); $this->assertEquals('bar', $_REQUEST['foo']); } /** * @backupGlobals enabled * * @see https://github.com/sebastianbergmann/phpunit/issues/1181 */ public function testHandlePHPConfigurationDoesNotOverwrittenExistingEnvArrayVariables() { $_ENV['foo'] = false; $this->configuration->handlePHPConfiguration(); $this->assertEquals(false, $_ENV['foo']); $this->assertEquals(true, getenv('foo')); } /** * @backupGlobals enabled * * @see https://github.com/sebastianbergmann/phpunit/issues/1181 */ public function testHandlePHPConfigurationDoesNotOverriteVariablesFromPutEnv() { putenv('foo=putenv'); $this->configuration->handlePHPConfiguration(); $this->assertEquals(true, $_ENV['foo']); $this->assertEquals('putenv', getenv('foo')); } public function testPHPUnitConfigurationIsReadCorrectly() { $this->assertEquals( [ 'backupGlobals' => true, 'backupStaticAttributes' => false, 'beStrictAboutChangesToGlobalState' => false, 'bootstrap' => '/path/to/bootstrap.php', 'cacheTokens' => false, 'columns' => 80, 'colors' => 'never', 'stderr' => false, 'convertErrorsToExceptions' => true, 'convertNoticesToExceptions' => true, 'convertWarningsToExceptions' => true, 'forceCoversAnnotation' => false, 'stopOnFailure' => false, 'stopOnWarning' => false, 'reportUselessTests' => false, 'strictCoverage' => false, 'disallowTestOutput' => false, 'enforceTimeLimit' => false, 'extensionsDirectory' => '/tmp', 'printerClass' => 'PHPUnit_TextUI_ResultPrinter', 'testSuiteLoaderClass' => 'PHPUnit_Runner_StandardTestSuiteLoader', 'verbose' => false, 'timeoutForSmallTests' => 1, 'timeoutForMediumTests' => 10, 'timeoutForLargeTests' => 60, 'beStrictAboutResourceUsageDuringSmallTests' => false, 'disallowTodoAnnotatedTests' => false, 'failOnWarning' => false, 'failOnRisky' => false ], $this->configuration->getPHPUnitConfiguration() ); } public function testXincludeInConfiguration() { $configurationWithXinclude = PHPUnit_Util_Configuration::getInstance( dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'configuration_xinclude.xml' ); $this->assertConfigurationEquals( $this->configuration, $configurationWithXinclude ); } /** * @ticket 1311 * * @uses PHPUnit_Util_Configuration::getInstance */ public function testWithEmptyConfigurations() { $emptyConfiguration = PHPUnit_Util_Configuration::getInstance( dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'configuration_empty.xml' ); $logging = $emptyConfiguration->getLoggingConfiguration(); $this->assertEmpty($logging); $php = $emptyConfiguration->getPHPConfiguration(); $this->assertEmpty($php['include_path']); $phpunit = $emptyConfiguration->getPHPUnitConfiguration(); $this->assertArrayNotHasKey('bootstrap', $phpunit); $this->assertArrayNotHasKey('testSuiteLoaderFile', $phpunit); $this->assertArrayNotHasKey('printerFile', $phpunit); $suite = $emptyConfiguration->getTestSuiteConfiguration(); $this->assertEmpty($suite->getGroups()); $filter = $emptyConfiguration->getFilterConfiguration(); $this->assertEmpty($filter['whitelist']['include']['directory']); $this->assertEmpty($filter['whitelist']['include']['file']); $this->assertEmpty($filter['whitelist']['exclude']['directory']); $this->assertEmpty($filter['whitelist']['exclude']['file']); } /** * Asserts that the values in $actualConfiguration equal $expectedConfiguration. * * @param PHPUnit_Util_Configuration $expectedConfiguration * @param PHPUnit_Util_Configuration $actualConfiguration */ protected function assertConfigurationEquals(PHPUnit_Util_Configuration $expectedConfiguration, PHPUnit_Util_Configuration $actualConfiguration) { $this->assertEquals( $expectedConfiguration->getFilterConfiguration(), $actualConfiguration->getFilterConfiguration() ); $this->assertEquals( $expectedConfiguration->getGroupConfiguration(), $actualConfiguration->getGroupConfiguration() ); $this->assertEquals( $expectedConfiguration->getListenerConfiguration(), $actualConfiguration->getListenerConfiguration() ); $this->assertEquals( $expectedConfiguration->getLoggingConfiguration(), $actualConfiguration->getLoggingConfiguration() ); $this->assertEquals( $expectedConfiguration->getPHPConfiguration(), $actualConfiguration->getPHPConfiguration() ); $this->assertEquals( $expectedConfiguration->getPHPUnitConfiguration(), $actualConfiguration->getPHPUnitConfiguration() ); $this->assertEquals( $expectedConfiguration->getTestSuiteConfiguration(), $actualConfiguration->getTestSuiteConfiguration() ); } public function testGetTestSuiteNamesReturnsTheNamesIfDefined() { $configuration = PHPUnit_Util_Configuration::getInstance( dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'configuration.suites.xml' ); $names = $configuration->getTestSuiteNames(); $this->assertEquals(['Suite One', 'Suite Two'], $names); } } PK!(tests/Util/PHPTest.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * @author Henrique Moody * @copyright Sebastian Bergmann * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License * * @link http://www.phpunit.de/ */ class PHPUnit_Util_PHPTest extends PHPUnit_Framework_TestCase { public function testShouldNotUseStderrRedirectionByDefault() { $phpMock = $this->getMockForAbstractClass('PHPUnit_Util_PHP'); $this->assertFalse($phpMock->useStderrRedirection()); } public function testShouldDefinedIfUseStderrRedirection() { $phpMock = $this->getMockForAbstractClass('PHPUnit_Util_PHP'); $phpMock->setUseStderrRedirection(true); $this->assertTrue($phpMock->useStderrRedirection()); } public function testShouldDefinedIfDoNotUseStderrRedirection() { $phpMock = $this->getMockForAbstractClass('PHPUnit_Util_PHP'); $phpMock->setUseStderrRedirection(false); $this->assertFalse($phpMock->useStderrRedirection()); } /** * @expectedException PHPUnit_Framework_Exception * @expectedExceptionMessage Argument #1 (No Value) of PHPUnit_Util_PHP::setUseStderrRedirection() must be a boolean */ public function testShouldThrowsExceptionWhenStderrRedirectionVariableIsNotABoolean() { $phpMock = $this->getMockForAbstractClass('PHPUnit_Util_PHP'); $phpMock->setUseStderrRedirection(null); } public function testShouldUseGivenSettingsToCreateCommand() { $phpMock = $this->getMockForAbstractClass('PHPUnit_Util_PHP'); $settings = [ 'allow_url_fopen=1', 'auto_append_file=', 'display_errors=1', ]; $expectedCommandFormat = '%s -d allow_url_fopen=1 -d auto_append_file= -d display_errors=1'; $actualCommand = $phpMock->getCommand($settings); $this->assertStringMatchesFormat($expectedCommandFormat, $actualCommand); } public function testShouldRedirectStderrToStdoutWhenDefined() { $phpMock = $this->getMockForAbstractClass('PHPUnit_Util_PHP'); $phpMock->setUseStderrRedirection(true); $expectedCommandFormat = '%s 2>&1'; $actualCommand = $phpMock->getCommand([]); $this->assertStringMatchesFormat($expectedCommandFormat, $actualCommand); } public function testShouldUseArgsToCreateCommand() { $phpMock = $this->getMockForAbstractClass('PHPUnit_Util_PHP'); $phpMock->setArgs('foo=bar'); $expectedCommandFormat = '%s -- foo=bar'; $actualCommand = $phpMock->getCommand([]); $this->assertStringMatchesFormat($expectedCommandFormat, $actualCommand); } public function testShouldHaveFileToCreateCommand() { $phpMock = $this->getMockForAbstractClass('PHPUnit_Util_PHP'); $expectedCommandFormat = '%s -%c \'file.php\''; $actualCommand = $phpMock->getCommand([], 'file.php'); $this->assertStringMatchesFormat($expectedCommandFormat, $actualCommand); } public function testStdinGetterAndSetter() { $phpMock = $this->getMockForAbstractClass('PHPUnit_Util_PHP'); $phpMock->setStdin('foo'); $this->assertEquals('foo', $phpMock->getStdin()); } public function testArgsGetterAndSetter() { $phpMock = $this->getMockForAbstractClass('PHPUnit_Util_PHP'); $phpMock->setArgs('foo=bar'); $this->assertEquals('foo=bar', $phpMock->getArgs()); } public function testEnvGetterAndSetter() { $phpMock = $this->getMockForAbstractClass('PHPUnit_Util_PHP'); $phpMock->setEnv(['foo' => 'bar']); $this->assertEquals(['foo' => 'bar'], $phpMock->getEnv()); } public function testTimeoutGetterAndSetter() { $phpMock = $this->getMockForAbstractClass('PHPUnit_Util_PHP'); $phpMock->setTimeout(30); $this->assertEquals(30, $phpMock->getTimeout()); } } PK![  )tests/Util/TestDox/NamePrettifierTest.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class Util_TestDox_NamePrettifierTest extends PHPUnit_Framework_TestCase { protected $namePrettifier; protected function setUp() { $this->namePrettifier = new PHPUnit_Util_TestDox_NamePrettifier; } public function testTitleHasSensibleDefaults() { $this->assertEquals('Foo', $this->namePrettifier->prettifyTestClass('FooTest')); $this->assertEquals('Foo', $this->namePrettifier->prettifyTestClass('TestFoo')); $this->assertEquals('Foo', $this->namePrettifier->prettifyTestClass('TestFooTest')); $this->assertEquals('Foo', $this->namePrettifier->prettifyTestClass('Test\FooTest')); } public function testCaterForUserDefinedSuffix() { $this->namePrettifier->setSuffix('TestCase'); $this->namePrettifier->setPrefix(null); $this->assertEquals('Foo', $this->namePrettifier->prettifyTestClass('FooTestCase')); $this->assertEquals('TestFoo', $this->namePrettifier->prettifyTestClass('TestFoo')); $this->assertEquals('FooTest', $this->namePrettifier->prettifyTestClass('FooTest')); } public function testCaterForUserDefinedPrefix() { $this->namePrettifier->setSuffix(null); $this->namePrettifier->setPrefix('XXX'); $this->assertEquals('Foo', $this->namePrettifier->prettifyTestClass('XXXFoo')); $this->assertEquals('TestXXX', $this->namePrettifier->prettifyTestClass('TestXXX')); $this->assertEquals('XXX', $this->namePrettifier->prettifyTestClass('XXXXXX')); } public function testTestNameIsConvertedToASentence() { $this->assertEquals('This is a test', $this->namePrettifier->prettifyTestMethod('testThisIsATest')); $this->assertEquals('This is a test', $this->namePrettifier->prettifyTestMethod('testThisIsATest2')); $this->assertEquals('This is a test', $this->namePrettifier->prettifyTestMethod('this_is_a_test')); $this->assertEquals('Foo for bar is 0', $this->namePrettifier->prettifyTestMethod('testFooForBarIs0')); $this->assertEquals('Foo for baz is 1', $this->namePrettifier->prettifyTestMethod('testFooForBazIs1')); $this->assertEquals('', $this->namePrettifier->prettifyTestMethod('test')); } /** * @ticket 224 */ public function testTestNameIsNotGroupedWhenNotInSequence() { $this->assertEquals('Sets redirect header on 301', $this->namePrettifier->prettifyTestMethod('testSetsRedirectHeaderOn301')); $this->assertEquals('Sets redirect header on 302', $this->namePrettifier->prettifyTestMethod('testSetsRedirectHeaderOn302')); } } PK!wU,,tests/Regression/GitHub/1216/phpunit1216.xmlnuIw Issue1216Test.php PK!iNN.tests/Regression/GitHub/1216/bootstrap1216.phpnuIwassertTrue($_ENV['configAvailableInBootstrap']); } } PK! ; tests/Regression/GitHub/322.phptnuIw--TEST-- GH-322: group commandline option should override group/exclude setting in phpunit.xml --FILE-- --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. Starting test 'Issue322Test::testOne'. . 1 / 1 (100%) Time: %s, Memory: %s OK (1 test, 0 assertions) PK!Hr++!tests/Regression/GitHub/2158.phptnuIw--TEST-- #2158: Failure to run tests in separate processes if a file included into main process contains constant definition --FILE-- --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. .. 2 / 2 (100%) Time: %s, Memory: %s OK (2 tests, 2 assertions) PK!!tests/Regression/GitHub/1472.phptnuIw--TEST-- https://github.com/sebastianbergmann/phpunit/issues/1472 --SKIPIF-- --FILE-- fail('This should not be reached'); } protected function tearDown() { print __FUNCTION__; } } PK!,?? tests/Regression/GitHub/581.phptnuIw--TEST-- GH-581: PHPUnit_Util_Type::export adds extra newlines in Windows --FILE-- --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. F 1 / 1 (100%) Time: %s, Memory: %s There was 1 failure: 1) Issue581Test::testExportingObjectsDoesNotBreakWindowsLineFeeds Failed asserting that two objects are equal. --- Expected +++ Actual @@ @@ stdClass Object ( 0 => 1 1 => 2 2 => 'Test\n' 3 => 4 - 4 => 5 + 4 => 1 5 => 6 6 => 7 7 => 8 ) %s:%i FAILURES! Tests: 1, Assertions: 1, Failures: 1. PK!=.tests/Regression/GitHub/1330/Issue1330Test.phpnuIwassertTrue(PHPUNIT_1330); } } PK!TT,tests/Regression/GitHub/1330/phpunit1330.xmlnuIw PK!V(...tests/Regression/GitHub/1472/Issue1472Test.phpnuIwloadXML(''); $xpath = new DOMXPath($doc); $labelElement = $doc->getElementsByTagName('label')->item(0); $this->assertEquals(1, $xpath->evaluate('count(//label[text() = "text content"])')); $expectedElmt = $doc->createElement('label', 'text content'); $this->assertEqualXMLStructure($expectedElmt, $labelElement); // the following assertion fails, even though it passed before - which is due to the assertEqualXMLStructure() has modified the $labelElement $this->assertEquals(1, $xpath->evaluate('count(//label[text() = "text content"])')); } } PK!f.tests/Regression/GitHub/2145/Issue2145Test.phpnuIwassertTrue(true); } } PK!/SS,tests/Regression/GitHub/1265/phpunit1265.xmlnuIw PK!sQ!tests/Regression/GitHub/2145.phptnuIw--TEST-- --stop-on-failure fails to stop on PHP 7 --FILE-- --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. E Time: %s, Memory: %s There was 1 error: 1) Issue2145Test %A ERRORS! Tests: 2, Assertions: 0, Errors: 1. PK!{^^!tests/Regression/GitHub/1330.phptnuIw--TEST-- GH-1330: Allow non-ambiguous shortened longopts --FILE-- --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. Starting test 'Issue1330Test::testTrue'. . 1 / 1 (100%) Time: %s, Memory: %s OK (1 test, 1 assertion) PK!L!tests/Regression/GitHub/2380.phptnuIw--TEST-- #2380: Data Providers cannot be generators anymore --FILE-- --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. . 1 / 1 (100%) Time: %s, Memory: %s OK (1 test, 1 assertion) PK!j8N**,tests/Regression/GitHub/581/Issue581Test.phpnuIwassertEquals( (object) [1, 2, "Test\r\n", 4, 5, 6, 7, 8], (object) [1, 2, "Test\r\n", 4, 1, 6, 7, 8] ); } } PK!q~~.tests/Regression/GitHub/1570/Issue1570Test.phpnuIwassertInstanceOf(\Exception::class, $test); } public function dataProvider() { return [ [ $this->getMockBuilder(\Exception::class)->getMock() ] ]; } } PK!v.tests/Regression/GitHub/2366/Issue2366Test.phpnuIwassertEquals(1, $o->foo()); } public function provider() { $o = $this->createMock(Issue2366::class); $o->method('foo')->willReturn(1); return [ [$o], [$o] ]; } } PK! tests/Regression/GitHub/498.phptnuIw--TEST-- GH-498: The test methods won't be run if a dataProvider throws Exception and --group is added in command line --FILE-- --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. W 1 / 1 (100%) Time: %s, Memory: %s There was 1 warning: 1) Warning The data provider specified for Issue498Test::shouldBeFalse is invalid. Can't create the data WARNINGS! Tests: 1, Assertions: 0, Warnings: 1. PK!$//+tests/Regression/GitHub/74/NewException.phpnuIw --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. . 1 / 1 (100%) Time: %s, Memory: %s OK (1 test, 1 assertion) PK!;!tests/Regression/GitHub/2811.phptnuIw--TEST-- GH-2811: expectExceptionMessage() does not work without expectException() --FILE-- --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. . 1 / 1 (100%) Time: %s, Memory: %s OK (1 test, 2 assertions) PK!,tests/Regression/GitHub/873/Issue873Test.phpnuIwexpectOutputString('*'); print '*'; $this->assertTrue(false); } } PK!F&X!tests/Regression/GitHub/2758.phptnuIw--TEST-- GH-2758: TestCase::addToAssertionCount() no longer has effect when called from TestListener::endTest() --FILE-- --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. . 1 / 1 (100%) Time: %s, Memory: %s OK (1 test, 1 assertion) PK!g!tests/Regression/GitHub/2366.phptnuIw--TEST-- #2366: Using a test double from a data provider only works once --FILE-- --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. .. 2 / 2 (100%) Time: %s, Memory: %s OK (2 tests, 2 assertions) PK!Ẓ*tests/Regression/GitHub/322/phpunit322.xmlnuIw Test.php one PK!,tests/Regression/GitHub/322/Issue322Test.phpnuIwassertTrue(true); } public function testSTDERR() { fwrite(STDERR, 'STDERR works as usual.'); } } PK![ d tests/Regression/GitHub/244.phptnuIw--TEST-- GH-244: Expected Exception should support string codes --FILE-- --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. .FFF 4 / 4 (100%) Time: %s, Memory: %s There were 3 failures: 1) Issue244Test::testFails Failed asserting that '123StringCode' is equal to expected exception code 'OtherString'. 2) Issue244Test::testFailsTooIfExpectationIsANumber Failed asserting that '123StringCode' is equal to expected exception code 123. 3) Issue244Test::testFailsTooIfExceptionCodeIsANumber Failed asserting that 123 is equal to expected exception code '123String'. FAILURES! Tests: 4, Assertions: 8, Failures: 3. PK! SS!tests/Regression/GitHub/1570.phptnuIw--TEST-- https://github.com/sebastianbergmann/phpunit/issues/1570 --FILE-- --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. F 1 / 1 (100%) Time: %s, Memory: %s There was 1 failure: 1) Issue503Test::testCompareDifferentLineEndings Failed asserting that two strings are identical. --- Expected +++ Actual @@ @@ #Warning: Strings contain different line endings! foo %s:%i FAILURES! Tests: 1, Assertions: 1, Failures: 1. PK!N++.tests/Regression/GitHub/1149/Issue1149Test.phpnuIwassertTrue(true); print '1'; } /** * @runInSeparateProcess */ public function testTwo() { $this->assertTrue(true); print '2'; } } PK!ѐfo\\,tests/Regression/GitHub/244/Issue244Test.phpnuIwcode = '123StringCode'; } } class Issue244ExceptionIntCode extends Exception { public function __construct() { $this->code = 123; } } PK!b.tests/Regression/GitHub/1351/Issue1351Test.phpnuIwinstance = new ChildProcessClass1351(); $this->assertFalse(true, 'Expected failure.'); } public function testFailurePost() { $this->assertNull($this->instance); $this->assertFalse(class_exists('ChildProcessClass1351', false), 'ChildProcessClass1351 is not loaded.'); } /** * @runInSeparateProcess */ public function testExceptionPre() { $this->instance = new ChildProcessClass1351(); try { throw new LogicException('Expected exception.'); } catch (LogicException $e) { throw new RuntimeException('Expected rethrown exception.', 0, $e); } } public function testExceptionPost() { $this->assertNull($this->instance); $this->assertFalse(class_exists('ChildProcessClass1351', false), 'ChildProcessClass1351 is not loaded.'); } public function testPhpCoreLanguageException() { // User-space code cannot instantiate a PDOException with a string code, // so trigger a real one. $connection = new PDO('sqlite::memory:'); $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $connection->query("DELETE FROM php_wtf WHERE exception_code = 'STRING'"); } } PK!E Z&&6tests/Regression/GitHub/1351/ChildProcessClass1351.phpnuIw --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. ............................................................... 63 / 150 ( 42%) ............................................................... 126 / 150 ( 84%) ........................ 150 / 150 (100%) Time: %s, Memory: %s OK (150 tests, 150 assertions) PK!b.tests/Regression/GitHub/2731/Issue2731Test.phpnuIwexpectException(Exception::class); $this->expectExceptionMessage(''); throw new Exception('message'); } } PK!3.tests/Regression/GitHub/2435/Issue2435Test.phpnuIwassertTrue(true); } } PK!Ff..,tests/Regression/GitHub/498/Issue498Test.phpnuIwassertTrue(true); } /** * @test * @dataProvider shouldBeFalseDataProvider * @group trueOnly */ public function shouldBeFalse($testData) { $this->assertFalse(false); } public function shouldBeTrueDataProvider() { //throw new Exception("Can't create the data"); return [ [true], [false] ]; } public function shouldBeFalseDataProvider() { throw new Exception("Can't create the data"); return [ [true], [false] ]; } } PK!?Ň.tests/Regression/GitHub/2299/Issue2299Test.phpnuIw */ class Test extends PHPUnit_Framework_TestCase { public function testOne() { $this->expectExceptionMessage('message'); throw new Exception('message'); } public function testTwo() { $this->expectExceptionCode(123); throw new Exception('message', 123); } } PK!DD.tests/Regression/GitHub/1337/Issue1337Test.phpnuIwassertTrue($a); } public function dataProvider() { return [ 'c:\\'=> [true], 0.9 => [true] ]; } } PK!!Ʌ88%tests/Regression/GitHub/873-php5.phptnuIw--TEST-- GH-873: PHPUnit suppresses exceptions thrown outside of test case function --SKIPIF-- 5) { print 'skip: PHP 5 is required'; } ?> --FILE-- --EXPECTF-- Fatal error: Uncaught exception 'Exception' with message 'PHPUnit suppresses exceptions thrown outside of test case function' in %s:%i Stack trace: %a PK!:/,tests/Regression/GitHub/765/Issue765Test.phpnuIwassertTrue(true); } /** * @depends testDependee * @dataProvider dependentProvider */ public function testDependent($a) { $this->assertTrue(true); } public function dependentProvider() { throw new Exception; } } PK!o9.tests/Regression/GitHub/1437/Issue1437Test.phpnuIwassertTrue(false); } } PK!L[[.tests/Regression/GitHub/2380/Issue2380Test.phpnuIwassertNotEmpty($data); } /** * @return Generator */ public function generatorData() { yield ['testing']; } } PK!2!tests/Regression/GitHub/2435.phptnuIw--TEST-- GH-2435: Test empty @group annotation --FILE-- --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. . 1 / 1 (100%) Time: %s, Memory: %s OK (1 test, 1 assertion) PK!Q tests/Regression/GitHub/445.phptnuIw--TEST-- GH-455: expectOutputString not working in strict mode --FILE-- --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. ..F 3 / 3 (100%) Time: %s, Memory: %s There was 1 failure: 1) Issue445Test::testNotMatchingOutput Failed asserting that two strings are equal. --- Expected +++ Actual @@ @@ -'foo' +'bar' FAILURES! Tests: 3, Assertions: 3, Failures: 1. PK!!-,tests/Regression/GitHub/503/Issue503Test.phpnuIwassertSame( "foo\n", "foo\r\n" ); } } PK!<~t@+tests/Regression/GitHub/2137-no_filter.phptnuIw--TEST-- #2137: Error message for invalid dataprovider --FILE-- --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. WW 2 / 2 (100%) Time: %s, Memory: %s There were 2 warnings: 1) Warning The data provider specified for Issue2137Test::testBrandService is invalid. Data set #0 is invalid. 2) Warning The data provider specified for Issue2137Test::testSomethingElseInvalid is invalid. Data set #0 is invalid. WARNINGS! Tests: 2, Assertions: 0, Warnings: 2. PK!T tests/Regression/GitHub/765.phptnuIw--TEST-- GH-765: Fatal error triggered in PHPUnit when exception is thrown in data provider of a test with a dependency --FILE-- --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. .W 2 / 2 (100%) Time: %s, Memory: %s There was 1 warning: 1) Warning The data provider specified for Issue765Test::testDependent is invalid. WARNINGS! Tests: 2, Assertions: 1, Warnings: 1. PK!>d ##.tests/Regression/GitHub/2158/Issue2158Test.phpnuIwassertTrue(true); } /** * Constant defined previously in main process constant should be available and * no errors should be yielded by reload of included files * * @runInSeparateProcess */ public function testSomethingElse() { $this->assertTrue(defined('TEST_CONSTANT')); } } PK!e**)tests/Regression/GitHub/2158/constant.incnuIw PK!{(tests/Regression/GitHub/2758/phpunit.xmlnuIw PK!Ȯkk.tests/Regression/GitHub/2758/Issue2758Test.phpnuIwaddToAssertionCount(1); } } PK!0JX!tests/Regression/GitHub/1337.phptnuIw--TEST-- https://github.com/sebastianbergmann/phpunit/issues/1337 --FILE-- --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. F 1 / 1 (100%) Time: %s, Memory: %s There was 1 failure: 1) Issue2731Test::testOne Failed asserting that exception message is empty but is 'message'. FAILURES! Tests: 1, Assertions: 2, Failures: 1. PK!tt!tests/Regression/GitHub/1437.phptnuIw--TEST-- https://github.com/sebastianbergmann/phpunit/issues/1437 --FILE-- --FILE-- --EXPECTF-- Fatal error: Uncaught Exception: PHPUnit suppresses exceptions thrown outside of test case function in %s:%i Stack trace: %a PK!C35[[ tests/Regression/GitHub/797.phptnuIw--TEST-- GH-797: Disabled $preserveGlobalState does not load bootstrap.php. --FILE-- --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. . 1 / 1 (100%) Time: %s, Memory: %s OK (1 test, 1 assertion) PK!Ƅމ.tests/Regression/GitHub/1335/Issue1335Test.phpnuIwassertEquals('Hello', $GLOBALS['globalString']); } public function testGlobalIntTruthy() { $this->assertEquals(1, $GLOBALS['globalIntTruthy']); } public function testGlobalIntFalsey() { $this->assertEquals(0, $GLOBALS['globalIntFalsey']); } public function testGlobalFloat() { $this->assertEquals(1.123, $GLOBALS['globalFloat']); } public function testGlobalBoolTrue() { $this->assertTrue($GLOBALS['globalBoolTrue']); } public function testGlobalBoolFalse() { $this->assertFalse($GLOBALS['globalBoolFalse']); } public function testGlobalNull() { $this->assertEquals(null, $GLOBALS['globalNull']); } public function testGlobalArray() { $this->assertEquals(['foo'], $GLOBALS['globalArray']); } public function testGlobalNestedArray() { $this->assertEquals([['foo']], $GLOBALS['globalNestedArray']); } public function testGlobalObject() { $this->assertEquals((object) ['foo'=> 'bar'], $GLOBALS['globalObject']); } public function testGlobalObjectWithBackSlashString() { $this->assertEquals((object) ['foo'=> 'back\\slash'], $GLOBALS['globalObjectWithBackSlashString']); } public function testGlobalObjectWithDoubleBackSlashString() { $this->assertEquals((object) ['foo'=> 'back\\\\slash'], $GLOBALS['globalObjectWithDoubleBackSlashString']); } } PK!k.tests/Regression/GitHub/1335/bootstrap1335.phpnuIw 'bar']; $globalObjectWithBackSlashString = (object) ['foo'=> 'back\\slash']; $globalObjectWithDoubleBackSlashString = (object) ['foo'=> 'back\\\\slash']; PK!؁ W.tests/Regression/GitHub/1468/Issue1468Test.phpnuIwmarkTestIncomplete(); } } PK!nAA!tests/Regression/GitHub/1348.phptnuIw--TEST-- https://github.com/sebastianbergmann/phpunit/issues/1348 --SKIPIF-- --FILE-- assertSame($provided, $expected); } public function provideBrandService() { return [ //[true, true] new stdClass() // not valid ]; } /** * @dataProvider provideBrandService * @param $provided * @param $expected */ public function testSomethingElseInvalid($provided, $expected) { $this->assertSame($provided, $expected); } } PK!;22!tests/Regression/GitHub/1351.phptnuIw--TEST-- https://github.com/sebastianbergmann/phpunit/issues/1351 --SKIPIF-- --FILE-- --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. .. 2 / 2 (100%) Time: %s, Memory: %s OK (2 tests, 2 assertions) PK!i0ݜ,tests/Regression/GitHub/445/Issue445Test.phpnuIwexpectOutputString('test'); print 'test'; } public function testOutputWithExpectationAfter() { print 'test'; $this->expectOutputString('test'); } public function testNotMatchingOutput() { print 'bar'; $this->expectOutputString('foo'); } } PK!`,,tests/Regression/GitHub/797/Issue797Test.phpnuIwassertEquals(GITHUB_ISSUE, 797); } } PK!7,tests/Regression/GitHub/797/bootstrap797.phpnuIw --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. Starting test 'Issue1216Test::testConfigAvailableInBootstrap'. . 1 / 1 (100%) Time: %s, Memory: %s OK (1 test, 1 assertion) PK!C,tests/Regression/GitHub/433/Issue433Test.phpnuIwexpectOutputString('test'); print 'test'; } public function testOutputWithExpectationAfter() { print 'test'; $this->expectOutputString('test'); } public function testNotMatchingOutput() { print 'bar'; $this->expectOutputString('foo'); } } PK!Zyܚtests/Regression/GitHub/74.phptnuIw--TEST-- GH-74: catchable fatal error in 3.5 --FILE-- --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. E 1 / 1 (100%) Time: %s, Memory: %s There was 1 error: 1) Issue74Test::testCreateAndThrowNewExceptionInProcessIsolation NewException: Testing GH-74 %sIssue74Test.php:7 ERRORS! Tests: 1, Assertions: 0, Errors: 1. PK! L tests/Regression/GitHub/433.phptnuIw--TEST-- GH-433: expectOutputString not completely working as expected --FILE-- --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. ..F 3 / 3 (100%) Time: %s, Memory: %s There was 1 failure: 1) Issue433Test::testNotMatchingOutput Failed asserting that two strings are equal. --- Expected +++ Actual @@ @@ -'foo' +'bar' FAILURES! Tests: 3, Assertions: 3, Failures: 1. PK!cv!tests/Regression/GitHub/2382.phptnuIw--TEST-- #2382: Data Providers throw error with uncloneable object --FILE-- --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. . 1 / 1 (100%) Time: %s, Memory: %s OK (1 test, 1 assertion) PK!uWAtests/Regression/GitHub/2972/unconventiallyNamedIssue2972Test.phpnuIwassertNotEmpty('Hello world!'); } } PK!m1tests/Regression/GitHub/2972/issue-2972-test.phptnuIw--TEST-- Just a sample test for issue 2972, does not actually test anything --FILE-- ===DONE=== --EXPECT-- Hello world ===DONE=== PK!!tests/Regression/GitHub/1149.phptnuIw--TEST-- GH-1149: Test swallows output buffer when run in a separate process --FILE-- --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. .1. 2 / 2 (100%)2 Time: %s, Memory: %s OK (2 tests, 2 assertions) PK!T (tests/Regression/GitHub/2137-filter.phptnuIw--TEST-- #2137: Error message for invalid dataprovider --FILE-- --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. W 1 / 1 (100%) Time: %s, Memory: %s There was 1 warning: 1) Warning The data provider specified for Issue2137Test::testBrandService is invalid. Data set #0 is invalid. WARNINGS! Tests: 1, Assertions: 0, Warnings: 1. PK!uDyYuu!tests/Regression/GitHub/1471.phptnuIw--TEST-- https://github.com/sebastianbergmann/phpunit/issues/1471 --FILE-- expectExceptionMessage('hello'); throw new \Exception('hello'); } } PK![922tests/Regression/Trac/783.phptnuIw--TEST-- #783: Tests getting executed twice when using multiple groups --FILE-- --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. .. 2 / 2 (100%) Time: %s, Memory: %s OK (2 tests, 0 assertions) PK!Kكnn,tests/Regression/Trac/1021/Issue1021Test.phpnuIwassertTrue($data); } /** * @depends testSomething */ public function testSomethingElse() { } public function provider() { return [[true]]; } } PK!JHH*tests/Regression/Trac/684/Issue684Test.phpnuIwaddTest(ChildSuite::suite()); return $suite; } } PK!nY7(((tests/Regression/Trac/783/ChildSuite.phpnuIwaddTestSuite('OneTest'); $suite->addTestSuite('TwoTest'); return $suite; } } PK!;g%tests/Regression/Trac/783/OneTest.phpnuIw --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. EEE 3 / 3 (100%) Time: %s, Memory: %s There were 3 errors: 1) Issue578Test::testNoticesDoublePrintStackTrace Invalid error type specified %sIssue578Test.php:%i 2) Issue578Test::testWarningsDoublePrintStackTrace Invalid error type specified %sIssue578Test.php:%i 3) Issue578Test::testUnexpectedExceptionsPrintsCorrectly Exception: Double printed exception %sIssue578Test.php:%i ERRORS! Tests: 3, Assertions: 0, Errors: 3. PK!Rt]tests/Regression/Trac/523.phptnuIw--TEST-- #523: assertAttributeEquals does not work with classes extending ArrayIterator --FILE-- --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. . 1 / 1 (100%) Time: %s, Memory: %s OK (1 test, 1 assertion) PK!tests/Regression/Trac/1021.phptnuIw--TEST-- #1021: Depending on a test that uses a data provider does not work --FILE-- --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. .. 2 / 2 (100%) Time: %s, Memory: %s OK (2 tests, 1 assertion) PK!G7*tests/Regression/Trac/523/Issue523Test.phpnuIwassertAttributeEquals('foo', 'field', new Issue523()); } }; class Issue523 extends ArrayIterator { protected $field = 'foo'; } PK!v WWtests/Regression/Trac/684.phptnuIw--TEST-- #684: Unable to find test class when no test methods exists --FILE-- --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. W 1 / 1 (100%) Time: %s, Memory: %s There was 1 warning: 1) Warning No tests found in class "Foo_Bar_Issue684Test". WARNINGS! Tests: 1, Assertions: 0, Warnings: 1. PK!"޴==*tests/Regression/Trac/578/Issue578Test.phpnuIwiniSet('error_reporting', E_ALL | E_NOTICE); trigger_error('Stack Trace Test Notice', E_NOTICE); } public function testWarningsDoublePrintStackTrace() { $this->iniSet('error_reporting', E_ALL | E_NOTICE); trigger_error('Stack Trace Test Notice', E_WARNING); } public function testUnexpectedExceptionsPrintsCorrectly() { throw new Exception('Double printed exception'); } } PK!htests/TextUI/phpt-xfail.phptnuIw--TEST-- PHPT runner supports XFAIL section --FILE-- 'bar' + 'bar' => 'foo' ) %s:22 12) FailureTest::testAssertIntegerEqualsInteger message Failed asserting that 2 matches expected 1. %s:%d 13) FailureTest::testAssertArrayEqualsArray message Failed asserting that two arrays are equal. --- Expected +++ Actual @@ @@ Array ( - 0 => 1 + 0 => 2 ) %s:%d FAILURES! Tests: 13, Assertions: 14, Failures: 13. PK!( ( tests/TextUI/failure.phptnuIw--TEST-- phpunit FailureTest ../_files/FailureTest.php --FILE-- 1 + 0 => 2 ) %s:%i 2) FailureTest::testAssertIntegerEqualsInteger message Failed asserting that 2 matches expected 1. %s:%i 3) FailureTest::testAssertObjectEqualsObject message Failed asserting that two objects are equal. --- Expected +++ Actual @@ @@ stdClass Object ( - 'foo' => 'bar' + 'bar' => 'foo' ) %s:%i 4) FailureTest::testAssertNullEqualsString message Failed asserting that 'bar' matches expected null. %s:%i 5) FailureTest::testAssertStringEqualsString message Failed asserting that two strings are equal. --- Expected +++ Actual @@ @@ -'foo' +'bar' %s:%i 6) FailureTest::testAssertTextEqualsText message Failed asserting that two strings are equal. --- Expected +++ Actual @@ @@ 'foo -bar +baz ' %s:%i 7) FailureTest::testAssertStringMatchesFormat message Failed asserting that format description matches text. --- Expected +++ Actual @@ @@ -*%s* +** %s:%i 8) FailureTest::testAssertNumericEqualsNumeric message Failed asserting that 2 matches expected 1. %s:%i 9) FailureTest::testAssertTextSameText message Failed asserting that two strings are identical. --- Expected +++ Actual @@ @@ -foo +bar %s:%i 10) FailureTest::testAssertObjectSameObject message Failed asserting that two variables reference the same object. %s:%i 11) FailureTest::testAssertObjectSameNull message Failed asserting that null is identical to an object of class "stdClass". %s:%i 12) FailureTest::testAssertFloatSameFloat message Failed asserting that 1.5 is identical to 1.0. %s:%i 13) FailureTest::testAssertStringMatchesFormatFile Failed asserting that format description matches text. --- Expected +++ Actual @@ @@ -FOO - +...BAR... %s:%i FAILURES! Tests: 13, Assertions: 14, Failures: 13. PK!!%tests/TextUI/_files/phpt_external.phpnuIw 0 && $argv[1] == 'help') { echo 'Help'; } ?> --EXPECT-- Help PK!; 11&tests/TextUI/dataprovider-log-xml.phptnuIw--TEST-- phpunit --log-junit php://stdout DataProviderTest ../_files/DataProviderTest.php --FILE-- DataProviderTest::testAdd with data set #2 (1, 1, 3) Failed asserting that 2 matches expected 3. %s:%i Time: %s, Memory: %s There was 1 failure: 1) DataProviderTest::testAdd with data set #2 (1, 1, 3) Failed asserting that 2 matches expected 3. %s:%i FAILURES! Tests: 4, Assertions: 4, Failures: 1. PK!z&tests/TextUI/colors-always.phptnuIw--TEST-- phpunit --colors=always BankAccountTest ../_files/BankAccountTest.php --FILE-- --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. ... 3 / 3 (100%) Time: %s, Memory: %s OK (3 tests, 2 assertions) PK!8-6D__ tests/TextUI/empty-testcase.phptnuIw--TEST-- phpunit EmptyTestCaseTest ../_files/EmptyTestCaseTest.php --FILE-- --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. W 1 / 1 (100%) Time: %s, Memory: %s There was 1 warning: 1) Warning No tests found in class "EmptyTestCaseTest". WARNINGS! Tests: 1, Assertions: 0, Warnings: 1. PK!™\.tests/TextUI/disable-code-coverage-ignore.phptnuIw--TEST-- phpunit --colors=never --coverage-text=php://stdout --disable-coverage-ignore IgnoreCodeCoverageClassTest tests/_files/IgnoreCodeCoverageClassTest.php --whitelist ../../tests/_files/IgnoreCodeCoverageClass.php --SKIPIF-- --FILE-- 1 + 0 => 2 ) %s:%i Caused by message Failed asserting that two arrays are equal. --- Expected +++ Actual @@ @@ Array ( - 0 => 1 + 0 => 2 ) %s:%i 2) ExceptionStackTest::testNestedExceptions Exception: One %s:%i Caused by InvalidArgumentException: Two %s:%i Caused by Exception: Three %s:%i ERRORS! Tests: 2, Assertions: 1, Errors: 2. PK!Hm)tests/TextUI/filter-method-isolation.phptnuIw--TEST-- phpunit --process-isolation --filter testBalanceIsInitiallyZero BankAccountTest ../_files/BankAccountTest.php --FILE-- DataProviderTest::testAdd with data set #2 (1, 1, 3) Failed asserting that 2 matches expected 3. %s:%i Time: %s, Memory: %s There was 1 failure: 1) DataProviderTest::testAdd with data set #2 (1, 1, 3) Failed asserting that 2 matches expected 3. %s:%i FAILURES! Tests: 4, Assertions: 4, Failures: 1. PK!ff0tests/TextUI/filter-method-case-insensitive.phptnuIw--TEST-- phpunit --filter /balanceIsInitiallyZero/i BankAccountTest ../_files/BankAccountTest.php --FILE-- --FILE-- Code Coverage Options: --coverage-clover Generate code coverage report in Clover XML format. --coverage-crap4j Generate code coverage report in Crap4J XML format. --coverage-html Generate code coverage report in HTML format. --coverage-php Export PHP_CodeCoverage object to file. --coverage-text= Generate code coverage report in text format. Default: Standard output. --coverage-xml Generate code coverage report in PHPUnit XML format. --whitelist Whitelist for code coverage analysis. --disable-coverage-ignore Disable annotations for ignoring code coverage. Logging Options: --log-junit Log test execution in JUnit XML format to file. --log-teamcity Log test execution in TeamCity format to file. --testdox-html Write agile documentation in HTML format to file. --testdox-text Write agile documentation in Text format to file. --testdox-xml Write agile documentation in XML format to file. --reverse-list Print defects in reverse order Test Selection Options: --filter Filter which tests to run. --testsuite Filter which testsuite to run. --group ... Only runs tests from the specified group(s). --exclude-group ... Exclude tests from the specified group(s). --list-groups List available test groups. --list-suites List available test suites. --test-suffix ... Only search for test in files with specified suffix(es). Default: Test.php,.phpt Test Execution Options: --report-useless-tests Be strict about tests that do not test anything. --strict-coverage Be strict about @covers annotation usage. --strict-global-state Be strict about changes to global state --disallow-test-output Be strict about output during tests. --disallow-resource-usage Be strict about resource usage during small tests. --enforce-time-limit Enforce time limit based on test size. --disallow-todo-tests Disallow @todo-annotated tests. --process-isolation Run each test in a separate PHP process. --no-globals-backup Do not backup and restore $GLOBALS for each test. --static-backup Backup and restore static attributes for each test. --colors= Use colors in output ("never", "auto" or "always"). --columns Number of columns to use for progress output. --columns max Use maximum number of columns for progress output. --stderr Write to STDERR instead of STDOUT. --stop-on-error Stop execution upon first error. --stop-on-failure Stop execution upon first error or failure. --stop-on-warning Stop execution upon first warning. --stop-on-risky Stop execution upon first risky test. --stop-on-skipped Stop execution upon first skipped test. --stop-on-incomplete Stop execution upon first incomplete test. --fail-on-warning Treat tests with warnings as failures. --fail-on-risky Treat risky tests as failures. -v|--verbose Output more verbose information. --debug Display debugging information during test execution. --loader TestSuiteLoader implementation to use. --repeat Runs the test(s) repeatedly. --teamcity Report test execution progress in TeamCity format. --testdox Report test execution progress in TestDox format. --testdox-group Only include tests from the specified group(s). --testdox-exclude-group Exclude tests from the specified group(s). --printer TestListener implementation to use. Configuration Options: --bootstrap A "bootstrap" PHP file that is run before the tests. -c|--configuration Read configuration from XML file. --no-configuration Ignore default configuration file (phpunit.xml). --no-coverage Ignore code coverage configuration. --no-extensions Do not load PHPUnit extensions. --include-path Prepend PHP's include_path with given path(s). -d key[=value] Sets a php.ini value. --generate-configuration Generate configuration file with suggested settings. Miscellaneous Options: -h|--help Prints this usage information. --version Prints the version and exits. --atleast-version Checks that version is greater than min and exits. PK!:G[[3tests/TextUI/filter-dataprovider-by-only-range.phptnuIw--TEST-- phpunit --filter \#1-3 DataProviderFilterTest ../_files/DataProviderFilterTest.php --FILE-- --EXPECTF-- MyCommand::myHandler 123 PHPUnit %s by Sebastian Bergmann and contributors. ... 3 / 3 (100%) Time: %s, Memory: %s OK (3 tests, 3 assertions) PK!˳A&tests/TextUI/report-useless-tests.phptnuIw--TEST-- phpunit --report-useless-tests NothingTest ../_files/NothingTest.php --FILE-- --EXPECT-- Hello World PK!?MB,tests/TextUI/stop-on-warning-via-config.phptnuIw--TEST-- phpunit -c ../_files/configuration_stop_on_warning.xml --stop-on-warning StopOnWarningTestSuite ./tests/_files/StopOnWarningTestSuite.php --FILE-- --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. .FEISRW 7 / 7 (100%) StatusTest::testFailure Failed asserting that false is true. %s/StatusTest.php:%s StatusTest::testError Exception:%w %s/StatusTest.php:%d Time: %s, Memory: %s There was 1 error: 1) StatusTest::testError Exception:%w %s:%d -- There was 1 warning: 1) StatusTest::testWarning %s/StatusTest.php:%d -- There was 1 failure: 1) StatusTest::testFailure Failed asserting that false is true. %s/StatusTest.php:%d ERRORS! Tests: 7, Assertions: 2, Errors: 1, Failures: 1, Warnings: 1, Skipped: 1, Incomplete: 1, Risky: 1.PK!tests/TextUI/log-teamcity.phptnuIw--TEST-- phpunit --log-teamcity php://stdout BankAccountTest ../_files/BankAccountTest.php --FILE-- ")tests/TextUI/dependencies2-isolation.phptnuIw--TEST-- phpunit --process-isolation StackTest ../_files/StackTest.php --FILE-- --EXPECTF_EXTERNAL-- _files/phpt-env.expected.txt PK!@9tests/TextUI/assertion.phptnuIw--TEST-- phpunit AssertionExampleTest ../_files/AssertionExampleTest.php --SKIPIF-- --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. F 1 / 1 (100%) Time: %s, Memory: %s There was 1 failure: 1) AssertionExampleTest::testOne assert(false) in %sAssertionExample.php:%d FAILURES! Tests: 1, Assertions: 1, Failures: 1. PK!.<tests/TextUI/filter-dataprovider-by-classname-and-range.phptnuIw--TEST-- phpunit --filter DataProviderFilterTest#1-3 DataProviderFilterTest ../_files/DataProviderFilterTest.php --FILE-- tests/TextUI/filter-dataprovider-by-only-regexp-isolation.phptnuIw--TEST-- phpunit --process-isolation --filter @false.* DataProviderFilterTest ../_files/DataProviderFilterTest.php --FILE-- --EXPECTF-- PHPUnit %s by Sebastian Bergmann and contributors. Warning: Deprecated JSON test listener used { "event": "suiteStart", "suite": "BankAccountTest", "tests": 3 }{ "event": "testStart", "suite": "BankAccountTest", "test": "BankAccountTest::testBalanceIsInitiallyZero" }.{ "event": "test", "suite": "BankAccountTest", "test": "BankAccountTest::testBalanceIsInitiallyZero", "status": "pass", "time": %f, "trace": [], "message": "", "output": "" }{ "event": "testStart", "suite": "BankAccountTest", "test": "BankAccountTest::testBalanceCannotBecomeNegative" }.{ "event": "test", "suite": "BankAccountTest", "test": "BankAccountTest::testBalanceCannotBecomeNegative", "status": "pass", "time": %f, "trace": [], "message": "", "output": "" }{ "event": "testStart", "suite": "BankAccountTest", "test": "BankAccountTest::testBalanceCannotBecomeNegative2" }. 3 / 3 (100%){ "event": "test", "suite": "BankAccountTest", "test": "BankAccountTest::testBalanceCannotBecomeNegative2", "status": "pass", "time": %f, "trace": [], "message": "", "output": "" } Time: %s, Memory: %s OK (3 tests, 3 assertions) PK! 1ZZ(tests/TextUI/custom-printer-verbose.phptnuIw--TEST-- phpunit -c ../_files/configuration.custom-printer.xml --verbose IncompleteTest ../_files/IncompleteTest.php --FILE-- tests/TextUI/filter-dataprovider-by-only-string-isolation.phptnuIw--TEST-- phpunit --process-isolation --filter @false\ test DataProviderFilterTest ../_files/DataProviderFilterTest.php --FILE-- 1 + 0 => 2 ) %s:%i 2) FailureTest::testAssertIntegerEqualsInteger message Failed asserting that 2 matches expected 1. %s:%i 3) FailureTest::testAssertObjectEqualsObject message Failed asserting that two objects are equal. --- Expected +++ Actual @@ @@ stdClass Object ( - 'foo' => 'bar' + 'bar' => 'foo' ) %s:%i 4) FailureTest::testAssertNullEqualsString message Failed asserting that 'bar' matches expected null. %s:%i 5) FailureTest::testAssertStringEqualsString message Failed asserting that two strings are equal. --- Expected +++ Actual @@ @@ -'foo' +'bar' %s:%i 6) FailureTest::testAssertTextEqualsText message Failed asserting that two strings are equal. --- Expected +++ Actual @@ @@ 'foo -bar +baz ' %s:%i 7) FailureTest::testAssertStringMatchesFormat message Failed asserting that format description matches text. --- Expected +++ Actual @@ @@ -*%s* +** %s:%i 8) FailureTest::testAssertNumericEqualsNumeric message Failed asserting that 2 matches expected 1. %s:%i 9) FailureTest::testAssertTextSameText message Failed asserting that two strings are identical. --- Expected +++ Actual @@ @@ -foo +bar %s:%i 10) FailureTest::testAssertObjectSameObject message Failed asserting that two variables reference the same object. %s:%i 11) FailureTest::testAssertObjectSameNull message Failed asserting that null is identical to an object of class "stdClass". %s:%i 12) FailureTest::testAssertFloatSameFloat message Failed asserting that 1.5 is identical to 1.0. %s:%i 13) FailureTest::testAssertStringMatchesFormatFile Failed asserting that format description matches text. --- Expected +++ Actual @@ @@ -FOO - +...BAR... %s:%i FAILURES! Tests: 13, Assertions: 14, Failures: 13. PK!i%tests/TextUI/concrete-test-class.phptnuIw--TEST-- phpunit ConcreteTest ../_files/ConcreteTest.php --FILE-- 1|n+ 0 => 2|n )|n' details=' %s/tests/_files/ExceptionStackTest.php:10|n |n Caused by|n message|n Failed asserting that two arrays are equal.|n --- Expected|n +++ Actual|n @@ @@|n Array (|n - 0 => 1|n + 0 => 2|n )|n |n %s/tests/_files/ExceptionStackTest.php:7|n ' flowId='%d'] ##teamcity[testFinished name='testPrintingChildException' duration='%d' flowId='%d'] ##teamcity[testStarted name='testNestedExceptions' locationHint='php_qn://%s/tests/_files/ExceptionStackTest.php::\ExceptionStackTest::testNestedExceptions' flowId='%d'] ##teamcity[testFailed name='testNestedExceptions' message='Exception : One' details=' %s/tests/_files/ExceptionStackTest.php:18|n ' flowId='%d'] ##teamcity[testFinished name='testNestedExceptions' duration='%d' flowId='%d'] ##teamcity[testSuiteFinished name='ExceptionStackTest' flowId='%d'] Time: %s, Memory: %s ERRORS! Tests: 2, Assertions: 1, Errors: 2.PK!w]W)tests/TextUI/exclude-group-isolation.phptnuIw--TEST-- phpunit --process-isolation --exclude-group balanceIsInitiallyZero BankAccountTest ../_files/BankAccountTest.php --FILE-- Time: %s, Memory: %s There was 1 error: 1) StatusTest::testError Exception:%s %s/StatusTest.php:%d -- There was 1 warning: 1) StatusTest::testWarning %s/StatusTest.php:%d -- There was 1 failure: 1) StatusTest::testFailure Failed asserting that false is true. %s/StatusTest.php:%d ERRORS! Tests: 7, Assertions: 2, Errors: 1, Failures: 1, Warnings: 1, Skipped: 1, Incomplete: 1, Risky: 1.PK!;z$tests/TextUI/test-suffix-single.phptnuIw--TEST-- phpunit --test-suffix .test.php ../_files/ --FILE-- Test Documentation

BankAccount

    ... 3 / 3 (100%)
  • ✓ Balance is initially zero
  • ✓ Balance cannot become negative
Time: %s, Memory: %s OK (3 tests, 3 assertions) PK![7tests/TextUI/testdox-text.phptnuIw--TEST-- phpunit --testdox-text php://stdout BankAccountTest ../_files/BankAccountTest.php --FILE-- Code Coverage Options: --coverage-clover Generate code coverage report in Clover XML format. --coverage-crap4j Generate code coverage report in Crap4J XML format. --coverage-html Generate code coverage report in HTML format. --coverage-php Export PHP_CodeCoverage object to file. --coverage-text= Generate code coverage report in text format. Default: Standard output. --coverage-xml Generate code coverage report in PHPUnit XML format. --whitelist Whitelist for code coverage analysis. --disable-coverage-ignore Disable annotations for ignoring code coverage. Logging Options: --log-junit Log test execution in JUnit XML format to file. --log-teamcity Log test execution in TeamCity format to file. --testdox-html Write agile documentation in HTML format to file. --testdox-text Write agile documentation in Text format to file. --testdox-xml Write agile documentation in XML format to file. --reverse-list Print defects in reverse order Test Selection Options: --filter Filter which tests to run. --testsuite Filter which testsuite to run. --group ... Only runs tests from the specified group(s). --exclude-group ... Exclude tests from the specified group(s). --list-groups List available test groups. --list-suites List available test suites. --test-suffix ... Only search for test in files with specified suffix(es). Default: Test.php,.phpt Test Execution Options: --report-useless-tests Be strict about tests that do not test anything. --strict-coverage Be strict about @covers annotation usage. --strict-global-state Be strict about changes to global state --disallow-test-output Be strict about output during tests. --disallow-resource-usage Be strict about resource usage during small tests. --enforce-time-limit Enforce time limit based on test size. --disallow-todo-tests Disallow @todo-annotated tests. --process-isolation Run each test in a separate PHP process. --no-globals-backup Do not backup and restore $GLOBALS for each test. --static-backup Backup and restore static attributes for each test. --colors= Use colors in output ("never", "auto" or "always"). --columns Number of columns to use for progress output. --columns max Use maximum number of columns for progress output. --stderr Write to STDERR instead of STDOUT. --stop-on-error Stop execution upon first error. --stop-on-failure Stop execution upon first error or failure. --stop-on-warning Stop execution upon first warning. --stop-on-risky Stop execution upon first risky test. --stop-on-skipped Stop execution upon first skipped test. --stop-on-incomplete Stop execution upon first incomplete test. --fail-on-warning Treat tests with warnings as failures. --fail-on-risky Treat risky tests as failures. -v|--verbose Output more verbose information. --debug Display debugging information during test execution. --loader TestSuiteLoader implementation to use. --repeat Runs the test(s) repeatedly. --teamcity Report test execution progress in TeamCity format. --testdox Report test execution progress in TestDox format. --testdox-group Only include tests from the specified group(s). --testdox-exclude-group Exclude tests from the specified group(s). --printer TestListener implementation to use. Configuration Options: --bootstrap A "bootstrap" PHP file that is run before the tests. -c|--configuration Read configuration from XML file. --no-configuration Ignore default configuration file (phpunit.xml). --no-coverage Ignore code coverage configuration. --no-extensions Do not load PHPUnit extensions. --include-path Prepend PHP's include_path with given path(s). -d key[=value] Sets a php.ini value. --generate-configuration Generate configuration file with suggested settings. Miscellaneous Options: -h|--help Prints this usage information. --version Prints the version and exits. --atleast-version Checks that version is greater than min and exits. PK!A)tests/TextUI/dataprovider-issue-2859.phptnuIw--TEST-- phpunit -c ../_files/DataProviderIssue2859/phpunit.xml --FILE-- > ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini - echo 'assert.exception=On' >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini script: - ./phpunit --coverage-clover=coverage.xml - ./phpunit --configuration ./build/travis-ci-fail.xml > /dev/null; if [ $? -eq 0 ]; then echo "SHOULD FAIL"; false; else echo "fail checked"; fi; - xmllint --noout --schema phpunit.xsd phpunit.xml - xmllint --noout --schema phpunit.xsd tests/_files/configuration.xml - xmllint --noout --schema phpunit.xsd tests/_files/configuration_empty.xml - xmllint --noout --schema phpunit.xsd tests/_files/configuration_xinclude.xml -xinclude after_success: - bash <(curl -s https://codecov.io/bash) notifications: email: false PK!PIV .php_cs.distnuIw For the full copyright and license information, please view the LICENSE file that was distributed with this source code. EOF; return PhpCsFixer\Config::create() ->setRiskyAllowed(true) ->setRules( [ 'array_syntax' => ['syntax' => 'short'], 'binary_operator_spaces' => [ 'align_double_arrow' => true, 'align_equals' => true ], 'blank_line_after_namespace' => true, 'blank_line_before_return' => true, 'braces' => true, 'cast_spaces' => true, 'concat_space' => ['spacing' => 'one'], 'elseif' => true, 'encoding' => true, 'full_opening_tag' => true, 'function_declaration' => true, 'header_comment' => ['header' => $header, 'separate' => 'none'], 'indentation_type' => true, 'line_ending' => true, 'lowercase_constants' => true, 'lowercase_keywords' => true, 'method_argument_space' => true, 'no_alias_functions' => true, 'no_blank_lines_after_class_opening' => true, 'no_blank_lines_after_phpdoc' => true, 'no_closing_tag' => true, 'no_empty_phpdoc' => true, 'no_empty_statement' => true, 'no_extra_consecutive_blank_lines' => true, 'no_leading_namespace_whitespace' => true, 'no_singleline_whitespace_before_semicolons' => true, 'no_spaces_after_function_name' => true, 'no_spaces_inside_parenthesis' => true, 'no_trailing_comma_in_list_call' => true, 'no_trailing_whitespace' => true, 'no_unused_imports' => true, 'no_whitespace_in_blank_line' => true, 'phpdoc_align' => true, 'phpdoc_indent' => true, 'phpdoc_no_access' => true, 'phpdoc_no_empty_return' => true, 'phpdoc_no_package' => true, 'phpdoc_scalar' => true, 'phpdoc_separation' => true, 'phpdoc_to_comment' => true, 'phpdoc_trim' => true, 'phpdoc_types' => true, 'phpdoc_var_without_name' => true, 'self_accessor' => true, 'simplified_null_return' => true, 'single_blank_line_at_eof' => true, 'single_import_per_statement' => true, 'single_line_after_imports' => true, 'single_quote' => true, 'ternary_operator_spaces' => true, 'trim_array_spaces' => true, 'visibility_required' => true, ] ) ->setFinder( PhpCsFixer\Finder::create() ->files() ->in(__DIR__ . '/build') ->in(__DIR__ . '/src') ->in(__DIR__ . '/tests/Framework') ->in(__DIR__ . '/tests/Runner') ->in(__DIR__ . '/tests/Util') ->name('*.php') ); PK!gphpunitnu̗#!/usr/bin/env php * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ if (version_compare('5.6.0', PHP_VERSION, '>')) { fwrite( STDERR, sprintf( 'This version of PHPUnit is supported on PHP 5.6, PHP 7.0, and PHP 7.1.' . PHP_EOL . 'You are using PHP %s (%s).' . PHP_EOL, PHP_VERSION, PHP_BINARY ) ); die(1); } if (!ini_get('date.timezone')) { ini_set('date.timezone', 'UTC'); } foreach (array(__DIR__ . '/../../autoload.php', __DIR__ . '/../vendor/autoload.php', __DIR__ . '/vendor/autoload.php') as $file) { if (file_exists($file)) { define('PHPUNIT_COMPOSER_INSTALL', $file); break; } } unset($file); if (!defined('PHPUNIT_COMPOSER_INSTALL')) { fwrite(STDERR, 'You need to set up the project dependencies using Composer:' . PHP_EOL . PHP_EOL . ' composer install' . PHP_EOL . PHP_EOL . 'You can learn all about Composer on https://getcomposer.org/.' . PHP_EOL ); die(1); } require PHPUNIT_COMPOSER_INSTALL; PHPUnit_TextUI_Command::main(); PK!mв composer.jsonnuIw{ "name": "phpunit/phpunit", "description": "The PHP Unit Testing framework.", "type": "library", "keywords": [ "phpunit", "xunit", "testing" ], "homepage": "https://phpunit.de/", "license": "BSD-3-Clause", "authors": [ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de", "role": "lead" } ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues" }, "prefer-stable": true, "require": { "php": "^5.6 || ^7.0", "phpunit/php-file-iterator": "~1.4", "phpunit/php-text-template": "~1.2", "phpunit/php-code-coverage": "^4.0.4", "phpunit/php-timer": "^1.0.6", "phpunit/phpunit-mock-objects": "^3.2", "phpspec/prophecy": "^1.6.2", "symfony/yaml": "~2.1|~3.0|~4.0", "sebastian/comparator": "^1.2.4", "sebastian/diff": "^1.4.3", "sebastian/environment": "^1.3.4 || ^2.0", "sebastian/exporter": "~2.0", "sebastian/global-state": "^1.1", "sebastian/object-enumerator": "~2.0", "sebastian/resource-operations": "~1.0", "sebastian/version": "^1.0.6|^2.0.1", "myclabs/deep-copy": "~1.3", "ext-dom": "*", "ext-json": "*", "ext-mbstring": "*", "ext-xml": "*", "ext-libxml": "*" }, "require-dev": { "ext-PDO": "*" }, "conflict": { "phpdocumentor/reflection-docblock": "3.0.2" }, "config": { "platform": { "php": "5.6.0" }, "optimize-autoloader": true, "sort-packages": true }, "suggest": { "phpunit/php-invoker": "~1.1", "ext-xdebug": "*" }, "bin": [ "phpunit" ], "autoload": { "classmap": [ "src/" ] }, "autoload-dev": { "classmap": [ "tests/" ], "files": [ "src/Framework/Assert/Functions.php", "tests/_files/CoveredFunction.php" ] }, "extra": { "branch-alias": { "dev-master": "5.7.x-dev" } } } PK!o2o2 phpunit.xsdnuIw This Schema file defines the rules by which the XML configuration file of PHPUnit 5.7 may be structured. Root Element The main type specifying the document structure PK!ee.github/ISSUE_TEMPLATE.mdnuIw| Q | A | --------------------| --------------- | PHPUnit version | x.y.z | PHP version | x.y.z | Installation Method | Composer / PHAR PK!=*RW W .github/CODE_OF_CONDUCT.mdnuIw# Contributor Code of Conduct As contributors and maintainers of this project, and in the interest of fostering an open and welcoming community, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities. We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, religion, or nationality. Examples of unacceptable behavior by participants include: * The use of sexualized language or imagery * Personal attacks * Trolling or insulting/derogatory comments * Public or private harassment * Publishing other's private information, such as physical or electronic addresses, without explicit permission * Other unethical or unprofessional conduct Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. By adopting this Code of Conduct, project maintainers commit themselves to fairly and consistently applying these principles to every aspect of managing this project. Project maintainers who do not follow or enforce the Code of Conduct may be permanently removed from the project team. This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project maintainer at sebastian@phpunit.de. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. Maintainers are obligated to maintain confidentiality with regard to the reporter of an incident. This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.3.0, available at [http://contributor-covenant.org/version/1/3/0/][version] [homepage]: http://contributor-covenant.org [version]: http://contributor-covenant.org/version/1/3/0/ PK!c .github/CONTRIBUTING.mdnuIw# Contributing to PHPUnit ## Contributor Code of Conduct Please note that this project is released with a [Contributor Code of Conduct](CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms. ## Workflow * Fork the project. * Make your bug fix or feature addition. * Add tests for it. This is important so we don't break it in a future version unintentionally. * Send a pull request. Bonus points for topic branches. Please make sure that you have [set up your user name and email address](http://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup) for use with Git. Strings such as `silly nick name ` look really stupid in the commit history of a project. Pull requests for bug fixes must be based on the current stable branch whereas pull requests for new features must be based on the `master` branch. We are trying to keep backwards compatibility breaks in PHPUnit to an absolute minimum. Please take this into account when proposing changes. Due to time constraints, we are not always able to respond as quickly as we would like. Please do not take delays personal and feel free to remind us if you feel that we forgot to respond. ## Coding Guidelines This project comes with a configuration file for [php-cs-fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer) (`.php_cs`) that you can use to (re)format your sourcecode for compliance with this project's coding guidelines: ```bash $ wget http://cs.sensiolabs.org/download/php-cs-fixer-v2.phar -O php-cs-fixer.phar $ php php-cs-fixer.phar fix ``` ## Using PHPUnit from a Git checkout The following commands can be used to perform the initial checkout of PHPUnit: ```bash $ git clone git://github.com/sebastianbergmann/phpunit.git $ cd phpunit ``` Retrieve PHPUnit's dependencies using [Composer](https://getcomposer.org/): ```bash $ composer install ``` The `phpunit` script can be used to invoke the PHPUnit test runner: ```bash $ ./phpunit --version ``` ## Running PHPUnit's own test suite After following the steps shown above, PHPUnit's own test suite is run like this: ```bash $ ./phpunit ``` ## Reporting issues Please use the most specific issue tracker to search for existing tickets and to open new tickets: * [General problems](https://github.com/sebastianbergmann/phpunit/issues) * [Code Coverage](https://github.com/sebastianbergmann/php-code-coverage/issues) * [Stub and Mock Objects](https://github.com/sebastianbergmann/phpunit-mock-objects/issues) * [DbUnit](https://github.com/sebastianbergmann/dbunit/issues) * [Documentation](https://github.com/sebastianbergmann/phpunit-documentation/issues) * [Website](https://github.com/sebastianbergmann/phpunit-website/issues) PK!em6$$src/Runner/Version.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ use SebastianBergmann\Version; /** * This class defines the current version of PHPUnit. */ class PHPUnit_Runner_Version { private static $pharVersion; private static $version; /** * Returns the current version of PHPUnit. * * @return string */ public static function id() { if (self::$pharVersion !== null) { return self::$pharVersion; } if (self::$version === null) { $version = new Version('5.7.27', dirname(dirname(__DIR__))); self::$version = $version->getVersion(); } return self::$version; } /** * @return string */ public static function series() { if (strpos(self::id(), '-')) { $version = explode('-', self::id())[0]; } else { $version = self::id(); } return implode('.', array_slice(explode('.', $version), 0, 2)); } /** * @return string */ public static function getVersionString() { return 'PHPUnit ' . self::id() . ' by Sebastian Bergmann and contributors.'; } /** * @return string */ public static function getReleaseChannel() { if (strpos(self::$pharVersion, '-') !== false) { return '-nightly'; } return ''; } } PK!(JJsrc/Runner/BaseTestRunner.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Base class for all test runners. */ abstract class PHPUnit_Runner_BaseTestRunner { const STATUS_PASSED = 0; const STATUS_SKIPPED = 1; const STATUS_INCOMPLETE = 2; const STATUS_FAILURE = 3; const STATUS_ERROR = 4; const STATUS_RISKY = 5; const STATUS_WARNING = 6; const SUITE_METHODNAME = 'suite'; /** * Returns the loader to be used. * * @return PHPUnit_Runner_TestSuiteLoader */ public function getLoader() { return new PHPUnit_Runner_StandardTestSuiteLoader; } /** * Returns the Test corresponding to the given suite. * This is a template method, subclasses override * the runFailed() and clearStatus() methods. * * @param string $suiteClassName * @param string $suiteClassFile * @param mixed $suffixes * * @return PHPUnit_Framework_Test */ public function getTest($suiteClassName, $suiteClassFile = '', $suffixes = '') { if (is_dir($suiteClassName) && !is_file($suiteClassName . '.php') && empty($suiteClassFile)) { $facade = new File_Iterator_Facade; $files = $facade->getFilesAsArray( $suiteClassName, $suffixes ); $suite = new PHPUnit_Framework_TestSuite($suiteClassName); $suite->addTestFiles($files); return $suite; } try { $testClass = $this->loadSuiteClass( $suiteClassName, $suiteClassFile ); } catch (PHPUnit_Framework_Exception $e) { $this->runFailed($e->getMessage()); return; } try { $suiteMethod = $testClass->getMethod(self::SUITE_METHODNAME); if (!$suiteMethod->isStatic()) { $this->runFailed( 'suite() method must be static.' ); return; } try { $test = $suiteMethod->invoke(null, $testClass->getName()); } catch (ReflectionException $e) { $this->runFailed( sprintf( "Failed to invoke suite() method.\n%s", $e->getMessage() ) ); return; } } catch (ReflectionException $e) { try { $test = new PHPUnit_Framework_TestSuite($testClass); } catch (PHPUnit_Framework_Exception $e) { $test = new PHPUnit_Framework_TestSuite; $test->setName($suiteClassName); } } $this->clearStatus(); return $test; } /** * Returns the loaded ReflectionClass for a suite name. * * @param string $suiteClassName * @param string $suiteClassFile * * @return ReflectionClass */ protected function loadSuiteClass($suiteClassName, $suiteClassFile = '') { $loader = $this->getLoader(); return $loader->load($suiteClassName, $suiteClassFile); } /** * Clears the status message. */ protected function clearStatus() { } /** * Override to define how to handle a failed loading of * a test suite. * * @param string $message */ abstract protected function runFailed($message); } PK! &src/Runner/StandardTestSuiteLoader.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * The standard test suite loader. */ class PHPUnit_Runner_StandardTestSuiteLoader implements PHPUnit_Runner_TestSuiteLoader { /** * @param string $suiteClassName * @param string $suiteClassFile * * @return ReflectionClass * * @throws PHPUnit_Framework_Exception */ public function load($suiteClassName, $suiteClassFile = '') { $suiteClassName = str_replace('.php', '', $suiteClassName); if (empty($suiteClassFile)) { $suiteClassFile = PHPUnit_Util_Filesystem::classNameToFilename( $suiteClassName ); } if (!class_exists($suiteClassName, false)) { $loadedClasses = get_declared_classes(); $filename = PHPUnit_Util_Fileloader::checkAndLoad($suiteClassFile); $loadedClasses = array_values( array_diff(get_declared_classes(), $loadedClasses) ); } if (!class_exists($suiteClassName, false) && !empty($loadedClasses)) { $offset = 0 - strlen($suiteClassName); foreach ($loadedClasses as $loadedClass) { $class = new ReflectionClass($loadedClass); if (substr($loadedClass, $offset) === $suiteClassName && $class->getFileName() == $filename) { $suiteClassName = $loadedClass; break; } } } if (!class_exists($suiteClassName, false) && !empty($loadedClasses)) { $testCaseClass = 'PHPUnit_Framework_TestCase'; foreach ($loadedClasses as $loadedClass) { $class = new ReflectionClass($loadedClass); $classFile = $class->getFileName(); if ($class->isSubclassOf($testCaseClass) && !$class->isAbstract()) { $suiteClassName = $loadedClass; $testCaseClass = $loadedClass; if ($classFile == realpath($suiteClassFile)) { break; } } if ($class->hasMethod('suite')) { $method = $class->getMethod('suite'); if (!$method->isAbstract() && $method->isPublic() && $method->isStatic()) { $suiteClassName = $loadedClass; if ($classFile == realpath($suiteClassFile)) { break; } } } } } if (class_exists($suiteClassName, false)) { $class = new ReflectionClass($suiteClassName); if ($class->getFileName() == realpath($suiteClassFile)) { return $class; } } throw new PHPUnit_Framework_Exception( sprintf( "Class '%s' could not be found in '%s'.", $suiteClassName, $suiteClassFile ) ); } /** * @param ReflectionClass $aClass * * @return ReflectionClass */ public function reload(ReflectionClass $aClass) { return $aClass; } } PK!+P>>src/Runner/Exception.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class PHPUnit_Runner_Exception extends RuntimeException implements PHPUnit_Exception { } PK!\fbsrc/Runner/TestSuiteLoader.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * An interface to define how a test suite should be loaded. */ interface PHPUnit_Runner_TestSuiteLoader { /** * @param string $suiteClassName * @param string $suiteClassFile * * @return ReflectionClass */ public function load($suiteClassName, $suiteClassFile = ''); /** * @param ReflectionClass $aClass * * @return ReflectionClass */ public function reload(ReflectionClass $aClass); } PK!|Oq q src/Runner/Filter/Test.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class PHPUnit_Runner_Filter_Test extends RecursiveFilterIterator { /** * @var string */ protected $filter = null; /** * @var int */ protected $filterMin; /** * @var int */ protected $filterMax; /** * @param RecursiveIterator $iterator * @param string $filter */ public function __construct(RecursiveIterator $iterator, $filter) { parent::__construct($iterator); $this->setFilter($filter); } /** * @param string $filter */ protected function setFilter($filter) { if (PHPUnit_Util_Regex::pregMatchSafe($filter, '') === false) { // Handles: // * testAssertEqualsSucceeds#4 // * testAssertEqualsSucceeds#4-8 if (preg_match('/^(.*?)#(\d+)(?:-(\d+))?$/', $filter, $matches)) { if (isset($matches[3]) && $matches[2] < $matches[3]) { $filter = sprintf( '%s.*with data set #(\d+)$', $matches[1] ); $this->filterMin = $matches[2]; $this->filterMax = $matches[3]; } else { $filter = sprintf( '%s.*with data set #%s$', $matches[1], $matches[2] ); } } // Handles: // * testDetermineJsonError@JSON_ERROR_NONE // * testDetermineJsonError@JSON.* elseif (preg_match('/^(.*?)@(.+)$/', $filter, $matches)) { $filter = sprintf( '%s.*with data set "%s"$', $matches[1], $matches[2] ); } // Escape delimiters in regular expression. Do NOT use preg_quote, // to keep magic characters. $filter = sprintf('/%s/', str_replace( '/', '\\/', $filter )); } $this->filter = $filter; } /** * @return bool */ public function accept() { $test = $this->getInnerIterator()->current(); if ($test instanceof PHPUnit_Framework_TestSuite) { return true; } if ($test instanceof PHPUnit_Framework_WarningTestCase) { $name = $test->getMessage(); } else { $tmp = PHPUnit_Util_Test::describe($test, false); if ($tmp[0] != '') { $name = implode('::', $tmp); } else { $name = $tmp[1]; } } $accepted = @preg_match($this->filter, $name, $matches); if ($accepted && isset($this->filterMax)) { $set = end($matches); $accepted = $set >= $this->filterMin && $set <= $this->filterMax; } return $accepted; } } PK!7_wsrc/Runner/Filter/Group.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ abstract class PHPUnit_Runner_Filter_GroupFilterIterator extends RecursiveFilterIterator { /** * @var array */ protected $groupTests = []; /** * @param RecursiveIterator $iterator * @param array $groups * @param PHPUnit_Framework_TestSuite $suite */ public function __construct(RecursiveIterator $iterator, array $groups, PHPUnit_Framework_TestSuite $suite) { parent::__construct($iterator); foreach ($suite->getGroupDetails() as $group => $tests) { if (in_array($group, $groups)) { $testHashes = array_map( function ($test) { return spl_object_hash($test); }, $tests ); $this->groupTests = array_merge($this->groupTests, $testHashes); } } } /** * @return bool */ public function accept() { $test = $this->getInnerIterator()->current(); if ($test instanceof PHPUnit_Framework_TestSuite) { return true; } return $this->doAccept(spl_object_hash($test)); } abstract protected function doAccept($hash); } PK!^I src/Runner/Filter/Factory.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class PHPUnit_Runner_Filter_Factory { /** * @var array */ private $filters = []; /** * @param ReflectionClass $filter * @param mixed $args */ public function addFilter(ReflectionClass $filter, $args) { if (!$filter->isSubclassOf('RecursiveFilterIterator')) { throw new InvalidArgumentException( sprintf( 'Class "%s" does not extend RecursiveFilterIterator', $filter->name ) ); } $this->filters[] = [$filter, $args]; } /** * @return FilterIterator */ public function factory(Iterator $iterator, PHPUnit_Framework_TestSuite $suite) { foreach ($this->filters as $filter) { list($class, $args) = $filter; $iterator = $class->newInstance($iterator, $args, $suite); } return $iterator; } } PK!T#src/Runner/Filter/Group/Exclude.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class PHPUnit_Runner_Filter_Group_Exclude extends PHPUnit_Runner_Filter_GroupFilterIterator { /** * @param string $hash * * @return bool */ protected function doAccept($hash) { return !in_array($hash, $this->groupTests); } } PK!}f#src/Runner/Filter/Group/Include.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class PHPUnit_Runner_Filter_Group_Include extends PHPUnit_Runner_Filter_GroupFilterIterator { /** * @param string $hash * * @return bool */ protected function doAccept($hash) { return in_array($hash, $this->groupTests); } } PK!2QQ!src/Extensions/GroupTestSuite.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * We have a TestSuite object A. * In TestSuite object A we have Tests tagged with @group. * We want a TestSuite object B that contains TestSuite objects C, D, ... * for the Tests tagged with @group C, @group D, ... * Running the Tests from TestSuite object B results in Tests tagged with both * * @group C and @group D in TestSuite object A to be run twice . * * * $suite = new PHPUnit_Extensions_GroupTestSuite($A, array('C', 'D')); * */ class PHPUnit_Extensions_GroupTestSuite extends PHPUnit_Framework_TestSuite { public function __construct(PHPUnit_Framework_TestSuite $suite, array $groups) { $groupSuites = []; $name = $suite->getName(); foreach ($groups as $group) { $groupSuites[$group] = new PHPUnit_Framework_TestSuite($name . ' - ' . $group); $this->addTest($groupSuites[$group]); } $tests = new RecursiveIteratorIterator( new PHPUnit_Util_TestSuiteIterator($suite), RecursiveIteratorIterator::LEAVES_ONLY ); foreach ($tests as $test) { if ($test instanceof PHPUnit_Framework_TestCase) { $testGroups = PHPUnit_Util_Test::getGroups( get_class($test), $test->getName(false) ); foreach ($groups as $group) { foreach ($testGroups as $testGroup) { if ($group == $testGroup) { $groupSuites[$group]->addTest($test); } } } } } } } PK!8<{  src/Extensions/TestDecorator.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * A Decorator for Tests. * * Use TestDecorator as the base class for defining new * test decorators. Test decorator subclasses can be introduced * to add behaviour before or after a test is run. */ class PHPUnit_Extensions_TestDecorator extends PHPUnit_Framework_Assert implements PHPUnit_Framework_Test, PHPUnit_Framework_SelfDescribing { /** * The Test to be decorated. * * @var object */ protected $test = null; /** * Constructor. * * @param PHPUnit_Framework_Test $test */ public function __construct(PHPUnit_Framework_Test $test) { $this->test = $test; } /** * Returns a string representation of the test. * * @return string */ public function toString() { return $this->test->toString(); } /** * Runs the test and collects the * result in a TestResult. * * @param PHPUnit_Framework_TestResult $result */ public function basicRun(PHPUnit_Framework_TestResult $result) { $this->test->run($result); } /** * Counts the number of test cases that * will be run by this test. * * @return int */ public function count() { return count($this->test); } /** * Creates a default TestResult object. * * @return PHPUnit_Framework_TestResult */ protected function createResult() { return new PHPUnit_Framework_TestResult; } /** * Returns the test to be run. * * @return PHPUnit_Framework_Test */ public function getTest() { return $this->test; } /** * Runs the decorated test and collects the * result in a TestResult. * * @param PHPUnit_Framework_TestResult $result * * @return PHPUnit_Framework_TestResult */ public function run(PHPUnit_Framework_TestResult $result = null) { if ($result === null) { $result = $this->createResult(); } $this->basicRun($result); return $result; } } PK!Osrc/Extensions/RepeatedTest.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * A Decorator that runs a test repeatedly. */ class PHPUnit_Extensions_RepeatedTest extends PHPUnit_Extensions_TestDecorator { /** * @var bool */ protected $processIsolation = false; /** * @var int */ protected $timesRepeat = 1; /** * @param PHPUnit_Framework_Test $test * @param int $timesRepeat * @param bool $processIsolation * * @throws PHPUnit_Framework_Exception */ public function __construct(PHPUnit_Framework_Test $test, $timesRepeat = 1, $processIsolation = false) { parent::__construct($test); if (is_int($timesRepeat) && $timesRepeat >= 0) { $this->timesRepeat = $timesRepeat; } else { throw PHPUnit_Util_InvalidArgumentHelper::factory( 2, 'positive integer' ); } $this->processIsolation = $processIsolation; } /** * Counts the number of test cases that * will be run by this test. * * @return int */ public function count() { return $this->timesRepeat * count($this->test); } /** * Runs the decorated test and collects the * result in a TestResult. * * @param PHPUnit_Framework_TestResult $result * * @return PHPUnit_Framework_TestResult * * @throws PHPUnit_Framework_Exception */ public function run(PHPUnit_Framework_TestResult $result = null) { if ($result === null) { $result = $this->createResult(); } //@codingStandardsIgnoreStart for ($i = 0; $i < $this->timesRepeat && !$result->shouldStop(); $i++) { //@codingStandardsIgnoreEnd if ($this->test instanceof PHPUnit_Framework_TestSuite) { $this->test->setRunTestInSeparateProcess($this->processIsolation); } $this->test->run($result); } return $result; } } PK!B8-8-src/Extensions/PhptTestCase.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Runner for PHPT test cases. */ class PHPUnit_Extensions_PhptTestCase implements PHPUnit_Framework_Test, PHPUnit_Framework_SelfDescribing { /** * @var string */ private $filename; /** * @var PHPUnit_Util_PHP */ private $phpUtil; /** * @var array */ private $settings = [ 'allow_url_fopen=1', 'auto_append_file=', 'auto_prepend_file=', 'disable_functions=', 'display_errors=1', 'docref_root=', 'docref_ext=.html', 'error_append_string=', 'error_prepend_string=', 'error_reporting=-1', 'html_errors=0', 'log_errors=0', 'magic_quotes_runtime=0', 'output_handler=', 'open_basedir=', 'output_buffering=Off', 'report_memleaks=0', 'report_zend_debug=0', 'safe_mode=0', 'xdebug.default_enable=0' ]; /** * Constructs a test case with the given filename. * * @param string $filename * @param PHPUnit_Util_PHP $phpUtil * * @throws PHPUnit_Framework_Exception */ public function __construct($filename, $phpUtil = null) { if (!is_string($filename)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); } if (!is_file($filename)) { throw new PHPUnit_Framework_Exception( sprintf( 'File "%s" does not exist.', $filename ) ); } $this->filename = $filename; $this->phpUtil = $phpUtil ?: PHPUnit_Util_PHP::factory(); } /** * Counts the number of test cases executed by run(TestResult result). * * @return int */ public function count() { return 1; } /** * @param array $sections * @param string $output */ private function assertPhptExpectation(array $sections, $output) { $assertions = [ 'EXPECT' => 'assertEquals', 'EXPECTF' => 'assertStringMatchesFormat', 'EXPECTREGEX' => 'assertRegExp', ]; $actual = preg_replace('/\r\n/', "\n", trim($output)); foreach ($assertions as $sectionName => $sectionAssertion) { if (isset($sections[$sectionName])) { $sectionContent = preg_replace('/\r\n/', "\n", trim($sections[$sectionName])); $assertion = $sectionAssertion; $expected = $sectionName == 'EXPECTREGEX' ? "/{$sectionContent}/" : $sectionContent; break; } } PHPUnit_Framework_Assert::$assertion($expected, $actual); } /** * Runs a test and collects its result in a TestResult instance. * * @param PHPUnit_Framework_TestResult $result * * @return PHPUnit_Framework_TestResult */ public function run(PHPUnit_Framework_TestResult $result = null) { $sections = $this->parse(); $code = $this->render($sections['FILE']); if ($result === null) { $result = new PHPUnit_Framework_TestResult; } $skip = false; $xfail = false; $time = 0; $settings = $this->settings; $result->startTest($this); if (isset($sections['INI'])) { $settings = array_merge($settings, $this->parseIniSection($sections['INI'])); } if (isset($sections['ENV'])) { $env = $this->parseEnvSection($sections['ENV']); $this->phpUtil->setEnv($env); } // Redirects STDERR to STDOUT $this->phpUtil->setUseStderrRedirection(true); if ($result->enforcesTimeLimit()) { $this->phpUtil->setTimeout($result->getTimeoutForLargeTests()); } if (isset($sections['SKIPIF'])) { $jobResult = $this->phpUtil->runJob($sections['SKIPIF'], $settings); if (!strncasecmp('skip', ltrim($jobResult['stdout']), 4)) { if (preg_match('/^\s*skip\s*(.+)\s*/i', $jobResult['stdout'], $message)) { $message = substr($message[1], 2); } else { $message = ''; } $result->addFailure($this, new PHPUnit_Framework_SkippedTestError($message), 0); $skip = true; } } if (isset($sections['XFAIL'])) { $xfail = trim($sections['XFAIL']); } if (!$skip) { if (isset($sections['STDIN'])) { $this->phpUtil->setStdin($sections['STDIN']); } if (isset($sections['ARGS'])) { $this->phpUtil->setArgs($sections['ARGS']); } PHP_Timer::start(); $jobResult = $this->phpUtil->runJob($code, $settings); $time = PHP_Timer::stop(); try { $this->assertPhptExpectation($sections, $jobResult['stdout']); } catch (PHPUnit_Framework_AssertionFailedError $e) { if ($xfail !== false) { $result->addFailure( $this, new PHPUnit_Framework_IncompleteTestError( $xfail, 0, $e ), $time ); } else { $result->addFailure($this, $e, $time); } } catch (Throwable $t) { $result->addError($this, $t, $time); } catch (Exception $e) { $result->addError($this, $e, $time); } if ($result->allCompletelyImplemented() && $xfail !== false) { $result->addFailure( $this, new PHPUnit_Framework_IncompleteTestError( 'XFAIL section but test passes' ), $time ); } $this->phpUtil->setStdin(''); $this->phpUtil->setArgs(''); if (isset($sections['CLEAN'])) { $cleanCode = $this->render($sections['CLEAN']); $this->phpUtil->runJob($cleanCode, $this->settings); } } $result->endTest($this, $time); return $result; } /** * Returns the name of the test case. * * @return string */ public function getName() { return $this->toString(); } /** * Returns a string representation of the test case. * * @return string */ public function toString() { return $this->filename; } /** * @return array * * @throws PHPUnit_Framework_Exception */ private function parse() { $sections = []; $section = ''; $allowExternalSections = [ 'FILE', 'EXPECT', 'EXPECTF', 'EXPECTREGEX' ]; $requiredSections = [ 'FILE', [ 'EXPECT', 'EXPECTF', 'EXPECTREGEX' ] ]; $unsupportedSections = [ 'REDIRECTTEST', 'REQUEST', 'POST', 'PUT', 'POST_RAW', 'GZIP_POST', 'DEFLATE_POST', 'GET', 'COOKIE', 'HEADERS', 'CGI', 'EXPECTHEADERS', 'EXTENSIONS', 'PHPDBG' ]; foreach (file($this->filename) as $line) { if (preg_match('/^--([_A-Z]+)--/', $line, $result)) { $section = $result[1]; $sections[$section] = ''; continue; } elseif (empty($section)) { throw new PHPUnit_Framework_Exception('Invalid PHPT file'); } $sections[$section] .= $line; } if (isset($sections['FILEEOF'])) { $sections['FILE'] = rtrim($sections['FILEEOF'], "\r\n"); unset($sections['FILEEOF']); } $testDirectory = dirname($this->filename) . DIRECTORY_SEPARATOR; foreach ($allowExternalSections as $section) { if (isset($sections[$section . '_EXTERNAL'])) { // do not allow directory traversal $externalFilename = str_replace('..', '', trim($sections[$section . '_EXTERNAL'])); // only allow files from the test directory if (!is_file($testDirectory . $externalFilename) || !is_readable($testDirectory . $externalFilename)) { throw new PHPUnit_Framework_Exception( sprintf( 'Could not load --%s-- %s for PHPT file', $section . '_EXTERNAL', $testDirectory . $externalFilename ) ); } $sections[$section] = file_get_contents($testDirectory . $externalFilename); unset($sections[$section . '_EXTERNAL']); } } $isValid = true; foreach ($requiredSections as $section) { if (is_array($section)) { $foundSection = false; foreach ($section as $anySection) { if (isset($sections[$anySection])) { $foundSection = true; break; } } if (!$foundSection) { $isValid = false; break; } } else { if (!isset($sections[$section])) { $isValid = false; break; } } } if (!$isValid) { throw new PHPUnit_Framework_Exception('Invalid PHPT file'); } foreach ($unsupportedSections as $section) { if (isset($sections[$section])) { throw new PHPUnit_Framework_Exception( 'PHPUnit does not support this PHPT file' ); } } return $sections; } /** * @param string $code * * @return string */ private function render($code) { return str_replace( [ '__DIR__', '__FILE__' ], [ "'" . dirname($this->filename) . "'", "'" . $this->filename . "'" ], $code ); } /** * Parse --INI-- section key value pairs and return as array. * * @param string * * @return array */ protected function parseIniSection($content) { return preg_split('/\n|\r/', $content, -1, PREG_SPLIT_NO_EMPTY); } protected function parseEnvSection($content) { $env = []; foreach (explode("\n", trim($content)) as $e) { $e = explode('=', trim($e), 2); if (!empty($e[0]) && isset($e[1])) { $env[$e[0]] = $e[1]; } } return $env; } } PK!M,n src/Extensions/PhptTestSuite.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Suite for .phpt test cases. */ class PHPUnit_Extensions_PhptTestSuite extends PHPUnit_Framework_TestSuite { /** * Constructs a new TestSuite for .phpt test cases. * * @param string $directory * * @throws PHPUnit_Framework_Exception */ public function __construct($directory) { if (is_string($directory) && is_dir($directory)) { $this->setName($directory); $facade = new File_Iterator_Facade; $files = $facade->getFilesAsArray($directory, '.phpt'); foreach ($files as $file) { $this->addTestFile($file); } } else { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'directory name'); } } } PK!Ne  !src/Extensions/TicketListener.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Base class for test listeners that interact with an issue tracker. */ abstract class PHPUnit_Extensions_TicketListener implements PHPUnit_Framework_TestListener { /** * @var array */ protected $ticketCounts = []; /** * @var bool */ protected $ran = false; /** * An error occurred. * * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time */ public function addError(PHPUnit_Framework_Test $test, Exception $e, $time) { } /** * A failure occurred. * * @param PHPUnit_Framework_Test $test * @param PHPUnit_Framework_AssertionFailedError $e * @param float $time */ public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time) { } /** * Incomplete test. * * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time */ public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time) { } /** * Risky test. * * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time */ public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time) { } /** * Skipped test. * * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time */ public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time) { } /** * A test suite started. * * @param PHPUnit_Framework_TestSuite $suite */ public function startTestSuite(PHPUnit_Framework_TestSuite $suite) { } /** * A test suite ended. * * @param PHPUnit_Framework_TestSuite $suite */ public function endTestSuite(PHPUnit_Framework_TestSuite $suite) { } /** * A test started. * * @param PHPUnit_Framework_Test $test */ public function startTest(PHPUnit_Framework_Test $test) { if (!$test instanceof PHPUnit_Framework_WarningTestCase) { if ($this->ran) { return; } $name = $test->getName(false); $tickets = PHPUnit_Util_Test::getTickets(get_class($test), $name); foreach ($tickets as $ticket) { $this->ticketCounts[$ticket][$name] = 1; } $this->ran = true; } } /** * A test ended. * * @param PHPUnit_Framework_Test $test * @param float $time */ public function endTest(PHPUnit_Framework_Test $test, $time) { if (!$test instanceof PHPUnit_Framework_WarningTestCase) { if ($test->getStatus() == PHPUnit_Runner_BaseTestRunner::STATUS_PASSED) { $ifStatus = ['assigned', 'new', 'reopened']; $newStatus = 'closed'; $message = 'Automatically closed by PHPUnit (test passed).'; $resolution = 'fixed'; $cumulative = true; } elseif ($test->getStatus() == PHPUnit_Runner_BaseTestRunner::STATUS_FAILURE) { $ifStatus = ['closed']; $newStatus = 'reopened'; $message = 'Automatically reopened by PHPUnit (test failed).'; $resolution = ''; $cumulative = false; } else { return; } $name = $test->getName(false); $tickets = PHPUnit_Util_Test::getTickets(get_class($test), $name); foreach ($tickets as $ticket) { // Remove this test from the totals (if it passed). if ($test->getStatus() == PHPUnit_Runner_BaseTestRunner::STATUS_PASSED) { unset($this->ticketCounts[$ticket][$name]); } // Only close tickets if ALL referenced cases pass // but reopen tickets if a single test fails. if ($cumulative) { // Determine number of to-pass tests: if (count($this->ticketCounts[$ticket]) > 0) { // There exist remaining test cases with this reference. $adjustTicket = false; } else { // No remaining tickets, go ahead and adjust. $adjustTicket = true; } } else { $adjustTicket = true; } $ticketInfo = $this->getTicketInfo($ticket); if ($adjustTicket && in_array($ticketInfo['status'], $ifStatus)) { $this->updateTicket($ticket, $newStatus, $message, $resolution); } } } } /** * @param mixed $ticketId * * @return mixed */ abstract protected function getTicketInfo($ticketId = null); /** * @param string $ticketId * @param string $newStatus * @param string $message * @param string $resolution */ abstract protected function updateTicket($ticketId, $newStatus, $message, $resolution); } PK! 'src/Framework/SkippedTestSuiteError.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Extension to PHPUnit_Framework_AssertionFailedError to mark the special * case of a skipped test suite. */ class PHPUnit_Framework_SkippedTestSuiteError extends PHPUnit_Framework_AssertionFailedError implements PHPUnit_Framework_SkippedTest { } PK!/::!src/Framework/WarningTestCase.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * A warning. */ class PHPUnit_Framework_WarningTestCase extends PHPUnit_Framework_TestCase { /** * @var string */ protected $message = ''; /** * @var bool */ protected $backupGlobals = false; /** * @var bool */ protected $backupStaticAttributes = false; /** * @var bool */ protected $runTestInSeparateProcess = false; /** * @var bool */ protected $useErrorHandler = false; /** * @param string $message */ public function __construct($message = '') { $this->message = $message; parent::__construct('Warning'); } /** * @throws PHPUnit_Framework_Exception */ protected function runTest() { throw new PHPUnit_Framework_Warning($this->message); } /** * @return string */ public function getMessage() { return $this->message; } /** * Returns a string representation of the test case. * * @return string */ public function toString() { return 'Warning'; } } PK!Cz;;'src/Framework/CodeCoverageException.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class PHPUnit_Framework_CodeCoverageException extends PHPUnit_Framework_Exception { } PK!@kDZZsrc/Framework/Test.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * A Test can be run and collect its results. */ interface PHPUnit_Framework_Test extends Countable { /** * Runs a test and collects its result in a TestResult instance. * * @param PHPUnit_Framework_TestResult $result * * @return PHPUnit_Framework_TestResult */ public function run(PHPUnit_Framework_TestResult $result = null); } PK!Ǧ+src/Framework/Constraint/StringEndsWith.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Constraint that asserts that the string it is evaluated for ends with a given * suffix. */ class PHPUnit_Framework_Constraint_StringEndsWith extends PHPUnit_Framework_Constraint { /** * @var string */ protected $suffix; /** * @param string $suffix */ public function __construct($suffix) { parent::__construct(); $this->suffix = $suffix; } /** * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * * @param mixed $other Value or object to evaluate. * * @return bool */ protected function matches($other) { return substr($other, 0 - strlen($this->suffix)) == $this->suffix; } /** * Returns a string representation of the constraint. * * @return string */ public function toString() { return 'ends with "' . $this->suffix . '"'; } } PK!B 'src/Framework/Constraint/IsAnything.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Constraint that accepts any input value. */ class PHPUnit_Framework_Constraint_IsAnything extends PHPUnit_Framework_Constraint { /** * Evaluates the constraint for parameter $other * * If $returnResult is set to false (the default), an exception is thrown * in case of a failure. null is returned otherwise. * * If $returnResult is true, the result of the evaluation is returned as * a boolean value instead: true in case of success, false in case of a * failure. * * @param mixed $other Value or object to evaluate. * @param string $description Additional information about the test * @param bool $returnResult Whether to return a result or throw an exception * * @return mixed * * @throws PHPUnit_Framework_ExpectationFailedException */ public function evaluate($other, $description = '', $returnResult = false) { return $returnResult ? true : null; } /** * Returns a string representation of the constraint. * * @return string */ public function toString() { return 'is anything'; } /** * Counts the number of constraint elements. * * @return int */ public function count() { return 0; } } PK!ȶll/src/Framework/Constraint/ObjectHasAttribute.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Constraint that asserts that the object it is evaluated for has a given * attribute. * * The attribute name is passed in the constructor. */ class PHPUnit_Framework_Constraint_ObjectHasAttribute extends PHPUnit_Framework_Constraint_ClassHasAttribute { /** * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * * @param mixed $other Value or object to evaluate. * * @return bool */ protected function matches($other) { $object = new ReflectionObject($other); return $object->hasProperty($this->attributeName); } } PK!y(src/Framework/Constraint/GreaterThan.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Constraint that asserts that the value it is evaluated for is greater * than a given value. */ class PHPUnit_Framework_Constraint_GreaterThan extends PHPUnit_Framework_Constraint { /** * @var numeric */ protected $value; /** * @param numeric $value */ public function __construct($value) { parent::__construct(); $this->value = $value; } /** * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * * @param mixed $other Value or object to evaluate. * * @return bool */ protected function matches($other) { return $this->value < $other; } /** * Returns a string representation of the constraint. * * @return string */ public function toString() { return 'is greater than ' . $this->exporter->export($this->value); } } PK!,## src/Framework/Constraint/Not.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Logical NOT. */ class PHPUnit_Framework_Constraint_Not extends PHPUnit_Framework_Constraint { /** * @var PHPUnit_Framework_Constraint */ protected $constraint; /** * @param PHPUnit_Framework_Constraint $constraint */ public function __construct($constraint) { parent::__construct(); if (!($constraint instanceof PHPUnit_Framework_Constraint)) { $constraint = new PHPUnit_Framework_Constraint_IsEqual($constraint); } $this->constraint = $constraint; } /** * @param string $string * * @return string */ public static function negate($string) { return str_replace( [ 'contains ', 'exists', 'has ', 'is ', 'are ', 'matches ', 'starts with ', 'ends with ', 'reference ', 'not not ' ], [ 'does not contain ', 'does not exist', 'does not have ', 'is not ', 'are not ', 'does not match ', 'starts not with ', 'ends not with ', 'don\'t reference ', 'not ' ], $string ); } /** * Evaluates the constraint for parameter $other * * If $returnResult is set to false (the default), an exception is thrown * in case of a failure. null is returned otherwise. * * If $returnResult is true, the result of the evaluation is returned as * a boolean value instead: true in case of success, false in case of a * failure. * * @param mixed $other Value or object to evaluate. * @param string $description Additional information about the test * @param bool $returnResult Whether to return a result or throw an exception * * @return mixed * * @throws PHPUnit_Framework_ExpectationFailedException */ public function evaluate($other, $description = '', $returnResult = false) { $success = !$this->constraint->evaluate($other, $description, true); if ($returnResult) { return $success; } if (!$success) { $this->fail($other, $description); } } /** * Returns the description of the failure * * The beginning of failure messages is "Failed asserting that" in most * cases. This method should return the second part of that sentence. * * @param mixed $other Evaluated value or object. * * @return string */ protected function failureDescription($other) { switch (get_class($this->constraint)) { case 'PHPUnit_Framework_Constraint_And': case 'PHPUnit_Framework_Constraint_Not': case 'PHPUnit_Framework_Constraint_Or': return 'not( ' . $this->constraint->failureDescription($other) . ' )'; default: return self::negate( $this->constraint->failureDescription($other) ); } } /** * Returns a string representation of the constraint. * * @return string */ public function toString() { switch (get_class($this->constraint)) { case 'PHPUnit_Framework_Constraint_And': case 'PHPUnit_Framework_Constraint_Not': case 'PHPUnit_Framework_Constraint_Or': return 'not( ' . $this->constraint->toString() . ' )'; default: return self::negate( $this->constraint->toString() ); } } /** * Counts the number of constraint elements. * * @return int */ public function count() { return count($this->constraint); } } PK!U4src/Framework/Constraint/ClassHasStaticAttribute.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Constraint that asserts that the class it is evaluated for has a given * static attribute. * * The attribute name is passed in the constructor. */ class PHPUnit_Framework_Constraint_ClassHasStaticAttribute extends PHPUnit_Framework_Constraint_ClassHasAttribute { /** * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * * @param mixed $other Value or object to evaluate. * * @return bool */ protected function matches($other) { $class = new ReflectionClass($other); if ($class->hasProperty($this->attributeName)) { $attribute = $class->getProperty($this->attributeName); return $attribute->isStatic(); } else { return false; } } /** * Returns a string representation of the constraint. * * @return string */ public function toString() { return sprintf( 'has static attribute "%s"', $this->attributeName ); } } PK!osPP'src/Framework/Constraint/IsInfinite.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Constraint that accepts infinite. */ class PHPUnit_Framework_Constraint_IsInfinite extends PHPUnit_Framework_Constraint { /** * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * * @param mixed $other Value or object to evaluate. * * @return bool */ protected function matches($other) { return is_infinite($other); } /** * Returns a string representation of the constraint. * * @return string */ public function toString() { return 'is infinite'; } } PK!>.src/Framework/Constraint/ClassHasAttribute.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Constraint that asserts that the class it is evaluated for has a given * attribute. * * The attribute name is passed in the constructor. */ class PHPUnit_Framework_Constraint_ClassHasAttribute extends PHPUnit_Framework_Constraint { /** * @var string */ protected $attributeName; /** * @param string $attributeName */ public function __construct($attributeName) { parent::__construct(); $this->attributeName = $attributeName; } /** * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * * @param mixed $other Value or object to evaluate. * * @return bool */ protected function matches($other) { $class = new ReflectionClass($other); return $class->hasProperty($this->attributeName); } /** * Returns a string representation of the constraint. * * @return string */ public function toString() { return sprintf( 'has attribute "%s"', $this->attributeName ); } /** * Returns the description of the failure * * The beginning of failure messages is "Failed asserting that" in most * cases. This method should return the second part of that sentence. * * @param mixed $other Evaluated value or object. * * @return string */ protected function failureDescription($other) { return sprintf( '%sclass "%s" %s', is_object($other) ? 'object of ' : '', is_object($other) ? get_class($other) : $other, $this->toString() ); } } PK!z'src/Framework/Constraint/FileExists.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Constraint that checks if the file(name) that it is evaluated for exists. * * The file path to check is passed as $other in evaluate(). */ class PHPUnit_Framework_Constraint_FileExists extends PHPUnit_Framework_Constraint { /** * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * * @param mixed $other Value or object to evaluate. * * @return bool */ protected function matches($other) { return file_exists($other); } /** * Returns the description of the failure * * The beginning of failure messages is "Failed asserting that" in most * cases. This method should return the second part of that sentence. * * @param mixed $other Evaluated value or object. * * @return string */ protected function failureDescription($other) { return sprintf( 'file "%s" exists', $other ); } /** * Returns a string representation of the constraint. * * @return string */ public function toString() { return 'file exists'; } } PK!F7%%*src/Framework/Constraint/ExceptionCode.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class PHPUnit_Framework_Constraint_ExceptionCode extends PHPUnit_Framework_Constraint { /** * @var int */ protected $expectedCode; /** * @param int $expected */ public function __construct($expected) { parent::__construct(); $this->expectedCode = $expected; } /** * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * * @param Exception $other * * @return bool */ protected function matches($other) { return (string) $other->getCode() == (string) $this->expectedCode; } /** * Returns the description of the failure * * The beginning of failure messages is "Failed asserting that" in most * cases. This method should return the second part of that sentence. * * @param mixed $other Evaluated value or object. * * @return string */ protected function failureDescription($other) { return sprintf( '%s is equal to expected exception code %s', $this->exporter->export($other->getCode()), $this->exporter->export($this->expectedCode) ); } /** * @return string */ public function toString() { return 'exception code is '; } } PK!: : #src/Framework/Constraint/IsType.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Constraint that asserts that the value it is evaluated for is of a * specified type. * * The expected value is passed in the constructor. */ class PHPUnit_Framework_Constraint_IsType extends PHPUnit_Framework_Constraint { const TYPE_ARRAY = 'array'; const TYPE_BOOL = 'bool'; const TYPE_FLOAT = 'float'; const TYPE_INT = 'int'; const TYPE_NULL = 'null'; const TYPE_NUMERIC = 'numeric'; const TYPE_OBJECT = 'object'; const TYPE_RESOURCE = 'resource'; const TYPE_STRING = 'string'; const TYPE_SCALAR = 'scalar'; const TYPE_CALLABLE = 'callable'; /** * @var array */ protected $types = [ 'array' => true, 'boolean' => true, 'bool' => true, 'double' => true, 'float' => true, 'integer' => true, 'int' => true, 'null' => true, 'numeric' => true, 'object' => true, 'real' => true, 'resource' => true, 'string' => true, 'scalar' => true, 'callable' => true ]; /** * @var string */ protected $type; /** * @param string $type * * @throws PHPUnit_Framework_Exception */ public function __construct($type) { parent::__construct(); if (!isset($this->types[$type])) { throw new PHPUnit_Framework_Exception( sprintf( 'Type specified for PHPUnit_Framework_Constraint_IsType <%s> ' . 'is not a valid type.', $type ) ); } $this->type = $type; } /** * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * * @param mixed $other Value or object to evaluate. * * @return bool */ protected function matches($other) { switch ($this->type) { case 'numeric': return is_numeric($other); case 'integer': case 'int': return is_int($other); case 'double': case 'float': case 'real': return is_float($other); case 'string': return is_string($other); case 'boolean': case 'bool': return is_bool($other); case 'null': return is_null($other); case 'array': return is_array($other); case 'object': return is_object($other); case 'resource': return is_resource($other) || is_string(@get_resource_type($other)); case 'scalar': return is_scalar($other); case 'callable': return is_callable($other); } } /** * Returns a string representation of the constraint. * * @return string */ public function toString() { return sprintf( 'is of type "%s"', $this->type ); } } PK!dX@@#src/Framework/Constraint/IsTrue.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Constraint that accepts true. */ class PHPUnit_Framework_Constraint_IsTrue extends PHPUnit_Framework_Constraint { /** * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * * @param mixed $other Value or object to evaluate. * * @return bool */ protected function matches($other) { return $other === true; } /** * Returns a string representation of the constraint. * * @return string */ public function toString() { return 'is true'; } } PK!*} src/Framework/Constraint/And.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Logical AND. */ class PHPUnit_Framework_Constraint_And extends PHPUnit_Framework_Constraint { /** * @var PHPUnit_Framework_Constraint[] */ protected $constraints = []; /** * @var PHPUnit_Framework_Constraint */ protected $lastConstraint = null; /** * @param PHPUnit_Framework_Constraint[] $constraints * * @throws PHPUnit_Framework_Exception */ public function setConstraints(array $constraints) { $this->constraints = []; foreach ($constraints as $constraint) { if (!($constraint instanceof PHPUnit_Framework_Constraint)) { throw new PHPUnit_Framework_Exception( 'All parameters to ' . __CLASS__ . ' must be a constraint object.' ); } $this->constraints[] = $constraint; } } /** * Evaluates the constraint for parameter $other * * If $returnResult is set to false (the default), an exception is thrown * in case of a failure. null is returned otherwise. * * If $returnResult is true, the result of the evaluation is returned as * a boolean value instead: true in case of success, false in case of a * failure. * * @param mixed $other Value or object to evaluate. * @param string $description Additional information about the test * @param bool $returnResult Whether to return a result or throw an exception * * @return mixed * * @throws PHPUnit_Framework_ExpectationFailedException */ public function evaluate($other, $description = '', $returnResult = false) { $success = true; $constraint = null; foreach ($this->constraints as $constraint) { if (!$constraint->evaluate($other, $description, true)) { $success = false; break; } } if ($returnResult) { return $success; } if (!$success) { $this->fail($other, $description); } } /** * Returns a string representation of the constraint. * * @return string */ public function toString() { $text = ''; foreach ($this->constraints as $key => $constraint) { if ($key > 0) { $text .= ' and '; } $text .= $constraint->toString(); } return $text; } /** * Counts the number of constraint elements. * * @return int */ public function count() { $count = 0; foreach ($this->constraints as $constraint) { $count += count($constraint); } return $count; } } PK!V  +src/Framework/Constraint/StringContains.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Constraint that asserts that the string it is evaluated for contains * a given string. * * Uses mb_strpos() to find the position of the string in the input, if not * found the evaluation fails. * * The sub-string is passed in the constructor. */ class PHPUnit_Framework_Constraint_StringContains extends PHPUnit_Framework_Constraint { /** * @var string */ protected $string; /** * @var bool */ protected $ignoreCase; /** * @param string $string * @param bool $ignoreCase */ public function __construct($string, $ignoreCase = false) { parent::__construct(); $this->string = $string; $this->ignoreCase = $ignoreCase; } /** * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * * @param mixed $other Value or object to evaluate. * * @return bool */ protected function matches($other) { if ($this->ignoreCase) { return mb_stripos($other, $this->string) !== false; } else { return mb_strpos($other, $this->string) !== false; } } /** * Returns a string representation of the constraint. * * @return string */ public function toString() { if ($this->ignoreCase) { $string = mb_strtolower($this->string); } else { $string = $this->string; } return sprintf( 'contains "%s"', $string ); } } PK!ڑ,src/Framework/Constraint/DirectoryExists.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Constraint that checks if the directory(name) that it is evaluated for exists. * * The file path to check is passed as $other in evaluate(). */ class PHPUnit_Framework_Constraint_DirectoryExists extends PHPUnit_Framework_Constraint { /** * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * * @param mixed $other Value or object to evaluate. * * @return bool */ protected function matches($other) { return is_dir($other); } /** * Returns the description of the failure * * The beginning of failure messages is "Failed asserting that" in most * cases. This method should return the second part of that sentence. * * @param mixed $other Evaluated value or object. * * @return string */ protected function failureDescription($other) { return sprintf( 'directory "%s" exists', $other ); } /** * Returns a string representation of the constraint. * * @return string */ public function toString() { return 'directory exists'; } } PK!qS.(src/Framework/Constraint/IsIdentical.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Constraint that asserts that one value is identical to another. * * Identical check is performed with PHP's === operator, the operator is * explained in detail at * {@url http://www.php.net/manual/en/types.comparisons.php}. * Two values are identical if they have the same value and are of the same * type. * * The expected value is passed in the constructor. */ class PHPUnit_Framework_Constraint_IsIdentical extends PHPUnit_Framework_Constraint { /** * @var float */ const EPSILON = 0.0000000001; /** * @var mixed */ protected $value; /** * @param mixed $value */ public function __construct($value) { parent::__construct(); $this->value = $value; } /** * Evaluates the constraint for parameter $other * * If $returnResult is set to false (the default), an exception is thrown * in case of a failure. null is returned otherwise. * * If $returnResult is true, the result of the evaluation is returned as * a boolean value instead: true in case of success, false in case of a * failure. * * @param mixed $other Value or object to evaluate. * @param string $description Additional information about the test * @param bool $returnResult Whether to return a result or throw an exception * * @return mixed * * @throws PHPUnit_Framework_ExpectationFailedException */ public function evaluate($other, $description = '', $returnResult = false) { if (is_float($this->value) && is_float($other) && !is_infinite($this->value) && !is_infinite($other) && !is_nan($this->value) && !is_nan($other)) { $success = abs($this->value - $other) < self::EPSILON; } else { $success = $this->value === $other; } if ($returnResult) { return $success; } if (!$success) { $f = null; // if both values are strings, make sure a diff is generated if (is_string($this->value) && is_string($other)) { $f = new SebastianBergmann\Comparator\ComparisonFailure( $this->value, $other, $this->value, $other ); } $this->fail($other, $description, $f); } } /** * Returns the description of the failure * * The beginning of failure messages is "Failed asserting that" in most * cases. This method should return the second part of that sentence. * * @param mixed $other Evaluated value or object. * * @return string */ protected function failureDescription($other) { if (is_object($this->value) && is_object($other)) { return 'two variables reference the same object'; } if (is_string($this->value) && is_string($other)) { return 'two strings are identical'; } return parent::failureDescription($other); } /** * Returns a string representation of the constraint. * * @return string */ public function toString() { if (is_object($this->value)) { return 'is identical to an object of class "' . get_class($this->value) . '"'; } else { return 'is identical to ' . $this->exporter->export($this->value); } } } PK!~2H**3src/Framework/Constraint/ExceptionMessageRegExp.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class PHPUnit_Framework_Constraint_ExceptionMessageRegExp extends PHPUnit_Framework_Constraint { /** * @var int */ protected $expectedMessageRegExp; /** * @param string $expected */ public function __construct($expected) { parent::__construct(); $this->expectedMessageRegExp = $expected; } /** * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * * @param Exception $other * * @return bool */ protected function matches($other) { $match = PHPUnit_Util_Regex::pregMatchSafe($this->expectedMessageRegExp, $other->getMessage()); if (false === $match) { throw new PHPUnit_Framework_Exception( "Invalid expected exception message regex given: '{$this->expectedMessageRegExp}'" ); } return 1 === $match; } /** * Returns the description of the failure * * The beginning of failure messages is "Failed asserting that" in most * cases. This method should return the second part of that sentence. * * @param mixed $other Evaluated value or object. * * @return string */ protected function failureDescription($other) { return sprintf( "exception message '%s' matches '%s'", $other->getMessage(), $this->expectedMessageRegExp ); } /** * @return string */ public function toString() { return 'exception message matches '; } } PK!iͰ%src/Framework/Constraint/SameSize.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class PHPUnit_Framework_Constraint_SameSize extends PHPUnit_Framework_Constraint_Count { /** * @var int */ protected $expectedCount; /** * @param int $expected */ public function __construct($expected) { parent::__construct($this->getCountOf($expected)); } } PK!ih src/Framework/Constraint/Or.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Logical OR. */ class PHPUnit_Framework_Constraint_Or extends PHPUnit_Framework_Constraint { /** * @var PHPUnit_Framework_Constraint[] */ protected $constraints = []; /** * @param PHPUnit_Framework_Constraint[] $constraints */ public function setConstraints(array $constraints) { $this->constraints = []; foreach ($constraints as $constraint) { if (!($constraint instanceof PHPUnit_Framework_Constraint)) { $constraint = new PHPUnit_Framework_Constraint_IsEqual( $constraint ); } $this->constraints[] = $constraint; } } /** * Evaluates the constraint for parameter $other * * If $returnResult is set to false (the default), an exception is thrown * in case of a failure. null is returned otherwise. * * If $returnResult is true, the result of the evaluation is returned as * a boolean value instead: true in case of success, false in case of a * failure. * * @param mixed $other Value or object to evaluate. * @param string $description Additional information about the test * @param bool $returnResult Whether to return a result or throw an exception * * @return mixed * * @throws PHPUnit_Framework_ExpectationFailedException */ public function evaluate($other, $description = '', $returnResult = false) { $success = false; $constraint = null; foreach ($this->constraints as $constraint) { if ($constraint->evaluate($other, $description, true)) { $success = true; break; } } if ($returnResult) { return $success; } if (!$success) { $this->fail($other, $description); } } /** * Returns a string representation of the constraint. * * @return string */ public function toString() { $text = ''; foreach ($this->constraints as $key => $constraint) { if ($key > 0) { $text .= ' or '; } $text .= $constraint->toString(); } return $text; } /** * Counts the number of constraint elements. * * @return int */ public function count() { $count = 0; foreach ($this->constraints as $constraint) { $count += count($constraint); } return $count; } } PK!dHH%src/Framework/Constraint/IsFinite.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Constraint that accepts finite. */ class PHPUnit_Framework_Constraint_IsFinite extends PHPUnit_Framework_Constraint { /** * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * * @param mixed $other Value or object to evaluate. * * @return bool */ protected function matches($other) { return is_finite($other); } /** * Returns a string representation of the constraint. * * @return string */ public function toString() { return 'is finite'; } } PK!4@@#src/Framework/Constraint/IsNull.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Constraint that accepts null. */ class PHPUnit_Framework_Constraint_IsNull extends PHPUnit_Framework_Constraint { /** * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * * @param mixed $other Value or object to evaluate. * * @return bool */ protected function matches($other) { return $other === null; } /** * Returns a string representation of the constraint. * * @return string */ public function toString() { return 'is null'; } } PK!o% (src/Framework/Constraint/ArraySubset.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Constraint that asserts that the array it is evaluated for has a specified subset. * * Uses array_replace_recursive() to check if a key value subset is part of the * subject array. */ class PHPUnit_Framework_Constraint_ArraySubset extends PHPUnit_Framework_Constraint { /** * @var array|Traversable */ protected $subset; /** * @var bool */ protected $strict; /** * @param array|Traversable $subset * @param bool $strict Check for object identity */ public function __construct($subset, $strict = false) { parent::__construct(); $this->strict = $strict; $this->subset = $subset; } /** * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * * @param array|Traversable $other Array or Traversable object to evaluate. * * @return bool */ protected function matches($other) { //type cast $other & $this->subset as an array to allow //support in standard array functions. $other = $this->toArray($other); $this->subset = $this->toArray($this->subset); $patched = array_replace_recursive($other, $this->subset); if ($this->strict) { return $other === $patched; } else { return $other == $patched; } } /** * Returns a string representation of the constraint. * * @return string */ public function toString() { return 'has the subset ' . $this->exporter->export($this->subset); } /** * Returns the description of the failure * * The beginning of failure messages is "Failed asserting that" in most * cases. This method should return the second part of that sentence. * * @param mixed $other Evaluated value or object. * * @return string */ protected function failureDescription($other) { return 'an array ' . $this->toString(); } /** * @param array|Traversable $other * * @return array */ private function toArray($other) { if (is_array($other)) { return $other; } elseif ($other instanceof ArrayObject) { return $other->getArrayCopy(); } elseif ($other instanceof Traversable) { return iterator_to_array($other); } // Keep BC even if we know that array would not be the expected one return (array) $other; } } PK!/-c c src/Framework/Constraint/Xor.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Logical XOR. */ class PHPUnit_Framework_Constraint_Xor extends PHPUnit_Framework_Constraint { /** * @var PHPUnit_Framework_Constraint[] */ protected $constraints = []; /** * @param PHPUnit_Framework_Constraint[] $constraints */ public function setConstraints(array $constraints) { $this->constraints = []; foreach ($constraints as $constraint) { if (!($constraint instanceof PHPUnit_Framework_Constraint)) { $constraint = new PHPUnit_Framework_Constraint_IsEqual( $constraint ); } $this->constraints[] = $constraint; } } /** * Evaluates the constraint for parameter $other * * If $returnResult is set to false (the default), an exception is thrown * in case of a failure. null is returned otherwise. * * If $returnResult is true, the result of the evaluation is returned as * a boolean value instead: true in case of success, false in case of a * failure. * * @param mixed $other Value or object to evaluate. * @param string $description Additional information about the test * @param bool $returnResult Whether to return a result or throw an exception * * @return mixed * * @throws PHPUnit_Framework_ExpectationFailedException */ public function evaluate($other, $description = '', $returnResult = false) { $success = true; $lastResult = null; $constraint = null; foreach ($this->constraints as $constraint) { $result = $constraint->evaluate($other, $description, true); if ($result === $lastResult) { $success = false; break; } $lastResult = $result; } if ($returnResult) { return $success; } if (!$success) { $this->fail($other, $description); } } /** * Returns a string representation of the constraint. * * @return string */ public function toString() { $text = ''; foreach ($this->constraints as $key => $constraint) { if ($key > 0) { $text .= ' xor '; } $text .= $constraint->toString(); } return $text; } /** * Counts the number of constraint elements. * * @return int */ public function count() { $count = 0; foreach ($this->constraints as $constraint) { $count += count($constraint); } return $count; } } PK!dd&src/Framework/Constraint/Exception.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class PHPUnit_Framework_Constraint_Exception extends PHPUnit_Framework_Constraint { /** * @var string */ protected $className; /** * @param string $className */ public function __construct($className) { parent::__construct(); $this->className = $className; } /** * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * * @param mixed $other Value or object to evaluate. * * @return bool */ protected function matches($other) { return $other instanceof $this->className; } /** * Returns the description of the failure * * The beginning of failure messages is "Failed asserting that" in most * cases. This method should return the second part of that sentence. * * @param mixed $other Evaluated value or object. * * @return string */ protected function failureDescription($other) { if ($other !== null) { $message = ''; if ($other instanceof Exception || $other instanceof Throwable) { $message = '. Message was: "' . $other->getMessage() . '" at' . "\n" . PHPUnit_Util_Filter::getFilteredStacktrace($other); } return sprintf( 'exception of type "%s" matches expected exception "%s"%s', get_class($other), $this->className, $message ); } return sprintf( 'exception of type "%s" is thrown', $this->className ); } /** * Returns a string representation of the constraint. * * @return string */ public function toString() { return sprintf( 'exception of type "%s"', $this->className ); } } PK!ݻd d &src/Framework/Constraint/Attribute.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class PHPUnit_Framework_Constraint_Attribute extends PHPUnit_Framework_Constraint_Composite { /** * @var string */ protected $attributeName; /** * @param PHPUnit_Framework_Constraint $constraint * @param string $attributeName */ public function __construct(PHPUnit_Framework_Constraint $constraint, $attributeName) { parent::__construct($constraint); $this->attributeName = $attributeName; } /** * Evaluates the constraint for parameter $other * * If $returnResult is set to false (the default), an exception is thrown * in case of a failure. null is returned otherwise. * * If $returnResult is true, the result of the evaluation is returned as * a boolean value instead: true in case of success, false in case of a * failure. * * @param mixed $other Value or object to evaluate. * @param string $description Additional information about the test * @param bool $returnResult Whether to return a result or throw an exception * * @return mixed * * @throws PHPUnit_Framework_ExpectationFailedException */ public function evaluate($other, $description = '', $returnResult = false) { return parent::evaluate( PHPUnit_Framework_Assert::readAttribute( $other, $this->attributeName ), $description, $returnResult ); } /** * Returns a string representation of the constraint. * * @return string */ public function toString() { return 'attribute "' . $this->attributeName . '" ' . $this->innerConstraint->toString(); } /** * Returns the description of the failure * * The beginning of failure messages is "Failed asserting that" in most * cases. This method should return the second part of that sentence. * * @param mixed $other Evaluated value or object. * * @return string */ protected function failureDescription($other) { return $this->toString(); } } PK!;߯$src/Framework/Constraint/IsEqual.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Constraint that checks if one value is equal to another. * * Equality is checked with PHP's == operator, the operator is explained in * detail at {@url http://www.php.net/manual/en/types.comparisons.php}. * Two values are equal if they have the same value disregarding type. * * The expected value is passed in the constructor. */ class PHPUnit_Framework_Constraint_IsEqual extends PHPUnit_Framework_Constraint { /** * @var mixed */ protected $value; /** * @var float */ protected $delta = 0.0; /** * @var int */ protected $maxDepth = 10; /** * @var bool */ protected $canonicalize = false; /** * @var bool */ protected $ignoreCase = false; /** * @var SebastianBergmann\Comparator\ComparisonFailure */ protected $lastFailure; /** * @param mixed $value * @param float $delta * @param int $maxDepth * @param bool $canonicalize * @param bool $ignoreCase * * @throws PHPUnit_Framework_Exception */ public function __construct($value, $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) { parent::__construct(); if (!is_numeric($delta)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'numeric'); } if (!is_int($maxDepth)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(3, 'integer'); } if (!is_bool($canonicalize)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(4, 'boolean'); } if (!is_bool($ignoreCase)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(5, 'boolean'); } $this->value = $value; $this->delta = $delta; $this->maxDepth = $maxDepth; $this->canonicalize = $canonicalize; $this->ignoreCase = $ignoreCase; } /** * Evaluates the constraint for parameter $other * * If $returnResult is set to false (the default), an exception is thrown * in case of a failure. null is returned otherwise. * * If $returnResult is true, the result of the evaluation is returned as * a boolean value instead: true in case of success, false in case of a * failure. * * @param mixed $other Value or object to evaluate. * @param string $description Additional information about the test * @param bool $returnResult Whether to return a result or throw an exception * * @return mixed * * @throws PHPUnit_Framework_ExpectationFailedException */ public function evaluate($other, $description = '', $returnResult = false) { // If $this->value and $other are identical, they are also equal. // This is the most common path and will allow us to skip // initialization of all the comparators. if ($this->value === $other) { return true; } $comparatorFactory = SebastianBergmann\Comparator\Factory::getInstance(); try { $comparator = $comparatorFactory->getComparatorFor( $this->value, $other ); $comparator->assertEquals( $this->value, $other, $this->delta, $this->canonicalize, $this->ignoreCase ); } catch (SebastianBergmann\Comparator\ComparisonFailure $f) { if ($returnResult) { return false; } throw new PHPUnit_Framework_ExpectationFailedException( trim($description . "\n" . $f->getMessage()), $f ); } return true; } /** * Returns a string representation of the constraint. * * @return string */ public function toString() { $delta = ''; if (is_string($this->value)) { if (strpos($this->value, "\n") !== false) { return 'is equal to '; } else { return sprintf( 'is equal to ', $this->value ); } } else { if ($this->delta != 0) { $delta = sprintf( ' with delta <%F>', $this->delta ); } return sprintf( 'is equal to %s%s', $this->exporter->export($this->value), $delta ); } } } PK!hz*src/Framework/Constraint/StringMatches.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ use SebastianBergmann\Diff\Differ; /** * ... */ class PHPUnit_Framework_Constraint_StringMatches extends PHPUnit_Framework_Constraint_PCREMatch { /** * @var string */ protected $string; /** * @param string $string */ public function __construct($string) { parent::__construct($string); $this->pattern = $this->createPatternFromFormat( preg_replace('/\r\n/', "\n", $string) ); $this->string = $string; } protected function failureDescription($other) { return 'format description matches text'; } protected function additionalFailureDescription($other) { $from = preg_split('(\r\n|\r|\n)', $this->string); $to = preg_split('(\r\n|\r|\n)', $other); foreach ($from as $index => $line) { if (isset($to[$index]) && $line !== $to[$index]) { $line = $this->createPatternFromFormat($line); if (preg_match($line, $to[$index]) > 0) { $from[$index] = $to[$index]; } } } $this->string = implode("\n", $from); $other = implode("\n", $to); $differ = new Differ("--- Expected\n+++ Actual\n"); return $differ->diff($this->string, $other); } protected function createPatternFromFormat($string) { $string = str_replace( [ '%e', '%s', '%S', '%a', '%A', '%w', '%i', '%d', '%x', '%f', '%c' ], [ '\\' . DIRECTORY_SEPARATOR, '[^\r\n]+', '[^\r\n]*', '.+', '.*', '\s*', '[+-]?\d+', '\d+', '[0-9a-fA-F]+', '[+-]?\.?\d+\.?\d*(?:[Ee][+-]?\d+)?', '.' ], preg_quote($string, '/') ); return '/^' . $string . '$/s'; } } PK!R'src/Framework/Constraint/IsWritable.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Constraint that checks if the file/dir(name) that it is evaluated for is writable. * * The file path to check is passed as $other in evaluate(). */ class PHPUnit_Framework_Constraint_IsWritable extends PHPUnit_Framework_Constraint { /** * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * * @param mixed $other Value or object to evaluate. * * @return bool */ protected function matches($other) { return is_writable($other); } /** * Returns the description of the failure * * The beginning of failure messages is "Failed asserting that" in most * cases. This method should return the second part of that sentence. * * @param mixed $other Evaluated value or object. * * @return string */ protected function failureDescription($other) { return sprintf( '"%s" is writable', $other ); } /** * Returns a string representation of the constraint. * * @return string */ public function toString() { return 'is writable'; } } PK!33%src/Framework/Constraint/Callback.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Constraint that evaluates against a specified closure. */ class PHPUnit_Framework_Constraint_Callback extends PHPUnit_Framework_Constraint { private $callback; /** * @param callable $callback * * @throws PHPUnit_Framework_Exception */ public function __construct($callback) { if (!is_callable($callback)) { throw PHPUnit_Util_InvalidArgumentHelper::factory( 1, 'callable' ); } parent::__construct(); $this->callback = $callback; } /** * Evaluates the constraint for parameter $value. Returns true if the * constraint is met, false otherwise. * * @param mixed $other Value or object to evaluate. * * @return bool */ protected function matches($other) { return call_user_func($this->callback, $other); } /** * Returns a string representation of the constraint. * * @return string */ public function toString() { return 'is accepted by specified callback'; } } PK! o$src/Framework/Constraint/IsEmpty.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Constraint that checks whether a variable is empty(). */ class PHPUnit_Framework_Constraint_IsEmpty extends PHPUnit_Framework_Constraint { /** * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * * @param mixed $other Value or object to evaluate. * * @return bool */ protected function matches($other) { if ($other instanceof Countable) { return count($other) === 0; } return empty($other); } /** * Returns a string representation of the constraint. * * @return string */ public function toString() { return 'is empty'; } /** * Returns the description of the failure * * The beginning of failure messages is "Failed asserting that" in most * cases. This method should return the second part of that sentence. * * @param mixed $other Evaluated value or object. * * @return string */ protected function failureDescription($other) { $type = gettype($other); return sprintf( '%s %s %s', $type[0] == 'a' || $type[0] == 'o' ? 'an' : 'a', $type, $this->toString() ); } } PK!':l l 0src/Framework/Constraint/TraversableContains.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Constraint that asserts that the Traversable it is applied to contains * a given value. */ class PHPUnit_Framework_Constraint_TraversableContains extends PHPUnit_Framework_Constraint { /** * @var bool */ protected $checkForObjectIdentity; /** * @var bool */ protected $checkForNonObjectIdentity; /** * @var mixed */ protected $value; /** * @param mixed $value * @param bool $checkForObjectIdentity * @param bool $checkForNonObjectIdentity * * @throws PHPUnit_Framework_Exception */ public function __construct($value, $checkForObjectIdentity = true, $checkForNonObjectIdentity = false) { parent::__construct(); if (!is_bool($checkForObjectIdentity)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'boolean'); } if (!is_bool($checkForNonObjectIdentity)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(3, 'boolean'); } $this->checkForObjectIdentity = $checkForObjectIdentity; $this->checkForNonObjectIdentity = $checkForNonObjectIdentity; $this->value = $value; } /** * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * * @param mixed $other Value or object to evaluate. * * @return bool */ protected function matches($other) { if ($other instanceof SplObjectStorage) { return $other->contains($this->value); } if (is_object($this->value)) { foreach ($other as $element) { if ($this->checkForObjectIdentity && $element === $this->value) { return true; } elseif (!$this->checkForObjectIdentity && $element == $this->value) { return true; } } } else { foreach ($other as $element) { if ($this->checkForNonObjectIdentity && $element === $this->value) { return true; } elseif (!$this->checkForNonObjectIdentity && $element == $this->value) { return true; } } } return false; } /** * Returns a string representation of the constraint. * * @return string */ public function toString() { if (is_string($this->value) && strpos($this->value, "\n") !== false) { return 'contains "' . $this->value . '"'; } else { return 'contains ' . $this->exporter->export($this->value); } } /** * Returns the description of the failure * * The beginning of failure messages is "Failed asserting that" in most * cases. This method should return the second part of that sentence. * * @param mixed $other Evaluated value or object. * * @return string */ protected function failureDescription($other) { return sprintf( '%s %s', is_array($other) ? 'an array' : 'a traversable', $this->toString() ); } } PK!db~~=src/Framework/Constraint/JsonMatches/ErrorMessageProvider.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Provides human readable messages for each JSON error. */ class PHPUnit_Framework_Constraint_JsonMatches_ErrorMessageProvider { /** * Translates JSON error to a human readable string. * * @param string $error * @param string $prefix * * @return string */ public static function determineJsonError($error, $prefix = '') { switch ($error) { case JSON_ERROR_NONE: return; case JSON_ERROR_DEPTH: return $prefix . 'Maximum stack depth exceeded'; case JSON_ERROR_STATE_MISMATCH: return $prefix . 'Underflow or the modes mismatch'; case JSON_ERROR_CTRL_CHAR: return $prefix . 'Unexpected control character found'; case JSON_ERROR_SYNTAX: return $prefix . 'Syntax error, malformed JSON'; case JSON_ERROR_UTF8: return $prefix . 'Malformed UTF-8 characters, possibly incorrectly encoded'; default: return $prefix . 'Unknown error'; } } /** * Translates a given type to a human readable message prefix. * * @param string $type * * @return string */ public static function translateTypeToPrefix($type) { switch (strtolower($type)) { case 'expected': $prefix = 'Expected value JSON decode error - '; break; case 'actual': $prefix = 'Actual value JSON decode error - '; break; default: $prefix = ''; break; } return $prefix; } } PK!lh "src/Framework/Constraint/Count.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class PHPUnit_Framework_Constraint_Count extends PHPUnit_Framework_Constraint { /** * @var int */ protected $expectedCount = 0; /** * @param int $expected */ public function __construct($expected) { parent::__construct(); $this->expectedCount = $expected; } /** * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * * @param mixed $other * * @return bool */ protected function matches($other) { return $this->expectedCount === $this->getCountOf($other); } /** * @param mixed $other * * @return bool */ protected function getCountOf($other) { if ($other instanceof Countable || is_array($other)) { return count($other); } elseif ($other instanceof Traversable) { if ($other instanceof IteratorAggregate) { $iterator = $other->getIterator(); } else { $iterator = $other; } if ($iterator instanceof Generator) { return $this->getCountOfGenerator($iterator); } $key = $iterator->key(); $count = iterator_count($iterator); // Manually rewind $iterator to previous key, since iterator_count // moves pointer. if ($key !== null) { $iterator->rewind(); while ($iterator->valid() && $key !== $iterator->key()) { $iterator->next(); } } return $count; } } /** * Returns the total number of iterations from a generator. * This will fully exhaust the generator. * * @param Generator $generator * * @return int */ protected function getCountOfGenerator(Generator $generator) { for ($count = 0; $generator->valid(); $generator->next()) { $count += 1; } return $count; } /** * Returns the description of the failure. * * The beginning of failure messages is "Failed asserting that" in most * cases. This method should return the second part of that sentence. * * @param mixed $other Evaluated value or object. * * @return string */ protected function failureDescription($other) { return sprintf( 'actual size %d matches expected size %d', $this->getCountOf($other), $this->expectedCount ); } /** * @return string */ public function toString() { return sprintf( 'count matches %d', $this->expectedCount ); } } PK!Œ&src/Framework/Constraint/PCREMatch.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Constraint that asserts that the string it is evaluated for matches * a regular expression. * * Checks a given value using the Perl Compatible Regular Expression extension * in PHP. The pattern is matched by executing preg_match(). * * The pattern string passed in the constructor. */ class PHPUnit_Framework_Constraint_PCREMatch extends PHPUnit_Framework_Constraint { /** * @var string */ protected $pattern; /** * @param string $pattern */ public function __construct($pattern) { parent::__construct(); $this->pattern = $pattern; } /** * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * * @param mixed $other Value or object to evaluate. * * @return bool */ protected function matches($other) { return preg_match($this->pattern, $other) > 0; } /** * Returns a string representation of the constraint. * * @return string */ public function toString() { return sprintf( 'matches PCRE pattern "%s"', $this->pattern ); } } PK!KF#src/Framework/Constraint/IsJson.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Constraint that asserts that a string is valid JSON. */ class PHPUnit_Framework_Constraint_IsJson extends PHPUnit_Framework_Constraint { /** * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * * @param mixed $other Value or object to evaluate. * * @return bool */ protected function matches($other) { if ($other === '') { return false; } json_decode($other); if (json_last_error()) { return false; } return true; } /** * Returns the description of the failure * * The beginning of failure messages is "Failed asserting that" in most * cases. This method should return the second part of that sentence. * * @param mixed $other Evaluated value or object. * * @return string */ protected function failureDescription($other) { if ($other === '') { return 'an empty string is valid JSON'; } json_decode($other); $error = PHPUnit_Framework_Constraint_JsonMatches_ErrorMessageProvider::determineJsonError( json_last_error() ); return sprintf( '%s is valid JSON (%s)', $this->exporter->shortenedExport($other), $error ); } /** * Returns a string representation of the constraint. * * @return string */ public function toString() { return 'is valid JSON'; } } PK!}-src/Framework/Constraint/ExceptionMessage.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class PHPUnit_Framework_Constraint_ExceptionMessage extends PHPUnit_Framework_Constraint { /** * @var int */ protected $expectedMessage; /** * @param string $expected */ public function __construct($expected) { parent::__construct(); $this->expectedMessage = $expected; } /** * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * * @param Exception $other * * @return bool */ protected function matches($other) { if ($this->expectedMessage === '') { return $other->getMessage() === ''; } return strpos($other->getMessage(), $this->expectedMessage) !== false; } /** * Returns the description of the failure * * The beginning of failure messages is "Failed asserting that" in most * cases. This method should return the second part of that sentence. * * @param mixed $other Evaluated value or object. * * @return string */ protected function failureDescription($other) { if ($this->expectedMessage === '') { return sprintf( "exception message is empty but is '%s'", $other->getMessage() ); } return sprintf( "exception message '%s' contains '%s'", $other->getMessage(), $this->expectedMessage ); } /** * @return string */ public function toString() { if ($this->expectedMessage === '') { return 'exception message is empty'; } return 'exception message contains '; } } PK!R&&src/Framework/Constraint/Composite.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ abstract class PHPUnit_Framework_Constraint_Composite extends PHPUnit_Framework_Constraint { /** * @var PHPUnit_Framework_Constraint */ protected $innerConstraint; /** * @param PHPUnit_Framework_Constraint $innerConstraint */ public function __construct(PHPUnit_Framework_Constraint $innerConstraint) { parent::__construct(); $this->innerConstraint = $innerConstraint; } /** * Evaluates the constraint for parameter $other * * If $returnResult is set to false (the default), an exception is thrown * in case of a failure. null is returned otherwise. * * If $returnResult is true, the result of the evaluation is returned as * a boolean value instead: true in case of success, false in case of a * failure. * * @param mixed $other Value or object to evaluate. * @param string $description Additional information about the test * @param bool $returnResult Whether to return a result or throw an exception * * @return mixed * * @throws PHPUnit_Framework_ExpectationFailedException */ public function evaluate($other, $description = '', $returnResult = false) { try { return $this->innerConstraint->evaluate( $other, $description, $returnResult ); } catch (PHPUnit_Framework_ExpectationFailedException $e) { $this->fail($other, $description); } } /** * Counts the number of constraint elements. * * @return int */ public function count() { return count($this->innerConstraint); } } PK!:N-src/Framework/Constraint/StringStartsWith.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Constraint that asserts that the string it is evaluated for begins with a * given prefix. */ class PHPUnit_Framework_Constraint_StringStartsWith extends PHPUnit_Framework_Constraint { /** * @var string */ protected $prefix; /** * @param string $prefix */ public function __construct($prefix) { parent::__construct(); $this->prefix = $prefix; } /** * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * * @param mixed $other Value or object to evaluate. * * @return bool */ protected function matches($other) { return strpos($other, $this->prefix) === 0; } /** * Returns a string representation of the constraint. * * @return string */ public function toString() { return 'starts with "' . $this->prefix . '"'; } } PK!׾<<"src/Framework/Constraint/IsNan.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Constraint that accepts nan. */ class PHPUnit_Framework_Constraint_IsNan extends PHPUnit_Framework_Constraint { /** * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * * @param mixed $other Value or object to evaluate. * * @return bool */ protected function matches($other) { return is_nan($other); } /** * Returns a string representation of the constraint. * * @return string */ public function toString() { return 'is nan'; } } PK!M'src/Framework/Constraint/IsReadable.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Constraint that checks if the file/dir(name) that it is evaluated for is readable. * * The file path to check is passed as $other in evaluate(). */ class PHPUnit_Framework_Constraint_IsReadable extends PHPUnit_Framework_Constraint { /** * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * * @param mixed $other Value or object to evaluate. * * @return bool */ protected function matches($other) { return is_readable($other); } /** * Returns the description of the failure * * The beginning of failure messages is "Failed asserting that" in most * cases. This method should return the second part of that sentence. * * @param mixed $other Evaluated value or object. * * @return string */ protected function failureDescription($other) { return sprintf( '"%s" is readable', $other ); } /** * Returns a string representation of the constraint. * * @return string */ public function toString() { return 'is readable'; } } PK!٠b%(src/Framework/Constraint/JsonMatches.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Asserts whether or not two JSON objects are equal. */ class PHPUnit_Framework_Constraint_JsonMatches extends PHPUnit_Framework_Constraint { /** * @var string */ protected $value; /** * Creates a new constraint. * * @param string $value */ public function __construct($value) { parent::__construct(); $this->value = $value; } /** * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * * This method can be overridden to implement the evaluation algorithm. * * @param mixed $other Value or object to evaluate. * * @return bool */ protected function matches($other) { $decodedOther = json_decode($other); if (json_last_error()) { return false; } $decodedValue = json_decode($this->value); if (json_last_error()) { return false; } return $decodedOther == $decodedValue; } /** * Returns a string representation of the object. * * @return string */ public function toString() { return sprintf( 'matches JSON string "%s"', $this->value ); } } PK!-Y)src/Framework/Constraint/IsInstanceOf.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Constraint that asserts that the object it is evaluated for is an instance * of a given class. * * The expected class name is passed in the constructor. */ class PHPUnit_Framework_Constraint_IsInstanceOf extends PHPUnit_Framework_Constraint { /** * @var string */ protected $className; /** * @param string $className */ public function __construct($className) { parent::__construct(); $this->className = $className; } /** * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * * @param mixed $other Value or object to evaluate. * * @return bool */ protected function matches($other) { return ($other instanceof $this->className); } /** * Returns the description of the failure * * The beginning of failure messages is "Failed asserting that" in most * cases. This method should return the second part of that sentence. * * @param mixed $other Evaluated value or object. * * @return string */ protected function failureDescription($other) { return sprintf( '%s is an instance of %s "%s"', $this->exporter->shortenedExport($other), $this->getType(), $this->className ); } /** * Returns a string representation of the constraint. * * @return string */ public function toString() { return sprintf( 'is instance of %s "%s"', $this->getType(), $this->className ); } private function getType() { try { $reflection = new ReflectionClass($this->className); if ($reflection->isInterface()) { return 'interface'; } } catch (ReflectionException $e) { } return 'class'; } } PK!*Q(src/Framework/Constraint/ArrayHasKey.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Constraint that asserts that the array it is evaluated for has a given key. * * Uses array_key_exists() to check if the key is found in the input array, if * not found the evaluation fails. * * The array key is passed in the constructor. */ class PHPUnit_Framework_Constraint_ArrayHasKey extends PHPUnit_Framework_Constraint { /** * @var int|string */ protected $key; /** * @param int|string $key */ public function __construct($key) { parent::__construct(); $this->key = $key; } /** * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * * @param mixed $other Value or object to evaluate. * * @return bool */ protected function matches($other) { if (is_array($other)) { return array_key_exists($this->key, $other); } if ($other instanceof ArrayAccess) { return $other->offsetExists($this->key); } return false; } /** * Returns a string representation of the constraint. * * @return string */ public function toString() { return 'has the key ' . $this->exporter->export($this->key); } /** * Returns the description of the failure * * The beginning of failure messages is "Failed asserting that" in most * cases. This method should return the second part of that sentence. * * @param mixed $other Evaluated value or object. * * @return string */ protected function failureDescription($other) { return 'an array ' . $this->toString(); } } PK!XĪ| | 4src/Framework/Constraint/TraversableContainsOnly.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Constraint that asserts that the Traversable it is applied to contains * only values of a given type. */ class PHPUnit_Framework_Constraint_TraversableContainsOnly extends PHPUnit_Framework_Constraint { /** * @var PHPUnit_Framework_Constraint */ protected $constraint; /** * @var string */ protected $type; /** * @param string $type * @param bool $isNativeType */ public function __construct($type, $isNativeType = true) { parent::__construct(); if ($isNativeType) { $this->constraint = new PHPUnit_Framework_Constraint_IsType($type); } else { $this->constraint = new PHPUnit_Framework_Constraint_IsInstanceOf( $type ); } $this->type = $type; } /** * Evaluates the constraint for parameter $other * * If $returnResult is set to false (the default), an exception is thrown * in case of a failure. null is returned otherwise. * * If $returnResult is true, the result of the evaluation is returned as * a boolean value instead: true in case of success, false in case of a * failure. * * @param mixed $other Value or object to evaluate. * @param string $description Additional information about the test * @param bool $returnResult Whether to return a result or throw an exception * * @return mixed * * @throws PHPUnit_Framework_ExpectationFailedException */ public function evaluate($other, $description = '', $returnResult = false) { $success = true; foreach ($other as $item) { if (!$this->constraint->evaluate($item, '', true)) { $success = false; break; } } if ($returnResult) { return $success; } if (!$success) { $this->fail($other, $description); } } /** * Returns a string representation of the constraint. * * @return string */ public function toString() { return 'contains only values of type "' . $this->type . '"'; } } PK!6%src/Framework/Constraint/LessThan.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Constraint that asserts that the value it is evaluated for is less than * a given value. */ class PHPUnit_Framework_Constraint_LessThan extends PHPUnit_Framework_Constraint { /** * @var numeric */ protected $value; /** * @param numeric $value */ public function __construct($value) { parent::__construct(); $this->value = $value; } /** * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * * @param mixed $other Value or object to evaluate. * * @return bool */ protected function matches($other) { return $this->value > $other; } /** * Returns a string representation of the constraint. * * @return string */ public function toString() { return 'is less than ' . $this->exporter->export($this->value); } } PK!-DD$src/Framework/Constraint/IsFalse.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Constraint that accepts false. */ class PHPUnit_Framework_Constraint_IsFalse extends PHPUnit_Framework_Constraint { /** * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * * @param mixed $other Value or object to evaluate. * * @return bool */ protected function matches($other) { return $other === false; } /** * Returns a string representation of the constraint. * * @return string */ public function toString() { return 'is false'; } } PK!~"  src/Framework/TestListener.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * A Listener for test progress. */ interface PHPUnit_Framework_TestListener { /** * An error occurred. * * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time */ public function addError(PHPUnit_Framework_Test $test, Exception $e, $time); /** * A warning occurred. * * @param PHPUnit_Framework_Test $test * @param PHPUnit_Framework_Warning $e * @param float $time * * @todo Uncomment in time for PHPUnit 6.0.0 * * @see https://github.com/sebastianbergmann/phpunit/pull/1840#issuecomment-162535997 */ // public function addWarning(PHPUnit_Framework_Test $test, PHPUnit_Framework_Warning $e, $time); /** * A failure occurred. * * @param PHPUnit_Framework_Test $test * @param PHPUnit_Framework_AssertionFailedError $e * @param float $time */ public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time); /** * Incomplete test. * * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time */ public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time); /** * Risky test. * * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time */ public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time); /** * Skipped test. * * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time */ public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time); /** * A test suite started. * * @param PHPUnit_Framework_TestSuite $suite */ public function startTestSuite(PHPUnit_Framework_TestSuite $suite); /** * A test suite ended. * * @param PHPUnit_Framework_TestSuite $suite */ public function endTestSuite(PHPUnit_Framework_TestSuite $suite); /** * A test started. * * @param PHPUnit_Framework_Test $test */ public function startTest(PHPUnit_Framework_Test $test); /** * A test ended. * * @param PHPUnit_Framework_Test $test * @param float $time */ public function endTest(PHPUnit_Framework_Test $test, $time); } PK!7E src/Framework/SyntheticError.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Creates a synthetic failed assertion. */ class PHPUnit_Framework_SyntheticError extends PHPUnit_Framework_AssertionFailedError { /** * The synthetic file. * * @var string */ protected $syntheticFile = ''; /** * The synthetic line number. * * @var int */ protected $syntheticLine = 0; /** * The synthetic trace. * * @var array */ protected $syntheticTrace = []; /** * Constructor. * * @param string $message * @param int $code * @param string $file * @param int $line * @param array $trace */ public function __construct($message, $code, $file, $line, $trace) { parent::__construct($message, $code); $this->syntheticFile = $file; $this->syntheticLine = $line; $this->syntheticTrace = $trace; } /** * @return string */ public function getSyntheticFile() { return $this->syntheticFile; } /** * @return int */ public function getSyntheticLine() { return $this->syntheticLine; } /** * @return array */ public function getSyntheticTrace() { return $this->syntheticTrace; } } PK!},2src/Framework/MissingCoversAnnotationException.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Extension to PHPUnit_Framework_AssertionFailedError to mark a test as risky * when it does not have a @covers annotation but is expected to have one. */ class PHPUnit_Framework_MissingCoversAnnotationException extends PHPUnit_Framework_RiskyTestError { } PK!j~Httsrc/Framework/RiskyTest.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * A marker interface for marking any exception/error as result of an unit * test as risky. */ interface PHPUnit_Framework_RiskyTest { } PK!x)src/Framework/Error.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Wrapper for PHP errors. */ class PHPUnit_Framework_Error extends PHPUnit_Framework_Exception { /** * Constructor. * * @param string $message * @param int $code * @param string $file * @param int $line * @param Exception $previous */ public function __construct($message, $code, $file, $line, Exception $previous = null) { parent::__construct($message, $code, $previous); $this->file = $file; $this->line = $line; } } PK!gg"src/Framework/ExceptionWrapper.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Wraps Exceptions thrown by code under test. * * Re-instantiates Exceptions thrown by user-space code to retain their original * class names, properties, and stack traces (but without arguments). * * Unlike PHPUnit_Framework_Exception, the complete stack of previous Exceptions * is processed. */ class PHPUnit_Framework_ExceptionWrapper extends PHPUnit_Framework_Exception { /** * @var string */ protected $className; /** * @var PHPUnit_Framework_ExceptionWrapper|null */ protected $previous; /** * @param Throwable|Exception $e */ public function __construct($e) { // PDOException::getCode() is a string. // @see http://php.net/manual/en/class.pdoexception.php#95812 parent::__construct($e->getMessage(), (int) $e->getCode()); $this->className = get_class($e); $this->file = $e->getFile(); $this->line = $e->getLine(); $this->serializableTrace = $e->getTrace(); foreach ($this->serializableTrace as $i => $call) { unset($this->serializableTrace[$i]['args']); } if ($e->getPrevious()) { $this->previous = new self($e->getPrevious()); } } /** * @return string */ public function getClassName() { return $this->className; } /** * @return PHPUnit_Framework_ExceptionWrapper */ public function getPreviousWrapped() { return $this->previous; } /** * @return string */ public function __toString() { $string = PHPUnit_Framework_TestFailure::exceptionToString($this); if ($trace = PHPUnit_Util_Filter::getFilteredStacktrace($this)) { $string .= "\n" . $trace; } if ($this->previous) { $string .= "\nCaused by\n" . $this->previous; } return $string; } } PK!|3^3^src/Framework/Assert.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * A set of assertion methods. */ abstract class PHPUnit_Framework_Assert { /** * @var int */ private static $count = 0; /** * Asserts that an array has a specified key. * * @param mixed $key * @param array|ArrayAccess $array * @param string $message */ public static function assertArrayHasKey($key, $array, $message = '') { if (!(is_int($key) || is_string($key))) { throw PHPUnit_Util_InvalidArgumentHelper::factory( 1, 'integer or string' ); } if (!(is_array($array) || $array instanceof ArrayAccess)) { throw PHPUnit_Util_InvalidArgumentHelper::factory( 2, 'array or ArrayAccess' ); } $constraint = new PHPUnit_Framework_Constraint_ArrayHasKey($key); static::assertThat($array, $constraint, $message); } /** * Asserts that an array has a specified subset. * * @param array|ArrayAccess $subset * @param array|ArrayAccess $array * @param bool $strict Check for object identity * @param string $message */ public static function assertArraySubset($subset, $array, $strict = false, $message = '') { if (!(is_array($subset) || $subset instanceof ArrayAccess)) { throw PHPUnit_Util_InvalidArgumentHelper::factory( 1, 'array or ArrayAccess' ); } if (!(is_array($array) || $array instanceof ArrayAccess)) { throw PHPUnit_Util_InvalidArgumentHelper::factory( 2, 'array or ArrayAccess' ); } $constraint = new PHPUnit_Framework_Constraint_ArraySubset($subset, $strict); static::assertThat($array, $constraint, $message); } /** * Asserts that an array does not have a specified key. * * @param mixed $key * @param array|ArrayAccess $array * @param string $message */ public static function assertArrayNotHasKey($key, $array, $message = '') { if (!(is_int($key) || is_string($key))) { throw PHPUnit_Util_InvalidArgumentHelper::factory( 1, 'integer or string' ); } if (!(is_array($array) || $array instanceof ArrayAccess)) { throw PHPUnit_Util_InvalidArgumentHelper::factory( 2, 'array or ArrayAccess' ); } $constraint = new PHPUnit_Framework_Constraint_Not( new PHPUnit_Framework_Constraint_ArrayHasKey($key) ); static::assertThat($array, $constraint, $message); } /** * Asserts that a haystack contains a needle. * * @param mixed $needle * @param mixed $haystack * @param string $message * @param bool $ignoreCase * @param bool $checkForObjectIdentity * @param bool $checkForNonObjectIdentity */ public static function assertContains($needle, $haystack, $message = '', $ignoreCase = false, $checkForObjectIdentity = true, $checkForNonObjectIdentity = false) { if (is_array($haystack) || is_object($haystack) && $haystack instanceof Traversable) { $constraint = new PHPUnit_Framework_Constraint_TraversableContains( $needle, $checkForObjectIdentity, $checkForNonObjectIdentity ); } elseif (is_string($haystack)) { if (!is_string($needle)) { throw PHPUnit_Util_InvalidArgumentHelper::factory( 1, 'string' ); } $constraint = new PHPUnit_Framework_Constraint_StringContains( $needle, $ignoreCase ); } else { throw PHPUnit_Util_InvalidArgumentHelper::factory( 2, 'array, traversable or string' ); } static::assertThat($haystack, $constraint, $message); } /** * Asserts that a haystack that is stored in a static attribute of a class * or an attribute of an object contains a needle. * * @param mixed $needle * @param string $haystackAttributeName * @param string|object $haystackClassOrObject * @param string $message * @param bool $ignoreCase * @param bool $checkForObjectIdentity * @param bool $checkForNonObjectIdentity */ public static function assertAttributeContains($needle, $haystackAttributeName, $haystackClassOrObject, $message = '', $ignoreCase = false, $checkForObjectIdentity = true, $checkForNonObjectIdentity = false) { static::assertContains( $needle, static::readAttribute($haystackClassOrObject, $haystackAttributeName), $message, $ignoreCase, $checkForObjectIdentity, $checkForNonObjectIdentity ); } /** * Asserts that a haystack does not contain a needle. * * @param mixed $needle * @param mixed $haystack * @param string $message * @param bool $ignoreCase * @param bool $checkForObjectIdentity * @param bool $checkForNonObjectIdentity */ public static function assertNotContains($needle, $haystack, $message = '', $ignoreCase = false, $checkForObjectIdentity = true, $checkForNonObjectIdentity = false) { if (is_array($haystack) || is_object($haystack) && $haystack instanceof Traversable) { $constraint = new PHPUnit_Framework_Constraint_Not( new PHPUnit_Framework_Constraint_TraversableContains( $needle, $checkForObjectIdentity, $checkForNonObjectIdentity ) ); } elseif (is_string($haystack)) { if (!is_string($needle)) { throw PHPUnit_Util_InvalidArgumentHelper::factory( 1, 'string' ); } $constraint = new PHPUnit_Framework_Constraint_Not( new PHPUnit_Framework_Constraint_StringContains( $needle, $ignoreCase ) ); } else { throw PHPUnit_Util_InvalidArgumentHelper::factory( 2, 'array, traversable or string' ); } static::assertThat($haystack, $constraint, $message); } /** * Asserts that a haystack that is stored in a static attribute of a class * or an attribute of an object does not contain a needle. * * @param mixed $needle * @param string $haystackAttributeName * @param string|object $haystackClassOrObject * @param string $message * @param bool $ignoreCase * @param bool $checkForObjectIdentity * @param bool $checkForNonObjectIdentity */ public static function assertAttributeNotContains($needle, $haystackAttributeName, $haystackClassOrObject, $message = '', $ignoreCase = false, $checkForObjectIdentity = true, $checkForNonObjectIdentity = false) { static::assertNotContains( $needle, static::readAttribute($haystackClassOrObject, $haystackAttributeName), $message, $ignoreCase, $checkForObjectIdentity, $checkForNonObjectIdentity ); } /** * Asserts that a haystack contains only values of a given type. * * @param string $type * @param mixed $haystack * @param bool $isNativeType * @param string $message */ public static function assertContainsOnly($type, $haystack, $isNativeType = null, $message = '') { if (!(is_array($haystack) || is_object($haystack) && $haystack instanceof Traversable)) { throw PHPUnit_Util_InvalidArgumentHelper::factory( 2, 'array or traversable' ); } if ($isNativeType == null) { $isNativeType = PHPUnit_Util_Type::isType($type); } static::assertThat( $haystack, new PHPUnit_Framework_Constraint_TraversableContainsOnly( $type, $isNativeType ), $message ); } /** * Asserts that a haystack contains only instances of a given classname * * @param string $classname * @param array|Traversable $haystack * @param string $message */ public static function assertContainsOnlyInstancesOf($classname, $haystack, $message = '') { if (!(is_array($haystack) || is_object($haystack) && $haystack instanceof Traversable)) { throw PHPUnit_Util_InvalidArgumentHelper::factory( 2, 'array or traversable' ); } static::assertThat( $haystack, new PHPUnit_Framework_Constraint_TraversableContainsOnly( $classname, false ), $message ); } /** * Asserts that a haystack that is stored in a static attribute of a class * or an attribute of an object contains only values of a given type. * * @param string $type * @param string $haystackAttributeName * @param string|object $haystackClassOrObject * @param bool $isNativeType * @param string $message */ public static function assertAttributeContainsOnly($type, $haystackAttributeName, $haystackClassOrObject, $isNativeType = null, $message = '') { static::assertContainsOnly( $type, static::readAttribute($haystackClassOrObject, $haystackAttributeName), $isNativeType, $message ); } /** * Asserts that a haystack does not contain only values of a given type. * * @param string $type * @param mixed $haystack * @param bool $isNativeType * @param string $message */ public static function assertNotContainsOnly($type, $haystack, $isNativeType = null, $message = '') { if (!(is_array($haystack) || is_object($haystack) && $haystack instanceof Traversable)) { throw PHPUnit_Util_InvalidArgumentHelper::factory( 2, 'array or traversable' ); } if ($isNativeType == null) { $isNativeType = PHPUnit_Util_Type::isType($type); } static::assertThat( $haystack, new PHPUnit_Framework_Constraint_Not( new PHPUnit_Framework_Constraint_TraversableContainsOnly( $type, $isNativeType ) ), $message ); } /** * Asserts that a haystack that is stored in a static attribute of a class * or an attribute of an object does not contain only values of a given * type. * * @param string $type * @param string $haystackAttributeName * @param string|object $haystackClassOrObject * @param bool $isNativeType * @param string $message */ public static function assertAttributeNotContainsOnly($type, $haystackAttributeName, $haystackClassOrObject, $isNativeType = null, $message = '') { static::assertNotContainsOnly( $type, static::readAttribute($haystackClassOrObject, $haystackAttributeName), $isNativeType, $message ); } /** * Asserts the number of elements of an array, Countable or Traversable. * * @param int $expectedCount * @param mixed $haystack * @param string $message */ public static function assertCount($expectedCount, $haystack, $message = '') { if (!is_int($expectedCount)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'integer'); } if (!$haystack instanceof Countable && !$haystack instanceof Traversable && !is_array($haystack)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'countable or traversable'); } static::assertThat( $haystack, new PHPUnit_Framework_Constraint_Count($expectedCount), $message ); } /** * Asserts the number of elements of an array, Countable or Traversable * that is stored in an attribute. * * @param int $expectedCount * @param string $haystackAttributeName * @param string|object $haystackClassOrObject * @param string $message */ public static function assertAttributeCount($expectedCount, $haystackAttributeName, $haystackClassOrObject, $message = '') { static::assertCount( $expectedCount, static::readAttribute($haystackClassOrObject, $haystackAttributeName), $message ); } /** * Asserts the number of elements of an array, Countable or Traversable. * * @param int $expectedCount * @param mixed $haystack * @param string $message */ public static function assertNotCount($expectedCount, $haystack, $message = '') { if (!is_int($expectedCount)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'integer'); } if (!$haystack instanceof Countable && !$haystack instanceof Traversable && !is_array($haystack)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'countable or traversable'); } $constraint = new PHPUnit_Framework_Constraint_Not( new PHPUnit_Framework_Constraint_Count($expectedCount) ); static::assertThat($haystack, $constraint, $message); } /** * Asserts the number of elements of an array, Countable or Traversable * that is stored in an attribute. * * @param int $expectedCount * @param string $haystackAttributeName * @param string|object $haystackClassOrObject * @param string $message */ public static function assertAttributeNotCount($expectedCount, $haystackAttributeName, $haystackClassOrObject, $message = '') { static::assertNotCount( $expectedCount, static::readAttribute($haystackClassOrObject, $haystackAttributeName), $message ); } /** * Asserts that two variables are equal. * * @param mixed $expected * @param mixed $actual * @param string $message * @param float $delta * @param int $maxDepth * @param bool $canonicalize * @param bool $ignoreCase */ public static function assertEquals($expected, $actual, $message = '', $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) { $constraint = new PHPUnit_Framework_Constraint_IsEqual( $expected, $delta, $maxDepth, $canonicalize, $ignoreCase ); static::assertThat($actual, $constraint, $message); } /** * Asserts that a variable is equal to an attribute of an object. * * @param mixed $expected * @param string $actualAttributeName * @param string|object $actualClassOrObject * @param string $message * @param float $delta * @param int $maxDepth * @param bool $canonicalize * @param bool $ignoreCase */ public static function assertAttributeEquals($expected, $actualAttributeName, $actualClassOrObject, $message = '', $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) { static::assertEquals( $expected, static::readAttribute($actualClassOrObject, $actualAttributeName), $message, $delta, $maxDepth, $canonicalize, $ignoreCase ); } /** * Asserts that two variables are not equal. * * @param mixed $expected * @param mixed $actual * @param string $message * @param float $delta * @param int $maxDepth * @param bool $canonicalize * @param bool $ignoreCase */ public static function assertNotEquals($expected, $actual, $message = '', $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) { $constraint = new PHPUnit_Framework_Constraint_Not( new PHPUnit_Framework_Constraint_IsEqual( $expected, $delta, $maxDepth, $canonicalize, $ignoreCase ) ); static::assertThat($actual, $constraint, $message); } /** * Asserts that a variable is not equal to an attribute of an object. * * @param mixed $expected * @param string $actualAttributeName * @param string|object $actualClassOrObject * @param string $message * @param float $delta * @param int $maxDepth * @param bool $canonicalize * @param bool $ignoreCase */ public static function assertAttributeNotEquals($expected, $actualAttributeName, $actualClassOrObject, $message = '', $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) { static::assertNotEquals( $expected, static::readAttribute($actualClassOrObject, $actualAttributeName), $message, $delta, $maxDepth, $canonicalize, $ignoreCase ); } /** * Asserts that a variable is empty. * * @param mixed $actual * @param string $message * * @throws PHPUnit_Framework_AssertionFailedError */ public static function assertEmpty($actual, $message = '') { static::assertThat($actual, static::isEmpty(), $message); } /** * Asserts that a static attribute of a class or an attribute of an object * is empty. * * @param string $haystackAttributeName * @param string|object $haystackClassOrObject * @param string $message */ public static function assertAttributeEmpty($haystackAttributeName, $haystackClassOrObject, $message = '') { static::assertEmpty( static::readAttribute($haystackClassOrObject, $haystackAttributeName), $message ); } /** * Asserts that a variable is not empty. * * @param mixed $actual * @param string $message * * @throws PHPUnit_Framework_AssertionFailedError */ public static function assertNotEmpty($actual, $message = '') { static::assertThat($actual, static::logicalNot(static::isEmpty()), $message); } /** * Asserts that a static attribute of a class or an attribute of an object * is not empty. * * @param string $haystackAttributeName * @param string|object $haystackClassOrObject * @param string $message */ public static function assertAttributeNotEmpty($haystackAttributeName, $haystackClassOrObject, $message = '') { static::assertNotEmpty( static::readAttribute($haystackClassOrObject, $haystackAttributeName), $message ); } /** * Asserts that a value is greater than another value. * * @param mixed $expected * @param mixed $actual * @param string $message */ public static function assertGreaterThan($expected, $actual, $message = '') { static::assertThat($actual, static::greaterThan($expected), $message); } /** * Asserts that an attribute is greater than another value. * * @param mixed $expected * @param string $actualAttributeName * @param string|object $actualClassOrObject * @param string $message */ public static function assertAttributeGreaterThan($expected, $actualAttributeName, $actualClassOrObject, $message = '') { static::assertGreaterThan( $expected, static::readAttribute($actualClassOrObject, $actualAttributeName), $message ); } /** * Asserts that a value is greater than or equal to another value. * * @param mixed $expected * @param mixed $actual * @param string $message */ public static function assertGreaterThanOrEqual($expected, $actual, $message = '') { static::assertThat( $actual, static::greaterThanOrEqual($expected), $message ); } /** * Asserts that an attribute is greater than or equal to another value. * * @param mixed $expected * @param string $actualAttributeName * @param string|object $actualClassOrObject * @param string $message */ public static function assertAttributeGreaterThanOrEqual($expected, $actualAttributeName, $actualClassOrObject, $message = '') { static::assertGreaterThanOrEqual( $expected, static::readAttribute($actualClassOrObject, $actualAttributeName), $message ); } /** * Asserts that a value is smaller than another value. * * @param mixed $expected * @param mixed $actual * @param string $message */ public static function assertLessThan($expected, $actual, $message = '') { static::assertThat($actual, static::lessThan($expected), $message); } /** * Asserts that an attribute is smaller than another value. * * @param mixed $expected * @param string $actualAttributeName * @param string|object $actualClassOrObject * @param string $message */ public static function assertAttributeLessThan($expected, $actualAttributeName, $actualClassOrObject, $message = '') { static::assertLessThan( $expected, static::readAttribute($actualClassOrObject, $actualAttributeName), $message ); } /** * Asserts that a value is smaller than or equal to another value. * * @param mixed $expected * @param mixed $actual * @param string $message */ public static function assertLessThanOrEqual($expected, $actual, $message = '') { static::assertThat($actual, static::lessThanOrEqual($expected), $message); } /** * Asserts that an attribute is smaller than or equal to another value. * * @param mixed $expected * @param string $actualAttributeName * @param string|object $actualClassOrObject * @param string $message */ public static function assertAttributeLessThanOrEqual($expected, $actualAttributeName, $actualClassOrObject, $message = '') { static::assertLessThanOrEqual( $expected, static::readAttribute($actualClassOrObject, $actualAttributeName), $message ); } /** * Asserts that the contents of one file is equal to the contents of another * file. * * @param string $expected * @param string $actual * @param string $message * @param bool $canonicalize * @param bool $ignoreCase */ public static function assertFileEquals($expected, $actual, $message = '', $canonicalize = false, $ignoreCase = false) { static::assertFileExists($expected, $message); static::assertFileExists($actual, $message); static::assertEquals( file_get_contents($expected), file_get_contents($actual), $message, 0, 10, $canonicalize, $ignoreCase ); } /** * Asserts that the contents of one file is not equal to the contents of * another file. * * @param string $expected * @param string $actual * @param string $message * @param bool $canonicalize * @param bool $ignoreCase */ public static function assertFileNotEquals($expected, $actual, $message = '', $canonicalize = false, $ignoreCase = false) { static::assertFileExists($expected, $message); static::assertFileExists($actual, $message); static::assertNotEquals( file_get_contents($expected), file_get_contents($actual), $message, 0, 10, $canonicalize, $ignoreCase ); } /** * Asserts that the contents of a string is equal * to the contents of a file. * * @param string $expectedFile * @param string $actualString * @param string $message * @param bool $canonicalize * @param bool $ignoreCase */ public static function assertStringEqualsFile($expectedFile, $actualString, $message = '', $canonicalize = false, $ignoreCase = false) { static::assertFileExists($expectedFile, $message); static::assertEquals( file_get_contents($expectedFile), $actualString, $message, 0, 10, $canonicalize, $ignoreCase ); } /** * Asserts that the contents of a string is not equal * to the contents of a file. * * @param string $expectedFile * @param string $actualString * @param string $message * @param bool $canonicalize * @param bool $ignoreCase */ public static function assertStringNotEqualsFile($expectedFile, $actualString, $message = '', $canonicalize = false, $ignoreCase = false) { static::assertFileExists($expectedFile, $message); static::assertNotEquals( file_get_contents($expectedFile), $actualString, $message, 0, 10, $canonicalize, $ignoreCase ); } /** * Asserts that a file/dir is readable. * * @param string $filename * @param string $message */ public static function assertIsReadable($filename, $message = '') { if (!is_string($filename)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); } $constraint = new PHPUnit_Framework_Constraint_IsReadable; static::assertThat($filename, $constraint, $message); } /** * Asserts that a file/dir exists and is not readable. * * @param string $filename * @param string $message */ public static function assertNotIsReadable($filename, $message = '') { if (!is_string($filename)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); } $constraint = new PHPUnit_Framework_Constraint_Not( new PHPUnit_Framework_Constraint_IsReadable ); static::assertThat($filename, $constraint, $message); } /** * Asserts that a file/dir exists and is writable. * * @param string $filename * @param string $message */ public static function assertIsWritable($filename, $message = '') { if (!is_string($filename)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); } $constraint = new PHPUnit_Framework_Constraint_IsWritable; static::assertThat($filename, $constraint, $message); } /** * Asserts that a file/dir exists and is not writable. * * @param string $filename * @param string $message */ public static function assertNotIsWritable($filename, $message = '') { if (!is_string($filename)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); } $constraint = new PHPUnit_Framework_Constraint_Not( new PHPUnit_Framework_Constraint_IsWritable ); static::assertThat($filename, $constraint, $message); } /** * Asserts that a directory exists. * * @param string $directory * @param string $message */ public static function assertDirectoryExists($directory, $message = '') { if (!is_string($directory)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); } $constraint = new PHPUnit_Framework_Constraint_DirectoryExists; static::assertThat($directory, $constraint, $message); } /** * Asserts that a directory does not exist. * * @param string $directory * @param string $message */ public static function assertDirectoryNotExists($directory, $message = '') { if (!is_string($directory)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); } $constraint = new PHPUnit_Framework_Constraint_Not( new PHPUnit_Framework_Constraint_DirectoryExists ); static::assertThat($directory, $constraint, $message); } /** * Asserts that a directory exists and is readable. * * @param string $directory * @param string $message */ public static function assertDirectoryIsReadable($directory, $message = '') { self::assertDirectoryExists($directory, $message); self::assertIsReadable($directory, $message); } /** * Asserts that a directory exists and is not readable. * * @param string $directory * @param string $message */ public static function assertDirectoryNotIsReadable($directory, $message = '') { self::assertDirectoryExists($directory, $message); self::assertNotIsReadable($directory, $message); } /** * Asserts that a directory exists and is writable. * * @param string $directory * @param string $message */ public static function assertDirectoryIsWritable($directory, $message = '') { self::assertDirectoryExists($directory, $message); self::assertIsWritable($directory, $message); } /** * Asserts that a directory exists and is not writable. * * @param string $directory * @param string $message */ public static function assertDirectoryNotIsWritable($directory, $message = '') { self::assertDirectoryExists($directory, $message); self::assertNotIsWritable($directory, $message); } /** * Asserts that a file exists. * * @param string $filename * @param string $message */ public static function assertFileExists($filename, $message = '') { if (!is_string($filename)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); } $constraint = new PHPUnit_Framework_Constraint_FileExists; static::assertThat($filename, $constraint, $message); } /** * Asserts that a file does not exist. * * @param string $filename * @param string $message */ public static function assertFileNotExists($filename, $message = '') { if (!is_string($filename)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); } $constraint = new PHPUnit_Framework_Constraint_Not( new PHPUnit_Framework_Constraint_FileExists ); static::assertThat($filename, $constraint, $message); } /** * Asserts that a file exists and is readable. * * @param string $file * @param string $message */ public static function assertFileIsReadable($file, $message = '') { self::assertFileExists($file, $message); self::assertIsReadable($file, $message); } /** * Asserts that a file exists and is not readable. * * @param string $file * @param string $message */ public static function assertFileNotIsReadable($file, $message = '') { self::assertFileExists($file, $message); self::assertNotIsReadable($file, $message); } /** * Asserts that a file exists and is writable. * * @param string $file * @param string $message */ public static function assertFileIsWritable($file, $message = '') { self::assertFileExists($file, $message); self::assertIsWritable($file, $message); } /** * Asserts that a file exists and is not writable. * * @param string $file * @param string $message */ public static function assertFileNotIsWritable($file, $message = '') { self::assertFileExists($file, $message); self::assertNotIsWritable($file, $message); } /** * Asserts that a condition is true. * * @param bool $condition * @param string $message * * @throws PHPUnit_Framework_AssertionFailedError */ public static function assertTrue($condition, $message = '') { static::assertThat($condition, static::isTrue(), $message); } /** * Asserts that a condition is not true. * * @param bool $condition * @param string $message * * @throws PHPUnit_Framework_AssertionFailedError */ public static function assertNotTrue($condition, $message = '') { static::assertThat($condition, static::logicalNot(static::isTrue()), $message); } /** * Asserts that a condition is false. * * @param bool $condition * @param string $message * * @throws PHPUnit_Framework_AssertionFailedError */ public static function assertFalse($condition, $message = '') { static::assertThat($condition, static::isFalse(), $message); } /** * Asserts that a condition is not false. * * @param bool $condition * @param string $message * * @throws PHPUnit_Framework_AssertionFailedError */ public static function assertNotFalse($condition, $message = '') { static::assertThat($condition, static::logicalNot(static::isFalse()), $message); } /** * Asserts that a variable is null. * * @param mixed $actual * @param string $message */ public static function assertNull($actual, $message = '') { static::assertThat($actual, static::isNull(), $message); } /** * Asserts that a variable is not null. * * @param mixed $actual * @param string $message */ public static function assertNotNull($actual, $message = '') { static::assertThat($actual, static::logicalNot(static::isNull()), $message); } /** * Asserts that a variable is finite. * * @param mixed $actual * @param string $message */ public static function assertFinite($actual, $message = '') { static::assertThat($actual, static::isFinite(), $message); } /** * Asserts that a variable is infinite. * * @param mixed $actual * @param string $message */ public static function assertInfinite($actual, $message = '') { static::assertThat($actual, static::isInfinite(), $message); } /** * Asserts that a variable is nan. * * @param mixed $actual * @param string $message */ public static function assertNan($actual, $message = '') { static::assertThat($actual, static::isNan(), $message); } /** * Asserts that a class has a specified attribute. * * @param string $attributeName * @param string $className * @param string $message */ public static function assertClassHasAttribute($attributeName, $className, $message = '') { if (!is_string($attributeName)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); } if (!preg_match('/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/', $attributeName)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'valid attribute name'); } if (!is_string($className) || !class_exists($className)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'class name', $className); } $constraint = new PHPUnit_Framework_Constraint_ClassHasAttribute( $attributeName ); static::assertThat($className, $constraint, $message); } /** * Asserts that a class does not have a specified attribute. * * @param string $attributeName * @param string $className * @param string $message */ public static function assertClassNotHasAttribute($attributeName, $className, $message = '') { if (!is_string($attributeName)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); } if (!preg_match('/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/', $attributeName)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'valid attribute name'); } if (!is_string($className) || !class_exists($className)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'class name', $className); } $constraint = new PHPUnit_Framework_Constraint_Not( new PHPUnit_Framework_Constraint_ClassHasAttribute($attributeName) ); static::assertThat($className, $constraint, $message); } /** * Asserts that a class has a specified static attribute. * * @param string $attributeName * @param string $className * @param string $message */ public static function assertClassHasStaticAttribute($attributeName, $className, $message = '') { if (!is_string($attributeName)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); } if (!preg_match('/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/', $attributeName)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'valid attribute name'); } if (!is_string($className) || !class_exists($className)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'class name', $className); } $constraint = new PHPUnit_Framework_Constraint_ClassHasStaticAttribute( $attributeName ); static::assertThat($className, $constraint, $message); } /** * Asserts that a class does not have a specified static attribute. * * @param string $attributeName * @param string $className * @param string $message */ public static function assertClassNotHasStaticAttribute($attributeName, $className, $message = '') { if (!is_string($attributeName)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); } if (!preg_match('/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/', $attributeName)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'valid attribute name'); } if (!is_string($className) || !class_exists($className)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'class name', $className); } $constraint = new PHPUnit_Framework_Constraint_Not( new PHPUnit_Framework_Constraint_ClassHasStaticAttribute( $attributeName ) ); static::assertThat($className, $constraint, $message); } /** * Asserts that an object has a specified attribute. * * @param string $attributeName * @param object $object * @param string $message */ public static function assertObjectHasAttribute($attributeName, $object, $message = '') { if (!is_string($attributeName)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); } if (!preg_match('/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/', $attributeName)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'valid attribute name'); } if (!is_object($object)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'object'); } $constraint = new PHPUnit_Framework_Constraint_ObjectHasAttribute( $attributeName ); static::assertThat($object, $constraint, $message); } /** * Asserts that an object does not have a specified attribute. * * @param string $attributeName * @param object $object * @param string $message */ public static function assertObjectNotHasAttribute($attributeName, $object, $message = '') { if (!is_string($attributeName)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); } if (!preg_match('/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/', $attributeName)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'valid attribute name'); } if (!is_object($object)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'object'); } $constraint = new PHPUnit_Framework_Constraint_Not( new PHPUnit_Framework_Constraint_ObjectHasAttribute($attributeName) ); static::assertThat($object, $constraint, $message); } /** * Asserts that two variables have the same type and value. * Used on objects, it asserts that two variables reference * the same object. * * @param mixed $expected * @param mixed $actual * @param string $message */ public static function assertSame($expected, $actual, $message = '') { if (is_bool($expected) && is_bool($actual)) { static::assertEquals($expected, $actual, $message); } else { $constraint = new PHPUnit_Framework_Constraint_IsIdentical( $expected ); static::assertThat($actual, $constraint, $message); } } /** * Asserts that a variable and an attribute of an object have the same type * and value. * * @param mixed $expected * @param string $actualAttributeName * @param string|object $actualClassOrObject * @param string $message */ public static function assertAttributeSame($expected, $actualAttributeName, $actualClassOrObject, $message = '') { static::assertSame( $expected, static::readAttribute($actualClassOrObject, $actualAttributeName), $message ); } /** * Asserts that two variables do not have the same type and value. * Used on objects, it asserts that two variables do not reference * the same object. * * @param mixed $expected * @param mixed $actual * @param string $message */ public static function assertNotSame($expected, $actual, $message = '') { if (is_bool($expected) && is_bool($actual)) { static::assertNotEquals($expected, $actual, $message); } else { $constraint = new PHPUnit_Framework_Constraint_Not( new PHPUnit_Framework_Constraint_IsIdentical($expected) ); static::assertThat($actual, $constraint, $message); } } /** * Asserts that a variable and an attribute of an object do not have the * same type and value. * * @param mixed $expected * @param string $actualAttributeName * @param string|object $actualClassOrObject * @param string $message */ public static function assertAttributeNotSame($expected, $actualAttributeName, $actualClassOrObject, $message = '') { static::assertNotSame( $expected, static::readAttribute($actualClassOrObject, $actualAttributeName), $message ); } /** * Asserts that a variable is of a given type. * * @param string $expected * @param mixed $actual * @param string $message */ public static function assertInstanceOf($expected, $actual, $message = '') { if (!(is_string($expected) && (class_exists($expected) || interface_exists($expected)))) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'class or interface name'); } $constraint = new PHPUnit_Framework_Constraint_IsInstanceOf( $expected ); static::assertThat($actual, $constraint, $message); } /** * Asserts that an attribute is of a given type. * * @param string $expected * @param string $attributeName * @param string|object $classOrObject * @param string $message */ public static function assertAttributeInstanceOf($expected, $attributeName, $classOrObject, $message = '') { static::assertInstanceOf( $expected, static::readAttribute($classOrObject, $attributeName), $message ); } /** * Asserts that a variable is not of a given type. * * @param string $expected * @param mixed $actual * @param string $message */ public static function assertNotInstanceOf($expected, $actual, $message = '') { if (!(is_string($expected) && (class_exists($expected) || interface_exists($expected)))) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'class or interface name'); } $constraint = new PHPUnit_Framework_Constraint_Not( new PHPUnit_Framework_Constraint_IsInstanceOf($expected) ); static::assertThat($actual, $constraint, $message); } /** * Asserts that an attribute is of a given type. * * @param string $expected * @param string $attributeName * @param string|object $classOrObject * @param string $message */ public static function assertAttributeNotInstanceOf($expected, $attributeName, $classOrObject, $message = '') { static::assertNotInstanceOf( $expected, static::readAttribute($classOrObject, $attributeName), $message ); } /** * Asserts that a variable is of a given type. * * @param string $expected * @param mixed $actual * @param string $message */ public static function assertInternalType($expected, $actual, $message = '') { if (!is_string($expected)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); } $constraint = new PHPUnit_Framework_Constraint_IsType( $expected ); static::assertThat($actual, $constraint, $message); } /** * Asserts that an attribute is of a given type. * * @param string $expected * @param string $attributeName * @param string|object $classOrObject * @param string $message */ public static function assertAttributeInternalType($expected, $attributeName, $classOrObject, $message = '') { static::assertInternalType( $expected, static::readAttribute($classOrObject, $attributeName), $message ); } /** * Asserts that a variable is not of a given type. * * @param string $expected * @param mixed $actual * @param string $message */ public static function assertNotInternalType($expected, $actual, $message = '') { if (!is_string($expected)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); } $constraint = new PHPUnit_Framework_Constraint_Not( new PHPUnit_Framework_Constraint_IsType($expected) ); static::assertThat($actual, $constraint, $message); } /** * Asserts that an attribute is of a given type. * * @param string $expected * @param string $attributeName * @param string|object $classOrObject * @param string $message */ public static function assertAttributeNotInternalType($expected, $attributeName, $classOrObject, $message = '') { static::assertNotInternalType( $expected, static::readAttribute($classOrObject, $attributeName), $message ); } /** * Asserts that a string matches a given regular expression. * * @param string $pattern * @param string $string * @param string $message */ public static function assertRegExp($pattern, $string, $message = '') { if (!is_string($pattern)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); } if (!is_string($string)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'string'); } $constraint = new PHPUnit_Framework_Constraint_PCREMatch($pattern); static::assertThat($string, $constraint, $message); } /** * Asserts that a string does not match a given regular expression. * * @param string $pattern * @param string $string * @param string $message */ public static function assertNotRegExp($pattern, $string, $message = '') { if (!is_string($pattern)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); } if (!is_string($string)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'string'); } $constraint = new PHPUnit_Framework_Constraint_Not( new PHPUnit_Framework_Constraint_PCREMatch($pattern) ); static::assertThat($string, $constraint, $message); } /** * Assert that the size of two arrays (or `Countable` or `Traversable` objects) * is the same. * * @param array|Countable|Traversable $expected * @param array|Countable|Traversable $actual * @param string $message */ public static function assertSameSize($expected, $actual, $message = '') { if (!$expected instanceof Countable && !$expected instanceof Traversable && !is_array($expected)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'countable or traversable'); } if (!$actual instanceof Countable && !$actual instanceof Traversable && !is_array($actual)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'countable or traversable'); } static::assertThat( $actual, new PHPUnit_Framework_Constraint_SameSize($expected), $message ); } /** * Assert that the size of two arrays (or `Countable` or `Traversable` objects) * is not the same. * * @param array|Countable|Traversable $expected * @param array|Countable|Traversable $actual * @param string $message */ public static function assertNotSameSize($expected, $actual, $message = '') { if (!$expected instanceof Countable && !$expected instanceof Traversable && !is_array($expected)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'countable or traversable'); } if (!$actual instanceof Countable && !$actual instanceof Traversable && !is_array($actual)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'countable or traversable'); } $constraint = new PHPUnit_Framework_Constraint_Not( new PHPUnit_Framework_Constraint_SameSize($expected) ); static::assertThat($actual, $constraint, $message); } /** * Asserts that a string matches a given format string. * * @param string $format * @param string $string * @param string $message */ public static function assertStringMatchesFormat($format, $string, $message = '') { if (!is_string($format)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); } if (!is_string($string)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'string'); } $constraint = new PHPUnit_Framework_Constraint_StringMatches($format); static::assertThat($string, $constraint, $message); } /** * Asserts that a string does not match a given format string. * * @param string $format * @param string $string * @param string $message */ public static function assertStringNotMatchesFormat($format, $string, $message = '') { if (!is_string($format)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); } if (!is_string($string)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'string'); } $constraint = new PHPUnit_Framework_Constraint_Not( new PHPUnit_Framework_Constraint_StringMatches($format) ); static::assertThat($string, $constraint, $message); } /** * Asserts that a string matches a given format file. * * @param string $formatFile * @param string $string * @param string $message */ public static function assertStringMatchesFormatFile($formatFile, $string, $message = '') { static::assertFileExists($formatFile, $message); if (!is_string($string)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'string'); } $constraint = new PHPUnit_Framework_Constraint_StringMatches( file_get_contents($formatFile) ); static::assertThat($string, $constraint, $message); } /** * Asserts that a string does not match a given format string. * * @param string $formatFile * @param string $string * @param string $message */ public static function assertStringNotMatchesFormatFile($formatFile, $string, $message = '') { static::assertFileExists($formatFile, $message); if (!is_string($string)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'string'); } $constraint = new PHPUnit_Framework_Constraint_Not( new PHPUnit_Framework_Constraint_StringMatches( file_get_contents($formatFile) ) ); static::assertThat($string, $constraint, $message); } /** * Asserts that a string starts with a given prefix. * * @param string $prefix * @param string $string * @param string $message */ public static function assertStringStartsWith($prefix, $string, $message = '') { if (!is_string($prefix)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); } if (!is_string($string)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'string'); } $constraint = new PHPUnit_Framework_Constraint_StringStartsWith( $prefix ); static::assertThat($string, $constraint, $message); } /** * Asserts that a string starts not with a given prefix. * * @param string $prefix * @param string $string * @param string $message */ public static function assertStringStartsNotWith($prefix, $string, $message = '') { if (!is_string($prefix)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); } if (!is_string($string)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'string'); } $constraint = new PHPUnit_Framework_Constraint_Not( new PHPUnit_Framework_Constraint_StringStartsWith($prefix) ); static::assertThat($string, $constraint, $message); } /** * Asserts that a string ends with a given suffix. * * @param string $suffix * @param string $string * @param string $message */ public static function assertStringEndsWith($suffix, $string, $message = '') { if (!is_string($suffix)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); } if (!is_string($string)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'string'); } $constraint = new PHPUnit_Framework_Constraint_StringEndsWith($suffix); static::assertThat($string, $constraint, $message); } /** * Asserts that a string ends not with a given suffix. * * @param string $suffix * @param string $string * @param string $message */ public static function assertStringEndsNotWith($suffix, $string, $message = '') { if (!is_string($suffix)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); } if (!is_string($string)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'string'); } $constraint = new PHPUnit_Framework_Constraint_Not( new PHPUnit_Framework_Constraint_StringEndsWith($suffix) ); static::assertThat($string, $constraint, $message); } /** * Asserts that two XML files are equal. * * @param string $expectedFile * @param string $actualFile * @param string $message */ public static function assertXmlFileEqualsXmlFile($expectedFile, $actualFile, $message = '') { $expected = PHPUnit_Util_XML::loadFile($expectedFile); $actual = PHPUnit_Util_XML::loadFile($actualFile); static::assertEquals($expected, $actual, $message); } /** * Asserts that two XML files are not equal. * * @param string $expectedFile * @param string $actualFile * @param string $message */ public static function assertXmlFileNotEqualsXmlFile($expectedFile, $actualFile, $message = '') { $expected = PHPUnit_Util_XML::loadFile($expectedFile); $actual = PHPUnit_Util_XML::loadFile($actualFile); static::assertNotEquals($expected, $actual, $message); } /** * Asserts that two XML documents are equal. * * @param string $expectedFile * @param string $actualXml * @param string $message */ public static function assertXmlStringEqualsXmlFile($expectedFile, $actualXml, $message = '') { $expected = PHPUnit_Util_XML::loadFile($expectedFile); $actual = PHPUnit_Util_XML::load($actualXml); static::assertEquals($expected, $actual, $message); } /** * Asserts that two XML documents are not equal. * * @param string $expectedFile * @param string $actualXml * @param string $message */ public static function assertXmlStringNotEqualsXmlFile($expectedFile, $actualXml, $message = '') { $expected = PHPUnit_Util_XML::loadFile($expectedFile); $actual = PHPUnit_Util_XML::load($actualXml); static::assertNotEquals($expected, $actual, $message); } /** * Asserts that two XML documents are equal. * * @param string $expectedXml * @param string $actualXml * @param string $message */ public static function assertXmlStringEqualsXmlString($expectedXml, $actualXml, $message = '') { $expected = PHPUnit_Util_XML::load($expectedXml); $actual = PHPUnit_Util_XML::load($actualXml); static::assertEquals($expected, $actual, $message); } /** * Asserts that two XML documents are not equal. * * @param string $expectedXml * @param string $actualXml * @param string $message */ public static function assertXmlStringNotEqualsXmlString($expectedXml, $actualXml, $message = '') { $expected = PHPUnit_Util_XML::load($expectedXml); $actual = PHPUnit_Util_XML::load($actualXml); static::assertNotEquals($expected, $actual, $message); } /** * Asserts that a hierarchy of DOMElements matches. * * @param DOMElement $expectedElement * @param DOMElement $actualElement * @param bool $checkAttributes * @param string $message */ public static function assertEqualXMLStructure(DOMElement $expectedElement, DOMElement $actualElement, $checkAttributes = false, $message = '') { $tmp = new DOMDocument; $expectedElement = $tmp->importNode($expectedElement, true); $tmp = new DOMDocument; $actualElement = $tmp->importNode($actualElement, true); unset($tmp); static::assertEquals( $expectedElement->tagName, $actualElement->tagName, $message ); if ($checkAttributes) { static::assertEquals( $expectedElement->attributes->length, $actualElement->attributes->length, sprintf( '%s%sNumber of attributes on node "%s" does not match', $message, !empty($message) ? "\n" : '', $expectedElement->tagName ) ); for ($i = 0; $i < $expectedElement->attributes->length; $i++) { $expectedAttribute = $expectedElement->attributes->item($i); $actualAttribute = $actualElement->attributes->getNamedItem( $expectedAttribute->name ); if (!$actualAttribute) { static::fail( sprintf( '%s%sCould not find attribute "%s" on node "%s"', $message, !empty($message) ? "\n" : '', $expectedAttribute->name, $expectedElement->tagName ) ); } } } PHPUnit_Util_XML::removeCharacterDataNodes($expectedElement); PHPUnit_Util_XML::removeCharacterDataNodes($actualElement); static::assertEquals( $expectedElement->childNodes->length, $actualElement->childNodes->length, sprintf( '%s%sNumber of child nodes of "%s" differs', $message, !empty($message) ? "\n" : '', $expectedElement->tagName ) ); for ($i = 0; $i < $expectedElement->childNodes->length; $i++) { static::assertEqualXMLStructure( $expectedElement->childNodes->item($i), $actualElement->childNodes->item($i), $checkAttributes, $message ); } } /** * Evaluates a PHPUnit_Framework_Constraint matcher object. * * @param mixed $value * @param PHPUnit_Framework_Constraint $constraint * @param string $message */ public static function assertThat($value, PHPUnit_Framework_Constraint $constraint, $message = '') { self::$count += count($constraint); $constraint->evaluate($value, $message); } /** * Asserts that a string is a valid JSON string. * * @param string $actualJson * @param string $message */ public static function assertJson($actualJson, $message = '') { if (!is_string($actualJson)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); } static::assertThat($actualJson, static::isJson(), $message); } /** * Asserts that two given JSON encoded objects or arrays are equal. * * @param string $expectedJson * @param string $actualJson * @param string $message */ public static function assertJsonStringEqualsJsonString($expectedJson, $actualJson, $message = '') { static::assertJson($expectedJson, $message); static::assertJson($actualJson, $message); $expected = json_decode($expectedJson); $actual = json_decode($actualJson); static::assertEquals($expected, $actual, $message); } /** * Asserts that two given JSON encoded objects or arrays are not equal. * * @param string $expectedJson * @param string $actualJson * @param string $message */ public static function assertJsonStringNotEqualsJsonString($expectedJson, $actualJson, $message = '') { static::assertJson($expectedJson, $message); static::assertJson($actualJson, $message); $expected = json_decode($expectedJson); $actual = json_decode($actualJson); static::assertNotEquals($expected, $actual, $message); } /** * Asserts that the generated JSON encoded object and the content of the given file are equal. * * @param string $expectedFile * @param string $actualJson * @param string $message */ public static function assertJsonStringEqualsJsonFile($expectedFile, $actualJson, $message = '') { static::assertFileExists($expectedFile, $message); $expectedJson = file_get_contents($expectedFile); static::assertJson($expectedJson, $message); static::assertJson($actualJson, $message); // call constraint $constraint = new PHPUnit_Framework_Constraint_JsonMatches( $expectedJson ); static::assertThat($actualJson, $constraint, $message); } /** * Asserts that the generated JSON encoded object and the content of the given file are not equal. * * @param string $expectedFile * @param string $actualJson * @param string $message */ public static function assertJsonStringNotEqualsJsonFile($expectedFile, $actualJson, $message = '') { static::assertFileExists($expectedFile, $message); $expectedJson = file_get_contents($expectedFile); static::assertJson($expectedJson, $message); static::assertJson($actualJson, $message); // call constraint $constraint = new PHPUnit_Framework_Constraint_JsonMatches( $expectedJson ); static::assertThat($actualJson, new PHPUnit_Framework_Constraint_Not($constraint), $message); } /** * Asserts that two JSON files are equal. * * @param string $expectedFile * @param string $actualFile * @param string $message */ public static function assertJsonFileEqualsJsonFile($expectedFile, $actualFile, $message = '') { static::assertFileExists($expectedFile, $message); static::assertFileExists($actualFile, $message); $actualJson = file_get_contents($actualFile); $expectedJson = file_get_contents($expectedFile); static::assertJson($expectedJson, $message); static::assertJson($actualJson, $message); // call constraint $constraintExpected = new PHPUnit_Framework_Constraint_JsonMatches( $expectedJson ); $constraintActual = new PHPUnit_Framework_Constraint_JsonMatches($actualJson); static::assertThat($expectedJson, $constraintActual, $message); static::assertThat($actualJson, $constraintExpected, $message); } /** * Asserts that two JSON files are not equal. * * @param string $expectedFile * @param string $actualFile * @param string $message */ public static function assertJsonFileNotEqualsJsonFile($expectedFile, $actualFile, $message = '') { static::assertFileExists($expectedFile, $message); static::assertFileExists($actualFile, $message); $actualJson = file_get_contents($actualFile); $expectedJson = file_get_contents($expectedFile); static::assertJson($expectedJson, $message); static::assertJson($actualJson, $message); // call constraint $constraintExpected = new PHPUnit_Framework_Constraint_JsonMatches( $expectedJson ); $constraintActual = new PHPUnit_Framework_Constraint_JsonMatches($actualJson); static::assertThat($expectedJson, new PHPUnit_Framework_Constraint_Not($constraintActual), $message); static::assertThat($actualJson, new PHPUnit_Framework_Constraint_Not($constraintExpected), $message); } /** * Returns a PHPUnit_Framework_Constraint_And matcher object. * * @return PHPUnit_Framework_Constraint_And */ public static function logicalAnd() { $constraints = func_get_args(); $constraint = new PHPUnit_Framework_Constraint_And; $constraint->setConstraints($constraints); return $constraint; } /** * Returns a PHPUnit_Framework_Constraint_Or matcher object. * * @return PHPUnit_Framework_Constraint_Or */ public static function logicalOr() { $constraints = func_get_args(); $constraint = new PHPUnit_Framework_Constraint_Or; $constraint->setConstraints($constraints); return $constraint; } /** * Returns a PHPUnit_Framework_Constraint_Not matcher object. * * @param PHPUnit_Framework_Constraint $constraint * * @return PHPUnit_Framework_Constraint_Not */ public static function logicalNot(PHPUnit_Framework_Constraint $constraint) { return new PHPUnit_Framework_Constraint_Not($constraint); } /** * Returns a PHPUnit_Framework_Constraint_Xor matcher object. * * @return PHPUnit_Framework_Constraint_Xor */ public static function logicalXor() { $constraints = func_get_args(); $constraint = new PHPUnit_Framework_Constraint_Xor; $constraint->setConstraints($constraints); return $constraint; } /** * Returns a PHPUnit_Framework_Constraint_IsAnything matcher object. * * @return PHPUnit_Framework_Constraint_IsAnything */ public static function anything() { return new PHPUnit_Framework_Constraint_IsAnything; } /** * Returns a PHPUnit_Framework_Constraint_IsTrue matcher object. * * @return PHPUnit_Framework_Constraint_IsTrue */ public static function isTrue() { return new PHPUnit_Framework_Constraint_IsTrue; } /** * Returns a PHPUnit_Framework_Constraint_Callback matcher object. * * @param callable $callback * * @return PHPUnit_Framework_Constraint_Callback */ public static function callback($callback) { return new PHPUnit_Framework_Constraint_Callback($callback); } /** * Returns a PHPUnit_Framework_Constraint_IsFalse matcher object. * * @return PHPUnit_Framework_Constraint_IsFalse */ public static function isFalse() { return new PHPUnit_Framework_Constraint_IsFalse; } /** * Returns a PHPUnit_Framework_Constraint_IsJson matcher object. * * @return PHPUnit_Framework_Constraint_IsJson */ public static function isJson() { return new PHPUnit_Framework_Constraint_IsJson; } /** * Returns a PHPUnit_Framework_Constraint_IsNull matcher object. * * @return PHPUnit_Framework_Constraint_IsNull */ public static function isNull() { return new PHPUnit_Framework_Constraint_IsNull; } /** * Returns a PHPUnit_Framework_Constraint_IsFinite matcher object. * * @return PHPUnit_Framework_Constraint_IsFinite */ public static function isFinite() { return new PHPUnit_Framework_Constraint_IsFinite; } /** * Returns a PHPUnit_Framework_Constraint_IsInfinite matcher object. * * @return PHPUnit_Framework_Constraint_IsInfinite */ public static function isInfinite() { return new PHPUnit_Framework_Constraint_IsInfinite; } /** * Returns a PHPUnit_Framework_Constraint_IsNan matcher object. * * @return PHPUnit_Framework_Constraint_IsNan */ public static function isNan() { return new PHPUnit_Framework_Constraint_IsNan; } /** * Returns a PHPUnit_Framework_Constraint_Attribute matcher object. * * @param PHPUnit_Framework_Constraint $constraint * @param string $attributeName * * @return PHPUnit_Framework_Constraint_Attribute */ public static function attribute(PHPUnit_Framework_Constraint $constraint, $attributeName) { return new PHPUnit_Framework_Constraint_Attribute( $constraint, $attributeName ); } /** * Returns a PHPUnit_Framework_Constraint_TraversableContains matcher * object. * * @param mixed $value * @param bool $checkForObjectIdentity * @param bool $checkForNonObjectIdentity * * @return PHPUnit_Framework_Constraint_TraversableContains */ public static function contains($value, $checkForObjectIdentity = true, $checkForNonObjectIdentity = false) { return new PHPUnit_Framework_Constraint_TraversableContains($value, $checkForObjectIdentity, $checkForNonObjectIdentity); } /** * Returns a PHPUnit_Framework_Constraint_TraversableContainsOnly matcher * object. * * @param string $type * * @return PHPUnit_Framework_Constraint_TraversableContainsOnly */ public static function containsOnly($type) { return new PHPUnit_Framework_Constraint_TraversableContainsOnly($type); } /** * Returns a PHPUnit_Framework_Constraint_TraversableContainsOnly matcher * object. * * @param string $classname * * @return PHPUnit_Framework_Constraint_TraversableContainsOnly */ public static function containsOnlyInstancesOf($classname) { return new PHPUnit_Framework_Constraint_TraversableContainsOnly($classname, false); } /** * Returns a PHPUnit_Framework_Constraint_ArrayHasKey matcher object. * * @param mixed $key * * @return PHPUnit_Framework_Constraint_ArrayHasKey */ public static function arrayHasKey($key) { return new PHPUnit_Framework_Constraint_ArrayHasKey($key); } /** * Returns a PHPUnit_Framework_Constraint_IsEqual matcher object. * * @param mixed $value * @param float $delta * @param int $maxDepth * @param bool $canonicalize * @param bool $ignoreCase * * @return PHPUnit_Framework_Constraint_IsEqual */ public static function equalTo($value, $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) { return new PHPUnit_Framework_Constraint_IsEqual( $value, $delta, $maxDepth, $canonicalize, $ignoreCase ); } /** * Returns a PHPUnit_Framework_Constraint_IsEqual matcher object * that is wrapped in a PHPUnit_Framework_Constraint_Attribute matcher * object. * * @param string $attributeName * @param mixed $value * @param float $delta * @param int $maxDepth * @param bool $canonicalize * @param bool $ignoreCase * * @return PHPUnit_Framework_Constraint_Attribute */ public static function attributeEqualTo($attributeName, $value, $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) { return static::attribute( static::equalTo( $value, $delta, $maxDepth, $canonicalize, $ignoreCase ), $attributeName ); } /** * Returns a PHPUnit_Framework_Constraint_IsEmpty matcher object. * * @return PHPUnit_Framework_Constraint_IsEmpty */ public static function isEmpty() { return new PHPUnit_Framework_Constraint_IsEmpty; } /** * Returns a PHPUnit_Framework_Constraint_IsWritable matcher object. * * @return PHPUnit_Framework_Constraint_IsWritable */ public static function isWritable() { return new PHPUnit_Framework_Constraint_IsWritable; } /** * Returns a PHPUnit_Framework_Constraint_IsReadable matcher object. * * @return PHPUnit_Framework_Constraint_IsReadable */ public static function isReadable() { return new PHPUnit_Framework_Constraint_IsReadable; } /** * Returns a PHPUnit_Framework_Constraint_DirectoryExists matcher object. * * @return PHPUnit_Framework_Constraint_DirectoryExists */ public static function directoryExists() { return new PHPUnit_Framework_Constraint_DirectoryExists; } /** * Returns a PHPUnit_Framework_Constraint_FileExists matcher object. * * @return PHPUnit_Framework_Constraint_FileExists */ public static function fileExists() { return new PHPUnit_Framework_Constraint_FileExists; } /** * Returns a PHPUnit_Framework_Constraint_GreaterThan matcher object. * * @param mixed $value * * @return PHPUnit_Framework_Constraint_GreaterThan */ public static function greaterThan($value) { return new PHPUnit_Framework_Constraint_GreaterThan($value); } /** * Returns a PHPUnit_Framework_Constraint_Or matcher object that wraps * a PHPUnit_Framework_Constraint_IsEqual and a * PHPUnit_Framework_Constraint_GreaterThan matcher object. * * @param mixed $value * * @return PHPUnit_Framework_Constraint_Or */ public static function greaterThanOrEqual($value) { return static::logicalOr( new PHPUnit_Framework_Constraint_IsEqual($value), new PHPUnit_Framework_Constraint_GreaterThan($value) ); } /** * Returns a PHPUnit_Framework_Constraint_ClassHasAttribute matcher object. * * @param string $attributeName * * @return PHPUnit_Framework_Constraint_ClassHasAttribute */ public static function classHasAttribute($attributeName) { return new PHPUnit_Framework_Constraint_ClassHasAttribute( $attributeName ); } /** * Returns a PHPUnit_Framework_Constraint_ClassHasStaticAttribute matcher * object. * * @param string $attributeName * * @return PHPUnit_Framework_Constraint_ClassHasStaticAttribute */ public static function classHasStaticAttribute($attributeName) { return new PHPUnit_Framework_Constraint_ClassHasStaticAttribute( $attributeName ); } /** * Returns a PHPUnit_Framework_Constraint_ObjectHasAttribute matcher object. * * @param string $attributeName * * @return PHPUnit_Framework_Constraint_ObjectHasAttribute */ public static function objectHasAttribute($attributeName) { return new PHPUnit_Framework_Constraint_ObjectHasAttribute( $attributeName ); } /** * Returns a PHPUnit_Framework_Constraint_IsIdentical matcher object. * * @param mixed $value * * @return PHPUnit_Framework_Constraint_IsIdentical */ public static function identicalTo($value) { return new PHPUnit_Framework_Constraint_IsIdentical($value); } /** * Returns a PHPUnit_Framework_Constraint_IsInstanceOf matcher object. * * @param string $className * * @return PHPUnit_Framework_Constraint_IsInstanceOf */ public static function isInstanceOf($className) { return new PHPUnit_Framework_Constraint_IsInstanceOf($className); } /** * Returns a PHPUnit_Framework_Constraint_IsType matcher object. * * @param string $type * * @return PHPUnit_Framework_Constraint_IsType */ public static function isType($type) { return new PHPUnit_Framework_Constraint_IsType($type); } /** * Returns a PHPUnit_Framework_Constraint_LessThan matcher object. * * @param mixed $value * * @return PHPUnit_Framework_Constraint_LessThan */ public static function lessThan($value) { return new PHPUnit_Framework_Constraint_LessThan($value); } /** * Returns a PHPUnit_Framework_Constraint_Or matcher object that wraps * a PHPUnit_Framework_Constraint_IsEqual and a * PHPUnit_Framework_Constraint_LessThan matcher object. * * @param mixed $value * * @return PHPUnit_Framework_Constraint_Or */ public static function lessThanOrEqual($value) { return static::logicalOr( new PHPUnit_Framework_Constraint_IsEqual($value), new PHPUnit_Framework_Constraint_LessThan($value) ); } /** * Returns a PHPUnit_Framework_Constraint_PCREMatch matcher object. * * @param string $pattern * * @return PHPUnit_Framework_Constraint_PCREMatch */ public static function matchesRegularExpression($pattern) { return new PHPUnit_Framework_Constraint_PCREMatch($pattern); } /** * Returns a PHPUnit_Framework_Constraint_StringMatches matcher object. * * @param string $string * * @return PHPUnit_Framework_Constraint_StringMatches */ public static function matches($string) { return new PHPUnit_Framework_Constraint_StringMatches($string); } /** * Returns a PHPUnit_Framework_Constraint_StringStartsWith matcher object. * * @param mixed $prefix * * @return PHPUnit_Framework_Constraint_StringStartsWith */ public static function stringStartsWith($prefix) { return new PHPUnit_Framework_Constraint_StringStartsWith($prefix); } /** * Returns a PHPUnit_Framework_Constraint_StringContains matcher object. * * @param string $string * @param bool $case * * @return PHPUnit_Framework_Constraint_StringContains */ public static function stringContains($string, $case = true) { return new PHPUnit_Framework_Constraint_StringContains($string, $case); } /** * Returns a PHPUnit_Framework_Constraint_StringEndsWith matcher object. * * @param mixed $suffix * * @return PHPUnit_Framework_Constraint_StringEndsWith */ public static function stringEndsWith($suffix) { return new PHPUnit_Framework_Constraint_StringEndsWith($suffix); } /** * Returns a PHPUnit_Framework_Constraint_Count matcher object. * * @param int $count * * @return PHPUnit_Framework_Constraint_Count */ public static function countOf($count) { return new PHPUnit_Framework_Constraint_Count($count); } /** * Fails a test with the given message. * * @param string $message * * @throws PHPUnit_Framework_AssertionFailedError */ public static function fail($message = '') { throw new PHPUnit_Framework_AssertionFailedError($message); } /** * Returns the value of an attribute of a class or an object. * This also works for attributes that are declared protected or private. * * @param string|object $classOrObject * @param string $attributeName * * @return mixed * * @throws PHPUnit_Framework_Exception */ public static function readAttribute($classOrObject, $attributeName) { if (!is_string($attributeName)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'string'); } if (!preg_match('/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/', $attributeName)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'valid attribute name'); } if (is_string($classOrObject)) { if (!class_exists($classOrObject)) { throw PHPUnit_Util_InvalidArgumentHelper::factory( 1, 'class name' ); } return static::getStaticAttribute( $classOrObject, $attributeName ); } elseif (is_object($classOrObject)) { return static::getObjectAttribute( $classOrObject, $attributeName ); } else { throw PHPUnit_Util_InvalidArgumentHelper::factory( 1, 'class name or object' ); } } /** * Returns the value of a static attribute. * This also works for attributes that are declared protected or private. * * @param string $className * @param string $attributeName * * @return mixed * * @throws PHPUnit_Framework_Exception */ public static function getStaticAttribute($className, $attributeName) { if (!is_string($className)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); } if (!class_exists($className)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'class name'); } if (!is_string($attributeName)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'string'); } if (!preg_match('/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/', $attributeName)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'valid attribute name'); } $class = new ReflectionClass($className); while ($class) { $attributes = $class->getStaticProperties(); if (array_key_exists($attributeName, $attributes)) { return $attributes[$attributeName]; } $class = $class->getParentClass(); } throw new PHPUnit_Framework_Exception( sprintf( 'Attribute "%s" not found in class.', $attributeName ) ); } /** * Returns the value of an object's attribute. * This also works for attributes that are declared protected or private. * * @param object $object * @param string $attributeName * * @return mixed * * @throws PHPUnit_Framework_Exception */ public static function getObjectAttribute($object, $attributeName) { if (!is_object($object)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'object'); } if (!is_string($attributeName)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'string'); } if (!preg_match('/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/', $attributeName)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'valid attribute name'); } try { $attribute = new ReflectionProperty($object, $attributeName); } catch (ReflectionException $e) { $reflector = new ReflectionObject($object); while ($reflector = $reflector->getParentClass()) { try { $attribute = $reflector->getProperty($attributeName); break; } catch (ReflectionException $e) { } } } if (isset($attribute)) { if (!$attribute || $attribute->isPublic()) { return $object->$attributeName; } $attribute->setAccessible(true); $value = $attribute->getValue($object); $attribute->setAccessible(false); return $value; } throw new PHPUnit_Framework_Exception( sprintf( 'Attribute "%s" not found in object.', $attributeName ) ); } /** * Mark the test as incomplete. * * @param string $message * * @throws PHPUnit_Framework_IncompleteTestError */ public static function markTestIncomplete($message = '') { throw new PHPUnit_Framework_IncompleteTestError($message); } /** * Mark the test as skipped. * * @param string $message * * @throws PHPUnit_Framework_SkippedTestError */ public static function markTestSkipped($message = '') { throw new PHPUnit_Framework_SkippedTestError($message); } /** * Return the current assertion count. * * @return int */ public static function getCount() { return self::$count; } /** * Reset the assertion counter. */ public static function resetCount() { self::$count = 0; } } PK!=$src/Framework/IncompleteTestCase.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * An incomplete test case */ class PHPUnit_Framework_IncompleteTestCase extends PHPUnit_Framework_TestCase { /** * @var string */ protected $message = ''; /** * @var bool */ protected $backupGlobals = false; /** * @var bool */ protected $backupStaticAttributes = false; /** * @var bool */ protected $runTestInSeparateProcess = false; /** * @var bool */ protected $useErrorHandler = false; /** * @var bool */ protected $useOutputBuffering = false; /** * @param string $className * @param string $methodName * @param string $message */ public function __construct($className, $methodName, $message = '') { $this->message = $message; parent::__construct($className . '::' . $methodName); } /** * @throws PHPUnit_Framework_Exception */ protected function runTest() { $this->markTestIncomplete($this->message); } /** * @return string */ public function getMessage() { return $this->message; } /** * Returns a string representation of the test case. * * @return string */ public function toString() { return $this->getName(); } } PK!=ܞhh,src/Framework/ExpectationFailedException.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Exception for expectations which failed their check. * * The exception contains the error message and optionally a * SebastianBergmann\Comparator\ComparisonFailure which is used to * generate diff output of the failed expectations. */ class PHPUnit_Framework_ExpectationFailedException extends PHPUnit_Framework_AssertionFailedError { /** * @var SebastianBergmann\Comparator\ComparisonFailure */ protected $comparisonFailure; public function __construct($message, SebastianBergmann\Comparator\ComparisonFailure $comparisonFailure = null, Exception $previous = null) { $this->comparisonFailure = $comparisonFailure; parent::__construct($message, 0, $previous); } /** * @return SebastianBergmann\Comparator\ComparisonFailure */ public function getComparisonFailure() { return $this->comparisonFailure; } } PK!"src/Framework/SkippedTestError.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Extension to PHPUnit_Framework_AssertionFailedError to mark the special * case of a skipped test. */ class PHPUnit_Framework_SkippedTestError extends PHPUnit_Framework_AssertionFailedError implements PHPUnit_Framework_SkippedTest { } PK!Lsrc/Framework/Exception.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Base class for all PHPUnit Framework exceptions. * * Ensures that exceptions thrown during a test run do not leave stray * references behind. * * Every Exception contains a stack trace. Each stack frame contains the 'args' * of the called function. The function arguments can contain references to * instantiated objects. The references prevent the objects from being * destructed (until test results are eventually printed), so memory cannot be * freed up. * * With enabled process isolation, test results are serialized in the child * process and unserialized in the parent process. The stack trace of Exceptions * may contain objects that cannot be serialized or unserialized (e.g., PDO * connections). Unserializing user-space objects from the child process into * the parent would break the intended encapsulation of process isolation. * * @see http://fabien.potencier.org/article/9/php-serialization-stack-traces-and-exceptions */ class PHPUnit_Framework_Exception extends RuntimeException implements PHPUnit_Exception { /** * @var array */ protected $serializableTrace; public function __construct($message = '', $code = 0, Exception $previous = null) { parent::__construct($message, $code, $previous); $this->serializableTrace = $this->getTrace(); foreach ($this->serializableTrace as $i => $call) { unset($this->serializableTrace[$i]['args']); } } /** * Returns the serializable trace (without 'args'). * * @return array */ public function getSerializableTrace() { return $this->serializableTrace; } /** * @return string */ public function __toString() { $string = PHPUnit_Framework_TestFailure::exceptionToString($this); if ($trace = PHPUnit_Util_Filter::getFilteredStacktrace($this)) { $string .= "\n" . $trace; } return $string; } public function __sleep() { return array_keys(get_object_vars($this)); } } PK!T%src/Framework/IncompleteTestError.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Extension to PHPUnit_Framework_AssertionFailedError to mark the special * case of an incomplete test. */ class PHPUnit_Framework_IncompleteTestError extends PHPUnit_Framework_AssertionFailedError implements PHPUnit_Framework_IncompleteTest { } PK!^C??o?osrc/Framework/TestSuite.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * A TestSuite is a composite of Tests. It runs a collection of test cases. */ class PHPUnit_Framework_TestSuite implements PHPUnit_Framework_Test, PHPUnit_Framework_SelfDescribing, IteratorAggregate { /** * Last count of tests in this suite. * * @var int|null */ private $cachedNumTests; /** * Enable or disable the backup and restoration of the $GLOBALS array. * * @var bool */ protected $backupGlobals = null; /** * Enable or disable the backup and restoration of static attributes. * * @var bool */ protected $backupStaticAttributes = null; /** * @var bool */ private $beStrictAboutChangesToGlobalState = null; /** * @var bool */ protected $runTestInSeparateProcess = false; /** * The name of the test suite. * * @var string */ protected $name = ''; /** * The test groups of the test suite. * * @var array */ protected $groups = []; /** * The tests in the test suite. * * @var array */ protected $tests = []; /** * The number of tests in the test suite. * * @var int */ protected $numTests = -1; /** * @var bool */ protected $testCase = false; /** * @var array */ protected $foundClasses = []; /** * @var PHPUnit_Runner_Filter_Factory */ private $iteratorFilter = null; /** * @var string[] */ private $declaredClasses; /** * Constructs a new TestSuite: * * - PHPUnit_Framework_TestSuite() constructs an empty TestSuite. * * - PHPUnit_Framework_TestSuite(ReflectionClass) constructs a * TestSuite from the given class. * * - PHPUnit_Framework_TestSuite(ReflectionClass, String) * constructs a TestSuite from the given class with the given * name. * * - PHPUnit_Framework_TestSuite(String) either constructs a * TestSuite from the given class (if the passed string is the * name of an existing class) or constructs an empty TestSuite * with the given name. * * @param mixed $theClass * @param string $name * * @throws PHPUnit_Framework_Exception */ public function __construct($theClass = '', $name = '') { $this->declaredClasses = get_declared_classes(); $argumentsValid = false; if (is_object($theClass) && $theClass instanceof ReflectionClass) { $argumentsValid = true; } elseif (is_string($theClass) && $theClass !== '' && class_exists($theClass, false)) { $argumentsValid = true; if ($name == '') { $name = $theClass; } $theClass = new ReflectionClass($theClass); } elseif (is_string($theClass)) { $this->setName($theClass); return; } if (!$argumentsValid) { throw new PHPUnit_Framework_Exception; } if (!$theClass->isSubclassOf('PHPUnit_Framework_TestCase')) { throw new PHPUnit_Framework_Exception( 'Class "' . $theClass->name . '" does not extend PHPUnit_Framework_TestCase.' ); } if ($name != '') { $this->setName($name); } else { $this->setName($theClass->getName()); } $constructor = $theClass->getConstructor(); if ($constructor !== null && !$constructor->isPublic()) { $this->addTest( self::warning( sprintf( 'Class "%s" has no public constructor.', $theClass->getName() ) ) ); return; } foreach ($theClass->getMethods() as $method) { $this->addTestMethod($theClass, $method); } if (empty($this->tests)) { $this->addTest( self::warning( sprintf( 'No tests found in class "%s".', $theClass->getName() ) ) ); } $this->testCase = true; } /** * Returns a string representation of the test suite. * * @return string */ public function toString() { return $this->getName(); } /** * Adds a test to the suite. * * @param PHPUnit_Framework_Test $test * @param array $groups */ public function addTest(PHPUnit_Framework_Test $test, $groups = []) { $class = new ReflectionClass($test); if (!$class->isAbstract()) { $this->tests[] = $test; $this->numTests = -1; if ($test instanceof self && empty($groups)) { $groups = $test->getGroups(); } if (empty($groups)) { $groups = ['default']; } foreach ($groups as $group) { if (!isset($this->groups[$group])) { $this->groups[$group] = [$test]; } else { $this->groups[$group][] = $test; } } if ($test instanceof PHPUnit_Framework_TestCase) { $test->setGroups($groups); } } } /** * Adds the tests from the given class to the suite. * * @param mixed $testClass * * @throws PHPUnit_Framework_Exception */ public function addTestSuite($testClass) { if (is_string($testClass) && class_exists($testClass)) { $testClass = new ReflectionClass($testClass); } if (!is_object($testClass)) { throw PHPUnit_Util_InvalidArgumentHelper::factory( 1, 'class name or object' ); } if ($testClass instanceof self) { $this->addTest($testClass); } elseif ($testClass instanceof ReflectionClass) { $suiteMethod = false; if (!$testClass->isAbstract()) { if ($testClass->hasMethod(PHPUnit_Runner_BaseTestRunner::SUITE_METHODNAME)) { $method = $testClass->getMethod( PHPUnit_Runner_BaseTestRunner::SUITE_METHODNAME ); if ($method->isStatic()) { $this->addTest( $method->invoke(null, $testClass->getName()) ); $suiteMethod = true; } } } if (!$suiteMethod && !$testClass->isAbstract() && $testClass->isSubclassOf(PHPUnit_Framework_TestCase::class)) { $this->addTest(new self($testClass)); } } else { throw new PHPUnit_Framework_Exception; } } /** * Wraps both addTest() and addTestSuite * as well as the separate import statements for the user's convenience. * * If the named file cannot be read or there are no new tests that can be * added, a PHPUnit_Framework_WarningTestCase will be created instead, * leaving the current test run untouched. * * @param string $filename * * @throws PHPUnit_Framework_Exception */ public function addTestFile($filename) { if (!is_string($filename)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); } if (file_exists($filename) && substr($filename, -5) == '.phpt') { $this->addTest( new PHPUnit_Extensions_PhptTestCase($filename) ); return; } // The given file may contain further stub classes in addition to the // test class itself. Figure out the actual test class. $filename = PHPUnit_Util_Fileloader::checkAndLoad($filename); $newClasses = array_diff(get_declared_classes(), $this->declaredClasses); // The diff is empty in case a parent class (with test methods) is added // AFTER a child class that inherited from it. To account for that case, // cumulate all discovered classes, so the parent class may be found in // a later invocation. if (!empty($newClasses)) { // On the assumption that test classes are defined first in files, // process discovered classes in approximate LIFO order, so as to // avoid unnecessary reflection. $this->foundClasses = array_merge($newClasses, $this->foundClasses); $this->declaredClasses = get_declared_classes(); } // The test class's name must match the filename, either in full, or as // a PEAR/PSR-0 prefixed shortname ('NameSpace_ShortName'), or as a // PSR-1 local shortname ('NameSpace\ShortName'). The comparison must be // anchored to prevent false-positive matches (e.g., 'OtherShortName'). $shortname = basename($filename, '.php'); $shortnameRegEx = '/(?:^|_|\\\\)' . preg_quote($shortname, '/') . '$/'; foreach ($this->foundClasses as $i => $className) { if (preg_match($shortnameRegEx, $className)) { $class = new ReflectionClass($className); if ($class->getFileName() == $filename) { $newClasses = [$className]; unset($this->foundClasses[$i]); break; } } } foreach ($newClasses as $className) { if (strpos($className, 'PHPUnit_Framework') === 0) { continue; } $class = new ReflectionClass($className); if (!$class->isAbstract()) { if ($class->hasMethod(PHPUnit_Runner_BaseTestRunner::SUITE_METHODNAME)) { $method = $class->getMethod( PHPUnit_Runner_BaseTestRunner::SUITE_METHODNAME ); if ($method->isStatic()) { $this->addTest($method->invoke(null, $className)); } } elseif ($class->implementsInterface('PHPUnit_Framework_Test')) { $this->addTestSuite($class); } } } $this->numTests = -1; } /** * Wrapper for addTestFile() that adds multiple test files. * * @param array|Iterator $filenames * * @throws PHPUnit_Framework_Exception */ public function addTestFiles($filenames) { if (!(is_array($filenames) || (is_object($filenames) && $filenames instanceof Iterator))) { throw PHPUnit_Util_InvalidArgumentHelper::factory( 1, 'array or iterator' ); } foreach ($filenames as $filename) { $this->addTestFile((string) $filename); } } /** * Counts the number of test cases that will be run by this test. * * @param bool $preferCache Indicates if cache is preferred. * * @return int */ public function count($preferCache = false) { if ($preferCache && $this->cachedNumTests !== null) { $numTests = $this->cachedNumTests; } else { $numTests = 0; foreach ($this as $test) { $numTests += count($test); } $this->cachedNumTests = $numTests; } return $numTests; } /** * @param ReflectionClass $theClass * @param string $name * * @return PHPUnit_Framework_Test * * @throws PHPUnit_Framework_Exception */ public static function createTest(ReflectionClass $theClass, $name) { $className = $theClass->getName(); if (!$theClass->isInstantiable()) { return self::warning( sprintf('Cannot instantiate class "%s".', $className) ); } $backupSettings = PHPUnit_Util_Test::getBackupSettings( $className, $name ); $preserveGlobalState = PHPUnit_Util_Test::getPreserveGlobalStateSettings( $className, $name ); $runTestInSeparateProcess = PHPUnit_Util_Test::getProcessIsolationSettings( $className, $name ); $constructor = $theClass->getConstructor(); if ($constructor !== null) { $parameters = $constructor->getParameters(); // TestCase() or TestCase($name) if (count($parameters) < 2) { $test = new $className; } // TestCase($name, $data) else { try { $data = PHPUnit_Util_Test::getProvidedData( $className, $name ); } catch (PHPUnit_Framework_IncompleteTestError $e) { $message = sprintf( 'Test for %s::%s marked incomplete by data provider', $className, $name ); $_message = $e->getMessage(); if (!empty($_message)) { $message .= "\n" . $_message; } $data = self::incompleteTest($className, $name, $message); } catch (PHPUnit_Framework_SkippedTestError $e) { $message = sprintf( 'Test for %s::%s skipped by data provider', $className, $name ); $_message = $e->getMessage(); if (!empty($_message)) { $message .= "\n" . $_message; } $data = self::skipTest($className, $name, $message); } catch (Throwable $_t) { $t = $_t; } catch (Exception $_t) { $t = $_t; } if (isset($t)) { $message = sprintf( 'The data provider specified for %s::%s is invalid.', $className, $name ); $_message = $t->getMessage(); if (!empty($_message)) { $message .= "\n" . $_message; } $data = self::warning($message); } // Test method with @dataProvider. if (isset($data)) { $test = new PHPUnit_Framework_TestSuite_DataProvider( $className . '::' . $name ); if (empty($data)) { $data = self::warning( sprintf( 'No tests found in suite "%s".', $test->getName() ) ); } $groups = PHPUnit_Util_Test::getGroups($className, $name); if ($data instanceof PHPUnit_Framework_WarningTestCase || $data instanceof PHPUnit_Framework_SkippedTestCase || $data instanceof PHPUnit_Framework_IncompleteTestCase) { $test->addTest($data, $groups); } else { foreach ($data as $_dataName => $_data) { $_test = new $className($name, $_data, $_dataName); if ($runTestInSeparateProcess) { $_test->setRunTestInSeparateProcess(true); if ($preserveGlobalState !== null) { $_test->setPreserveGlobalState($preserveGlobalState); } } if ($backupSettings['backupGlobals'] !== null) { $_test->setBackupGlobals( $backupSettings['backupGlobals'] ); } if ($backupSettings['backupStaticAttributes'] !== null) { $_test->setBackupStaticAttributes( $backupSettings['backupStaticAttributes'] ); } $test->addTest($_test, $groups); } } } else { $test = new $className; } } } if (!isset($test)) { throw new PHPUnit_Framework_Exception('No valid test provided.'); } if ($test instanceof PHPUnit_Framework_TestCase) { $test->setName($name); if ($runTestInSeparateProcess) { $test->setRunTestInSeparateProcess(true); if ($preserveGlobalState !== null) { $test->setPreserveGlobalState($preserveGlobalState); } } if ($backupSettings['backupGlobals'] !== null) { $test->setBackupGlobals($backupSettings['backupGlobals']); } if ($backupSettings['backupStaticAttributes'] !== null) { $test->setBackupStaticAttributes( $backupSettings['backupStaticAttributes'] ); } } return $test; } /** * Creates a default TestResult object. * * @return PHPUnit_Framework_TestResult */ protected function createResult() { return new PHPUnit_Framework_TestResult; } /** * Returns the name of the suite. * * @return string */ public function getName() { return $this->name; } /** * Returns the test groups of the suite. * * @return array */ public function getGroups() { return array_keys($this->groups); } public function getGroupDetails() { return $this->groups; } /** * Set tests groups of the test case * * @param array $groups */ public function setGroupDetails(array $groups) { $this->groups = $groups; } /** * Runs the tests and collects their result in a TestResult. * * @param PHPUnit_Framework_TestResult $result * * @return PHPUnit_Framework_TestResult */ public function run(PHPUnit_Framework_TestResult $result = null) { if ($result === null) { $result = $this->createResult(); } if (count($this) == 0) { return $result; } $hookMethods = PHPUnit_Util_Test::getHookMethods($this->name); $result->startTestSuite($this); try { $this->setUp(); foreach ($hookMethods['beforeClass'] as $beforeClassMethod) { if ($this->testCase === true && class_exists($this->name, false) && method_exists($this->name, $beforeClassMethod)) { if ($missingRequirements = PHPUnit_Util_Test::getMissingRequirements($this->name, $beforeClassMethod)) { $this->markTestSuiteSkipped(implode(PHP_EOL, $missingRequirements)); } call_user_func([$this->name, $beforeClassMethod]); } } } catch (PHPUnit_Framework_SkippedTestSuiteError $e) { $numTests = count($this); for ($i = 0; $i < $numTests; $i++) { $result->startTest($this); $result->addFailure($this, $e, 0); $result->endTest($this, 0); } $this->tearDown(); $result->endTestSuite($this); return $result; } catch (Throwable $_t) { $t = $_t; } catch (Exception $_t) { $t = $_t; } if (isset($t)) { $numTests = count($this); for ($i = 0; $i < $numTests; $i++) { if ($result->shouldStop()) { break; } $result->startTest($this); $result->addError($this, $t, 0); $result->endTest($this, 0); } $this->tearDown(); $result->endTestSuite($this); return $result; } foreach ($this as $test) { if ($result->shouldStop()) { break; } if ($test instanceof PHPUnit_Framework_TestCase || $test instanceof self) { $test->setBeStrictAboutChangesToGlobalState($this->beStrictAboutChangesToGlobalState); $test->setBackupGlobals($this->backupGlobals); $test->setBackupStaticAttributes($this->backupStaticAttributes); $test->setRunTestInSeparateProcess($this->runTestInSeparateProcess); } $test->run($result); } foreach ($hookMethods['afterClass'] as $afterClassMethod) { if ($this->testCase === true && class_exists($this->name, false) && method_exists($this->name, $afterClassMethod)) { call_user_func([$this->name, $afterClassMethod]); } } $this->tearDown(); $result->endTestSuite($this); return $result; } /** * @param bool $runTestInSeparateProcess * * @throws PHPUnit_Framework_Exception */ public function setRunTestInSeparateProcess($runTestInSeparateProcess) { if (is_bool($runTestInSeparateProcess)) { $this->runTestInSeparateProcess = $runTestInSeparateProcess; } else { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean'); } } /** * Runs a test. * * @deprecated * * @param PHPUnit_Framework_Test $test * @param PHPUnit_Framework_TestResult $result */ public function runTest(PHPUnit_Framework_Test $test, PHPUnit_Framework_TestResult $result) { $test->run($result); } /** * Sets the name of the suite. * * @param string */ public function setName($name) { $this->name = $name; } /** * Returns the test at the given index. * * @param int|false * * @return PHPUnit_Framework_Test */ public function testAt($index) { if (isset($this->tests[$index])) { return $this->tests[$index]; } else { return false; } } /** * Returns the tests as an enumeration. * * @return array */ public function tests() { return $this->tests; } /** * Set tests of the test suite * * @param array $tests */ public function setTests(array $tests) { $this->tests = $tests; } /** * Mark the test suite as skipped. * * @param string $message * * @throws PHPUnit_Framework_SkippedTestSuiteError */ public function markTestSuiteSkipped($message = '') { throw new PHPUnit_Framework_SkippedTestSuiteError($message); } /** * @param ReflectionClass $class * @param ReflectionMethod $method */ protected function addTestMethod(ReflectionClass $class, ReflectionMethod $method) { if (!$this->isTestMethod($method)) { return; } $name = $method->getName(); if (!$method->isPublic()) { $this->addTest( self::warning( sprintf( 'Test method "%s" in test class "%s" is not public.', $name, $class->getName() ) ) ); return; } $test = self::createTest($class, $name); if ($test instanceof PHPUnit_Framework_TestCase || $test instanceof PHPUnit_Framework_TestSuite_DataProvider) { $test->setDependencies( PHPUnit_Util_Test::getDependencies($class->getName(), $name) ); } $this->addTest( $test, PHPUnit_Util_Test::getGroups($class->getName(), $name) ); } /** * @param ReflectionMethod $method * * @return bool */ public static function isTestMethod(ReflectionMethod $method) { if (strpos($method->name, 'test') === 0) { return true; } // @scenario on TestCase::testMethod() // @test on TestCase::testMethod() $docComment = $method->getDocComment(); return strpos($docComment, '@test') !== false || strpos($docComment, '@scenario') !== false; } /** * @param string $message * * @return PHPUnit_Framework_WarningTestCase */ protected static function warning($message) { return new PHPUnit_Framework_WarningTestCase($message); } /** * @param string $class * @param string $methodName * @param string $message * * @return PHPUnit_Framework_SkippedTestCase */ protected static function skipTest($class, $methodName, $message) { return new PHPUnit_Framework_SkippedTestCase($class, $methodName, $message); } /** * @param string $class * @param string $methodName * @param string $message * * @return PHPUnit_Framework_IncompleteTestCase */ protected static function incompleteTest($class, $methodName, $message) { return new PHPUnit_Framework_IncompleteTestCase($class, $methodName, $message); } /** * @param bool $beStrictAboutChangesToGlobalState */ public function setBeStrictAboutChangesToGlobalState($beStrictAboutChangesToGlobalState) { if (is_null($this->beStrictAboutChangesToGlobalState) && is_bool($beStrictAboutChangesToGlobalState)) { $this->beStrictAboutChangesToGlobalState = $beStrictAboutChangesToGlobalState; } } /** * @param bool $backupGlobals */ public function setBackupGlobals($backupGlobals) { if (is_null($this->backupGlobals) && is_bool($backupGlobals)) { $this->backupGlobals = $backupGlobals; } } /** * @param bool $backupStaticAttributes */ public function setBackupStaticAttributes($backupStaticAttributes) { if (is_null($this->backupStaticAttributes) && is_bool($backupStaticAttributes)) { $this->backupStaticAttributes = $backupStaticAttributes; } } /** * Returns an iterator for this test suite. * * @return RecursiveIteratorIterator */ public function getIterator() { $iterator = new PHPUnit_Util_TestSuiteIterator($this); if ($this->iteratorFilter !== null) { $iterator = $this->iteratorFilter->factory($iterator, $this); } return $iterator; } public function injectFilter(PHPUnit_Runner_Filter_Factory $filter) { $this->iteratorFilter = $filter; foreach ($this as $test) { if ($test instanceof self) { $test->injectFilter($filter); } } } /** * Template Method that is called before the tests * of this test suite are run. */ protected function setUp() { } /** * Template Method that is called after the tests * of this test suite have finished running. */ protected function tearDown() { } } PK!Fuw1src/Framework/CoveredCodeNotExecutedException.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Extension to PHPUnit_Framework_AssertionFailedError to mark the special * case of a test that does not execute the code it wants to cover. */ class PHPUnit_Framework_CoveredCodeNotExecutedException extends PHPUnit_Framework_RiskyTestError { } PK! Fչ!src/Framework/SkippedTestCase.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * A skipped test case */ class PHPUnit_Framework_SkippedTestCase extends PHPUnit_Framework_TestCase { /** * @var string */ protected $message = ''; /** * @var bool */ protected $backupGlobals = false; /** * @var bool */ protected $backupStaticAttributes = false; /** * @var bool */ protected $runTestInSeparateProcess = false; /** * @var bool */ protected $useErrorHandler = false; /** * @var bool */ protected $useOutputBuffering = false; /** * @param string $message */ public function __construct($className, $methodName, $message = '') { $this->message = $message; parent::__construct($className . '::' . $methodName); } /** * @throws PHPUnit_Framework_Exception */ protected function runTest() { $this->markTestSkipped($this->message); } /** * @return string */ public function getMessage() { return $this->message; } /** * Returns a string representation of the test case. * * @return string */ public function toString() { return $this->getName(); } } PK!ω<<src/Framework/Warning.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Thrown when there is a warning. */ class PHPUnit_Framework_Warning extends PHPUnit_Framework_Exception implements PHPUnit_Framework_SelfDescribing { /** * Wrapper for getMessage() which is declared as final. * * @return string */ public function toString() { return $this->getMessage(); } } PK!\src/Framework/TestResult.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ use SebastianBergmann\CodeCoverage\CodeCoverage; use SebastianBergmann\CodeCoverage\Exception as CodeCoverageException; use SebastianBergmann\CodeCoverage\CoveredCodeNotExecutedException; use SebastianBergmann\CodeCoverage\MissingCoversAnnotationException; use SebastianBergmann\CodeCoverage\UnintentionallyCoveredCodeException; use SebastianBergmann\ResourceOperations\ResourceOperations; /** * A TestResult collects the results of executing a test case. */ class PHPUnit_Framework_TestResult implements Countable { /** * @var array */ protected $passed = []; /** * @var array */ protected $errors = []; /** * @var array */ protected $failures = []; /** * @var array */ protected $warnings = []; /** * @var array */ protected $notImplemented = []; /** * @var array */ protected $risky = []; /** * @var array */ protected $skipped = []; /** * @var array */ protected $listeners = []; /** * @var int */ protected $runTests = 0; /** * @var float */ protected $time = 0; /** * @var PHPUnit_Framework_TestSuite */ protected $topTestSuite = null; /** * Code Coverage information. * * @var CodeCoverage */ protected $codeCoverage; /** * @var bool */ protected $convertErrorsToExceptions = true; /** * @var bool */ protected $stop = false; /** * @var bool */ protected $stopOnError = false; /** * @var bool */ protected $stopOnFailure = false; /** * @var bool */ protected $stopOnWarning = false; /** * @var bool */ protected $beStrictAboutTestsThatDoNotTestAnything = false; /** * @var bool */ protected $beStrictAboutOutputDuringTests = false; /** * @var bool */ protected $beStrictAboutTodoAnnotatedTests = false; /** * @var bool */ protected $beStrictAboutResourceUsageDuringSmallTests = false; /** * @var bool */ protected $enforceTimeLimit = false; /** * @var int */ protected $timeoutForSmallTests = 1; /** * @var int */ protected $timeoutForMediumTests = 10; /** * @var int */ protected $timeoutForLargeTests = 60; /** * @var bool */ protected $stopOnRisky = false; /** * @var bool */ protected $stopOnIncomplete = false; /** * @var bool */ protected $stopOnSkipped = false; /** * @var bool */ protected $lastTestFailed = false; /** * @var bool */ private $registerMockObjectsFromTestArgumentsRecursively = false; /** * Registers a TestListener. * * @param PHPUnit_Framework_TestListener */ public function addListener(PHPUnit_Framework_TestListener $listener) { $this->listeners[] = $listener; } /** * Unregisters a TestListener. * * @param PHPUnit_Framework_TestListener $listener */ public function removeListener(PHPUnit_Framework_TestListener $listener) { foreach ($this->listeners as $key => $_listener) { if ($listener === $_listener) { unset($this->listeners[$key]); } } } /** * Flushes all flushable TestListeners. */ public function flushListeners() { foreach ($this->listeners as $listener) { if ($listener instanceof PHPUnit_Util_Printer) { $listener->flush(); } } } /** * Adds an error to the list of errors. * * @param PHPUnit_Framework_Test $test * @param Throwable $t * @param float $time */ public function addError(PHPUnit_Framework_Test $test, $t, $time) { if ($t instanceof PHPUnit_Framework_RiskyTest) { $this->risky[] = new PHPUnit_Framework_TestFailure($test, $t); $notifyMethod = 'addRiskyTest'; if ($test instanceof PHPUnit_Framework_TestCase) { $test->markAsRisky(); } if ($this->stopOnRisky) { $this->stop(); } } elseif ($t instanceof PHPUnit_Framework_IncompleteTest) { $this->notImplemented[] = new PHPUnit_Framework_TestFailure($test, $t); $notifyMethod = 'addIncompleteTest'; if ($this->stopOnIncomplete) { $this->stop(); } } elseif ($t instanceof PHPUnit_Framework_SkippedTest) { $this->skipped[] = new PHPUnit_Framework_TestFailure($test, $t); $notifyMethod = 'addSkippedTest'; if ($this->stopOnSkipped) { $this->stop(); } } else { $this->errors[] = new PHPUnit_Framework_TestFailure($test, $t); $notifyMethod = 'addError'; if ($this->stopOnError || $this->stopOnFailure) { $this->stop(); } } // @see https://github.com/sebastianbergmann/phpunit/issues/1953 if ($t instanceof Error) { $t = new PHPUnit_Framework_ExceptionWrapper($t); } foreach ($this->listeners as $listener) { $listener->$notifyMethod($test, $t, $time); } $this->lastTestFailed = true; $this->time += $time; } /** * Adds a warning to the list of warnings. * The passed in exception caused the warning. * * @param PHPUnit_Framework_Test $test * @param PHPUnit_Framework_Warning $e * @param float $time */ public function addWarning(PHPUnit_Framework_Test $test, PHPUnit_Framework_Warning $e, $time) { if ($this->stopOnWarning) { $this->stop(); } $this->warnings[] = new PHPUnit_Framework_TestFailure($test, $e); foreach ($this->listeners as $listener) { // @todo Remove check for PHPUnit 6.0.0 // @see https://github.com/sebastianbergmann/phpunit/pull/1840#issuecomment-162535997 if (method_exists($listener, 'addWarning')) { $listener->addWarning($test, $e, $time); } } $this->time += $time; } /** * Adds a failure to the list of failures. * The passed in exception caused the failure. * * @param PHPUnit_Framework_Test $test * @param PHPUnit_Framework_AssertionFailedError $e * @param float $time */ public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time) { if ($e instanceof PHPUnit_Framework_RiskyTest || $e instanceof PHPUnit_Framework_OutputError) { $this->risky[] = new PHPUnit_Framework_TestFailure($test, $e); $notifyMethod = 'addRiskyTest'; if ($test instanceof PHPUnit_Framework_TestCase) { $test->markAsRisky(); } if ($this->stopOnRisky) { $this->stop(); } } elseif ($e instanceof PHPUnit_Framework_IncompleteTest) { $this->notImplemented[] = new PHPUnit_Framework_TestFailure($test, $e); $notifyMethod = 'addIncompleteTest'; if ($this->stopOnIncomplete) { $this->stop(); } } elseif ($e instanceof PHPUnit_Framework_SkippedTest) { $this->skipped[] = new PHPUnit_Framework_TestFailure($test, $e); $notifyMethod = 'addSkippedTest'; if ($this->stopOnSkipped) { $this->stop(); } } else { $this->failures[] = new PHPUnit_Framework_TestFailure($test, $e); $notifyMethod = 'addFailure'; if ($this->stopOnFailure) { $this->stop(); } } foreach ($this->listeners as $listener) { $listener->$notifyMethod($test, $e, $time); } $this->lastTestFailed = true; $this->time += $time; } /** * Informs the result that a testsuite will be started. * * @param PHPUnit_Framework_TestSuite $suite */ public function startTestSuite(PHPUnit_Framework_TestSuite $suite) { if ($this->topTestSuite === null) { $this->topTestSuite = $suite; } foreach ($this->listeners as $listener) { $listener->startTestSuite($suite); } } /** * Informs the result that a testsuite was completed. * * @param PHPUnit_Framework_TestSuite $suite */ public function endTestSuite(PHPUnit_Framework_TestSuite $suite) { foreach ($this->listeners as $listener) { $listener->endTestSuite($suite); } } /** * Informs the result that a test will be started. * * @param PHPUnit_Framework_Test $test */ public function startTest(PHPUnit_Framework_Test $test) { $this->lastTestFailed = false; $this->runTests += count($test); foreach ($this->listeners as $listener) { $listener->startTest($test); } } /** * Informs the result that a test was completed. * * @param PHPUnit_Framework_Test $test * @param float $time */ public function endTest(PHPUnit_Framework_Test $test, $time) { foreach ($this->listeners as $listener) { $listener->endTest($test, $time); } if (!$this->lastTestFailed && $test instanceof PHPUnit_Framework_TestCase) { $class = get_class($test); $key = $class . '::' . $test->getName(); $this->passed[$key] = [ 'result' => $test->getResult(), 'size' => PHPUnit_Util_Test::getSize( $class, $test->getName(false) ) ]; $this->time += $time; } } /** * Returns true if no risky test occurred. * * @return bool */ public function allHarmless() { return $this->riskyCount() == 0; } /** * Gets the number of risky tests. * * @return int */ public function riskyCount() { return count($this->risky); } /** * Returns true if no incomplete test occurred. * * @return bool */ public function allCompletelyImplemented() { return $this->notImplementedCount() == 0; } /** * Gets the number of incomplete tests. * * @return int */ public function notImplementedCount() { return count($this->notImplemented); } /** * Returns an Enumeration for the risky tests. * * @return array */ public function risky() { return $this->risky; } /** * Returns an Enumeration for the incomplete tests. * * @return array */ public function notImplemented() { return $this->notImplemented; } /** * Returns true if no test has been skipped. * * @return bool */ public function noneSkipped() { return $this->skippedCount() == 0; } /** * Gets the number of skipped tests. * * @return int */ public function skippedCount() { return count($this->skipped); } /** * Returns an Enumeration for the skipped tests. * * @return array */ public function skipped() { return $this->skipped; } /** * Gets the number of detected errors. * * @return int */ public function errorCount() { return count($this->errors); } /** * Returns an Enumeration for the errors. * * @return array */ public function errors() { return $this->errors; } /** * Gets the number of detected failures. * * @return int */ public function failureCount() { return count($this->failures); } /** * Returns an Enumeration for the failures. * * @return array */ public function failures() { return $this->failures; } /** * Gets the number of detected warnings. * * @return int */ public function warningCount() { return count($this->warnings); } /** * Returns an Enumeration for the warnings. * * @return array */ public function warnings() { return $this->warnings; } /** * Returns the names of the tests that have passed. * * @return array */ public function passed() { return $this->passed; } /** * Returns the (top) test suite. * * @return PHPUnit_Framework_TestSuite */ public function topTestSuite() { return $this->topTestSuite; } /** * Returns whether code coverage information should be collected. * * @return bool If code coverage should be collected */ public function getCollectCodeCoverageInformation() { return $this->codeCoverage !== null; } /** * Runs a TestCase. * * @param PHPUnit_Framework_Test $test */ public function run(PHPUnit_Framework_Test $test) { PHPUnit_Framework_Assert::resetCount(); $coversNothing = false; if ($test instanceof PHPUnit_Framework_TestCase) { $test->setRegisterMockObjectsFromTestArgumentsRecursively( $this->registerMockObjectsFromTestArgumentsRecursively ); $annotations = $test->getAnnotations(); if (isset($annotations['class']['coversNothing']) || isset($annotations['method']['coversNothing'])) { $coversNothing = true; } } $error = false; $failure = false; $warning = false; $incomplete = false; $risky = false; $skipped = false; $this->startTest($test); $errorHandlerSet = false; if ($this->convertErrorsToExceptions) { $oldErrorHandler = set_error_handler( ['PHPUnit_Util_ErrorHandler', 'handleError'], E_ALL | E_STRICT ); if ($oldErrorHandler === null) { $errorHandlerSet = true; } else { restore_error_handler(); } } $collectCodeCoverage = $this->codeCoverage !== null && !$test instanceof PHPUnit_Framework_WarningTestCase && !$coversNothing; if ($collectCodeCoverage) { $this->codeCoverage->start($test); } $monitorFunctions = $this->beStrictAboutResourceUsageDuringSmallTests && !$test instanceof PHPUnit_Framework_WarningTestCase && $test->getSize() == PHPUnit_Util_Test::SMALL && function_exists('xdebug_start_function_monitor'); if ($monitorFunctions) { xdebug_start_function_monitor(ResourceOperations::getFunctions()); } PHP_Timer::start(); try { if (!$test instanceof PHPUnit_Framework_WarningTestCase && $test->getSize() != PHPUnit_Util_Test::UNKNOWN && $this->enforceTimeLimit && extension_loaded('pcntl') && class_exists('PHP_Invoker')) { switch ($test->getSize()) { case PHPUnit_Util_Test::SMALL: $_timeout = $this->timeoutForSmallTests; break; case PHPUnit_Util_Test::MEDIUM: $_timeout = $this->timeoutForMediumTests; break; case PHPUnit_Util_Test::LARGE: $_timeout = $this->timeoutForLargeTests; break; } $invoker = new PHP_Invoker; $invoker->invoke([$test, 'runBare'], [], $_timeout); } else { $test->runBare(); } } catch (PHP_Invoker_TimeoutException $e) { $this->addFailure( $test, new PHPUnit_Framework_RiskyTestError( $e->getMessage() ), $_timeout ); $risky = true; } catch (PHPUnit_Framework_MockObject_Exception $e) { $e = new PHPUnit_Framework_Warning( $e->getMessage() ); $warning = true; } catch (PHPUnit_Framework_AssertionFailedError $e) { $failure = true; if ($e instanceof PHPUnit_Framework_RiskyTestError) { $risky = true; } elseif ($e instanceof PHPUnit_Framework_IncompleteTestError) { $incomplete = true; } elseif ($e instanceof PHPUnit_Framework_SkippedTestError) { $skipped = true; } } catch (PHPUnit_Framework_Warning $e) { $warning = true; } catch (PHPUnit_Framework_Exception $e) { $error = true; } catch (Throwable $e) { // @see https://github.com/sebastianbergmann/phpunit/issues/2394 if (PHP_MAJOR_VERSION === 7 && $e instanceof \AssertionError) { $test->addToAssertionCount(1); $failure = true; $frame = $e->getTrace()[0]; $e = new PHPUnit_Framework_AssertionFailedError( sprintf( '%s in %s:%s', $e->getMessage(), $frame['file'], $frame['line'] ) ); } else { $e = new PHPUnit_Framework_ExceptionWrapper($e); $error = true; } } catch (Exception $e) { $e = new PHPUnit_Framework_ExceptionWrapper($e); $error = true; } $time = PHP_Timer::stop(); $test->addToAssertionCount(PHPUnit_Framework_Assert::getCount()); if ($monitorFunctions) { $blacklist = new PHPUnit_Util_Blacklist; $functions = xdebug_get_monitored_functions(); xdebug_stop_function_monitor(); foreach ($functions as $function) { if (!$blacklist->isBlacklisted($function['filename'])) { $this->addFailure( $test, new PHPUnit_Framework_RiskyTestError( sprintf( '%s() used in %s:%s', $function['function'], $function['filename'], $function['lineno'] ) ), $time ); } } } if ($this->beStrictAboutTestsThatDoNotTestAnything && $test->getNumAssertions() == 0) { $risky = true; } if ($collectCodeCoverage) { $append = !$risky && !$incomplete && !$skipped; $linesToBeCovered = []; $linesToBeUsed = []; if ($append && $test instanceof PHPUnit_Framework_TestCase) { try { $linesToBeCovered = PHPUnit_Util_Test::getLinesToBeCovered( get_class($test), $test->getName(false) ); $linesToBeUsed = PHPUnit_Util_Test::getLinesToBeUsed( get_class($test), $test->getName(false) ); } catch (PHPUnit_Framework_InvalidCoversTargetException $cce) { $this->addWarning( $test, new PHPUnit_Framework_Warning( $cce->getMessage() ), $time ); } } try { $this->codeCoverage->stop( $append, $linesToBeCovered, $linesToBeUsed ); } catch (UnintentionallyCoveredCodeException $cce) { $this->addFailure( $test, new PHPUnit_Framework_UnintentionallyCoveredCodeError( 'This test executed code that is not listed as code to be covered or used:' . PHP_EOL . $cce->getMessage() ), $time ); } catch (CoveredCodeNotExecutedException $cce) { $this->addFailure( $test, new PHPUnit_Framework_CoveredCodeNotExecutedException( 'This test did not execute all the code that is listed as code to be covered:' . PHP_EOL . $cce->getMessage() ), $time ); } catch (MissingCoversAnnotationException $cce) { if ($linesToBeCovered !== false) { $this->addFailure( $test, new PHPUnit_Framework_MissingCoversAnnotationException( 'This test does not have a @covers annotation but is expected to have one' ), $time ); } } catch (CodeCoverageException $cce) { $error = true; if (!isset($e)) { $e = $cce; } } } if ($errorHandlerSet === true) { restore_error_handler(); } if ($error === true) { $this->addError($test, $e, $time); } elseif ($failure === true) { $this->addFailure($test, $e, $time); } elseif ($warning === true) { $this->addWarning($test, $e, $time); } elseif ($this->beStrictAboutTestsThatDoNotTestAnything && !$test->doesNotPerformAssertions() && $test->getNumAssertions() == 0) { $this->addFailure( $test, new PHPUnit_Framework_RiskyTestError( 'This test did not perform any assertions' ), $time ); } elseif ($this->beStrictAboutOutputDuringTests && $test->hasOutput()) { $this->addFailure( $test, new PHPUnit_Framework_OutputError( sprintf( 'This test printed output: %s', $test->getActualOutput() ) ), $time ); } elseif ($this->beStrictAboutTodoAnnotatedTests && $test instanceof PHPUnit_Framework_TestCase) { $annotations = $test->getAnnotations(); if (isset($annotations['method']['todo'])) { $this->addFailure( $test, new PHPUnit_Framework_RiskyTestError( 'Test method is annotated with @todo' ), $time ); } } $this->endTest($test, $time); } /** * Gets the number of run tests. * * @return int */ public function count() { return $this->runTests; } /** * Checks whether the test run should stop. * * @return bool */ public function shouldStop() { return $this->stop; } /** * Marks that the test run should stop. */ public function stop() { $this->stop = true; } /** * Returns the code coverage object. * * @return CodeCoverage */ public function getCodeCoverage() { return $this->codeCoverage; } /** * Sets the code coverage object. * * @param CodeCoverage $codeCoverage */ public function setCodeCoverage(CodeCoverage $codeCoverage) { $this->codeCoverage = $codeCoverage; } /** * Enables or disables the error-to-exception conversion. * * @param bool $flag * * @throws PHPUnit_Framework_Exception */ public function convertErrorsToExceptions($flag) { if (!is_bool($flag)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean'); } $this->convertErrorsToExceptions = $flag; } /** * Returns the error-to-exception conversion setting. * * @return bool */ public function getConvertErrorsToExceptions() { return $this->convertErrorsToExceptions; } /** * Enables or disables the stopping when an error occurs. * * @param bool $flag * * @throws PHPUnit_Framework_Exception */ public function stopOnError($flag) { if (!is_bool($flag)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean'); } $this->stopOnError = $flag; } /** * Enables or disables the stopping when a failure occurs. * * @param bool $flag * * @throws PHPUnit_Framework_Exception */ public function stopOnFailure($flag) { if (!is_bool($flag)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean'); } $this->stopOnFailure = $flag; } /** * Enables or disables the stopping when a warning occurs. * * @param bool $flag * * @throws PHPUnit_Framework_Exception */ public function stopOnWarning($flag) { if (!is_bool($flag)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean'); } $this->stopOnWarning = $flag; } /** * @param bool $flag * * @throws PHPUnit_Framework_Exception */ public function beStrictAboutTestsThatDoNotTestAnything($flag) { if (!is_bool($flag)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean'); } $this->beStrictAboutTestsThatDoNotTestAnything = $flag; } /** * @return bool */ public function isStrictAboutTestsThatDoNotTestAnything() { return $this->beStrictAboutTestsThatDoNotTestAnything; } /** * @param bool $flag * * @throws PHPUnit_Framework_Exception */ public function beStrictAboutOutputDuringTests($flag) { if (!is_bool($flag)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean'); } $this->beStrictAboutOutputDuringTests = $flag; } /** * @return bool */ public function isStrictAboutOutputDuringTests() { return $this->beStrictAboutOutputDuringTests; } /** * @param bool $flag * * @throws PHPUnit_Framework_Exception */ public function beStrictAboutResourceUsageDuringSmallTests($flag) { if (!is_bool($flag)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean'); } $this->beStrictAboutResourceUsageDuringSmallTests = $flag; } /** * @return bool */ public function isStrictAboutResourceUsageDuringSmallTests() { return $this->beStrictAboutResourceUsageDuringSmallTests; } /** * @param bool $flag * * @throws PHPUnit_Framework_Exception */ public function enforceTimeLimit($flag) { if (!is_bool($flag)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean'); } $this->enforceTimeLimit = $flag; } /** * @return bool */ public function enforcesTimeLimit() { return $this->enforceTimeLimit; } /** * @param bool $flag * * @throws PHPUnit_Framework_Exception */ public function beStrictAboutTodoAnnotatedTests($flag) { if (!is_bool($flag)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean'); } $this->beStrictAboutTodoAnnotatedTests = $flag; } /** * @return bool */ public function isStrictAboutTodoAnnotatedTests() { return $this->beStrictAboutTodoAnnotatedTests; } /** * Enables or disables the stopping for risky tests. * * @param bool $flag * * @throws PHPUnit_Framework_Exception */ public function stopOnRisky($flag) { if (!is_bool($flag)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean'); } $this->stopOnRisky = $flag; } /** * Enables or disables the stopping for incomplete tests. * * @param bool $flag * * @throws PHPUnit_Framework_Exception */ public function stopOnIncomplete($flag) { if (!is_bool($flag)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean'); } $this->stopOnIncomplete = $flag; } /** * Enables or disables the stopping for skipped tests. * * @param bool $flag * * @throws PHPUnit_Framework_Exception */ public function stopOnSkipped($flag) { if (!is_bool($flag)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean'); } $this->stopOnSkipped = $flag; } /** * Returns the time spent running the tests. * * @return float */ public function time() { return $this->time; } /** * Returns whether the entire test was successful or not. * * @param bool $includeWarnings * * @return bool */ public function wasSuccessful($includeWarnings = true) { if ($includeWarnings) { return empty($this->errors) && empty($this->failures) && empty($this->warnings); } else { return empty($this->errors) && empty($this->failures); } } /** * Sets the timeout for small tests. * * @param int $timeout * * @throws PHPUnit_Framework_Exception */ public function setTimeoutForSmallTests($timeout) { if (!is_int($timeout)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'integer'); } $this->timeoutForSmallTests = $timeout; } /** * Sets the timeout for medium tests. * * @param int $timeout * * @throws PHPUnit_Framework_Exception */ public function setTimeoutForMediumTests($timeout) { if (!is_int($timeout)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'integer'); } $this->timeoutForMediumTests = $timeout; } /** * Sets the timeout for large tests. * * @param int $timeout * * @throws PHPUnit_Framework_Exception */ public function setTimeoutForLargeTests($timeout) { if (!is_int($timeout)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'integer'); } $this->timeoutForLargeTests = $timeout; } /** * Returns the set timeout for large tests. * * @return int */ public function getTimeoutForLargeTests() { return $this->timeoutForLargeTests; } /** * @param bool $flag */ public function setRegisterMockObjectsFromTestArgumentsRecursively($flag) { if (!is_bool($flag)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean'); } $this->registerMockObjectsFromTestArgumentsRecursively = $flag; } /** * Returns the class hierarchy for a given class. * * @param string $className * @param bool $asReflectionObjects * * @return array */ protected function getHierarchy($className, $asReflectionObjects = false) { if ($asReflectionObjects) { $classes = [new ReflectionClass($className)]; } else { $classes = [$className]; } $done = false; while (!$done) { if ($asReflectionObjects) { $class = new ReflectionClass( $classes[count($classes) - 1]->getName() ); } else { $class = new ReflectionClass($classes[count($classes) - 1]); } $parent = $class->getParentClass(); if ($parent !== false) { if ($asReflectionObjects) { $classes[] = $parent; } else { $classes[] = $parent->getName(); } } else { $done = true; } } return $classes; } } PK!ʋtGJJ&src/Framework/AssertionFailedError.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Thrown when an assertion failed. */ class PHPUnit_Framework_AssertionFailedError extends PHPUnit_Framework_Exception implements PHPUnit_Framework_SelfDescribing { /** * Wrapper for getMessage() which is declared as final. * * @return string */ public function toString() { return $this->getMessage(); } } PK!"src/Framework/Assert/Functions.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Returns a matcher that matches when the method is executed * zero or more times. * * @return PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount */ function any() { return call_user_func_array( 'PHPUnit_Framework_TestCase::any', func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_IsAnything matcher object. * * @return PHPUnit_Framework_Constraint_IsAnything */ function anything() { return call_user_func_array( 'PHPUnit_Framework_Assert::anything', func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_ArrayHasKey matcher object. * * @param mixed $key * * @return PHPUnit_Framework_Constraint_ArrayHasKey */ function arrayHasKey($key) { return call_user_func_array( 'PHPUnit_Framework_Assert::arrayHasKey', func_get_args() ); } /** * Asserts that an array has a specified key. * * @param mixed $key * @param array|ArrayAccess $array * @param string $message */ function assertArrayHasKey($key, $array, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertArrayHasKey', func_get_args() ); } /** * Asserts that an array has a specified subset. * * @param array|ArrayAccess $subset * @param array|ArrayAccess $array * @param bool $strict Check for object identity * @param string $message */ function assertArraySubset($subset, $array, $strict = false, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertArraySubset', func_get_args() ); } /** * Asserts that an array does not have a specified key. * * @param mixed $key * @param array|ArrayAccess $array * @param string $message */ function assertArrayNotHasKey($key, $array, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertArrayNotHasKey', func_get_args() ); } /** * Asserts that a haystack that is stored in a static attribute of a class * or an attribute of an object contains a needle. * * @param mixed $needle * @param string $haystackAttributeName * @param mixed $haystackClassOrObject * @param string $message * @param bool $ignoreCase * @param bool $checkForObjectIdentity * @param bool $checkForNonObjectIdentity */ function assertAttributeContains($needle, $haystackAttributeName, $haystackClassOrObject, $message = '', $ignoreCase = false, $checkForObjectIdentity = true, $checkForNonObjectIdentity = false) { return call_user_func_array( 'PHPUnit_Framework_Assert::assertAttributeContains', func_get_args() ); } /** * Asserts that a haystack that is stored in a static attribute of a class * or an attribute of an object contains only values of a given type. * * @param string $type * @param string $haystackAttributeName * @param mixed $haystackClassOrObject * @param bool $isNativeType * @param string $message */ function assertAttributeContainsOnly($type, $haystackAttributeName, $haystackClassOrObject, $isNativeType = null, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertAttributeContainsOnly', func_get_args() ); } /** * Asserts the number of elements of an array, Countable or Traversable * that is stored in an attribute. * * @param int $expectedCount * @param string $haystackAttributeName * @param mixed $haystackClassOrObject * @param string $message */ function assertAttributeCount($expectedCount, $haystackAttributeName, $haystackClassOrObject, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertAttributeCount', func_get_args() ); } /** * Asserts that a static attribute of a class or an attribute of an object * is empty. * * @param string $haystackAttributeName * @param mixed $haystackClassOrObject * @param string $message */ function assertAttributeEmpty($haystackAttributeName, $haystackClassOrObject, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertAttributeEmpty', func_get_args() ); } /** * Asserts that a variable is equal to an attribute of an object. * * @param mixed $expected * @param string $actualAttributeName * @param string $actualClassOrObject * @param string $message * @param float $delta * @param int $maxDepth * @param bool $canonicalize * @param bool $ignoreCase */ function assertAttributeEquals($expected, $actualAttributeName, $actualClassOrObject, $message = '', $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) { return call_user_func_array( 'PHPUnit_Framework_Assert::assertAttributeEquals', func_get_args() ); } /** * Asserts that an attribute is greater than another value. * * @param mixed $expected * @param string $actualAttributeName * @param string $actualClassOrObject * @param string $message */ function assertAttributeGreaterThan($expected, $actualAttributeName, $actualClassOrObject, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertAttributeGreaterThan', func_get_args() ); } /** * Asserts that an attribute is greater than or equal to another value. * * @param mixed $expected * @param string $actualAttributeName * @param string $actualClassOrObject * @param string $message */ function assertAttributeGreaterThanOrEqual($expected, $actualAttributeName, $actualClassOrObject, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertAttributeGreaterThanOrEqual', func_get_args() ); } /** * Asserts that an attribute is of a given type. * * @param string $expected * @param string $attributeName * @param mixed $classOrObject * @param string $message */ function assertAttributeInstanceOf($expected, $attributeName, $classOrObject, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertAttributeInstanceOf', func_get_args() ); } /** * Asserts that an attribute is of a given type. * * @param string $expected * @param string $attributeName * @param mixed $classOrObject * @param string $message */ function assertAttributeInternalType($expected, $attributeName, $classOrObject, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertAttributeInternalType', func_get_args() ); } /** * Asserts that an attribute is smaller than another value. * * @param mixed $expected * @param string $actualAttributeName * @param string $actualClassOrObject * @param string $message */ function assertAttributeLessThan($expected, $actualAttributeName, $actualClassOrObject, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertAttributeLessThan', func_get_args() ); } /** * Asserts that an attribute is smaller than or equal to another value. * * @param mixed $expected * @param string $actualAttributeName * @param string $actualClassOrObject * @param string $message */ function assertAttributeLessThanOrEqual($expected, $actualAttributeName, $actualClassOrObject, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertAttributeLessThanOrEqual', func_get_args() ); } /** * Asserts that a haystack that is stored in a static attribute of a class * or an attribute of an object does not contain a needle. * * @param mixed $needle * @param string $haystackAttributeName * @param mixed $haystackClassOrObject * @param string $message * @param bool $ignoreCase * @param bool $checkForObjectIdentity * @param bool $checkForNonObjectIdentity */ function assertAttributeNotContains($needle, $haystackAttributeName, $haystackClassOrObject, $message = '', $ignoreCase = false, $checkForObjectIdentity = true, $checkForNonObjectIdentity = false) { return call_user_func_array( 'PHPUnit_Framework_Assert::assertAttributeNotContains', func_get_args() ); } /** * Asserts that a haystack that is stored in a static attribute of a class * or an attribute of an object does not contain only values of a given * type. * * @param string $type * @param string $haystackAttributeName * @param mixed $haystackClassOrObject * @param bool $isNativeType * @param string $message */ function assertAttributeNotContainsOnly($type, $haystackAttributeName, $haystackClassOrObject, $isNativeType = null, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertAttributeNotContainsOnly', func_get_args() ); } /** * Asserts the number of elements of an array, Countable or Traversable * that is stored in an attribute. * * @param int $expectedCount * @param string $haystackAttributeName * @param mixed $haystackClassOrObject * @param string $message */ function assertAttributeNotCount($expectedCount, $haystackAttributeName, $haystackClassOrObject, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertAttributeNotCount', func_get_args() ); } /** * Asserts that a static attribute of a class or an attribute of an object * is not empty. * * @param string $haystackAttributeName * @param mixed $haystackClassOrObject * @param string $message */ function assertAttributeNotEmpty($haystackAttributeName, $haystackClassOrObject, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertAttributeNotEmpty', func_get_args() ); } /** * Asserts that a variable is not equal to an attribute of an object. * * @param mixed $expected * @param string $actualAttributeName * @param string $actualClassOrObject * @param string $message * @param float $delta * @param int $maxDepth * @param bool $canonicalize * @param bool $ignoreCase */ function assertAttributeNotEquals($expected, $actualAttributeName, $actualClassOrObject, $message = '', $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) { return call_user_func_array( 'PHPUnit_Framework_Assert::assertAttributeNotEquals', func_get_args() ); } /** * Asserts that an attribute is of a given type. * * @param string $expected * @param string $attributeName * @param mixed $classOrObject * @param string $message */ function assertAttributeNotInstanceOf($expected, $attributeName, $classOrObject, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertAttributeNotInstanceOf', func_get_args() ); } /** * Asserts that an attribute is of a given type. * * @param string $expected * @param string $attributeName * @param mixed $classOrObject * @param string $message */ function assertAttributeNotInternalType($expected, $attributeName, $classOrObject, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertAttributeNotInternalType', func_get_args() ); } /** * Asserts that a variable and an attribute of an object do not have the * same type and value. * * @param mixed $expected * @param string $actualAttributeName * @param object $actualClassOrObject * @param string $message */ function assertAttributeNotSame($expected, $actualAttributeName, $actualClassOrObject, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertAttributeNotSame', func_get_args() ); } /** * Asserts that a variable and an attribute of an object have the same type * and value. * * @param mixed $expected * @param string $actualAttributeName * @param object $actualClassOrObject * @param string $message */ function assertAttributeSame($expected, $actualAttributeName, $actualClassOrObject, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertAttributeSame', func_get_args() ); } /** * Asserts that a class has a specified attribute. * * @param string $attributeName * @param string $className * @param string $message */ function assertClassHasAttribute($attributeName, $className, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertClassHasAttribute', func_get_args() ); } /** * Asserts that a class has a specified static attribute. * * @param string $attributeName * @param string $className * @param string $message */ function assertClassHasStaticAttribute($attributeName, $className, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertClassHasStaticAttribute', func_get_args() ); } /** * Asserts that a class does not have a specified attribute. * * @param string $attributeName * @param string $className * @param string $message */ function assertClassNotHasAttribute($attributeName, $className, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertClassNotHasAttribute', func_get_args() ); } /** * Asserts that a class does not have a specified static attribute. * * @param string $attributeName * @param string $className * @param string $message */ function assertClassNotHasStaticAttribute($attributeName, $className, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertClassNotHasStaticAttribute', func_get_args() ); } /** * Asserts that a haystack contains a needle. * * @param mixed $needle * @param mixed $haystack * @param string $message * @param bool $ignoreCase * @param bool $checkForObjectIdentity * @param bool $checkForNonObjectIdentity */ function assertContains($needle, $haystack, $message = '', $ignoreCase = false, $checkForObjectIdentity = true, $checkForNonObjectIdentity = false) { return call_user_func_array( 'PHPUnit_Framework_Assert::assertContains', func_get_args() ); } /** * Asserts that a haystack contains only values of a given type. * * @param string $type * @param mixed $haystack * @param bool $isNativeType * @param string $message */ function assertContainsOnly($type, $haystack, $isNativeType = null, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertContainsOnly', func_get_args() ); } /** * Asserts that a haystack contains only instances of a given classname * * @param string $classname * @param array|Traversable $haystack * @param string $message */ function assertContainsOnlyInstancesOf($classname, $haystack, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertContainsOnlyInstancesOf', func_get_args() ); } /** * Asserts the number of elements of an array, Countable or Traversable. * * @param int $expectedCount * @param mixed $haystack * @param string $message */ function assertCount($expectedCount, $haystack, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertCount', func_get_args() ); } /** * Asserts that a variable is empty. * * @param mixed $actual * @param string $message * * @throws PHPUnit_Framework_AssertionFailedError */ function assertEmpty($actual, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertEmpty', func_get_args() ); } /** * Asserts that a hierarchy of DOMElements matches. * * @param DOMElement $expectedElement * @param DOMElement $actualElement * @param bool $checkAttributes * @param string $message */ function assertEqualXMLStructure(DOMElement $expectedElement, DOMElement $actualElement, $checkAttributes = false, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertEqualXMLStructure', func_get_args() ); } /** * Asserts that two variables are equal. * * @param mixed $expected * @param mixed $actual * @param string $message * @param float $delta * @param int $maxDepth * @param bool $canonicalize * @param bool $ignoreCase */ function assertEquals($expected, $actual, $message = '', $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) { return call_user_func_array( 'PHPUnit_Framework_Assert::assertEquals', func_get_args() ); } /** * Asserts that a condition is not true. * * @param bool $condition * @param string $message * * @throws PHPUnit_Framework_AssertionFailedError */ function assertNotTrue($condition, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertNotTrue', func_get_args() ); } /** * Asserts that a condition is false. * * @param bool $condition * @param string $message * * @throws PHPUnit_Framework_AssertionFailedError */ function assertFalse($condition, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertFalse', func_get_args() ); } /** * Asserts that the contents of one file is equal to the contents of another * file. * * @param string $expected * @param string $actual * @param string $message * @param bool $canonicalize * @param bool $ignoreCase */ function assertFileEquals($expected, $actual, $message = '', $canonicalize = false, $ignoreCase = false) { return call_user_func_array( 'PHPUnit_Framework_Assert::assertFileEquals', func_get_args() ); } /** * Asserts that a file exists. * * @param string $filename * @param string $message */ function assertFileExists($filename, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertFileExists', func_get_args() ); } /** * Asserts that the contents of one file is not equal to the contents of * another file. * * @param string $expected * @param string $actual * @param string $message * @param bool $canonicalize * @param bool $ignoreCase */ function assertFileNotEquals($expected, $actual, $message = '', $canonicalize = false, $ignoreCase = false) { return call_user_func_array( 'PHPUnit_Framework_Assert::assertFileNotEquals', func_get_args() ); } /** * Asserts that a file does not exist. * * @param string $filename * @param string $message */ function assertFileNotExists($filename, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertFileNotExists', func_get_args() ); } /** * Asserts that a value is greater than another value. * * @param mixed $expected * @param mixed $actual * @param string $message */ function assertGreaterThan($expected, $actual, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertGreaterThan', func_get_args() ); } /** * Asserts that a value is greater than or equal to another value. * * @param mixed $expected * @param mixed $actual * @param string $message */ function assertGreaterThanOrEqual($expected, $actual, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertGreaterThanOrEqual', func_get_args() ); } /** * Asserts that a variable is of a given type. * * @param string $expected * @param mixed $actual * @param string $message */ function assertInstanceOf($expected, $actual, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertInstanceOf', func_get_args() ); } /** * Asserts that a variable is of a given type. * * @param string $expected * @param mixed $actual * @param string $message */ function assertInternalType($expected, $actual, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertInternalType', func_get_args() ); } /** * Asserts that a string is a valid JSON string. * * @param string $actualJson * @param string $message */ function assertJson($actualJson, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertJson', func_get_args() ); } /** * Asserts that two JSON files are equal. * * @param string $expectedFile * @param string $actualFile * @param string $message */ function assertJsonFileEqualsJsonFile($expectedFile, $actualFile, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertJsonFileEqualsJsonFile', func_get_args() ); } /** * Asserts that two JSON files are not equal. * * @param string $expectedFile * @param string $actualFile * @param string $message */ function assertJsonFileNotEqualsJsonFile($expectedFile, $actualFile, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertJsonFileNotEqualsJsonFile', func_get_args() ); } /** * Asserts that the generated JSON encoded object and the content of the given file are equal. * * @param string $expectedFile * @param string $actualJson * @param string $message */ function assertJsonStringEqualsJsonFile($expectedFile, $actualJson, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertJsonStringEqualsJsonFile', func_get_args() ); } /** * Asserts that two given JSON encoded objects or arrays are equal. * * @param string $expectedJson * @param string $actualJson * @param string $message */ function assertJsonStringEqualsJsonString($expectedJson, $actualJson, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertJsonStringEqualsJsonString', func_get_args() ); } /** * Asserts that the generated JSON encoded object and the content of the given file are not equal. * * @param string $expectedFile * @param string $actualJson * @param string $message */ function assertJsonStringNotEqualsJsonFile($expectedFile, $actualJson, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertJsonStringNotEqualsJsonFile', func_get_args() ); } /** * Asserts that two given JSON encoded objects or arrays are not equal. * * @param string $expectedJson * @param string $actualJson * @param string $message */ function assertJsonStringNotEqualsJsonString($expectedJson, $actualJson, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertJsonStringNotEqualsJsonString', func_get_args() ); } /** * Asserts that a value is smaller than another value. * * @param mixed $expected * @param mixed $actual * @param string $message */ function assertLessThan($expected, $actual, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertLessThan', func_get_args() ); } /** * Asserts that a value is smaller than or equal to another value. * * @param mixed $expected * @param mixed $actual * @param string $message */ function assertLessThanOrEqual($expected, $actual, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertLessThanOrEqual', func_get_args() ); } /** * Asserts that a variable is finite. * * @param mixed $actual * @param string $message */ function assertFinite($actual, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertFinite', func_get_args() ); } /** * Asserts that a variable is infinite. * * @param mixed $actual * @param string $message */ function assertInfinite($actual, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertInfinite', func_get_args() ); } /** * Asserts that a variable is nan. * * @param mixed $actual * @param string $message */ function assertNan($actual, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertNan', func_get_args() ); } /** * Asserts that a haystack does not contain a needle. * * @param mixed $needle * @param mixed $haystack * @param string $message * @param bool $ignoreCase * @param bool $checkForObjectIdentity * @param bool $checkForNonObjectIdentity */ function assertNotContains($needle, $haystack, $message = '', $ignoreCase = false, $checkForObjectIdentity = true, $checkForNonObjectIdentity = false) { return call_user_func_array( 'PHPUnit_Framework_Assert::assertNotContains', func_get_args() ); } /** * Asserts that a haystack does not contain only values of a given type. * * @param string $type * @param mixed $haystack * @param bool $isNativeType * @param string $message */ function assertNotContainsOnly($type, $haystack, $isNativeType = null, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertNotContainsOnly', func_get_args() ); } /** * Asserts the number of elements of an array, Countable or Traversable. * * @param int $expectedCount * @param mixed $haystack * @param string $message */ function assertNotCount($expectedCount, $haystack, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertNotCount', func_get_args() ); } /** * Asserts that a variable is not empty. * * @param mixed $actual * @param string $message * * @throws PHPUnit_Framework_AssertionFailedError */ function assertNotEmpty($actual, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertNotEmpty', func_get_args() ); } /** * Asserts that two variables are not equal. * * @param mixed $expected * @param mixed $actual * @param string $message * @param float $delta * @param int $maxDepth * @param bool $canonicalize * @param bool $ignoreCase */ function assertNotEquals($expected, $actual, $message = '', $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) { return call_user_func_array( 'PHPUnit_Framework_Assert::assertNotEquals', func_get_args() ); } /** * Asserts that a variable is not of a given type. * * @param string $expected * @param mixed $actual * @param string $message */ function assertNotInstanceOf($expected, $actual, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertNotInstanceOf', func_get_args() ); } /** * Asserts that a variable is not of a given type. * * @param string $expected * @param mixed $actual * @param string $message */ function assertNotInternalType($expected, $actual, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertNotInternalType', func_get_args() ); } /** * Asserts that a condition is not false. * * @param bool $condition * @param string $message * * @throws PHPUnit_Framework_AssertionFailedError */ function assertNotFalse($condition, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertNotFalse', func_get_args() ); } /** * Asserts that a variable is not null. * * @param mixed $actual * @param string $message */ function assertNotNull($actual, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertNotNull', func_get_args() ); } /** * Asserts that a string does not match a given regular expression. * * @param string $pattern * @param string $string * @param string $message */ function assertNotRegExp($pattern, $string, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertNotRegExp', func_get_args() ); } /** * Asserts that two variables do not have the same type and value. * Used on objects, it asserts that two variables do not reference * the same object. * * @param mixed $expected * @param mixed $actual * @param string $message */ function assertNotSame($expected, $actual, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertNotSame', func_get_args() ); } /** * Assert that the size of two arrays (or `Countable` or `Traversable` objects) * is not the same. * * @param array|Countable|Traversable $expected * @param array|Countable|Traversable $actual * @param string $message */ function assertNotSameSize($expected, $actual, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertNotSameSize', func_get_args() ); } /** * Asserts that a variable is null. * * @param mixed $actual * @param string $message */ function assertNull($actual, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertNull', func_get_args() ); } /** * Asserts that an object has a specified attribute. * * @param string $attributeName * @param object $object * @param string $message */ function assertObjectHasAttribute($attributeName, $object, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertObjectHasAttribute', func_get_args() ); } /** * Asserts that an object does not have a specified attribute. * * @param string $attributeName * @param object $object * @param string $message */ function assertObjectNotHasAttribute($attributeName, $object, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertObjectNotHasAttribute', func_get_args() ); } /** * Asserts that a string matches a given regular expression. * * @param string $pattern * @param string $string * @param string $message */ function assertRegExp($pattern, $string, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertRegExp', func_get_args() ); } /** * Asserts that two variables have the same type and value. * Used on objects, it asserts that two variables reference * the same object. * * @param mixed $expected * @param mixed $actual * @param string $message */ function assertSame($expected, $actual, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertSame', func_get_args() ); } /** * Assert that the size of two arrays (or `Countable` or `Traversable` objects) * is the same. * * @param array|Countable|Traversable $expected * @param array|Countable|Traversable $actual * @param string $message */ function assertSameSize($expected, $actual, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertSameSize', func_get_args() ); } /** * Asserts that a string ends not with a given prefix. * * @param string $suffix * @param string $string * @param string $message */ function assertStringEndsNotWith($suffix, $string, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertStringEndsNotWith', func_get_args() ); } /** * Asserts that a string ends with a given prefix. * * @param string $suffix * @param string $string * @param string $message */ function assertStringEndsWith($suffix, $string, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertStringEndsWith', func_get_args() ); } /** * Asserts that the contents of a string is equal * to the contents of a file. * * @param string $expectedFile * @param string $actualString * @param string $message * @param bool $canonicalize * @param bool $ignoreCase */ function assertStringEqualsFile($expectedFile, $actualString, $message = '', $canonicalize = false, $ignoreCase = false) { return call_user_func_array( 'PHPUnit_Framework_Assert::assertStringEqualsFile', func_get_args() ); } /** * Asserts that a string matches a given format string. * * @param string $format * @param string $string * @param string $message */ function assertStringMatchesFormat($format, $string, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertStringMatchesFormat', func_get_args() ); } /** * Asserts that a string matches a given format file. * * @param string $formatFile * @param string $string * @param string $message */ function assertStringMatchesFormatFile($formatFile, $string, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertStringMatchesFormatFile', func_get_args() ); } /** * Asserts that the contents of a string is not equal * to the contents of a file. * * @param string $expectedFile * @param string $actualString * @param string $message * @param bool $canonicalize * @param bool $ignoreCase */ function assertStringNotEqualsFile($expectedFile, $actualString, $message = '', $canonicalize = false, $ignoreCase = false) { return call_user_func_array( 'PHPUnit_Framework_Assert::assertStringNotEqualsFile', func_get_args() ); } /** * Asserts that a string does not match a given format string. * * @param string $format * @param string $string * @param string $message */ function assertStringNotMatchesFormat($format, $string, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertStringNotMatchesFormat', func_get_args() ); } /** * Asserts that a string does not match a given format string. * * @param string $formatFile * @param string $string * @param string $message */ function assertStringNotMatchesFormatFile($formatFile, $string, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertStringNotMatchesFormatFile', func_get_args() ); } /** * Asserts that a string starts not with a given prefix. * * @param string $prefix * @param string $string * @param string $message */ function assertStringStartsNotWith($prefix, $string, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertStringStartsNotWith', func_get_args() ); } /** * Asserts that a string starts with a given prefix. * * @param string $prefix * @param string $string * @param string $message */ function assertStringStartsWith($prefix, $string, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertStringStartsWith', func_get_args() ); } /** * Evaluates a PHPUnit_Framework_Constraint matcher object. * * @param mixed $value * @param PHPUnit_Framework_Constraint $constraint * @param string $message */ function assertThat($value, PHPUnit_Framework_Constraint $constraint, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertThat', func_get_args() ); } /** * Asserts that a condition is true. * * @param bool $condition * @param string $message * * @throws PHPUnit_Framework_AssertionFailedError */ function assertTrue($condition, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertTrue', func_get_args() ); } /** * Asserts that two XML files are equal. * * @param string $expectedFile * @param string $actualFile * @param string $message */ function assertXmlFileEqualsXmlFile($expectedFile, $actualFile, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertXmlFileEqualsXmlFile', func_get_args() ); } /** * Asserts that two XML files are not equal. * * @param string $expectedFile * @param string $actualFile * @param string $message */ function assertXmlFileNotEqualsXmlFile($expectedFile, $actualFile, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertXmlFileNotEqualsXmlFile', func_get_args() ); } /** * Asserts that two XML documents are equal. * * @param string $expectedFile * @param string $actualXml * @param string $message */ function assertXmlStringEqualsXmlFile($expectedFile, $actualXml, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertXmlStringEqualsXmlFile', func_get_args() ); } /** * Asserts that two XML documents are equal. * * @param string $expectedXml * @param string $actualXml * @param string $message */ function assertXmlStringEqualsXmlString($expectedXml, $actualXml, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertXmlStringEqualsXmlString', func_get_args() ); } /** * Asserts that two XML documents are not equal. * * @param string $expectedFile * @param string $actualXml * @param string $message */ function assertXmlStringNotEqualsXmlFile($expectedFile, $actualXml, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertXmlStringNotEqualsXmlFile', func_get_args() ); } /** * Asserts that two XML documents are not equal. * * @param string $expectedXml * @param string $actualXml * @param string $message */ function assertXmlStringNotEqualsXmlString($expectedXml, $actualXml, $message = '') { return call_user_func_array( 'PHPUnit_Framework_Assert::assertXmlStringNotEqualsXmlString', func_get_args() ); } /** * Returns a matcher that matches when the method is executed * at the given $index. * * @param int $index * * @return PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex */ function at($index) { return call_user_func_array( 'PHPUnit_Framework_TestCase::at', func_get_args() ); } /** * Returns a matcher that matches when the method is executed at least once. * * @return PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastOnce */ function atLeastOnce() { return call_user_func_array( 'PHPUnit_Framework_TestCase::atLeastOnce', func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_Attribute matcher object. * * @param PHPUnit_Framework_Constraint $constraint * @param string $attributeName * * @return PHPUnit_Framework_Constraint_Attribute */ function attribute(PHPUnit_Framework_Constraint $constraint, $attributeName) { return call_user_func_array( 'PHPUnit_Framework_Assert::attribute', func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_IsEqual matcher object * that is wrapped in a PHPUnit_Framework_Constraint_Attribute matcher * object. * * @param string $attributeName * @param mixed $value * @param float $delta * @param int $maxDepth * @param bool $canonicalize * @param bool $ignoreCase * * @return PHPUnit_Framework_Constraint_Attribute */ function attributeEqualTo($attributeName, $value, $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) { return call_user_func_array( 'PHPUnit_Framework_Assert::attributeEqualTo', func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_Callback matcher object. * * @param callable $callback * * @return PHPUnit_Framework_Constraint_Callback */ function callback($callback) { return call_user_func_array( 'PHPUnit_Framework_Assert::callback', func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_ClassHasAttribute matcher object. * * @param string $attributeName * * @return PHPUnit_Framework_Constraint_ClassHasAttribute */ function classHasAttribute($attributeName) { return call_user_func_array( 'PHPUnit_Framework_Assert::classHasAttribute', func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_ClassHasStaticAttribute matcher * object. * * @param string $attributeName * * @return PHPUnit_Framework_Constraint_ClassHasStaticAttribute */ function classHasStaticAttribute($attributeName) { return call_user_func_array( 'PHPUnit_Framework_Assert::classHasStaticAttribute', func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_TraversableContains matcher * object. * * @param mixed $value * @param bool $checkForObjectIdentity * @param bool $checkForNonObjectIdentity * * @return PHPUnit_Framework_Constraint_TraversableContains */ function contains($value, $checkForObjectIdentity = true, $checkForNonObjectIdentity = false) { return call_user_func_array( 'PHPUnit_Framework_Assert::contains', func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_TraversableContainsOnly matcher * object. * * @param string $type * * @return PHPUnit_Framework_Constraint_TraversableContainsOnly */ function containsOnly($type) { return call_user_func_array( 'PHPUnit_Framework_Assert::containsOnly', func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_TraversableContainsOnly matcher * object. * * @param string $classname * * @return PHPUnit_Framework_Constraint_TraversableContainsOnly */ function containsOnlyInstancesOf($classname) { return call_user_func_array( 'PHPUnit_Framework_Assert::containsOnlyInstancesOf', func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_Count matcher object. * * @param int $count * * @return Count */ function countOf($count) { return call_user_func_array( 'PHPUnit\Framework\Assert::countOf', func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_IsEqual matcher object. * * @param mixed $value * @param float $delta * @param int $maxDepth * @param bool $canonicalize * @param bool $ignoreCase * * @return PHPUnit_Framework_Constraint_IsEqual */ function equalTo($value, $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false) { return call_user_func_array( 'PHPUnit_Framework_Assert::equalTo', func_get_args() ); } /** * Returns a matcher that matches when the method is executed * exactly $count times. * * @param int $count * * @return PHPUnit_Framework_MockObject_Matcher_InvokedCount */ function exactly($count) { return call_user_func_array( 'PHPUnit_Framework_TestCase::exactly', func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_FileExists matcher object. * * @return PHPUnit_Framework_Constraint_FileExists */ function fileExists() { return call_user_func_array( 'PHPUnit_Framework_Assert::fileExists', func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_GreaterThan matcher object. * * @param mixed $value * * @return PHPUnit_Framework_Constraint_GreaterThan */ function greaterThan($value) { return call_user_func_array( 'PHPUnit_Framework_Assert::greaterThan', func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_Or matcher object that wraps * a PHPUnit_Framework_Constraint_IsEqual and a * PHPUnit_Framework_Constraint_GreaterThan matcher object. * * @param mixed $value * * @return PHPUnit_Framework_Constraint_Or */ function greaterThanOrEqual($value) { return call_user_func_array( 'PHPUnit_Framework_Assert::greaterThanOrEqual', func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_IsIdentical matcher object. * * @param mixed $value * * @return PHPUnit_Framework_Constraint_IsIdentical */ function identicalTo($value) { return call_user_func_array( 'PHPUnit_Framework_Assert::identicalTo', func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_IsEmpty matcher object. * * @return PHPUnit_Framework_Constraint_IsEmpty */ function isEmpty() { return call_user_func_array( 'PHPUnit_Framework_Assert::isEmpty', func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_IsFalse matcher object. * * @return PHPUnit_Framework_Constraint_IsFalse */ function isFalse() { return call_user_func_array( 'PHPUnit_Framework_Assert::isFalse', func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_IsInstanceOf matcher object. * * @param string $className * * @return PHPUnit_Framework_Constraint_IsInstanceOf */ function isInstanceOf($className) { return call_user_func_array( 'PHPUnit_Framework_Assert::isInstanceOf', func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_IsJson matcher object. * * @return PHPUnit_Framework_Constraint_IsJson */ function isJson() { return call_user_func_array( 'PHPUnit_Framework_Assert::isJson', func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_IsNull matcher object. * * @return PHPUnit_Framework_Constraint_IsNull */ function isNull() { return call_user_func_array( 'PHPUnit_Framework_Assert::isNull', func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_IsTrue matcher object. * * @return PHPUnit_Framework_Constraint_IsTrue */ function isTrue() { return call_user_func_array( 'PHPUnit_Framework_Assert::isTrue', func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_IsType matcher object. * * @param string $type * * @return PHPUnit_Framework_Constraint_IsType */ function isType($type) { return call_user_func_array( 'PHPUnit_Framework_Assert::isType', func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_LessThan matcher object. * * @param mixed $value * * @return PHPUnit_Framework_Constraint_LessThan */ function lessThan($value) { return call_user_func_array( 'PHPUnit_Framework_Assert::lessThan', func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_Or matcher object that wraps * a PHPUnit_Framework_Constraint_IsEqual and a * PHPUnit_Framework_Constraint_LessThan matcher object. * * @param mixed $value * * @return PHPUnit_Framework_Constraint_Or */ function lessThanOrEqual($value) { return call_user_func_array( 'PHPUnit_Framework_Assert::lessThanOrEqual', func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_And matcher object. * * @return PHPUnit_Framework_Constraint_And */ function logicalAnd() { return call_user_func_array( 'PHPUnit_Framework_Assert::logicalAnd', func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_Not matcher object. * * @param PHPUnit_Framework_Constraint $constraint * * @return PHPUnit_Framework_Constraint_Not */ function logicalNot(PHPUnit_Framework_Constraint $constraint) { return call_user_func_array( 'PHPUnit_Framework_Assert::logicalNot', func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_Or matcher object. * * @return PHPUnit_Framework_Constraint_Or */ function logicalOr() { return call_user_func_array( 'PHPUnit_Framework_Assert::logicalOr', func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_Xor matcher object. * * @return PHPUnit_Framework_Constraint_Xor */ function logicalXor() { return call_user_func_array( 'PHPUnit_Framework_Assert::logicalXor', func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_StringMatches matcher object. * * @param string $string * * @return PHPUnit_Framework_Constraint_StringMatches */ function matches($string) { return call_user_func_array( 'PHPUnit_Framework_Assert::matches', func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_PCREMatch matcher object. * * @param string $pattern * * @return PHPUnit_Framework_Constraint_PCREMatch */ function matchesRegularExpression($pattern) { return call_user_func_array( 'PHPUnit_Framework_Assert::matchesRegularExpression', func_get_args() ); } /** * Returns a matcher that matches when the method is never executed. * * @return PHPUnit_Framework_MockObject_Matcher_InvokedCount */ function never() { return call_user_func_array( 'PHPUnit_Framework_TestCase::never', func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_ObjectHasAttribute matcher object. * * @param string $attributeName * * @return PHPUnit_Framework_Constraint_ObjectHasAttribute */ function objectHasAttribute($attributeName) { return call_user_func_array( 'PHPUnit_Framework_Assert::objectHasAttribute', func_get_args() ); } /** * @param mixed $value, ... * * @return PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls */ function onConsecutiveCalls() { return call_user_func_array( 'PHPUnit_Framework_TestCase::onConsecutiveCalls', func_get_args() ); } /** * Returns a matcher that matches when the method is executed exactly once. * * @return PHPUnit_Framework_MockObject_Matcher_InvokedCount */ function once() { return call_user_func_array( 'PHPUnit_Framework_TestCase::once', func_get_args() ); } /** * @param int $argumentIndex * * @return PHPUnit_Framework_MockObject_Stub_ReturnArgument */ function returnArgument($argumentIndex) { return call_user_func_array( 'PHPUnit_Framework_TestCase::returnArgument', func_get_args() ); } /** * @param mixed $callback * * @return PHPUnit_Framework_MockObject_Stub_ReturnCallback */ function returnCallback($callback) { return call_user_func_array( 'PHPUnit_Framework_TestCase::returnCallback', func_get_args() ); } /** * Returns the current object. * * This method is useful when mocking a fluent interface. * * @return PHPUnit_Framework_MockObject_Stub_ReturnSelf */ function returnSelf() { return call_user_func_array( 'PHPUnit_Framework_TestCase::returnSelf', func_get_args() ); } /** * @param mixed $value * * @return PHPUnit_Framework_MockObject_Stub_Return */ function returnValue($value) { return call_user_func_array( 'PHPUnit_Framework_TestCase::returnValue', func_get_args() ); } /** * @param array $valueMap * * @return PHPUnit_Framework_MockObject_Stub_ReturnValueMap */ function returnValueMap(array $valueMap) { return call_user_func_array( 'PHPUnit_Framework_TestCase::returnValueMap', func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_StringContains matcher object. * * @param string $string * @param bool $case * * @return PHPUnit_Framework_Constraint_StringContains */ function stringContains($string, $case = true) { return call_user_func_array( 'PHPUnit_Framework_Assert::stringContains', func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_StringEndsWith matcher object. * * @param mixed $suffix * * @return PHPUnit_Framework_Constraint_StringEndsWith */ function stringEndsWith($suffix) { return call_user_func_array( 'PHPUnit_Framework_Assert::stringEndsWith', func_get_args() ); } /** * Returns a PHPUnit_Framework_Constraint_StringStartsWith matcher object. * * @param mixed $prefix * * @return PHPUnit_Framework_Constraint_StringStartsWith */ function stringStartsWith($prefix) { return call_user_func_array( 'PHPUnit_Framework_Assert::stringStartsWith', func_get_args() ); } /** * @param Exception $exception * * @return PHPUnit_Framework_MockObject_Stub_Exception */ function throwException(Exception $exception) { return call_user_func_array( 'PHPUnit_Framework_TestCase::throwException', func_get_args() ); } PK!RBsrc/Framework/OutputError.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Extension to PHPUnit_Framework_AssertionFailedError to mark the special * case of a test that printed output. */ class PHPUnit_Framework_OutputError extends PHPUnit_Framework_AssertionFailedError { } PK!iGNN.src/Framework/InvalidCoversTargetException.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class PHPUnit_Framework_InvalidCoversTargetException extends PHPUnit_Framework_CodeCoverageException { } PK! src/Framework/RiskyTestError.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Extension to PHPUnit_Framework_AssertionFailedError to mark the special * case of a risky test. */ class PHPUnit_Framework_RiskyTestError extends PHPUnit_Framework_AssertionFailedError implements PHPUnit_Framework_RiskyTest { } PK!!_0MM(src/Framework/TestSuite/DataProvider.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class PHPUnit_Framework_TestSuite_DataProvider extends PHPUnit_Framework_TestSuite { /** * Sets the dependencies of a TestCase. * * @param array $dependencies */ public function setDependencies(array $dependencies) { foreach ($this->tests as $test) { $test->setDependencies($dependencies); } } } PK!+Isrc/Framework/Error/Notice.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Wrapper for PHP notices. * You can disable notice-to-exception conversion by setting * * * PHPUnit_Framework_Error_Notice::$enabled = false; * */ class PHPUnit_Framework_Error_Notice extends PHPUnit_Framework_Error { public static $enabled = true; } PK!,/"src/Framework/Error/Deprecated.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Wrapper for PHP deprecated errors. * You can disable deprecated-to-exception conversion by setting * * * PHPUnit_Framework_Error_Deprecated::$enabled = false; * */ class PHPUnit_Framework_Error_Deprecated extends PHPUnit_Framework_Error { public static $enabled = true; } PK!bc:src/Framework/Error/Warning.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Wrapper for PHP warnings. * You can disable notice-to-exception conversion by setting * * * PHPUnit_Framework_Error_Warning::$enabled = false; * */ class PHPUnit_Framework_Error_Warning extends PHPUnit_Framework_Error { public static $enabled = true; } PK!E"9src/Framework/Constraint.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ use SebastianBergmann\Exporter\Exporter; /** * Abstract base class for constraints which can be applied to any value. */ abstract class PHPUnit_Framework_Constraint implements Countable, PHPUnit_Framework_SelfDescribing { protected $exporter; public function __construct() { $this->exporter = new Exporter; } /** * Evaluates the constraint for parameter $other * * If $returnResult is set to false (the default), an exception is thrown * in case of a failure. null is returned otherwise. * * If $returnResult is true, the result of the evaluation is returned as * a boolean value instead: true in case of success, false in case of a * failure. * * @param mixed $other Value or object to evaluate. * @param string $description Additional information about the test * @param bool $returnResult Whether to return a result or throw an exception * * @return mixed * * @throws PHPUnit_Framework_ExpectationFailedException */ public function evaluate($other, $description = '', $returnResult = false) { $success = false; if ($this->matches($other)) { $success = true; } if ($returnResult) { return $success; } if (!$success) { $this->fail($other, $description); } } /** * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * * This method can be overridden to implement the evaluation algorithm. * * @param mixed $other Value or object to evaluate. * * @return bool */ protected function matches($other) { return false; } /** * Counts the number of constraint elements. * * @return int */ public function count() { return 1; } /** * Throws an exception for the given compared value and test description * * @param mixed $other Evaluated value or object. * @param string $description Additional information about the test * @param SebastianBergmann\Comparator\ComparisonFailure $comparisonFailure * * @throws PHPUnit_Framework_ExpectationFailedException */ protected function fail($other, $description, SebastianBergmann\Comparator\ComparisonFailure $comparisonFailure = null) { $failureDescription = sprintf( 'Failed asserting that %s.', $this->failureDescription($other) ); $additionalFailureDescription = $this->additionalFailureDescription($other); if ($additionalFailureDescription) { $failureDescription .= "\n" . $additionalFailureDescription; } if (!empty($description)) { $failureDescription = $description . "\n" . $failureDescription; } throw new PHPUnit_Framework_ExpectationFailedException( $failureDescription, $comparisonFailure ); } /** * Return additional failure description where needed * * The function can be overridden to provide additional failure * information like a diff * * @param mixed $other Evaluated value or object. * * @return string */ protected function additionalFailureDescription($other) { return ''; } /** * Returns the description of the failure * * The beginning of failure messages is "Failed asserting that" in most * cases. This method should return the second part of that sentence. * * To provide additional failure information additionalFailureDescription * can be used. * * @param mixed $other Evaluated value or object. * * @return string */ protected function failureDescription($other) { return $this->exporter->export($other) . ' ' . $this->toString(); } } PK!A%r"src/Framework/BaseTestListener.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * An empty Listener that can be extended to implement TestListener * with just a few lines of code. * * @see PHPUnit_Framework_TestListener for documentation on the API methods. */ abstract class PHPUnit_Framework_BaseTestListener implements PHPUnit_Framework_TestListener { public function addError(PHPUnit_Framework_Test $test, Exception $e, $time) { } public function addWarning(PHPUnit_Framework_Test $test, PHPUnit_Framework_Warning $e, $time) { } public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time) { } public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time) { } public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time) { } public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time) { } public function startTestSuite(PHPUnit_Framework_TestSuite $suite) { } public function endTestSuite(PHPUnit_Framework_TestSuite $suite) { } public function startTest(PHPUnit_Framework_Test $test) { } public function endTest(PHPUnit_Framework_Test $test, $time) { } } PK!!lYYsrc/Framework/SkippedTest.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * A marker interface for marking a unit test as being skipped. */ interface PHPUnit_Framework_SkippedTest { } PK! Q1src/Framework/UnintentionallyCoveredCodeError.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Extension to PHPUnit_Framework_AssertionFailedError to mark the special * case of a test that unintentionally covers code. */ class PHPUnit_Framework_UnintentionallyCoveredCodeError extends PHPUnit_Framework_RiskyTestError { } PK!C@src/Framework/TestCase.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ use SebastianBergmann\GlobalState\Snapshot; use SebastianBergmann\GlobalState\Restorer; use SebastianBergmann\GlobalState\Blacklist; use SebastianBergmann\Diff\Differ; use SebastianBergmann\Exporter\Exporter; use SebastianBergmann\ObjectEnumerator\Enumerator; use Prophecy\Exception\Prediction\PredictionException; use Prophecy\Prophet; use DeepCopy\DeepCopy; /** * A TestCase defines the fixture to run multiple tests. * * To define a TestCase * * 1) Implement a subclass of PHPUnit_Framework_TestCase. * 2) Define instance variables that store the state of the fixture. * 3) Initialize the fixture state by overriding setUp(). * 4) Clean-up after a test by overriding tearDown(). * * Each test runs in its own fixture so there can be no side effects * among test runs. * * Here is an example: * * * value1 = 2; * $this->value2 = 3; * } * } * ?> * * * For each test implement a method which interacts with the fixture. * Verify the expected results with assertions specified by calling * assert with a boolean. * * * assertTrue($this->value1 + $this->value2 == 5); * } * ?> * */ abstract class PHPUnit_Framework_TestCase extends PHPUnit_Framework_Assert implements PHPUnit_Framework_Test, PHPUnit_Framework_SelfDescribing { /** * Enable or disable the backup and restoration of the $GLOBALS array. * Overwrite this attribute in a child class of TestCase. * Setting this attribute in setUp() has no effect! * * @var bool */ protected $backupGlobals = null; /** * @var array */ protected $backupGlobalsBlacklist = []; /** * Enable or disable the backup and restoration of static attributes. * Overwrite this attribute in a child class of TestCase. * Setting this attribute in setUp() has no effect! * * @var bool */ protected $backupStaticAttributes = null; /** * @var array */ protected $backupStaticAttributesBlacklist = []; /** * Whether or not this test is to be run in a separate PHP process. * * @var bool */ protected $runTestInSeparateProcess = null; /** * Whether or not this test should preserve the global state when * running in a separate PHP process. * * @var bool */ protected $preserveGlobalState = true; /** * Whether or not this test is running in a separate PHP process. * * @var bool */ private $inIsolation = false; /** * @var array */ private $data = []; /** * @var string */ private $dataName = ''; /** * @var bool */ private $useErrorHandler = null; /** * The name of the expected Exception. * * @var string */ private $expectedException = null; /** * The message of the expected Exception. * * @var string */ private $expectedExceptionMessage = null; /** * The regex pattern to validate the expected Exception message. * * @var string */ private $expectedExceptionMessageRegExp = null; /** * The code of the expected Exception. * * @var int|string */ private $expectedExceptionCode = null; /** * The name of the test case. * * @var string */ private $name = null; /** * @var array */ private $dependencies = []; /** * @var array */ private $dependencyInput = []; /** * @var array */ private $iniSettings = []; /** * @var array */ private $locale = []; /** * @var array */ private $mockObjects = []; /** * @var MockGenerator */ private $mockObjectGenerator = null; /** * @var int */ private $status; /** * @var string */ private $statusMessage = ''; /** * @var int */ private $numAssertions = 0; /** * @var PHPUnit_Framework_TestResult */ private $result; /** * @var mixed */ private $testResult; /** * @var string */ private $output = ''; /** * @var string */ private $outputExpectedRegex = null; /** * @var string */ private $outputExpectedString = null; /** * @var mixed */ private $outputCallback = false; /** * @var bool */ private $outputBufferingActive = false; /** * @var int */ private $outputBufferingLevel; /** * @var SebastianBergmann\GlobalState\Snapshot */ private $snapshot; /** * @var Prophecy\Prophet */ private $prophet; /** * @var bool */ private $beStrictAboutChangesToGlobalState = false; /** * @var bool */ private $registerMockObjectsFromTestArgumentsRecursively = false; /** * @var string[] */ private $warnings = []; /** * @var array */ private $groups = []; /** * @var bool */ private $doesNotPerformAssertions = false; /** * Constructs a test case with the given name. * * @param string $name * @param array $data * @param string $dataName */ public function __construct($name = null, array $data = [], $dataName = '') { if ($name !== null) { $this->setName($name); } $this->data = $data; $this->dataName = $dataName; } /** * Returns a string representation of the test case. * * @return string */ public function toString() { $class = new ReflectionClass($this); $buffer = sprintf( '%s::%s', $class->name, $this->getName(false) ); return $buffer . $this->getDataSetAsString(); } /** * Counts the number of test cases executed by run(TestResult result). * * @return int */ public function count() { return 1; } public function getGroups() { return $this->groups; } /** * @param array $groups */ public function setGroups(array $groups) { $this->groups = $groups; } /** * Returns the annotations for this test. * * @return array */ public function getAnnotations() { return PHPUnit_Util_Test::parseTestMethodAnnotations( get_class($this), $this->name ); } /** * Gets the name of a TestCase. * * @param bool $withDataSet * * @return string */ public function getName($withDataSet = true) { if ($withDataSet) { return $this->name . $this->getDataSetAsString(false); } else { return $this->name; } } /** * Returns the size of the test. * * @return int */ public function getSize() { return PHPUnit_Util_Test::getSize( get_class($this), $this->getName(false) ); } /** * @return bool */ public function hasSize() { return $this->getSize() !== PHPUnit_Util_Test::UNKNOWN; } /** * @return bool */ public function isSmall() { return $this->getSize() === PHPUnit_Util_Test::SMALL; } /** * @return bool */ public function isMedium() { return $this->getSize() === PHPUnit_Util_Test::MEDIUM; } /** * @return bool */ public function isLarge() { return $this->getSize() === PHPUnit_Util_Test::LARGE; } /** * @return string */ public function getActualOutput() { if (!$this->outputBufferingActive) { return $this->output; } else { return ob_get_contents(); } } /** * @return bool */ public function hasOutput() { if (strlen($this->output) === 0) { return false; } if ($this->hasExpectationOnOutput()) { return false; } return true; } /** * @return bool */ public function doesNotPerformAssertions() { return $this->doesNotPerformAssertions; } /** * @param string $expectedRegex * * @throws PHPUnit_Framework_Exception */ public function expectOutputRegex($expectedRegex) { if ($this->outputExpectedString !== null) { throw new PHPUnit_Framework_Exception; } if (is_string($expectedRegex) || is_null($expectedRegex)) { $this->outputExpectedRegex = $expectedRegex; } } /** * @param string $expectedString */ public function expectOutputString($expectedString) { if ($this->outputExpectedRegex !== null) { throw new PHPUnit_Framework_Exception; } if (is_string($expectedString) || is_null($expectedString)) { $this->outputExpectedString = $expectedString; } } /** * @return bool * * @deprecated Use hasExpectationOnOutput() instead */ public function hasPerformedExpectationsOnOutput() { return $this->hasExpectationOnOutput(); } /** * @return bool */ public function hasExpectationOnOutput() { return is_string($this->outputExpectedString) || is_string($this->outputExpectedRegex); } /** * @return string */ public function getExpectedException() { return $this->expectedException; } /** * @param mixed $exception * @param string $message Null means we do not check message at all, string (even empty) means we do. Default: null. * @param int|string $code Null means we do not check code at all, non-null means we do. * * @throws PHPUnit_Framework_Exception * * @deprecated Method deprecated since Release 5.2.0; use expectException() instead */ public function setExpectedException($exception, $message = '', $code = null) { if (null !== $message && !is_string($message)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'string'); } if (func_num_args() < 2) { $message = null; } $this->expectedException = $exception; if ($message !== null) { $this->expectExceptionMessage($message); } if ($code !== null) { $this->expectExceptionCode($code); } } /** * @param mixed $exception * @param string $messageRegExp * @param int $code * * @throws PHPUnit_Framework_Exception * * @deprecated Method deprecated since Release 5.6.0; use expectExceptionMessageRegExp() instead */ public function setExpectedExceptionRegExp($exception, $messageRegExp = '', $code = null) { if (!is_string($messageRegExp)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'string'); } $this->expectedException = $exception; $this->expectedExceptionMessageRegExp = $messageRegExp; if ($code !== null) { $this->expectExceptionCode($code); } } /** * @param string $exception */ public function expectException($exception) { if (!is_string($exception)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); } $this->expectedException = $exception; } /** * @param int|string $code * * @throws PHPUnit_Framework_Exception */ public function expectExceptionCode($code) { if (!$this->expectedException) { $this->expectedException = \Exception::class; } if (!is_int($code) && !is_string($code)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'integer or string'); } $this->expectedExceptionCode = $code; } /** * @param string $message * * @throws PHPUnit_Framework_Exception */ public function expectExceptionMessage($message) { if (!$this->expectedException) { $this->expectedException = \Exception::class; } if (!is_string($message)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); } $this->expectedExceptionMessage = $message; } /** * @param string $messageRegExp * * @throws PHPUnit_Framework_Exception */ public function expectExceptionMessageRegExp($messageRegExp) { if (!is_string($messageRegExp)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); } $this->expectedExceptionMessageRegExp = $messageRegExp; } /** * @param bool $flag */ public function setRegisterMockObjectsFromTestArgumentsRecursively($flag) { if (!is_bool($flag)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean'); } $this->registerMockObjectsFromTestArgumentsRecursively = $flag; } protected function setExpectedExceptionFromAnnotation() { try { $expectedException = PHPUnit_Util_Test::getExpectedException( get_class($this), $this->name ); if ($expectedException !== false) { $this->expectException($expectedException['class']); if ($expectedException['code'] !== null) { $this->expectExceptionCode($expectedException['code']); } if ($expectedException['message'] !== '') { $this->expectExceptionMessage($expectedException['message']); } elseif ($expectedException['message_regex'] !== '') { $this->expectExceptionMessageRegExp($expectedException['message_regex']); } } } catch (ReflectionException $e) { } } /** * @param bool $useErrorHandler */ public function setUseErrorHandler($useErrorHandler) { $this->useErrorHandler = $useErrorHandler; } protected function setUseErrorHandlerFromAnnotation() { try { $useErrorHandler = PHPUnit_Util_Test::getErrorHandlerSettings( get_class($this), $this->name ); if ($useErrorHandler !== null) { $this->setUseErrorHandler($useErrorHandler); } } catch (ReflectionException $e) { } } protected function checkRequirements() { if (!$this->name || !method_exists($this, $this->name)) { return; } $missingRequirements = PHPUnit_Util_Test::getMissingRequirements( get_class($this), $this->name ); if (!empty($missingRequirements)) { $this->markTestSkipped(implode(PHP_EOL, $missingRequirements)); } } /** * Returns the status of this test. * * @return int */ public function getStatus() { return $this->status; } public function markAsRisky() { $this->status = PHPUnit_Runner_BaseTestRunner::STATUS_RISKY; } /** * Returns the status message of this test. * * @return string */ public function getStatusMessage() { return $this->statusMessage; } /** * Returns whether or not this test has failed. * * @return bool */ public function hasFailed() { $status = $this->getStatus(); return $status == PHPUnit_Runner_BaseTestRunner::STATUS_FAILURE || $status == PHPUnit_Runner_BaseTestRunner::STATUS_ERROR; } /** * Runs the test case and collects the results in a TestResult object. * If no TestResult object is passed a new one will be created. * * @param PHPUnit_Framework_TestResult $result * * @return PHPUnit_Framework_TestResult * * @throws PHPUnit_Framework_Exception */ public function run(PHPUnit_Framework_TestResult $result = null) { if ($result === null) { $result = $this->createResult(); } if (!$this instanceof PHPUnit_Framework_WarningTestCase) { $this->setTestResultObject($result); $this->setUseErrorHandlerFromAnnotation(); } if ($this->useErrorHandler !== null) { $oldErrorHandlerSetting = $result->getConvertErrorsToExceptions(); $result->convertErrorsToExceptions($this->useErrorHandler); } if (!$this instanceof PHPUnit_Framework_WarningTestCase && !$this instanceof PHPUnit_Framework_SkippedTestCase && !$this->handleDependencies()) { return; } if ($this->runTestInSeparateProcess === true && $this->inIsolation !== true && !$this instanceof PHPUnit_Extensions_PhptTestCase) { $class = new ReflectionClass($this); $template = new Text_Template( __DIR__ . '/../Util/PHP/Template/TestCaseMethod.tpl' ); if ($this->preserveGlobalState) { $constants = PHPUnit_Util_GlobalState::getConstantsAsString(); $globals = PHPUnit_Util_GlobalState::getGlobalsAsString(); $includedFiles = PHPUnit_Util_GlobalState::getIncludedFilesAsString(); $iniSettings = PHPUnit_Util_GlobalState::getIniSettingsAsString(); } else { $constants = ''; if (!empty($GLOBALS['__PHPUNIT_BOOTSTRAP'])) { $globals = '$GLOBALS[\'__PHPUNIT_BOOTSTRAP\'] = ' . var_export($GLOBALS['__PHPUNIT_BOOTSTRAP'], true) . ";\n"; } else { $globals = ''; } $includedFiles = ''; $iniSettings = ''; } $coverage = $result->getCollectCodeCoverageInformation() ? 'true' : 'false'; $isStrictAboutTestsThatDoNotTestAnything = $result->isStrictAboutTestsThatDoNotTestAnything() ? 'true' : 'false'; $isStrictAboutOutputDuringTests = $result->isStrictAboutOutputDuringTests() ? 'true' : 'false'; $enforcesTimeLimit = $result->enforcesTimeLimit() ? 'true' : 'false'; $isStrictAboutTodoAnnotatedTests = $result->isStrictAboutTodoAnnotatedTests() ? 'true' : 'false'; $isStrictAboutResourceUsageDuringSmallTests = $result->isStrictAboutResourceUsageDuringSmallTests() ? 'true' : 'false'; if (defined('PHPUNIT_COMPOSER_INSTALL')) { $composerAutoload = var_export(PHPUNIT_COMPOSER_INSTALL, true); } else { $composerAutoload = '\'\''; } if (defined('__PHPUNIT_PHAR__')) { $phar = var_export(__PHPUNIT_PHAR__, true); } else { $phar = '\'\''; } if ($result->getCodeCoverage()) { $codeCoverageFilter = $result->getCodeCoverage()->filter(); } else { $codeCoverageFilter = null; } $data = var_export(serialize($this->data), true); $dataName = var_export($this->dataName, true); $dependencyInput = var_export(serialize($this->dependencyInput), true); $includePath = var_export(get_include_path(), true); $codeCoverageFilter = var_export(serialize($codeCoverageFilter), true); // must do these fixes because TestCaseMethod.tpl has unserialize('{data}') in it, and we can't break BC // the lines above used to use addcslashes() rather than var_export(), which breaks null byte escape sequences $data = "'." . $data . ".'"; $dataName = "'.(" . $dataName . ").'"; $dependencyInput = "'." . $dependencyInput . ".'"; $includePath = "'." . $includePath . ".'"; $codeCoverageFilter = "'." . $codeCoverageFilter . ".'"; $configurationFilePath = (isset($GLOBALS['__PHPUNIT_CONFIGURATION_FILE']) ? $GLOBALS['__PHPUNIT_CONFIGURATION_FILE'] : ''); $template->setVar( [ 'composerAutoload' => $composerAutoload, 'phar' => $phar, 'filename' => $class->getFileName(), 'className' => $class->getName(), 'methodName' => $this->name, 'collectCodeCoverageInformation' => $coverage, 'data' => $data, 'dataName' => $dataName, 'dependencyInput' => $dependencyInput, 'constants' => $constants, 'globals' => $globals, 'include_path' => $includePath, 'included_files' => $includedFiles, 'iniSettings' => $iniSettings, 'isStrictAboutTestsThatDoNotTestAnything' => $isStrictAboutTestsThatDoNotTestAnything, 'isStrictAboutOutputDuringTests' => $isStrictAboutOutputDuringTests, 'enforcesTimeLimit' => $enforcesTimeLimit, 'isStrictAboutTodoAnnotatedTests' => $isStrictAboutTodoAnnotatedTests, 'isStrictAboutResourceUsageDuringSmallTests' => $isStrictAboutResourceUsageDuringSmallTests, 'codeCoverageFilter' => $codeCoverageFilter, 'configurationFilePath' => $configurationFilePath ] ); $this->prepareTemplate($template); $php = PHPUnit_Util_PHP::factory(); $php->runTestJob($template->render(), $this, $result); } else { $result->run($this); } if (isset($oldErrorHandlerSetting)) { $result->convertErrorsToExceptions($oldErrorHandlerSetting); } $this->result = null; return $result; } /** * Runs the bare test sequence. */ public function runBare() { $this->numAssertions = 0; $this->snapshotGlobalState(); $this->startOutputBuffering(); clearstatcache(); $currentWorkingDirectory = getcwd(); $hookMethods = PHPUnit_Util_Test::getHookMethods(get_class($this)); try { $hasMetRequirements = false; $this->checkRequirements(); $hasMetRequirements = true; if ($this->inIsolation) { foreach ($hookMethods['beforeClass'] as $method) { $this->$method(); } } $this->setExpectedExceptionFromAnnotation(); $this->setDoesNotPerformAssertionsFromAnnotation(); foreach ($hookMethods['before'] as $method) { $this->$method(); } $this->assertPreConditions(); $this->testResult = $this->runTest(); $this->verifyMockObjects(); $this->assertPostConditions(); if (!empty($this->warnings)) { throw new PHPUnit_Framework_Warning( implode( "\n", array_unique($this->warnings) ) ); } $this->status = PHPUnit_Runner_BaseTestRunner::STATUS_PASSED; } catch (PHPUnit_Framework_IncompleteTest $e) { $this->status = PHPUnit_Runner_BaseTestRunner::STATUS_INCOMPLETE; $this->statusMessage = $e->getMessage(); } catch (PHPUnit_Framework_SkippedTest $e) { $this->status = PHPUnit_Runner_BaseTestRunner::STATUS_SKIPPED; $this->statusMessage = $e->getMessage(); } catch (PHPUnit_Framework_Warning $e) { $this->status = PHPUnit_Runner_BaseTestRunner::STATUS_WARNING; $this->statusMessage = $e->getMessage(); } catch (PHPUnit_Framework_AssertionFailedError $e) { $this->status = PHPUnit_Runner_BaseTestRunner::STATUS_FAILURE; $this->statusMessage = $e->getMessage(); } catch (PredictionException $e) { $this->status = PHPUnit_Runner_BaseTestRunner::STATUS_FAILURE; $this->statusMessage = $e->getMessage(); } catch (Throwable $_e) { $e = $_e; } catch (Exception $_e) { $e = $_e; } // Clean up the mock objects. $this->mockObjects = []; $this->prophet = null; // Tear down the fixture. An exception raised in tearDown() will be // caught and passed on when no exception was raised before. try { if ($hasMetRequirements) { foreach ($hookMethods['after'] as $method) { $this->$method(); } if ($this->inIsolation) { foreach ($hookMethods['afterClass'] as $method) { $this->$method(); } } } } catch (Throwable $_e) { if (!isset($e)) { $e = $_e; } } catch (Exception $_e) { if (!isset($e)) { $e = $_e; } } try { $this->stopOutputBuffering(); } catch (PHPUnit_Framework_RiskyTestError $_e) { if (!isset($e)) { $e = $_e; } } if (isset($_e)) { $this->status = PHPUnit_Runner_BaseTestRunner::STATUS_ERROR; $this->statusMessage = $_e->getMessage(); } clearstatcache(); if ($currentWorkingDirectory != getcwd()) { chdir($currentWorkingDirectory); } $this->restoreGlobalState(); // Clean up INI settings. foreach ($this->iniSettings as $varName => $oldValue) { ini_set($varName, $oldValue); } $this->iniSettings = []; // Clean up locale settings. foreach ($this->locale as $category => $locale) { setlocale($category, $locale); } // Perform assertion on output. if (!isset($e)) { try { if ($this->outputExpectedRegex !== null) { $this->assertRegExp($this->outputExpectedRegex, $this->output); } elseif ($this->outputExpectedString !== null) { $this->assertEquals($this->outputExpectedString, $this->output); } } catch (Throwable $_e) { $e = $_e; } catch (Exception $_e) { $e = $_e; } } // Workaround for missing "finally". if (isset($e)) { if ($e instanceof PredictionException) { $e = new PHPUnit_Framework_AssertionFailedError($e->getMessage()); } $this->onNotSuccessfulTest($e); } } /** * Override to run the test and assert its state. * * @return mixed * * @throws Exception|PHPUnit_Framework_Exception * @throws PHPUnit_Framework_Exception */ protected function runTest() { if ($this->name === null) { throw new PHPUnit_Framework_Exception( 'PHPUnit_Framework_TestCase::$name must not be null.' ); } try { $class = new ReflectionClass($this); $method = $class->getMethod($this->name); } catch (ReflectionException $e) { $this->fail($e->getMessage()); } $testArguments = array_merge($this->data, $this->dependencyInput); $this->registerMockObjectsFromTestArguments($testArguments); try { $testResult = $method->invokeArgs($this, $testArguments); } catch (Throwable $_e) { $e = $_e; } catch (Exception $_e) { $e = $_e; } if (isset($e)) { $checkException = false; if (!($e instanceof PHPUnit_Framework_SkippedTestError) && is_string($this->expectedException)) { $checkException = true; if ($e instanceof PHPUnit_Framework_Exception) { $checkException = false; } $reflector = new ReflectionClass($this->expectedException); if ($this->expectedException === 'PHPUnit_Framework_Exception' || $this->expectedException === '\PHPUnit_Framework_Exception' || $reflector->isSubclassOf('PHPUnit_Framework_Exception')) { $checkException = true; } } if ($checkException) { $this->assertThat( $e, new PHPUnit_Framework_Constraint_Exception( $this->expectedException ) ); if ($this->expectedExceptionMessage !== null) { $this->assertThat( $e, new PHPUnit_Framework_Constraint_ExceptionMessage( $this->expectedExceptionMessage ) ); } if ($this->expectedExceptionMessageRegExp !== null) { $this->assertThat( $e, new PHPUnit_Framework_Constraint_ExceptionMessageRegExp( $this->expectedExceptionMessageRegExp ) ); } if ($this->expectedExceptionCode !== null) { $this->assertThat( $e, new PHPUnit_Framework_Constraint_ExceptionCode( $this->expectedExceptionCode ) ); } return; } else { throw $e; } } if ($this->expectedException !== null) { $this->assertThat( null, new PHPUnit_Framework_Constraint_Exception( $this->expectedException ) ); } return $testResult; } /** * Verifies the mock object expectations. */ protected function verifyMockObjects() { foreach ($this->mockObjects as $mockObject) { if ($mockObject->__phpunit_hasMatchers()) { $this->numAssertions++; } $mockObject->__phpunit_verify( $this->shouldInvocationMockerBeReset($mockObject) ); } if ($this->prophet !== null) { try { $this->prophet->checkPredictions(); } catch (Throwable $t) { /* Intentionally left empty */ } catch (Exception $t) { /* Intentionally left empty */ } foreach ($this->prophet->getProphecies() as $objectProphecy) { foreach ($objectProphecy->getMethodProphecies() as $methodProphecies) { foreach ($methodProphecies as $methodProphecy) { $this->numAssertions += count($methodProphecy->getCheckedPredictions()); } } } if (isset($t)) { throw $t; } } } /** * Sets the name of a TestCase. * * @param string */ public function setName($name) { $this->name = $name; } /** * Sets the dependencies of a TestCase. * * @param array $dependencies */ public function setDependencies(array $dependencies) { $this->dependencies = $dependencies; } /** * Returns true if the tests has dependencies * * @return bool */ public function hasDependencies() { return count($this->dependencies) > 0; } /** * Sets * * @param array $dependencyInput */ public function setDependencyInput(array $dependencyInput) { $this->dependencyInput = $dependencyInput; } /** * @param bool $beStrictAboutChangesToGlobalState */ public function setBeStrictAboutChangesToGlobalState($beStrictAboutChangesToGlobalState) { $this->beStrictAboutChangesToGlobalState = $beStrictAboutChangesToGlobalState; } /** * Calling this method in setUp() has no effect! * * @param bool $backupGlobals */ public function setBackupGlobals($backupGlobals) { if (is_null($this->backupGlobals) && is_bool($backupGlobals)) { $this->backupGlobals = $backupGlobals; } } /** * Calling this method in setUp() has no effect! * * @param bool $backupStaticAttributes */ public function setBackupStaticAttributes($backupStaticAttributes) { if (is_null($this->backupStaticAttributes) && is_bool($backupStaticAttributes)) { $this->backupStaticAttributes = $backupStaticAttributes; } } /** * @param bool $runTestInSeparateProcess * * @throws PHPUnit_Framework_Exception */ public function setRunTestInSeparateProcess($runTestInSeparateProcess) { if (is_bool($runTestInSeparateProcess)) { if ($this->runTestInSeparateProcess === null) { $this->runTestInSeparateProcess = $runTestInSeparateProcess; } } else { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean'); } } /** * @param bool $preserveGlobalState * * @throws PHPUnit_Framework_Exception */ public function setPreserveGlobalState($preserveGlobalState) { if (is_bool($preserveGlobalState)) { $this->preserveGlobalState = $preserveGlobalState; } else { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean'); } } /** * @param bool $inIsolation * * @throws PHPUnit_Framework_Exception */ public function setInIsolation($inIsolation) { if (is_bool($inIsolation)) { $this->inIsolation = $inIsolation; } else { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean'); } } /** * @return bool */ public function isInIsolation() { return $this->inIsolation; } /** * @return mixed */ public function getResult() { return $this->testResult; } /** * @param mixed $result */ public function setResult($result) { $this->testResult = $result; } /** * @param callable $callback * * @throws PHPUnit_Framework_Exception */ public function setOutputCallback($callback) { if (!is_callable($callback)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'callback'); } $this->outputCallback = $callback; } /** * @return PHPUnit_Framework_TestResult */ public function getTestResultObject() { return $this->result; } /** * @param PHPUnit_Framework_TestResult $result */ public function setTestResultObject(PHPUnit_Framework_TestResult $result) { $this->result = $result; } /** * @param PHPUnit_Framework_MockObject_MockObject $mockObject */ public function registerMockObject(PHPUnit_Framework_MockObject_MockObject $mockObject) { $this->mockObjects[] = $mockObject; } /** * This method is a wrapper for the ini_set() function that automatically * resets the modified php.ini setting to its original value after the * test is run. * * @param string $varName * @param string $newValue * * @throws PHPUnit_Framework_Exception */ protected function iniSet($varName, $newValue) { if (!is_string($varName)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string'); } $currentValue = ini_set($varName, $newValue); if ($currentValue !== false) { $this->iniSettings[$varName] = $currentValue; } else { throw new PHPUnit_Framework_Exception( sprintf( 'INI setting "%s" could not be set to "%s".', $varName, $newValue ) ); } } /** * This method is a wrapper for the setlocale() function that automatically * resets the locale to its original value after the test is run. * * @param int $category * @param string $locale * * @throws PHPUnit_Framework_Exception */ protected function setLocale() { $args = func_get_args(); if (count($args) < 2) { throw new PHPUnit_Framework_Exception; } $category = $args[0]; $locale = $args[1]; $categories = [ LC_ALL, LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC, LC_TIME ]; if (defined('LC_MESSAGES')) { $categories[] = LC_MESSAGES; } if (!in_array($category, $categories)) { throw new PHPUnit_Framework_Exception; } if (!is_array($locale) && !is_string($locale)) { throw new PHPUnit_Framework_Exception; } $this->locale[$category] = setlocale($category, 0); $result = call_user_func_array('setlocale', $args); if ($result === false) { throw new PHPUnit_Framework_Exception( 'The locale functionality is not implemented on your platform, ' . 'the specified locale does not exist or the category name is ' . 'invalid.' ); } } /** * Returns a builder object to create mock objects using a fluent interface. * * @param string|string[] $className * * @return PHPUnit_Framework_MockObject_MockBuilder */ public function getMockBuilder($className) { return new PHPUnit_Framework_MockObject_MockBuilder($this, $className); } /** * Returns a test double for the specified class. * * @param string $originalClassName * * @return PHPUnit_Framework_MockObject_MockObject * * @throws PHPUnit_Framework_Exception */ protected function createMock($originalClassName) { return $this->getMockBuilder($originalClassName) ->disableOriginalConstructor() ->disableOriginalClone() ->disableArgumentCloning() ->disallowMockingUnknownTypes() ->getMock(); } /** * Returns a configured test double for the specified class. * * @param string $originalClassName * @param array $configuration * * @return PHPUnit_Framework_MockObject_MockObject * * @throws PHPUnit_Framework_Exception */ protected function createConfiguredMock($originalClassName, array $configuration) { $o = $this->createMock($originalClassName); foreach ($configuration as $method => $return) { $o->method($method)->willReturn($return); } return $o; } /** * Returns a partial test double for the specified class. * * @param string $originalClassName * @param array $methods * * @return PHPUnit_Framework_MockObject_MockObject * * @throws PHPUnit_Framework_Exception */ protected function createPartialMock($originalClassName, array $methods) { return $this->getMockBuilder($originalClassName) ->disableOriginalConstructor() ->disableOriginalClone() ->disableArgumentCloning() ->disallowMockingUnknownTypes() ->setMethods(empty($methods) ? null : $methods) ->getMock(); } /** * Returns a mock object for the specified class. * * @param string $originalClassName Name of the class to mock. * @param array|null $methods When provided, only methods whose names are in the array * are replaced with a configurable test double. The behavior * of the other methods is not changed. * Providing null means that no methods will be replaced. * @param array $arguments Parameters to pass to the original class' constructor. * @param string $mockClassName Class name for the generated test double class. * @param bool $callOriginalConstructor Can be used to disable the call to the original class' constructor. * @param bool $callOriginalClone Can be used to disable the call to the original class' clone constructor. * @param bool $callAutoload Can be used to disable __autoload() during the generation of the test double class. * @param bool $cloneArguments * @param bool $callOriginalMethods * @param object $proxyTarget * * @return PHPUnit_Framework_MockObject_MockObject * * @throws PHPUnit_Framework_Exception * * @deprecated Method deprecated since Release 5.4.0; use createMock() or getMockBuilder() instead */ protected function getMock($originalClassName, $methods = [], array $arguments = [], $mockClassName = '', $callOriginalConstructor = true, $callOriginalClone = true, $callAutoload = true, $cloneArguments = false, $callOriginalMethods = false, $proxyTarget = null) { $this->warnings[] = 'PHPUnit_Framework_TestCase::getMock() is deprecated, use PHPUnit_Framework_TestCase::createMock() or PHPUnit_Framework_TestCase::getMockBuilder() instead'; $mockObject = $this->getMockObjectGenerator()->getMock( $originalClassName, $methods, $arguments, $mockClassName, $callOriginalConstructor, $callOriginalClone, $callAutoload, $cloneArguments, $callOriginalMethods, $proxyTarget ); $this->registerMockObject($mockObject); return $mockObject; } /** * Returns a mock with disabled constructor object for the specified class. * * @param string $originalClassName * * @return PHPUnit_Framework_MockObject_MockObject * * @throws PHPUnit_Framework_Exception * * @deprecated Method deprecated since Release 5.4.0; use createMock() instead */ protected function getMockWithoutInvokingTheOriginalConstructor($originalClassName) { $this->warnings[] = 'PHPUnit_Framework_TestCase::getMockWithoutInvokingTheOriginalConstructor() is deprecated, use PHPUnit_Framework_TestCase::createMock() instead'; return $this->getMockBuilder($originalClassName) ->disableOriginalConstructor() ->getMock(); } /** * Mocks the specified class and returns the name of the mocked class. * * @param string $originalClassName * @param array $methods * @param array $arguments * @param string $mockClassName * @param bool $callOriginalConstructor * @param bool $callOriginalClone * @param bool $callAutoload * @param bool $cloneArguments * * @return string * * @throws PHPUnit_Framework_Exception */ protected function getMockClass($originalClassName, $methods = [], array $arguments = [], $mockClassName = '', $callOriginalConstructor = false, $callOriginalClone = true, $callAutoload = true, $cloneArguments = false) { $mock = $this->getMockObjectGenerator()->getMock( $originalClassName, $methods, $arguments, $mockClassName, $callOriginalConstructor, $callOriginalClone, $callAutoload, $cloneArguments ); return get_class($mock); } /** * Returns a mock object for the specified abstract class with all abstract * methods of the class mocked. Concrete methods are not mocked by default. * To mock concrete methods, use the 7th parameter ($mockedMethods). * * @param string $originalClassName * @param array $arguments * @param string $mockClassName * @param bool $callOriginalConstructor * @param bool $callOriginalClone * @param bool $callAutoload * @param array $mockedMethods * @param bool $cloneArguments * * @return PHPUnit_Framework_MockObject_MockObject * * @throws PHPUnit_Framework_Exception */ protected function getMockForAbstractClass($originalClassName, array $arguments = [], $mockClassName = '', $callOriginalConstructor = true, $callOriginalClone = true, $callAutoload = true, $mockedMethods = [], $cloneArguments = false) { $mockObject = $this->getMockObjectGenerator()->getMockForAbstractClass( $originalClassName, $arguments, $mockClassName, $callOriginalConstructor, $callOriginalClone, $callAutoload, $mockedMethods, $cloneArguments ); $this->registerMockObject($mockObject); return $mockObject; } /** * Returns a mock object based on the given WSDL file. * * @param string $wsdlFile * @param string $originalClassName * @param string $mockClassName * @param array $methods * @param bool $callOriginalConstructor * @param array $options An array of options passed to SOAPClient::_construct * * @return PHPUnit_Framework_MockObject_MockObject */ protected function getMockFromWsdl($wsdlFile, $originalClassName = '', $mockClassName = '', array $methods = [], $callOriginalConstructor = true, array $options = []) { if ($originalClassName === '') { $originalClassName = pathinfo(basename(parse_url($wsdlFile)['path']), PATHINFO_FILENAME); } if (!class_exists($originalClassName)) { eval( $this->getMockObjectGenerator()->generateClassFromWsdl( $wsdlFile, $originalClassName, $methods, $options ) ); } $mockObject = $this->getMockObjectGenerator()->getMock( $originalClassName, $methods, ['', $options], $mockClassName, $callOriginalConstructor, false, false ); $this->registerMockObject($mockObject); return $mockObject; } /** * Returns a mock object for the specified trait with all abstract methods * of the trait mocked. Concrete methods to mock can be specified with the * `$mockedMethods` parameter. * * @param string $traitName * @param array $arguments * @param string $mockClassName * @param bool $callOriginalConstructor * @param bool $callOriginalClone * @param bool $callAutoload * @param array $mockedMethods * @param bool $cloneArguments * * @return PHPUnit_Framework_MockObject_MockObject * * @throws PHPUnit_Framework_Exception */ protected function getMockForTrait($traitName, array $arguments = [], $mockClassName = '', $callOriginalConstructor = true, $callOriginalClone = true, $callAutoload = true, $mockedMethods = [], $cloneArguments = false) { $mockObject = $this->getMockObjectGenerator()->getMockForTrait( $traitName, $arguments, $mockClassName, $callOriginalConstructor, $callOriginalClone, $callAutoload, $mockedMethods, $cloneArguments ); $this->registerMockObject($mockObject); return $mockObject; } /** * Returns an object for the specified trait. * * @param string $traitName * @param array $arguments * @param string $traitClassName * @param bool $callOriginalConstructor * @param bool $callOriginalClone * @param bool $callAutoload * @param bool $cloneArguments * * @return object * * @throws PHPUnit_Framework_Exception */ protected function getObjectForTrait($traitName, array $arguments = [], $traitClassName = '', $callOriginalConstructor = true, $callOriginalClone = true, $callAutoload = true, $cloneArguments = false) { return $this->getMockObjectGenerator()->getObjectForTrait( $traitName, $arguments, $traitClassName, $callOriginalConstructor, $callOriginalClone, $callAutoload, $cloneArguments ); } /** * @param string|null $classOrInterface * * @return \Prophecy\Prophecy\ObjectProphecy * * @throws \LogicException */ protected function prophesize($classOrInterface = null) { return $this->getProphet()->prophesize($classOrInterface); } /** * Adds a value to the assertion counter. * * @param int $count */ public function addToAssertionCount($count) { $this->numAssertions += $count; } /** * Returns the number of assertions performed by this test. * * @return int */ public function getNumAssertions() { return $this->numAssertions; } /** * Returns a matcher that matches when the method is executed * zero or more times. * * @return PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount */ public static function any() { return new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount; } /** * Returns a matcher that matches when the method is never executed. * * @return PHPUnit_Framework_MockObject_Matcher_InvokedCount */ public static function never() { return new PHPUnit_Framework_MockObject_Matcher_InvokedCount(0); } /** * Returns a matcher that matches when the method is executed * at least N times. * * @param int $requiredInvocations * * @return PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastCount */ public static function atLeast($requiredInvocations) { return new PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastCount( $requiredInvocations ); } /** * Returns a matcher that matches when the method is executed at least once. * * @return PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastOnce */ public static function atLeastOnce() { return new PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastOnce; } /** * Returns a matcher that matches when the method is executed exactly once. * * @return PHPUnit_Framework_MockObject_Matcher_InvokedCount */ public static function once() { return new PHPUnit_Framework_MockObject_Matcher_InvokedCount(1); } /** * Returns a matcher that matches when the method is executed * exactly $count times. * * @param int $count * * @return PHPUnit_Framework_MockObject_Matcher_InvokedCount */ public static function exactly($count) { return new PHPUnit_Framework_MockObject_Matcher_InvokedCount($count); } /** * Returns a matcher that matches when the method is executed * at most N times. * * @param int $allowedInvocations * * @return PHPUnit_Framework_MockObject_Matcher_InvokedAtMostCount */ public static function atMost($allowedInvocations) { return new PHPUnit_Framework_MockObject_Matcher_InvokedAtMostCount( $allowedInvocations ); } /** * Returns a matcher that matches when the method is executed * at the given index. * * @param int $index * * @return PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex */ public static function at($index) { return new PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex($index); } /** * @param mixed $value * * @return PHPUnit_Framework_MockObject_Stub_Return */ public static function returnValue($value) { return new PHPUnit_Framework_MockObject_Stub_Return($value); } /** * @param array $valueMap * * @return PHPUnit_Framework_MockObject_Stub_ReturnValueMap */ public static function returnValueMap(array $valueMap) { return new PHPUnit_Framework_MockObject_Stub_ReturnValueMap($valueMap); } /** * @param int $argumentIndex * * @return PHPUnit_Framework_MockObject_Stub_ReturnArgument */ public static function returnArgument($argumentIndex) { return new PHPUnit_Framework_MockObject_Stub_ReturnArgument( $argumentIndex ); } /** * @param mixed $callback * * @return PHPUnit_Framework_MockObject_Stub_ReturnCallback */ public static function returnCallback($callback) { return new PHPUnit_Framework_MockObject_Stub_ReturnCallback($callback); } /** * Returns the current object. * * This method is useful when mocking a fluent interface. * * @return PHPUnit_Framework_MockObject_Stub_ReturnSelf */ public static function returnSelf() { return new PHPUnit_Framework_MockObject_Stub_ReturnSelf(); } /** * @param Throwable|Exception $exception * * @return PHPUnit_Framework_MockObject_Stub_Exception * * @todo Add type declaration when support for PHP 5 is dropped */ public static function throwException($exception) { return new PHPUnit_Framework_MockObject_Stub_Exception($exception); } /** * @param mixed $value, ... * * @return PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls */ public static function onConsecutiveCalls() { $args = func_get_args(); return new PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls($args); } /** * @return bool */ public function usesDataProvider() { return !empty($this->data); } /** * @return string */ public function dataDescription() { return is_string($this->dataName) ? $this->dataName : ''; } /** * Gets the data set description of a TestCase. * * @param bool $includeData * * @return string */ protected function getDataSetAsString($includeData = true) { $buffer = ''; if (!empty($this->data)) { if (is_int($this->dataName)) { $buffer .= sprintf(' with data set #%d', $this->dataName); } else { $buffer .= sprintf(' with data set "%s"', $this->dataName); } $exporter = new Exporter; if ($includeData) { $buffer .= sprintf(' (%s)', $exporter->shortenedRecursiveExport($this->data)); } } return $buffer; } /** * Gets the data set of a TestCase. * * @return array */ protected function getProvidedData() { return $this->data; } /** * Creates a default TestResult object. * * @return PHPUnit_Framework_TestResult */ protected function createResult() { return new PHPUnit_Framework_TestResult; } protected function handleDependencies() { if (!empty($this->dependencies) && !$this->inIsolation) { $className = get_class($this); $passed = $this->result->passed(); $passedKeys = array_keys($passed); $numKeys = count($passedKeys); for ($i = 0; $i < $numKeys; $i++) { $pos = strpos($passedKeys[$i], ' with data set'); if ($pos !== false) { $passedKeys[$i] = substr($passedKeys[$i], 0, $pos); } } $passedKeys = array_flip(array_unique($passedKeys)); foreach ($this->dependencies as $dependency) { $clone = false; if (strpos($dependency, 'clone ') === 0) { $clone = true; $dependency = substr($dependency, strlen('clone ')); } elseif (strpos($dependency, '!clone ') === 0) { $clone = false; $dependency = substr($dependency, strlen('!clone ')); } if (strpos($dependency, '::') === false) { $dependency = $className . '::' . $dependency; } if (!isset($passedKeys[$dependency])) { $this->result->startTest($this); $this->result->addError( $this, new PHPUnit_Framework_SkippedTestError( sprintf( 'This test depends on "%s" to pass.', $dependency ) ), 0 ); $this->result->endTest($this, 0); return false; } if (isset($passed[$dependency])) { if ($passed[$dependency]['size'] != PHPUnit_Util_Test::UNKNOWN && $this->getSize() != PHPUnit_Util_Test::UNKNOWN && $passed[$dependency]['size'] > $this->getSize()) { $this->result->addError( $this, new PHPUnit_Framework_SkippedTestError( 'This test depends on a test that is larger than itself.' ), 0 ); return false; } if ($clone) { $deepCopy = new DeepCopy; $deepCopy->skipUncloneable(false); $this->dependencyInput[$dependency] = $deepCopy->copy($passed[$dependency]['result']); } else { $this->dependencyInput[$dependency] = $passed[$dependency]['result']; } } else { $this->dependencyInput[$dependency] = null; } } } return true; } /** * This method is called before the first test of this test class is run. */ public static function setUpBeforeClass() { } /** * Sets up the fixture, for example, open a network connection. * This method is called before a test is executed. */ protected function setUp() { } /** * Performs assertions shared by all tests of a test case. * * This method is called before the execution of a test starts * and after setUp() is called. */ protected function assertPreConditions() { } /** * Performs assertions shared by all tests of a test case. * * This method is called after the execution of a test ends * and before tearDown() is called. */ protected function assertPostConditions() { } /** * Tears down the fixture, for example, close a network connection. * This method is called after a test is executed. */ protected function tearDown() { } /** * This method is called after the last test of this test class is run. */ public static function tearDownAfterClass() { } /** * This method is called when a test method did not execute successfully. * * @param Exception|Throwable $e * * @throws Exception|Throwable */ protected function onNotSuccessfulTest($e) { $expected = PHP_MAJOR_VERSION >= 7 ? 'Throwable' : 'Exception'; if ($e instanceof $expected) { throw $e; } throw PHPUnit_Util_InvalidArgumentHelper::factory( 1, 'Throwable or Exception' ); } /** * Performs custom preparations on the process isolation template. * * @param Text_Template $template */ protected function prepareTemplate(Text_Template $template) { } /** * Get the mock object generator, creating it if it doesn't exist. * * @return PHPUnit_Framework_MockObject_Generator */ protected function getMockObjectGenerator() { if (null === $this->mockObjectGenerator) { $this->mockObjectGenerator = new PHPUnit_Framework_MockObject_Generator; } return $this->mockObjectGenerator; } private function startOutputBuffering() { ob_start(); $this->outputBufferingActive = true; $this->outputBufferingLevel = ob_get_level(); } private function stopOutputBuffering() { if (ob_get_level() != $this->outputBufferingLevel) { while (ob_get_level() >= $this->outputBufferingLevel) { ob_end_clean(); } throw new PHPUnit_Framework_RiskyTestError( 'Test code or tested code did not (only) close its own output buffers' ); } $output = ob_get_contents(); if ($this->outputCallback === false) { $this->output = $output; } else { $this->output = call_user_func_array( $this->outputCallback, [$output] ); } ob_end_clean(); $this->outputBufferingActive = false; $this->outputBufferingLevel = ob_get_level(); } private function snapshotGlobalState() { $backupGlobals = $this->backupGlobals === null || $this->backupGlobals === true; if ($this->runTestInSeparateProcess || $this->inIsolation || (!$backupGlobals && !$this->backupStaticAttributes)) { return; } $this->snapshot = $this->createGlobalStateSnapshot($backupGlobals); } private function restoreGlobalState() { if (!$this->snapshot instanceof Snapshot) { return; } $backupGlobals = $this->backupGlobals === null || $this->backupGlobals === true; if ($this->beStrictAboutChangesToGlobalState) { try { $this->compareGlobalStateSnapshots( $this->snapshot, $this->createGlobalStateSnapshot($backupGlobals) ); } catch (PHPUnit_Framework_RiskyTestError $rte) { // Intentionally left empty } } $restorer = new Restorer; if ($backupGlobals) { $restorer->restoreGlobalVariables($this->snapshot); } if ($this->backupStaticAttributes) { $restorer->restoreStaticAttributes($this->snapshot); } $this->snapshot = null; if (isset($rte)) { throw $rte; } } /** * @param bool $backupGlobals * * @return Snapshot */ private function createGlobalStateSnapshot($backupGlobals) { $blacklist = new Blacklist; foreach ($this->backupGlobalsBlacklist as $globalVariable) { $blacklist->addGlobalVariable($globalVariable); } if (!defined('PHPUNIT_TESTSUITE')) { $blacklist->addClassNamePrefix('PHPUnit'); $blacklist->addClassNamePrefix('File_Iterator'); $blacklist->addClassNamePrefix('SebastianBergmann\CodeCoverage'); $blacklist->addClassNamePrefix('PHP_Invoker'); $blacklist->addClassNamePrefix('PHP_Timer'); $blacklist->addClassNamePrefix('PHP_Token'); $blacklist->addClassNamePrefix('Symfony'); $blacklist->addClassNamePrefix('Text_Template'); $blacklist->addClassNamePrefix('Doctrine\Instantiator'); $blacklist->addClassNamePrefix('Prophecy'); foreach ($this->backupStaticAttributesBlacklist as $class => $attributes) { foreach ($attributes as $attribute) { $blacklist->addStaticAttribute($class, $attribute); } } } return new Snapshot( $blacklist, $backupGlobals, (bool) $this->backupStaticAttributes, false, false, false, false, false, false, false ); } /** * @param Snapshot $before * @param Snapshot $after * * @throws PHPUnit_Framework_RiskyTestError */ private function compareGlobalStateSnapshots(Snapshot $before, Snapshot $after) { $backupGlobals = $this->backupGlobals === null || $this->backupGlobals === true; if ($backupGlobals) { $this->compareGlobalStateSnapshotPart( $before->globalVariables(), $after->globalVariables(), "--- Global variables before the test\n+++ Global variables after the test\n" ); $this->compareGlobalStateSnapshotPart( $before->superGlobalVariables(), $after->superGlobalVariables(), "--- Super-global variables before the test\n+++ Super-global variables after the test\n" ); } if ($this->backupStaticAttributes) { $this->compareGlobalStateSnapshotPart( $before->staticAttributes(), $after->staticAttributes(), "--- Static attributes before the test\n+++ Static attributes after the test\n" ); } } /** * @param array $before * @param array $after * @param string $header * * @throws PHPUnit_Framework_RiskyTestError */ private function compareGlobalStateSnapshotPart(array $before, array $after, $header) { if ($before != $after) { $differ = new Differ($header); $exporter = new Exporter; $diff = $differ->diff( $exporter->export($before), $exporter->export($after) ); throw new PHPUnit_Framework_RiskyTestError( $diff ); } } /** * @return Prophecy\Prophet */ private function getProphet() { if ($this->prophet === null) { $this->prophet = new Prophet; } return $this->prophet; } /** * @param PHPUnit_Framework_MockObject_MockObject $mock * * @return bool */ private function shouldInvocationMockerBeReset(PHPUnit_Framework_MockObject_MockObject $mock) { $enumerator = new Enumerator; foreach ($enumerator->enumerate($this->dependencyInput) as $object) { if ($mock === $object) { return false; } } if (!is_array($this->testResult) && !is_object($this->testResult)) { return true; } foreach ($enumerator->enumerate($this->testResult) as $object) { if ($mock === $object) { return false; } } return true; } /** * @param array $testArguments * @param array $originalTestArguments */ private function registerMockObjectsFromTestArguments(array $testArguments, array &$visited = []) { if ($this->registerMockObjectsFromTestArgumentsRecursively) { $enumerator = new Enumerator; foreach ($enumerator->enumerate($testArguments) as $object) { if ($object instanceof PHPUnit_Framework_MockObject_MockObject) { $this->registerMockObject($object); } } } else { foreach ($testArguments as $testArgument) { if ($testArgument instanceof PHPUnit_Framework_MockObject_MockObject) { if ($this->isCloneable($testArgument)) { $testArgument = clone $testArgument; } $this->registerMockObject($testArgument); } elseif (is_array($testArgument) && !in_array($testArgument, $visited, true)) { $visited[] = $testArgument; $this->registerMockObjectsFromTestArguments( $testArgument, $visited ); } } } } private function setDoesNotPerformAssertionsFromAnnotation() { $annotations = $this->getAnnotations(); if (isset($annotations['method']['doesNotPerformAssertions'])) { $this->doesNotPerformAssertions = true; } } /** * @param PHPUnit_Framework_MockObject_MockObject $testArgument * * @return bool */ private function isCloneable(PHPUnit_Framework_MockObject_MockObject $testArgument) { $reflector = new ReflectionObject($testArgument); if (!$reflector->isCloneable()) { return false; } if ($reflector->hasMethod('__clone') && $reflector->getMethod('__clone')->isPublic()) { return true; } return false; } } PK!y src/Framework/IncompleteTest.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * A marker interface for marking any exception/error as result of an unit * test as incomplete implementation or currently not implemented. */ interface PHPUnit_Framework_IncompleteTest { } PK!zl src/Framework/SelfDescribing.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Interface for classes that can return a description of itself. */ interface PHPUnit_Framework_SelfDescribing { /** * Returns a string representation of the object. * * @return string */ public function toString(); } PK!yj"src/Framework/TestFailure.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * A TestFailure collects a failed test together with the caught exception. */ class PHPUnit_Framework_TestFailure { /** * @var string */ private $testName; /** * @var PHPUnit_Framework_Test|null */ protected $failedTest; /** * @var Exception */ protected $thrownException; /** * Constructs a TestFailure with the given test and exception. * * @param PHPUnit_Framework_Test $failedTest * @param Throwable $t */ public function __construct(PHPUnit_Framework_Test $failedTest, $t) { if ($failedTest instanceof PHPUnit_Framework_SelfDescribing) { $this->testName = $failedTest->toString(); } else { $this->testName = get_class($failedTest); } if (!$failedTest instanceof PHPUnit_Framework_TestCase || !$failedTest->isInIsolation()) { $this->failedTest = $failedTest; } $this->thrownException = $t; } /** * Returns a short description of the failure. * * @return string */ public function toString() { return sprintf( '%s: %s', $this->testName, $this->thrownException->getMessage() ); } /** * Returns a description for the thrown exception. * * @return string */ public function getExceptionAsString() { return self::exceptionToString($this->thrownException); } /** * Returns a description for an exception. * * @param Exception $e * * @return string */ public static function exceptionToString(Exception $e) { if ($e instanceof PHPUnit_Framework_SelfDescribing) { $buffer = $e->toString(); if ($e instanceof PHPUnit_Framework_ExpectationFailedException && $e->getComparisonFailure()) { $buffer = $buffer . $e->getComparisonFailure()->getDiff(); } if (!empty($buffer)) { $buffer = trim($buffer) . "\n"; } } elseif ($e instanceof PHPUnit_Framework_Error) { $buffer = $e->getMessage() . "\n"; } elseif ($e instanceof PHPUnit_Framework_ExceptionWrapper) { $buffer = $e->getClassName() . ': ' . $e->getMessage() . "\n"; } else { $buffer = get_class($e) . ': ' . $e->getMessage() . "\n"; } return $buffer; } /** * Returns the name of the failing test (including data set, if any). * * @return string */ public function getTestName() { return $this->testName; } /** * Returns the failing test. * * Note: The test object is not set when the test is executed in process * isolation. * * @see PHPUnit_Framework_Exception * * @return PHPUnit_Framework_Test|null */ public function failedTest() { return $this->failedTest; } /** * Gets the thrown exception. * * @return Exception */ public function thrownException() { return $this->thrownException; } /** * Returns the exception's message. * * @return string */ public function exceptionMessage() { return $this->thrownException()->getMessage(); } /** * Returns true if the thrown exception * is of type AssertionFailedError. * * @return bool */ public function isFailure() { return ($this->thrownException() instanceof PHPUnit_Framework_AssertionFailedError); } } PK!,99src/Exception.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Marker interface for PHPUnit exceptions. */ interface PHPUnit_Exception { } PK!)22src/Util/Log/JUnit.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * A TestListener that generates a logfile of the test execution in XML markup. * * The XML markup used is the same as the one that is used by the JUnit Ant task. */ class PHPUnit_Util_Log_JUnit extends PHPUnit_Util_Printer implements PHPUnit_Framework_TestListener { /** * @var DOMDocument */ protected $document; /** * @var DOMElement */ protected $root; /** * @var bool */ protected $logIncompleteSkipped = false; /** * @var bool */ protected $writeDocument = true; /** * @var DOMElement[] */ protected $testSuites = []; /** * @var int[] */ protected $testSuiteTests = [0]; /** * @var int[] */ protected $testSuiteAssertions = [0]; /** * @var int[] */ protected $testSuiteErrors = [0]; /** * @var int[] */ protected $testSuiteFailures = [0]; /** * @var int[] */ protected $testSuiteTimes = [0]; /** * @var int */ protected $testSuiteLevel = 0; /** * @var DOMElement */ protected $currentTestCase = null; /** * @var bool */ protected $attachCurrentTestCase = true; /** * Constructor. * * @param mixed $out * @param bool $logIncompleteSkipped */ public function __construct($out = null, $logIncompleteSkipped = false) { $this->document = new DOMDocument('1.0', 'UTF-8'); $this->document->formatOutput = true; $this->root = $this->document->createElement('testsuites'); $this->document->appendChild($this->root); parent::__construct($out); $this->logIncompleteSkipped = $logIncompleteSkipped; } /** * Flush buffer and close output. */ public function flush() { if ($this->writeDocument === true) { $this->write($this->getXML()); } parent::flush(); } /** * An error occurred. * * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time */ public function addError(PHPUnit_Framework_Test $test, Exception $e, $time) { $this->doAddFault($test, $e, $time, 'error'); $this->testSuiteErrors[$this->testSuiteLevel]++; } /** * A warning occurred. * * @param PHPUnit_Framework_Test $test * @param PHPUnit_Framework_Warning $e * @param float $time */ public function addWarning(PHPUnit_Framework_Test $test, PHPUnit_Framework_Warning $e, $time) { if (!$this->logIncompleteSkipped) { return; } $this->doAddFault($test, $e, $time, 'warning'); $this->testSuiteFailures[$this->testSuiteLevel]++; } /** * A failure occurred. * * @param PHPUnit_Framework_Test $test * @param PHPUnit_Framework_AssertionFailedError $e * @param float $time */ public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time) { $this->doAddFault($test, $e, $time, 'failure'); $this->testSuiteFailures[$this->testSuiteLevel]++; } /** * Incomplete test. * * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time */ public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time) { if ($this->logIncompleteSkipped && $this->currentTestCase !== null) { $error = $this->document->createElement( 'error', PHPUnit_Util_XML::prepareString( "Incomplete Test\n" . PHPUnit_Util_Filter::getFilteredStacktrace($e) ) ); $error->setAttribute('type', get_class($e)); $this->currentTestCase->appendChild($error); $this->testSuiteErrors[$this->testSuiteLevel]++; } else { $this->attachCurrentTestCase = false; } } /** * Risky test. * * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time */ public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time) { if ($this->logIncompleteSkipped && $this->currentTestCase !== null) { $error = $this->document->createElement( 'error', PHPUnit_Util_XML::prepareString( "Risky Test\n" . PHPUnit_Util_Filter::getFilteredStacktrace($e) ) ); $error->setAttribute('type', get_class($e)); $this->currentTestCase->appendChild($error); $this->testSuiteErrors[$this->testSuiteLevel]++; } else { $this->attachCurrentTestCase = false; } } /** * Skipped test. * * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time */ public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time) { if ($this->logIncompleteSkipped && $this->currentTestCase !== null) { $error = $this->document->createElement( 'error', PHPUnit_Util_XML::prepareString( "Skipped Test\n" . PHPUnit_Util_Filter::getFilteredStacktrace($e) ) ); $error->setAttribute('type', get_class($e)); $this->currentTestCase->appendChild($error); $this->testSuiteErrors[$this->testSuiteLevel]++; } else { $this->attachCurrentTestCase = false; } } /** * A testsuite started. * * @param PHPUnit_Framework_TestSuite $suite */ public function startTestSuite(PHPUnit_Framework_TestSuite $suite) { $testSuite = $this->document->createElement('testsuite'); $testSuite->setAttribute('name', $suite->getName()); if (class_exists($suite->getName(), false)) { try { $class = new ReflectionClass($suite->getName()); $testSuite->setAttribute('file', $class->getFileName()); } catch (ReflectionException $e) { } } if ($this->testSuiteLevel > 0) { $this->testSuites[$this->testSuiteLevel]->appendChild($testSuite); } else { $this->root->appendChild($testSuite); } $this->testSuiteLevel++; $this->testSuites[$this->testSuiteLevel] = $testSuite; $this->testSuiteTests[$this->testSuiteLevel] = 0; $this->testSuiteAssertions[$this->testSuiteLevel] = 0; $this->testSuiteErrors[$this->testSuiteLevel] = 0; $this->testSuiteFailures[$this->testSuiteLevel] = 0; $this->testSuiteTimes[$this->testSuiteLevel] = 0; } /** * A testsuite ended. * * @param PHPUnit_Framework_TestSuite $suite */ public function endTestSuite(PHPUnit_Framework_TestSuite $suite) { $this->testSuites[$this->testSuiteLevel]->setAttribute( 'tests', $this->testSuiteTests[$this->testSuiteLevel] ); $this->testSuites[$this->testSuiteLevel]->setAttribute( 'assertions', $this->testSuiteAssertions[$this->testSuiteLevel] ); $this->testSuites[$this->testSuiteLevel]->setAttribute( 'failures', $this->testSuiteFailures[$this->testSuiteLevel] ); $this->testSuites[$this->testSuiteLevel]->setAttribute( 'errors', $this->testSuiteErrors[$this->testSuiteLevel] ); $this->testSuites[$this->testSuiteLevel]->setAttribute( 'time', sprintf('%F', $this->testSuiteTimes[$this->testSuiteLevel]) ); if ($this->testSuiteLevel > 1) { $this->testSuiteTests[$this->testSuiteLevel - 1] += $this->testSuiteTests[$this->testSuiteLevel]; $this->testSuiteAssertions[$this->testSuiteLevel - 1] += $this->testSuiteAssertions[$this->testSuiteLevel]; $this->testSuiteErrors[$this->testSuiteLevel - 1] += $this->testSuiteErrors[$this->testSuiteLevel]; $this->testSuiteFailures[$this->testSuiteLevel - 1] += $this->testSuiteFailures[$this->testSuiteLevel]; $this->testSuiteTimes[$this->testSuiteLevel - 1] += $this->testSuiteTimes[$this->testSuiteLevel]; } $this->testSuiteLevel--; } /** * A test started. * * @param PHPUnit_Framework_Test $test */ public function startTest(PHPUnit_Framework_Test $test) { $testCase = $this->document->createElement('testcase'); $testCase->setAttribute('name', $test->getName()); if ($test instanceof PHPUnit_Framework_TestCase) { $class = new ReflectionClass($test); $methodName = $test->getName(); if ($class->hasMethod($methodName)) { $method = $class->getMethod($test->getName()); $testCase->setAttribute('class', $class->getName()); $testCase->setAttribute('file', $class->getFileName()); $testCase->setAttribute('line', $method->getStartLine()); } } $this->currentTestCase = $testCase; } /** * A test ended. * * @param PHPUnit_Framework_Test $test * @param float $time */ public function endTest(PHPUnit_Framework_Test $test, $time) { if ($this->attachCurrentTestCase) { if ($test instanceof PHPUnit_Framework_TestCase) { $numAssertions = $test->getNumAssertions(); $this->testSuiteAssertions[$this->testSuiteLevel] += $numAssertions; $this->currentTestCase->setAttribute( 'assertions', $numAssertions ); } $this->currentTestCase->setAttribute( 'time', sprintf('%F', $time) ); $this->testSuites[$this->testSuiteLevel]->appendChild( $this->currentTestCase ); $this->testSuiteTests[$this->testSuiteLevel]++; $this->testSuiteTimes[$this->testSuiteLevel] += $time; if (method_exists($test, 'hasOutput') && $test->hasOutput()) { $systemOut = $this->document->createElement('system-out'); $systemOut->appendChild( $this->document->createTextNode($test->getActualOutput()) ); $this->currentTestCase->appendChild($systemOut); } } $this->attachCurrentTestCase = true; $this->currentTestCase = null; } /** * Returns the XML as a string. * * @return string */ public function getXML() { return $this->document->saveXML(); } /** * Enables or disables the writing of the document * in flush(). * * This is a "hack" needed for the integration of * PHPUnit with Phing. * * @return string */ public function setWriteDocument($flag) { if (is_bool($flag)) { $this->writeDocument = $flag; } } /** * Method which generalizes addError() and addFailure() * * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time * @param string $type */ private function doAddFault(PHPUnit_Framework_Test $test, Exception $e, $time, $type) { if ($this->currentTestCase === null) { return; } if ($test instanceof PHPUnit_Framework_SelfDescribing) { $buffer = $test->toString() . PHP_EOL; } else { $buffer = ''; } $buffer .= PHPUnit_Framework_TestFailure::exceptionToString($e) . PHP_EOL . PHPUnit_Util_Filter::getFilteredStacktrace($e); $fault = $this->document->createElement( $type, PHPUnit_Util_XML::prepareString($buffer) ); if ($e instanceof PHPUnit_Framework_ExceptionWrapper) { $fault->setAttribute('type', $e->getClassName()); } else { $fault->setAttribute('type', get_class($e)); } $this->currentTestCase->appendChild($fault); } } PK!nrrsrc/Util/Log/TAP.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * A TestListener that generates a logfile of the * test execution using the Test Anything Protocol (TAP). */ class PHPUnit_Util_Log_TAP extends PHPUnit_Util_Printer implements PHPUnit_Framework_TestListener { /** * @var int */ protected $testNumber = 0; /** * @var int */ protected $testSuiteLevel = 0; /** * @var bool */ protected $testSuccessful = true; /** * Constructor. * * @param mixed $out * * @throws PHPUnit_Framework_Exception */ public function __construct($out = null) { parent::__construct($out); $this->write("TAP version 13\n"); } /** * An error occurred. * * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time */ public function addError(PHPUnit_Framework_Test $test, Exception $e, $time) { $this->writeNotOk($test, 'Error'); } /** * A warning occurred. * * @param PHPUnit_Framework_Test $test * @param PHPUnit_Framework_Warning $e * @param float $time */ public function addWarning(PHPUnit_Framework_Test $test, PHPUnit_Framework_Warning $e, $time) { $this->writeNotOk($test, 'Warning'); } /** * A failure occurred. * * @param PHPUnit_Framework_Test $test * @param PHPUnit_Framework_AssertionFailedError $e * @param float $time */ public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time) { $this->writeNotOk($test, 'Failure'); $message = explode( "\n", PHPUnit_Framework_TestFailure::exceptionToString($e) ); $diagnostic = [ 'message' => $message[0], 'severity' => 'fail' ]; if ($e instanceof PHPUnit_Framework_ExpectationFailedException) { $cf = $e->getComparisonFailure(); if ($cf !== null) { $diagnostic['data'] = [ 'got' => $cf->getActual(), 'expected' => $cf->getExpected() ]; } } $yaml = new Symfony\Component\Yaml\Dumper; $this->write( sprintf( " ---\n%s ...\n", $yaml->dump($diagnostic, 2, 2) ) ); } /** * Incomplete test. * * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time */ public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time) { $this->writeNotOk($test, '', 'TODO Incomplete Test'); } /** * Risky test. * * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time */ public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time) { $this->write( sprintf( "ok %d - # RISKY%s\n", $this->testNumber, $e->getMessage() != '' ? ' ' . $e->getMessage() : '' ) ); $this->testSuccessful = false; } /** * Skipped test. * * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time */ public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time) { $this->write( sprintf( "ok %d - # SKIP%s\n", $this->testNumber, $e->getMessage() != '' ? ' ' . $e->getMessage() : '' ) ); $this->testSuccessful = false; } /** * A testsuite started. * * @param PHPUnit_Framework_TestSuite $suite */ public function startTestSuite(PHPUnit_Framework_TestSuite $suite) { $this->testSuiteLevel++; } /** * A testsuite ended. * * @param PHPUnit_Framework_TestSuite $suite */ public function endTestSuite(PHPUnit_Framework_TestSuite $suite) { $this->testSuiteLevel--; if ($this->testSuiteLevel == 0) { $this->write(sprintf("1..%d\n", $this->testNumber)); } } /** * A test started. * * @param PHPUnit_Framework_Test $test */ public function startTest(PHPUnit_Framework_Test $test) { $this->testNumber++; $this->testSuccessful = true; } /** * A test ended. * * @param PHPUnit_Framework_Test $test * @param float $time */ public function endTest(PHPUnit_Framework_Test $test, $time) { if ($this->testSuccessful === true) { $this->write( sprintf( "ok %d - %s\n", $this->testNumber, PHPUnit_Util_Test::describe($test) ) ); } $this->writeDiagnostics($test); } /** * @param PHPUnit_Framework_Test $test * @param string $prefix * @param string $directive */ protected function writeNotOk(PHPUnit_Framework_Test $test, $prefix = '', $directive = '') { $this->write( sprintf( "not ok %d - %s%s%s\n", $this->testNumber, $prefix != '' ? $prefix . ': ' : '', PHPUnit_Util_Test::describe($test), $directive != '' ? ' # ' . $directive : '' ) ); $this->testSuccessful = false; } /** * @param PHPUnit_Framework_Test $test */ private function writeDiagnostics(PHPUnit_Framework_Test $test) { if (!$test instanceof PHPUnit_Framework_TestCase) { return; } if (!$test->hasOutput()) { return; } foreach (explode("\n", trim($test->getActualOutput())) as $line) { $this->write( sprintf( "# %s\n", $line ) ); } } } PK!ZT+T+src/Util/Log/TeamCity.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ use SebastianBergmann\Comparator\ComparisonFailure; /** * A TestListener that generates a logfile of the test execution using the * TeamCity format (for use with PhpStorm, for instance). */ class PHPUnit_Util_Log_TeamCity extends PHPUnit_TextUI_ResultPrinter { /** * @var bool */ private $isSummaryTestCountPrinted = false; /** * @var string */ private $startedTestName; /** * @var string */ private $flowId; /** * @param string $progress */ protected function writeProgress($progress) { } /** * @param PHPUnit_Framework_TestResult $result */ public function printResult(PHPUnit_Framework_TestResult $result) { $this->printHeader(); $this->printFooter($result); } /** * An error occurred. * * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time */ public function addError(PHPUnit_Framework_Test $test, Exception $e, $time) { $this->printEvent( 'testFailed', [ 'name' => $test->getName(), 'message' => self::getMessage($e), 'details' => self::getDetails($e), ] ); } /** * A warning occurred. * * @param PHPUnit_Framework_Test $test * @param PHPUnit_Framework_Warning $e * @param float $time */ public function addWarning(PHPUnit_Framework_Test $test, PHPUnit_Framework_Warning $e, $time) { $this->printEvent( 'testFailed', [ 'name' => $test->getName(), 'message' => self::getMessage($e), 'details' => self::getDetails($e) ] ); } /** * A failure occurred. * * @param PHPUnit_Framework_Test $test * @param PHPUnit_Framework_AssertionFailedError $e * @param float $time */ public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time) { $parameters = [ 'name' => $test->getName(), 'message' => self::getMessage($e), 'details' => self::getDetails($e), ]; if ($e instanceof PHPUnit_Framework_ExpectationFailedException) { $comparisonFailure = $e->getComparisonFailure(); if ($comparisonFailure instanceof ComparisonFailure) { $expectedString = $comparisonFailure->getExpectedAsString(); if (is_null($expectedString) || empty($expectedString)) { $expectedString = self::getPrimitiveValueAsString($comparisonFailure->getExpected()); } $actualString = $comparisonFailure->getActualAsString(); if (is_null($actualString) || empty($actualString)) { $actualString = self::getPrimitiveValueAsString($comparisonFailure->getActual()); } if (!is_null($actualString) && !is_null($expectedString)) { $parameters['type'] = 'comparisonFailure'; $parameters['actual'] = $actualString; $parameters['expected'] = $expectedString; } } } $this->printEvent('testFailed', $parameters); } /** * Incomplete test. * * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time */ public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time) { $this->printIgnoredTest($test->getName(), $e); } /** * Risky test. * * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time */ public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time) { $this->addError($test, $e, $time); } /** * Skipped test. * * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time */ public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time) { $testName = $test->getName(); if ($this->startedTestName != $testName) { $this->startTest($test); $this->printIgnoredTest($testName, $e); $this->endTest($test, $time); } else { $this->printIgnoredTest($testName, $e); } } public function printIgnoredTest($testName, Exception $e) { $this->printEvent( 'testIgnored', [ 'name' => $testName, 'message' => self::getMessage($e), 'details' => self::getDetails($e), ] ); } /** * A testsuite started. * * @param PHPUnit_Framework_TestSuite $suite */ public function startTestSuite(PHPUnit_Framework_TestSuite $suite) { if (stripos(ini_get('disable_functions'), 'getmypid') === false) { $this->flowId = getmypid(); } else { $this->flowId = false; } if (!$this->isSummaryTestCountPrinted) { $this->isSummaryTestCountPrinted = true; $this->printEvent( 'testCount', ['count' => count($suite)] ); } $suiteName = $suite->getName(); if (empty($suiteName)) { return; } $parameters = ['name' => $suiteName]; if (class_exists($suiteName, false)) { $fileName = self::getFileName($suiteName); $parameters['locationHint'] = "php_qn://$fileName::\\$suiteName"; } else { $split = preg_split('/::/', $suiteName); if (count($split) == 2 && method_exists($split[0], $split[1])) { $fileName = self::getFileName($split[0]); $parameters['locationHint'] = "php_qn://$fileName::\\$suiteName"; $parameters['name'] = $split[1]; } } $this->printEvent('testSuiteStarted', $parameters); } /** * A testsuite ended. * * @param PHPUnit_Framework_TestSuite $suite */ public function endTestSuite(PHPUnit_Framework_TestSuite $suite) { $suiteName = $suite->getName(); if (empty($suiteName)) { return; } $parameters = ['name' => $suiteName]; if (!class_exists($suiteName, false)) { $split = preg_split('/::/', $suiteName); if (count($split) == 2 && method_exists($split[0], $split[1])) { $parameters['name'] = $split[1]; } } $this->printEvent('testSuiteFinished', $parameters); } /** * A test started. * * @param PHPUnit_Framework_Test $test */ public function startTest(PHPUnit_Framework_Test $test) { $testName = $test->getName(); $this->startedTestName = $testName; $params = ['name' => $testName]; if ($test instanceof PHPUnit_Framework_TestCase) { $className = get_class($test); $fileName = self::getFileName($className); $params['locationHint'] = "php_qn://$fileName::\\$className::$testName"; } $this->printEvent('testStarted', $params); } /** * A test ended. * * @param PHPUnit_Framework_Test $test * @param float $time */ public function endTest(PHPUnit_Framework_Test $test, $time) { parent::endTest($test, $time); $this->printEvent( 'testFinished', [ 'name' => $test->getName(), 'duration' => (int) (round($time, 2) * 1000) ] ); } /** * @param string $eventName * @param array $params */ private function printEvent($eventName, $params = []) { $this->write("\n##teamcity[$eventName"); if ($this->flowId) { $params['flowId'] = $this->flowId; } foreach ($params as $key => $value) { $escapedValue = self::escapeValue($value); $this->write(" $key='$escapedValue'"); } $this->write("]\n"); } /** * @param Exception $e * * @return string */ private static function getMessage(Exception $e) { $message = ''; if ($e instanceof PHPUnit_Framework_ExceptionWrapper) { if (strlen($e->getClassName()) != 0) { $message = $message . $e->getClassName(); } if (strlen($message) != 0 && strlen($e->getMessage()) != 0) { $message = $message . ' : '; } } return $message . $e->getMessage(); } /** * @param Exception $e * * @return string */ private static function getDetails(Exception $e) { $stackTrace = PHPUnit_Util_Filter::getFilteredStacktrace($e); $previous = $e->getPrevious(); while ($previous) { $stackTrace .= "\nCaused by\n" . PHPUnit_Framework_TestFailure::exceptionToString($previous) . "\n" . PHPUnit_Util_Filter::getFilteredStacktrace($previous); $previous = $previous->getPrevious(); } return ' ' . str_replace("\n", "\n ", $stackTrace); } /** * @param mixed $value * * @return string */ private static function getPrimitiveValueAsString($value) { if (is_null($value)) { return 'null'; } elseif (is_bool($value)) { return $value == true ? 'true' : 'false'; } elseif (is_scalar($value)) { return print_r($value, true); } return; } /** * @param $text * * @return string */ private static function escapeValue($text) { $text = str_replace('|', '||', $text); $text = str_replace("'", "|'", $text); $text = str_replace("\n", '|n', $text); $text = str_replace("\r", '|r', $text); $text = str_replace(']', '|]', $text); $text = str_replace('[', '|[', $text); return $text; } /** * @param string $className * * @return string */ private static function getFileName($className) { $reflectionClass = new ReflectionClass($className); $fileName = $reflectionClass->getFileName(); return $fileName; } } PK!gsrc/Util/Log/JSON.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * A TestListener that generates JSON messages. */ class PHPUnit_Util_Log_JSON extends PHPUnit_Util_Printer implements PHPUnit_Framework_TestListener { /** * @var string */ protected $currentTestSuiteName = ''; /** * @var string */ protected $currentTestName = ''; /** * @var bool */ protected $currentTestPass = true; /** * An error occurred. * * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time */ public function addError(PHPUnit_Framework_Test $test, Exception $e, $time) { $this->writeCase( 'error', $time, PHPUnit_Util_Filter::getFilteredStacktrace($e, false), PHPUnit_Framework_TestFailure::exceptionToString($e), $test ); $this->currentTestPass = false; } /** * A warning occurred. * * @param PHPUnit_Framework_Test $test * @param PHPUnit_Framework_Warning $e * @param float $time */ public function addWarning(PHPUnit_Framework_Test $test, PHPUnit_Framework_Warning $e, $time) { $this->writeCase( 'warning', $time, PHPUnit_Util_Filter::getFilteredStacktrace($e, false), PHPUnit_Framework_TestFailure::exceptionToString($e), $test ); $this->currentTestPass = false; } /** * A failure occurred. * * @param PHPUnit_Framework_Test $test * @param PHPUnit_Framework_AssertionFailedError $e * @param float $time */ public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time) { $this->writeCase( 'fail', $time, PHPUnit_Util_Filter::getFilteredStacktrace($e, false), PHPUnit_Framework_TestFailure::exceptionToString($e), $test ); $this->currentTestPass = false; } /** * Incomplete test. * * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time */ public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time) { $this->writeCase( 'error', $time, PHPUnit_Util_Filter::getFilteredStacktrace($e, false), 'Incomplete Test: ' . $e->getMessage(), $test ); $this->currentTestPass = false; } /** * Risky test. * * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time */ public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time) { $this->writeCase( 'error', $time, PHPUnit_Util_Filter::getFilteredStacktrace($e, false), 'Risky Test: ' . $e->getMessage(), $test ); $this->currentTestPass = false; } /** * Skipped test. * * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time */ public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time) { $this->writeCase( 'error', $time, PHPUnit_Util_Filter::getFilteredStacktrace($e, false), 'Skipped Test: ' . $e->getMessage(), $test ); $this->currentTestPass = false; } /** * A testsuite started. * * @param PHPUnit_Framework_TestSuite $suite */ public function startTestSuite(PHPUnit_Framework_TestSuite $suite) { $this->currentTestSuiteName = $suite->getName(); $this->currentTestName = ''; $this->write( [ 'event' => 'suiteStart', 'suite' => $this->currentTestSuiteName, 'tests' => count($suite) ] ); } /** * A testsuite ended. * * @param PHPUnit_Framework_TestSuite $suite */ public function endTestSuite(PHPUnit_Framework_TestSuite $suite) { $this->currentTestSuiteName = ''; $this->currentTestName = ''; } /** * A test started. * * @param PHPUnit_Framework_Test $test */ public function startTest(PHPUnit_Framework_Test $test) { $this->currentTestName = PHPUnit_Util_Test::describe($test); $this->currentTestPass = true; $this->write( [ 'event' => 'testStart', 'suite' => $this->currentTestSuiteName, 'test' => $this->currentTestName ] ); } /** * A test ended. * * @param PHPUnit_Framework_Test $test * @param float $time */ public function endTest(PHPUnit_Framework_Test $test, $time) { if ($this->currentTestPass) { $this->writeCase('pass', $time, [], '', $test); } } /** * @param string $status * @param float $time * @param array $trace * @param string $message * @param PHPUnit_Framework_TestCase|null $test */ protected function writeCase($status, $time, array $trace = [], $message = '', $test = null) { $output = ''; // take care of TestSuite producing error (e.g. by running into exception) as TestSuite doesn't have hasOutput if ($test !== null && method_exists($test, 'hasOutput') && $test->hasOutput()) { $output = $test->getActualOutput(); } $this->write( [ 'event' => 'test', 'suite' => $this->currentTestSuiteName, 'test' => $this->currentTestName, 'status' => $status, 'time' => $time, 'trace' => $trace, 'message' => PHPUnit_Util_String::convertToUtf8($message), 'output' => $output, ] ); } /** * @param string $buffer */ public function write($buffer) { array_walk_recursive($buffer, function (&$input) { if (is_string($input)) { $input = PHPUnit_Util_String::convertToUtf8($input); } }); parent::write(json_encode($buffer, JSON_PRETTY_PRINT)); } } PK!Z7"IIsrc/Util/Configuration.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Wrapper for the PHPUnit XML configuration file. * * Example XML configuration file: * * * * * * * /path/to/files * /path/to/MyTest.php * /path/to/files/exclude * * * * * * name * * * name * * * * * * name * * * name * * * * * * /path/to/files * /path/to/file * * /path/to/files * /path/to/file * * * * * * * * * * Sebastian * * * 22 * April * 19.78 * * * MyRelativeFile.php * MyRelativeDir * * * * * * * * * * * * * * * * * * * * . * * * * * * * * * * * * * */ class PHPUnit_Util_Configuration { private static $instances = []; protected $document; protected $xpath; protected $filename; /** * Loads a PHPUnit configuration file. * * @param string $filename */ protected function __construct($filename) { $this->filename = $filename; $this->document = PHPUnit_Util_XML::loadFile($filename, false, true, true); $this->xpath = new DOMXPath($this->document); } final private function __clone() { } /** * Returns a PHPUnit configuration object. * * @param string $filename * * @return PHPUnit_Util_Configuration */ public static function getInstance($filename) { $realpath = realpath($filename); if ($realpath === false) { throw new PHPUnit_Framework_Exception( sprintf( 'Could not read "%s".', $filename ) ); } if (!isset(self::$instances[$realpath])) { self::$instances[$realpath] = new self($realpath); } return self::$instances[$realpath]; } /** * Returns the realpath to the configuration file. * * @return string */ public function getFilename() { return $this->filename; } /** * Returns the configuration for SUT filtering. * * @return array */ public function getFilterConfiguration() { $addUncoveredFilesFromWhitelist = true; $processUncoveredFilesFromWhitelist = false; $tmp = $this->xpath->query('filter/whitelist'); if ($tmp->length == 1) { if ($tmp->item(0)->hasAttribute('addUncoveredFilesFromWhitelist')) { $addUncoveredFilesFromWhitelist = $this->getBoolean( (string) $tmp->item(0)->getAttribute( 'addUncoveredFilesFromWhitelist' ), true ); } if ($tmp->item(0)->hasAttribute('processUncoveredFilesFromWhitelist')) { $processUncoveredFilesFromWhitelist = $this->getBoolean( (string) $tmp->item(0)->getAttribute( 'processUncoveredFilesFromWhitelist' ), false ); } } return [ 'whitelist' => [ 'addUncoveredFilesFromWhitelist' => $addUncoveredFilesFromWhitelist, 'processUncoveredFilesFromWhitelist' => $processUncoveredFilesFromWhitelist, 'include' => [ 'directory' => $this->readFilterDirectories( 'filter/whitelist/directory' ), 'file' => $this->readFilterFiles( 'filter/whitelist/file' ) ], 'exclude' => [ 'directory' => $this->readFilterDirectories( 'filter/whitelist/exclude/directory' ), 'file' => $this->readFilterFiles( 'filter/whitelist/exclude/file' ) ] ] ]; } /** * Returns the configuration for groups. * * @return array */ public function getGroupConfiguration() { return $this->parseGroupConfiguration('groups'); } /** * Returns the configuration for testdox groups. * * @return array */ public function getTestdoxGroupConfiguration() { return $this->parseGroupConfiguration('testdoxGroups'); } /** * @param string $root * * @return array */ private function parseGroupConfiguration($root) { $groups = [ 'include' => [], 'exclude' => [] ]; foreach ($this->xpath->query($root . '/include/group') as $group) { $groups['include'][] = (string) $group->textContent; } foreach ($this->xpath->query($root . '/exclude/group') as $group) { $groups['exclude'][] = (string) $group->textContent; } return $groups; } /** * Returns the configuration for listeners. * * @return array */ public function getListenerConfiguration() { $result = []; foreach ($this->xpath->query('listeners/listener') as $listener) { $class = (string) $listener->getAttribute('class'); $file = ''; $arguments = []; if ($listener->getAttribute('file')) { $file = $this->toAbsolutePath( (string) $listener->getAttribute('file'), true ); } foreach ($listener->childNodes as $node) { if ($node instanceof DOMElement && $node->tagName == 'arguments') { foreach ($node->childNodes as $argument) { if ($argument instanceof DOMElement) { if ($argument->tagName == 'file' || $argument->tagName == 'directory') { $arguments[] = $this->toAbsolutePath((string) $argument->textContent); } else { $arguments[] = PHPUnit_Util_XML::xmlToVariable($argument); } } } } } $result[] = [ 'class' => $class, 'file' => $file, 'arguments' => $arguments ]; } return $result; } /** * Returns the logging configuration. * * @return array */ public function getLoggingConfiguration() { $result = []; foreach ($this->xpath->query('logging/log') as $log) { $type = (string) $log->getAttribute('type'); $target = (string) $log->getAttribute('target'); if (!$target) { continue; } $target = $this->toAbsolutePath($target); if ($type == 'coverage-html') { if ($log->hasAttribute('lowUpperBound')) { $result['lowUpperBound'] = $this->getInteger( (string) $log->getAttribute('lowUpperBound'), 50 ); } if ($log->hasAttribute('highLowerBound')) { $result['highLowerBound'] = $this->getInteger( (string) $log->getAttribute('highLowerBound'), 90 ); } } elseif ($type == 'coverage-crap4j') { if ($log->hasAttribute('threshold')) { $result['crap4jThreshold'] = $this->getInteger( (string) $log->getAttribute('threshold'), 30 ); } } elseif ($type == 'junit') { if ($log->hasAttribute('logIncompleteSkipped')) { $result['logIncompleteSkipped'] = $this->getBoolean( (string) $log->getAttribute('logIncompleteSkipped'), false ); } } elseif ($type == 'coverage-text') { if ($log->hasAttribute('showUncoveredFiles')) { $result['coverageTextShowUncoveredFiles'] = $this->getBoolean( (string) $log->getAttribute('showUncoveredFiles'), false ); } if ($log->hasAttribute('showOnlySummary')) { $result['coverageTextShowOnlySummary'] = $this->getBoolean( (string) $log->getAttribute('showOnlySummary'), false ); } } $result[$type] = $target; } return $result; } /** * Returns the PHP configuration. * * @return array */ public function getPHPConfiguration() { $result = [ 'include_path' => [], 'ini' => [], 'const' => [], 'var' => [], 'env' => [], 'post' => [], 'get' => [], 'cookie' => [], 'server' => [], 'files' => [], 'request' => [] ]; foreach ($this->xpath->query('php/includePath') as $includePath) { $path = (string) $includePath->textContent; if ($path) { $result['include_path'][] = $this->toAbsolutePath($path); } } foreach ($this->xpath->query('php/ini') as $ini) { $name = (string) $ini->getAttribute('name'); $value = (string) $ini->getAttribute('value'); $result['ini'][$name] = $value; } foreach ($this->xpath->query('php/const') as $const) { $name = (string) $const->getAttribute('name'); $value = (string) $const->getAttribute('value'); $result['const'][$name] = $this->getBoolean($value, $value); } foreach (['var', 'env', 'post', 'get', 'cookie', 'server', 'files', 'request'] as $array) { foreach ($this->xpath->query('php/' . $array) as $var) { $name = (string) $var->getAttribute('name'); $value = (string) $var->getAttribute('value'); $result[$array][$name] = $this->getBoolean($value, $value); } } return $result; } /** * Handles the PHP configuration. */ public function handlePHPConfiguration() { $configuration = $this->getPHPConfiguration(); if (! empty($configuration['include_path'])) { ini_set( 'include_path', implode(PATH_SEPARATOR, $configuration['include_path']) . PATH_SEPARATOR . ini_get('include_path') ); } foreach ($configuration['ini'] as $name => $value) { if (defined($value)) { $value = constant($value); } ini_set($name, $value); } foreach ($configuration['const'] as $name => $value) { if (!defined($name)) { define($name, $value); } } foreach (['var', 'post', 'get', 'cookie', 'server', 'files', 'request'] as $array) { // See https://github.com/sebastianbergmann/phpunit/issues/277 switch ($array) { case 'var': $target = &$GLOBALS; break; case 'server': $target = &$_SERVER; break; default: $target = &$GLOBALS['_' . strtoupper($array)]; break; } foreach ($configuration[$array] as $name => $value) { $target[$name] = $value; } } foreach ($configuration['env'] as $name => $value) { if (false === getenv($name)) { putenv("{$name}={$value}"); } if (!isset($_ENV[$name])) { $_ENV[$name] = $value; } } } /** * Returns the PHPUnit configuration. * * @return array */ public function getPHPUnitConfiguration() { $result = []; $root = $this->document->documentElement; if ($root->hasAttribute('cacheTokens')) { $result['cacheTokens'] = $this->getBoolean( (string) $root->getAttribute('cacheTokens'), false ); } if ($root->hasAttribute('columns')) { $columns = (string) $root->getAttribute('columns'); if ($columns == 'max') { $result['columns'] = 'max'; } else { $result['columns'] = $this->getInteger($columns, 80); } } if ($root->hasAttribute('colors')) { /* only allow boolean for compatibility with previous versions 'always' only allowed from command line */ if ($this->getBoolean($root->getAttribute('colors'), false)) { $result['colors'] = PHPUnit_TextUI_ResultPrinter::COLOR_AUTO; } else { $result['colors'] = PHPUnit_TextUI_ResultPrinter::COLOR_NEVER; } } /* * Issue #657 */ if ($root->hasAttribute('stderr')) { $result['stderr'] = $this->getBoolean( (string) $root->getAttribute('stderr'), false ); } if ($root->hasAttribute('backupGlobals')) { $result['backupGlobals'] = $this->getBoolean( (string) $root->getAttribute('backupGlobals'), true ); } if ($root->hasAttribute('backupStaticAttributes')) { $result['backupStaticAttributes'] = $this->getBoolean( (string) $root->getAttribute('backupStaticAttributes'), false ); } if ($root->getAttribute('bootstrap')) { $result['bootstrap'] = $this->toAbsolutePath( (string) $root->getAttribute('bootstrap') ); } if ($root->hasAttribute('convertErrorsToExceptions')) { $result['convertErrorsToExceptions'] = $this->getBoolean( (string) $root->getAttribute('convertErrorsToExceptions'), true ); } if ($root->hasAttribute('convertNoticesToExceptions')) { $result['convertNoticesToExceptions'] = $this->getBoolean( (string) $root->getAttribute('convertNoticesToExceptions'), true ); } if ($root->hasAttribute('convertWarningsToExceptions')) { $result['convertWarningsToExceptions'] = $this->getBoolean( (string) $root->getAttribute('convertWarningsToExceptions'), true ); } if ($root->hasAttribute('forceCoversAnnotation')) { $result['forceCoversAnnotation'] = $this->getBoolean( (string) $root->getAttribute('forceCoversAnnotation'), false ); } if ($root->hasAttribute('disableCodeCoverageIgnore')) { $result['disableCodeCoverageIgnore'] = $this->getBoolean( (string) $root->getAttribute('disableCodeCoverageIgnore'), false ); } if ($root->hasAttribute('processIsolation')) { $result['processIsolation'] = $this->getBoolean( (string) $root->getAttribute('processIsolation'), false ); } if ($root->hasAttribute('stopOnError')) { $result['stopOnError'] = $this->getBoolean( (string) $root->getAttribute('stopOnError'), false ); } if ($root->hasAttribute('stopOnFailure')) { $result['stopOnFailure'] = $this->getBoolean( (string) $root->getAttribute('stopOnFailure'), false ); } if ($root->hasAttribute('stopOnWarning')) { $result['stopOnWarning'] = $this->getBoolean( (string) $root->getAttribute('stopOnWarning'), false ); } if ($root->hasAttribute('stopOnIncomplete')) { $result['stopOnIncomplete'] = $this->getBoolean( (string) $root->getAttribute('stopOnIncomplete'), false ); } if ($root->hasAttribute('stopOnRisky')) { $result['stopOnRisky'] = $this->getBoolean( (string) $root->getAttribute('stopOnRisky'), false ); } if ($root->hasAttribute('stopOnSkipped')) { $result['stopOnSkipped'] = $this->getBoolean( (string) $root->getAttribute('stopOnSkipped'), false ); } if ($root->hasAttribute('failOnWarning')) { $result['failOnWarning'] = $this->getBoolean( (string) $root->getAttribute('failOnWarning'), false ); } if ($root->hasAttribute('failOnRisky')) { $result['failOnRisky'] = $this->getBoolean( (string) $root->getAttribute('failOnRisky'), false ); } if ($root->hasAttribute('testSuiteLoaderClass')) { $result['testSuiteLoaderClass'] = (string) $root->getAttribute( 'testSuiteLoaderClass' ); } if ($root->getAttribute('testSuiteLoaderFile')) { $result['testSuiteLoaderFile'] = $this->toAbsolutePath( (string) $root->getAttribute('testSuiteLoaderFile') ); } if ($root->hasAttribute('printerClass')) { $result['printerClass'] = (string) $root->getAttribute( 'printerClass' ); } if ($root->getAttribute('printerFile')) { $result['printerFile'] = $this->toAbsolutePath( (string) $root->getAttribute('printerFile') ); } if ($root->hasAttribute('beStrictAboutChangesToGlobalState')) { $result['beStrictAboutChangesToGlobalState'] = $this->getBoolean( (string) $root->getAttribute('beStrictAboutChangesToGlobalState'), false ); } if ($root->hasAttribute('beStrictAboutOutputDuringTests')) { $result['disallowTestOutput'] = $this->getBoolean( (string) $root->getAttribute('beStrictAboutOutputDuringTests'), false ); } if ($root->hasAttribute('beStrictAboutResourceUsageDuringSmallTests')) { $result['beStrictAboutResourceUsageDuringSmallTests'] = $this->getBoolean( (string) $root->getAttribute('beStrictAboutResourceUsageDuringSmallTests'), false ); } if ($root->hasAttribute('beStrictAboutTestsThatDoNotTestAnything')) { $result['reportUselessTests'] = $this->getBoolean( (string) $root->getAttribute('beStrictAboutTestsThatDoNotTestAnything'), false ); } if ($root->hasAttribute('beStrictAboutTodoAnnotatedTests')) { $result['disallowTodoAnnotatedTests'] = $this->getBoolean( (string) $root->getAttribute('beStrictAboutTodoAnnotatedTests'), false ); } if ($root->hasAttribute('beStrictAboutCoversAnnotation')) { $result['strictCoverage'] = $this->getBoolean( (string) $root->getAttribute('beStrictAboutCoversAnnotation'), false ); } elseif ($root->hasAttribute('checkForUnintentionallyCoveredCode')) { $result['strictCoverage'] = $this->getBoolean( (string) $root->getAttribute('checkForUnintentionallyCoveredCode'), false ); $result['deprecatedCheckForUnintentionallyCoveredCodeSettingUsed'] = true; } if ($root->hasAttribute('enforceTimeLimit')) { $result['enforceTimeLimit'] = $this->getBoolean( (string) $root->getAttribute('enforceTimeLimit'), false ); } if ($root->hasAttribute('timeoutForSmallTests')) { $result['timeoutForSmallTests'] = $this->getInteger( (string) $root->getAttribute('timeoutForSmallTests'), 1 ); } if ($root->hasAttribute('timeoutForMediumTests')) { $result['timeoutForMediumTests'] = $this->getInteger( (string) $root->getAttribute('timeoutForMediumTests'), 10 ); } if ($root->hasAttribute('timeoutForLargeTests')) { $result['timeoutForLargeTests'] = $this->getInteger( (string) $root->getAttribute('timeoutForLargeTests'), 60 ); } if ($root->hasAttribute('reverseDefectList')) { $result['reverseDefectList'] = $this->getBoolean( (string) $root->getAttribute('reverseDefectList'), false ); } if ($root->hasAttribute('verbose')) { $result['verbose'] = $this->getBoolean( (string) $root->getAttribute('verbose'), false ); } if ($root->hasAttribute('registerMockObjectsFromTestArgumentsRecursively')) { $result['registerMockObjectsFromTestArgumentsRecursively'] = $this->getBoolean( (string) $root->getAttribute('registerMockObjectsFromTestArgumentsRecursively'), false ); } if ($root->hasAttribute('extensionsDirectory')) { $result['extensionsDirectory'] = $this->toAbsolutePath( (string) $root->getAttribute( 'extensionsDirectory' ) ); } return $result; } /** * Returns the test suite configuration. * * @return PHPUnit_Framework_TestSuite */ public function getTestSuiteConfiguration($testSuiteFilter = null) { $testSuiteNodes = $this->xpath->query('testsuites/testsuite'); if ($testSuiteNodes->length == 0) { $testSuiteNodes = $this->xpath->query('testsuite'); } if ($testSuiteNodes->length == 1) { return $this->getTestSuite($testSuiteNodes->item(0), $testSuiteFilter); } if ($testSuiteNodes->length > 1) { $suite = new PHPUnit_Framework_TestSuite; foreach ($testSuiteNodes as $testSuiteNode) { $suite->addTestSuite( $this->getTestSuite($testSuiteNode, $testSuiteFilter) ); } return $suite; } } /** * Returns the test suite names from the configuration. * * @return array */ public function getTestSuiteNames() { $names = []; $nodes = $this->xpath->query('*/testsuite'); foreach ($nodes as $node) { $names[] = $node->getAttribute('name'); } return $names; } /** * @param DOMElement $testSuiteNode * * @return PHPUnit_Framework_TestSuite */ protected function getTestSuite(DOMElement $testSuiteNode, $testSuiteFilter = null) { if ($testSuiteNode->hasAttribute('name')) { $suite = new PHPUnit_Framework_TestSuite( (string) $testSuiteNode->getAttribute('name') ); } else { $suite = new PHPUnit_Framework_TestSuite; } $exclude = []; foreach ($testSuiteNode->getElementsByTagName('exclude') as $excludeNode) { $excludeFile = (string) $excludeNode->textContent; if ($excludeFile) { $exclude[] = $this->toAbsolutePath($excludeFile); } } $fileIteratorFacade = new File_Iterator_Facade; foreach ($testSuiteNode->getElementsByTagName('directory') as $directoryNode) { if ($testSuiteFilter && $directoryNode->parentNode->getAttribute('name') != $testSuiteFilter) { continue; } $directory = (string) $directoryNode->textContent; if (empty($directory)) { continue; } if ($directoryNode->hasAttribute('phpVersion')) { $phpVersion = (string) $directoryNode->getAttribute('phpVersion'); } else { $phpVersion = PHP_VERSION; } if ($directoryNode->hasAttribute('phpVersionOperator')) { $phpVersionOperator = (string) $directoryNode->getAttribute('phpVersionOperator'); } else { $phpVersionOperator = '>='; } if (!version_compare(PHP_VERSION, $phpVersion, $phpVersionOperator)) { continue; } if ($directoryNode->hasAttribute('prefix')) { $prefix = (string) $directoryNode->getAttribute('prefix'); } else { $prefix = ''; } if ($directoryNode->hasAttribute('suffix')) { $suffix = (string) $directoryNode->getAttribute('suffix'); } else { $suffix = 'Test.php'; } $files = $fileIteratorFacade->getFilesAsArray( $this->toAbsolutePath($directory), $suffix, $prefix, $exclude ); $suite->addTestFiles($files); } foreach ($testSuiteNode->getElementsByTagName('file') as $fileNode) { if ($testSuiteFilter && $fileNode->parentNode->getAttribute('name') != $testSuiteFilter) { continue; } $file = (string) $fileNode->textContent; if (empty($file)) { continue; } // Get the absolute path to the file $file = $fileIteratorFacade->getFilesAsArray( $this->toAbsolutePath($file) ); if (!isset($file[0])) { continue; } $file = $file[0]; if ($fileNode->hasAttribute('phpVersion')) { $phpVersion = (string) $fileNode->getAttribute('phpVersion'); } else { $phpVersion = PHP_VERSION; } if ($fileNode->hasAttribute('phpVersionOperator')) { $phpVersionOperator = (string) $fileNode->getAttribute('phpVersionOperator'); } else { $phpVersionOperator = '>='; } if (!version_compare(PHP_VERSION, $phpVersion, $phpVersionOperator)) { continue; } $suite->addTestFile($file); } return $suite; } /** * @param string $value * @param bool $default * * @return bool */ protected function getBoolean($value, $default) { if (strtolower($value) == 'false') { return false; } elseif (strtolower($value) == 'true') { return true; } return $default; } /** * @param string $value * @param bool $default * * @return bool */ protected function getInteger($value, $default) { if (is_numeric($value)) { return (int) $value; } return $default; } /** * @param string $query * * @return array */ protected function readFilterDirectories($query) { $directories = []; foreach ($this->xpath->query($query) as $directory) { $directoryPath = (string) $directory->textContent; if (!$directoryPath) { continue; } if ($directory->hasAttribute('prefix')) { $prefix = (string) $directory->getAttribute('prefix'); } else { $prefix = ''; } if ($directory->hasAttribute('suffix')) { $suffix = (string) $directory->getAttribute('suffix'); } else { $suffix = '.php'; } if ($directory->hasAttribute('group')) { $group = (string) $directory->getAttribute('group'); } else { $group = 'DEFAULT'; } $directories[] = [ 'path' => $this->toAbsolutePath($directoryPath), 'prefix' => $prefix, 'suffix' => $suffix, 'group' => $group ]; } return $directories; } /** * @param string $query * * @return array */ protected function readFilterFiles($query) { $files = []; foreach ($this->xpath->query($query) as $file) { $filePath = (string) $file->textContent; if ($filePath) { $files[] = $this->toAbsolutePath($filePath); } } return $files; } /** * @param string $path * @param bool $useIncludePath * * @return string */ protected function toAbsolutePath($path, $useIncludePath = false) { $path = trim($path); if ($path[0] === '/') { return $path; } // Matches the following on Windows: // - \\NetworkComputer\Path // - \\.\D: // - \\.\c: // - C:\Windows // - C:\windows // - C:/windows // - c:/windows if (defined('PHP_WINDOWS_VERSION_BUILD') && ($path[0] === '\\' || (strlen($path) >= 3 && preg_match('#^[A-Z]\:[/\\\]#i', substr($path, 0, 3))))) { return $path; } // Stream if (strpos($path, '://') !== false) { return $path; } $file = dirname($this->filename) . DIRECTORY_SEPARATOR . $path; if ($useIncludePath && !file_exists($file)) { $includePathFile = stream_resolve_include_path($path); if ($includePathFile) { $file = $includePathFile; } } return $file; } } PK!a1r r src/Util/Blacklist.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Utility class for blacklisting PHPUnit's own source code files. */ class PHPUnit_Util_Blacklist { /** * @var array */ public static $blacklistedClassNames = [ 'File_Iterator' => 1, 'PHP_Invoker' => 1, 'PHP_Timer' => 1, 'PHP_Token' => 1, 'PHPUnit_Framework_TestCase' => 2, 'PHPUnit_Extensions_Database_TestCase' => 2, 'PHPUnit_Framework_MockObject_Generator' => 2, 'Text_Template' => 1, 'Symfony\Component\Yaml\Yaml' => 1, 'SebastianBergmann\CodeCoverage\CodeCoverage' => 1, 'SebastianBergmann\Diff\Diff' => 1, 'SebastianBergmann\Environment\Runtime' => 1, 'SebastianBergmann\Comparator\Comparator' => 1, 'SebastianBergmann\Exporter\Exporter' => 1, 'SebastianBergmann\GlobalState\Snapshot' => 1, 'SebastianBergmann\RecursionContext\Context' => 1, 'SebastianBergmann\Version' => 1, 'Composer\Autoload\ClassLoader' => 1, 'Doctrine\Instantiator\Instantiator' => 1, 'phpDocumentor\Reflection\DocBlock' => 1, 'Prophecy\Prophet' => 1, 'DeepCopy\DeepCopy' => 1 ]; /** * @var array */ private static $directories; /** * @return array */ public function getBlacklistedDirectories() { $this->initialize(); return self::$directories; } /** * @param string $file * * @return bool */ public function isBlacklisted($file) { if (defined('PHPUNIT_TESTSUITE')) { return false; } $this->initialize(); foreach (self::$directories as $directory) { if (strpos($file, $directory) === 0) { return true; } } return false; } private function initialize() { if (self::$directories === null) { self::$directories = []; foreach (self::$blacklistedClassNames as $className => $parent) { if (!class_exists($className)) { continue; } $reflector = new ReflectionClass($className); $directory = $reflector->getFileName(); for ($i = 0; $i < $parent; $i++) { $directory = dirname($directory); } self::$directories[] = $directory; } // Hide process isolation workaround on Windows. // @see PHPUnit_Util_PHP::factory() // @see PHPUnit_Util_PHP_Windows::process() if (DIRECTORY_SEPARATOR === '\\') { // tempnam() prefix is limited to first 3 chars. // @see http://php.net/manual/en/function.tempnam.php self::$directories[] = sys_get_temp_dir() . '\\PHP'; } } } } PK!"BZZsrc/Util/Test.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Test helpers. */ class PHPUnit_Util_Test { const REGEX_DATA_PROVIDER = '/@dataProvider\s+([a-zA-Z0-9._:-\\\\x7f-\xff]+)/'; const REGEX_TEST_WITH = '/@testWith\s+/'; const REGEX_EXPECTED_EXCEPTION = '(@expectedException\s+([:.\w\\\\x7f-\xff]+)(?:[\t ]+(\S*))?(?:[\t ]+(\S*))?\s*$)m'; const REGEX_REQUIRES_VERSION = '/@requires\s+(?PPHP(?:Unit)?)\s+(?P[<>=!]{0,2})\s*(?P[\d\.-]+(dev|(RC|alpha|beta)[\d\.])?)[ \t]*\r?$/m'; const REGEX_REQUIRES_OS = '/@requires\s+OS\s+(?P.+?)[ \t]*\r?$/m'; const REGEX_REQUIRES = '/@requires\s+(?Pfunction|extension)\s+(?P([^ ]+?))\s*(?P[<>=!]{0,2})\s*(?P[\d\.-]+[\d\.]?)?[ \t]*\r?$/m'; const UNKNOWN = -1; const SMALL = 0; const MEDIUM = 1; const LARGE = 2; private static $annotationCache = []; private static $hookMethods = []; /** * @param PHPUnit_Framework_Test $test * @param bool $asString * * @return mixed */ public static function describe(PHPUnit_Framework_Test $test, $asString = true) { if ($asString) { if ($test instanceof PHPUnit_Framework_SelfDescribing) { return $test->toString(); } else { return get_class($test); } } else { if ($test instanceof PHPUnit_Framework_TestCase) { return [ get_class($test), $test->getName() ]; } elseif ($test instanceof PHPUnit_Framework_SelfDescribing) { return ['', $test->toString()]; } else { return ['', get_class($test)]; } } } /** * @param string $className * @param string $methodName * * @return array|bool * * @throws PHPUnit_Framework_CodeCoverageException */ public static function getLinesToBeCovered($className, $methodName) { $annotations = self::parseTestMethodAnnotations( $className, $methodName ); if (isset($annotations['class']['coversNothing']) || isset($annotations['method']['coversNothing'])) { return false; } return self::getLinesToBeCoveredOrUsed($className, $methodName, 'covers'); } /** * Returns lines of code specified with the @uses annotation. * * @param string $className * @param string $methodName * * @return array */ public static function getLinesToBeUsed($className, $methodName) { return self::getLinesToBeCoveredOrUsed($className, $methodName, 'uses'); } /** * @param string $className * @param string $methodName * @param string $mode * * @return array * * @throws PHPUnit_Framework_CodeCoverageException */ private static function getLinesToBeCoveredOrUsed($className, $methodName, $mode) { $annotations = self::parseTestMethodAnnotations( $className, $methodName ); $classShortcut = null; if (!empty($annotations['class'][$mode . 'DefaultClass'])) { if (count($annotations['class'][$mode . 'DefaultClass']) > 1) { throw new PHPUnit_Framework_CodeCoverageException( sprintf( 'More than one @%sClass annotation in class or interface "%s".', $mode, $className ) ); } $classShortcut = $annotations['class'][$mode . 'DefaultClass'][0]; } $list = []; if (isset($annotations['class'][$mode])) { $list = $annotations['class'][$mode]; } if (isset($annotations['method'][$mode])) { $list = array_merge($list, $annotations['method'][$mode]); } $codeList = []; foreach (array_unique($list) as $element) { if ($classShortcut && strncmp($element, '::', 2) === 0) { $element = $classShortcut . $element; } $element = preg_replace('/[\s()]+$/', '', $element); $element = explode(' ', $element); $element = $element[0]; $codeList = array_merge( $codeList, self::resolveElementToReflectionObjects($element) ); } return self::resolveReflectionObjectsToLines($codeList); } /** * Returns the requirements for a test. * * @param string $className * @param string $methodName * * @return array */ public static function getRequirements($className, $methodName) { $reflector = new ReflectionClass($className); $docComment = $reflector->getDocComment(); $reflector = new ReflectionMethod($className, $methodName); $docComment .= "\n" . $reflector->getDocComment(); $requires = []; if ($count = preg_match_all(self::REGEX_REQUIRES_OS, $docComment, $matches)) { $requires['OS'] = sprintf( '/%s/i', addcslashes($matches['value'][$count - 1], '/') ); } if ($count = preg_match_all(self::REGEX_REQUIRES_VERSION, $docComment, $matches)) { for ($i = 0; $i < $count; $i++) { $requires[$matches['name'][$i]] = [ 'version' => $matches['version'][$i], 'operator' => $matches['operator'][$i] ]; } } // https://bugs.php.net/bug.php?id=63055 $matches = []; if ($count = preg_match_all(self::REGEX_REQUIRES, $docComment, $matches)) { for ($i = 0; $i < $count; $i++) { $name = $matches['name'][$i] . 's'; if (!isset($requires[$name])) { $requires[$name] = []; } $requires[$name][] = $matches['value'][$i]; if (empty($matches['version'][$i]) || $name != 'extensions') { continue; } $requires['extension_versions'][$matches['value'][$i]] = [ 'version' => $matches['version'][$i], 'operator' => $matches['operator'][$i] ]; } } return $requires; } /** * Returns the missing requirements for a test. * * @param string $className * @param string $methodName * * @return array */ public static function getMissingRequirements($className, $methodName) { $required = static::getRequirements($className, $methodName); $missing = []; $operator = empty($required['PHP']['operator']) ? '>=' : $required['PHP']['operator']; if (!empty($required['PHP']) && !version_compare(PHP_VERSION, $required['PHP']['version'], $operator)) { $missing[] = sprintf('PHP %s %s is required.', $operator, $required['PHP']['version']); } if (!empty($required['PHPUnit'])) { $phpunitVersion = PHPUnit_Runner_Version::id(); $operator = empty($required['PHPUnit']['operator']) ? '>=' : $required['PHPUnit']['operator']; if (!version_compare($phpunitVersion, $required['PHPUnit']['version'], $operator)) { $missing[] = sprintf('PHPUnit %s %s is required.', $operator, $required['PHPUnit']['version']); } } if (!empty($required['OS']) && !preg_match($required['OS'], PHP_OS)) { $missing[] = sprintf('Operating system matching %s is required.', $required['OS']); } if (!empty($required['functions'])) { foreach ($required['functions'] as $function) { $pieces = explode('::', $function); if (2 === count($pieces) && method_exists($pieces[0], $pieces[1])) { continue; } if (function_exists($function)) { continue; } $missing[] = sprintf('Function %s is required.', $function); } } if (!empty($required['extensions'])) { foreach ($required['extensions'] as $extension) { if (isset($required['extension_versions'][$extension])) { continue; } if (!extension_loaded($extension)) { $missing[] = sprintf('Extension %s is required.', $extension); } } } if (!empty($required['extension_versions'])) { foreach ($required['extension_versions'] as $extension => $required) { $actualVersion = phpversion($extension); $operator = empty($required['operator']) ? '>=' : $required['operator']; if (false === $actualVersion || !version_compare($actualVersion, $required['version'], $operator)) { $missing[] = sprintf('Extension %s %s %s is required.', $extension, $operator, $required['version']); } } } return $missing; } /** * Returns the expected exception for a test. * * @param string $className * @param string $methodName * * @return array */ public static function getExpectedException($className, $methodName) { $reflector = new ReflectionMethod($className, $methodName); $docComment = $reflector->getDocComment(); $docComment = substr($docComment, 3, -2); if (preg_match(self::REGEX_EXPECTED_EXCEPTION, $docComment, $matches)) { $annotations = self::parseTestMethodAnnotations( $className, $methodName ); $class = $matches[1]; $code = null; $message = ''; $messageRegExp = ''; if (isset($matches[2])) { $message = trim($matches[2]); } elseif (isset($annotations['method']['expectedExceptionMessage'])) { $message = self::parseAnnotationContent( $annotations['method']['expectedExceptionMessage'][0] ); } if (isset($annotations['method']['expectedExceptionMessageRegExp'])) { $messageRegExp = self::parseAnnotationContent( $annotations['method']['expectedExceptionMessageRegExp'][0] ); } if (isset($matches[3])) { $code = $matches[3]; } elseif (isset($annotations['method']['expectedExceptionCode'])) { $code = self::parseAnnotationContent( $annotations['method']['expectedExceptionCode'][0] ); } if (is_numeric($code)) { $code = (int) $code; } elseif (is_string($code) && defined($code)) { $code = (int) constant($code); } return [ 'class' => $class, 'code' => $code, 'message' => $message, 'message_regex' => $messageRegExp ]; } return false; } /** * Parse annotation content to use constant/class constant values * * Constants are specified using a starting '@'. For example: @ClassName::CONST_NAME * * If the constant is not found the string is used as is to ensure maximum BC. * * @param string $message * * @return string */ private static function parseAnnotationContent($message) { if (strpos($message, '::') !== false && count(explode('::', $message)) == 2) { if (defined($message)) { $message = constant($message); } } return $message; } /** * Returns the provided data for a method. * * @param string $className * @param string $methodName * * @return array When a data provider is specified and exists * null When no data provider is specified * * @throws PHPUnit_Framework_Exception */ public static function getProvidedData($className, $methodName) { $reflector = new ReflectionMethod($className, $methodName); $docComment = $reflector->getDocComment(); $data = self::getDataFromDataProviderAnnotation($docComment, $className, $methodName); if ($data === null) { $data = self::getDataFromTestWithAnnotation($docComment); } if (is_array($data) && empty($data)) { throw new PHPUnit_Framework_SkippedTestError; } if ($data !== null) { foreach ($data as $key => $value) { if (!is_array($value)) { throw new PHPUnit_Framework_Exception( sprintf( 'Data set %s is invalid.', is_int($key) ? '#' . $key : '"' . $key . '"' ) ); } } } return $data; } /** * Returns the provided data for a method. * * @param string $docComment * @param string $className * @param string $methodName * * @return array|Iterator when a data provider is specified and exists * null when no data provider is specified * * @throws PHPUnit_Framework_Exception */ private static function getDataFromDataProviderAnnotation($docComment, $className, $methodName) { if (preg_match_all(self::REGEX_DATA_PROVIDER, $docComment, $matches)) { $result = []; foreach ($matches[1] as $match) { $dataProviderMethodNameNamespace = explode('\\', $match); $leaf = explode('::', array_pop($dataProviderMethodNameNamespace)); $dataProviderMethodName = array_pop($leaf); if (!empty($dataProviderMethodNameNamespace)) { $dataProviderMethodNameNamespace = implode('\\', $dataProviderMethodNameNamespace) . '\\'; } else { $dataProviderMethodNameNamespace = ''; } if (!empty($leaf)) { $dataProviderClassName = $dataProviderMethodNameNamespace . array_pop($leaf); } else { $dataProviderClassName = $className; } $dataProviderClass = new ReflectionClass($dataProviderClassName); $dataProviderMethod = $dataProviderClass->getMethod( $dataProviderMethodName ); if ($dataProviderMethod->isStatic()) { $object = null; } else { $object = $dataProviderClass->newInstance(); } if ($dataProviderMethod->getNumberOfParameters() == 0) { $data = $dataProviderMethod->invoke($object); } else { $data = $dataProviderMethod->invoke($object, $methodName); } if ($data instanceof Iterator) { $data = iterator_to_array($data); } if (is_array($data)) { $result = array_merge($result, $data); } } return $result; } } /** * @param string $docComment full docComment string * * @return array when @testWith annotation is defined * null when @testWith annotation is omitted * * @throws PHPUnit_Framework_Exception when @testWith annotation is defined but cannot be parsed */ public static function getDataFromTestWithAnnotation($docComment) { $docComment = self::cleanUpMultiLineAnnotation($docComment); if (preg_match(self::REGEX_TEST_WITH, $docComment, $matches, PREG_OFFSET_CAPTURE)) { $offset = strlen($matches[0][0]) + $matches[0][1]; $annotationContent = substr($docComment, $offset); $data = []; foreach (explode("\n", $annotationContent) as $candidateRow) { $candidateRow = trim($candidateRow); if ($candidateRow[0] !== '[') { break; } $dataSet = json_decode($candidateRow, true); if (json_last_error() != JSON_ERROR_NONE) { throw new PHPUnit_Framework_Exception( 'The dataset for the @testWith annotation cannot be parsed: ' . json_last_error_msg() ); } $data[] = $dataSet; } if (!$data) { throw new PHPUnit_Framework_Exception('The dataset for the @testWith annotation cannot be parsed.'); } return $data; } } private static function cleanUpMultiLineAnnotation($docComment) { //removing initial ' * ' for docComment $docComment = str_replace("\r\n", "\n", $docComment); $docComment = preg_replace('/' . '\n' . '\s*' . '\*' . '\s?' . '/', "\n", $docComment); $docComment = substr($docComment, 0, -1); $docComment = rtrim($docComment, "\n"); return $docComment; } /** * @param string $className * @param string $methodName * * @return array * * @throws ReflectionException */ public static function parseTestMethodAnnotations($className, $methodName = '') { if (!isset(self::$annotationCache[$className])) { $class = new ReflectionClass($className); self::$annotationCache[$className] = self::parseAnnotations($class->getDocComment()); } if (!empty($methodName) && !isset(self::$annotationCache[$className . '::' . $methodName])) { try { $method = new ReflectionMethod($className, $methodName); $annotations = self::parseAnnotations($method->getDocComment()); } catch (ReflectionException $e) { $annotations = []; } self::$annotationCache[$className . '::' . $methodName] = $annotations; } return [ 'class' => self::$annotationCache[$className], 'method' => !empty($methodName) ? self::$annotationCache[$className . '::' . $methodName] : [] ]; } /** * @param string $className * @param string $methodName * * @return array */ public static function getInlineAnnotations($className, $methodName) { $method = new ReflectionMethod($className, $methodName); $code = file($method->getFileName()); $lineNumber = $method->getStartLine(); $startLine = $method->getStartLine() - 1; $endLine = $method->getEndLine() - 1; $methodLines = array_slice($code, $startLine, $endLine - $startLine + 1); $annotations = []; foreach ($methodLines as $line) { if (preg_match('#/\*\*?\s*@(?P[A-Za-z_-]+)(?:[ \t]+(?P.*?))?[ \t]*\r?\*/$#m', $line, $matches)) { $annotations[strtolower($matches['name'])] = [ 'line' => $lineNumber, 'value' => $matches['value'] ]; } $lineNumber++; } return $annotations; } /** * @param string $docblock * * @return array */ private static function parseAnnotations($docblock) { $annotations = []; // Strip away the docblock header and footer to ease parsing of one line annotations $docblock = substr($docblock, 3, -2); if (preg_match_all('/@(?P[A-Za-z_-]+)(?:[ \t]+(?P.*?))?[ \t]*\r?$/m', $docblock, $matches)) { $numMatches = count($matches[0]); for ($i = 0; $i < $numMatches; ++$i) { $annotations[$matches['name'][$i]][] = (string) $matches['value'][$i]; } } return $annotations; } /** * Returns the backup settings for a test. * * @param string $className * @param string $methodName * * @return array */ public static function getBackupSettings($className, $methodName) { return [ 'backupGlobals' => self::getBooleanAnnotationSetting( $className, $methodName, 'backupGlobals' ), 'backupStaticAttributes' => self::getBooleanAnnotationSetting( $className, $methodName, 'backupStaticAttributes' ) ]; } /** * Returns the dependencies for a test class or method. * * @param string $className * @param string $methodName * * @return array */ public static function getDependencies($className, $methodName) { $annotations = self::parseTestMethodAnnotations( $className, $methodName ); $dependencies = []; if (isset($annotations['class']['depends'])) { $dependencies = $annotations['class']['depends']; } if (isset($annotations['method']['depends'])) { $dependencies = array_merge( $dependencies, $annotations['method']['depends'] ); } return array_unique($dependencies); } /** * Returns the error handler settings for a test. * * @param string $className * @param string $methodName * * @return bool */ public static function getErrorHandlerSettings($className, $methodName) { return self::getBooleanAnnotationSetting( $className, $methodName, 'errorHandler' ); } /** * Returns the groups for a test class or method. * * @param string $className * @param string $methodName * * @return array */ public static function getGroups($className, $methodName = '') { $annotations = self::parseTestMethodAnnotations( $className, $methodName ); $groups = []; if (isset($annotations['method']['author'])) { $groups = $annotations['method']['author']; } elseif (isset($annotations['class']['author'])) { $groups = $annotations['class']['author']; } if (isset($annotations['class']['group'])) { $groups = array_merge($groups, $annotations['class']['group']); } if (isset($annotations['method']['group'])) { $groups = array_merge($groups, $annotations['method']['group']); } if (isset($annotations['class']['ticket'])) { $groups = array_merge($groups, $annotations['class']['ticket']); } if (isset($annotations['method']['ticket'])) { $groups = array_merge($groups, $annotations['method']['ticket']); } foreach (['method', 'class'] as $element) { foreach (['small', 'medium', 'large'] as $size) { if (isset($annotations[$element][$size])) { $groups[] = $size; break 2; } } } return array_unique($groups); } /** * Returns the size of the test. * * @param string $className * @param string $methodName * * @return int */ public static function getSize($className, $methodName) { $groups = array_flip(self::getGroups($className, $methodName)); $size = self::UNKNOWN; $class = new ReflectionClass($className); if (isset($groups['large']) || (class_exists('PHPUnit_Extensions_Database_TestCase', false) && $class->isSubclassOf('PHPUnit_Extensions_Database_TestCase'))) { $size = self::LARGE; } elseif (isset($groups['medium'])) { $size = self::MEDIUM; } elseif (isset($groups['small'])) { $size = self::SMALL; } return $size; } /** * Returns the tickets for a test class or method. * * @param string $className * @param string $methodName * * @return array */ public static function getTickets($className, $methodName) { $annotations = self::parseTestMethodAnnotations( $className, $methodName ); $tickets = []; if (isset($annotations['class']['ticket'])) { $tickets = $annotations['class']['ticket']; } if (isset($annotations['method']['ticket'])) { $tickets = array_merge($tickets, $annotations['method']['ticket']); } return array_unique($tickets); } /** * Returns the process isolation settings for a test. * * @param string $className * @param string $methodName * * @return bool */ public static function getProcessIsolationSettings($className, $methodName) { $annotations = self::parseTestMethodAnnotations( $className, $methodName ); if (isset($annotations['class']['runTestsInSeparateProcesses']) || isset($annotations['method']['runInSeparateProcess'])) { return true; } else { return false; } } /** * Returns the preserve global state settings for a test. * * @param string $className * @param string $methodName * * @return bool */ public static function getPreserveGlobalStateSettings($className, $methodName) { return self::getBooleanAnnotationSetting( $className, $methodName, 'preserveGlobalState' ); } /** * @param string $className * * @return array */ public static function getHookMethods($className) { if (!class_exists($className, false)) { return self::emptyHookMethodsArray(); } if (!isset(self::$hookMethods[$className])) { self::$hookMethods[$className] = self::emptyHookMethodsArray(); try { $class = new ReflectionClass($className); foreach ($class->getMethods() as $method) { if (self::isBeforeClassMethod($method)) { self::$hookMethods[$className]['beforeClass'][] = $method->getName(); } if (self::isBeforeMethod($method)) { self::$hookMethods[$className]['before'][] = $method->getName(); } if (self::isAfterMethod($method)) { self::$hookMethods[$className]['after'][] = $method->getName(); } if (self::isAfterClassMethod($method)) { self::$hookMethods[$className]['afterClass'][] = $method->getName(); } } } catch (ReflectionException $e) { } } return self::$hookMethods[$className]; } /** * @return array */ private static function emptyHookMethodsArray() { return [ 'beforeClass' => ['setUpBeforeClass'], 'before' => ['setUp'], 'after' => ['tearDown'], 'afterClass' => ['tearDownAfterClass'] ]; } /** * @param string $className * @param string $methodName * @param string $settingName * * @return bool */ private static function getBooleanAnnotationSetting($className, $methodName, $settingName) { $annotations = self::parseTestMethodAnnotations( $className, $methodName ); $result = null; if (isset($annotations['class'][$settingName])) { if ($annotations['class'][$settingName][0] == 'enabled') { $result = true; } elseif ($annotations['class'][$settingName][0] == 'disabled') { $result = false; } } if (isset($annotations['method'][$settingName])) { if ($annotations['method'][$settingName][0] == 'enabled') { $result = true; } elseif ($annotations['method'][$settingName][0] == 'disabled') { $result = false; } } return $result; } /** * @param string $element * * @return array * * @throws PHPUnit_Framework_InvalidCoversTargetException */ private static function resolveElementToReflectionObjects($element) { $codeToCoverList = []; if (strpos($element, '\\') !== false && function_exists($element)) { $codeToCoverList[] = new ReflectionFunction($element); } elseif (strpos($element, '::') !== false) { list($className, $methodName) = explode('::', $element); if (isset($methodName[0]) && $methodName[0] == '<') { $classes = [$className]; foreach ($classes as $className) { if (!class_exists($className) && !interface_exists($className) && !trait_exists($className)) { throw new PHPUnit_Framework_InvalidCoversTargetException( sprintf( 'Trying to @cover or @use not existing class or ' . 'interface "%s".', $className ) ); } $class = new ReflectionClass($className); $methods = $class->getMethods(); $inverse = isset($methodName[1]) && $methodName[1] == '!'; if (strpos($methodName, 'protected')) { $visibility = 'isProtected'; } elseif (strpos($methodName, 'private')) { $visibility = 'isPrivate'; } elseif (strpos($methodName, 'public')) { $visibility = 'isPublic'; } foreach ($methods as $method) { if ($inverse && !$method->$visibility()) { $codeToCoverList[] = $method; } elseif (!$inverse && $method->$visibility()) { $codeToCoverList[] = $method; } } } } else { $classes = [$className]; foreach ($classes as $className) { if ($className == '' && function_exists($methodName)) { $codeToCoverList[] = new ReflectionFunction( $methodName ); } else { if (!((class_exists($className) || interface_exists($className) || trait_exists($className)) && method_exists($className, $methodName))) { throw new PHPUnit_Framework_InvalidCoversTargetException( sprintf( 'Trying to @cover or @use not existing method "%s::%s".', $className, $methodName ) ); } $codeToCoverList[] = new ReflectionMethod( $className, $methodName ); } } } } else { $extended = false; if (strpos($element, '') !== false) { $element = str_replace('', '', $element); $extended = true; } $classes = [$element]; if ($extended) { $classes = array_merge( $classes, class_implements($element), class_parents($element) ); } foreach ($classes as $className) { if (!class_exists($className) && !interface_exists($className) && !trait_exists($className)) { throw new PHPUnit_Framework_InvalidCoversTargetException( sprintf( 'Trying to @cover or @use not existing class or ' . 'interface "%s".', $className ) ); } $codeToCoverList[] = new ReflectionClass($className); } } return $codeToCoverList; } /** * @param array $reflectors * * @return array */ private static function resolveReflectionObjectsToLines(array $reflectors) { $result = []; foreach ($reflectors as $reflector) { $filename = $reflector->getFileName(); if (!isset($result[$filename])) { $result[$filename] = []; } $result[$filename] = array_merge( $result[$filename], range($reflector->getStartLine(), $reflector->getEndLine()) ); } foreach ($result as $filename => $lineNumbers) { $result[$filename] = array_keys(array_flip($lineNumbers)); } return $result; } /** * @param ReflectionMethod $method * * @return bool */ private static function isBeforeClassMethod(ReflectionMethod $method) { return $method->isStatic() && strpos($method->getDocComment(), '@beforeClass') !== false; } /** * @param ReflectionMethod $method * * @return bool */ private static function isBeforeMethod(ReflectionMethod $method) { return preg_match('/@before\b/', $method->getDocComment()); } /** * @param ReflectionMethod $method * * @return bool */ private static function isAfterClassMethod(ReflectionMethod $method) { return $method->isStatic() && strpos($method->getDocComment(), '@afterClass') !== false; } /** * @param ReflectionMethod $method * * @return bool */ private static function isAfterMethod(ReflectionMethod $method) { return preg_match('/@after\b/', $method->getDocComment()); } } PK!src/Util/TestSuiteIterator.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Iterator for test suites. */ class PHPUnit_Util_TestSuiteIterator implements RecursiveIterator { /** * @var int */ protected $position; /** * @var PHPUnit_Framework_Test[] */ protected $tests; /** * @param PHPUnit_Framework_TestSuite $testSuite */ public function __construct(PHPUnit_Framework_TestSuite $testSuite) { $this->tests = $testSuite->tests(); } /** * Rewinds the Iterator to the first element. */ public function rewind() { $this->position = 0; } /** * Checks if there is a current element after calls to rewind() or next(). * * @return bool */ public function valid() { return $this->position < count($this->tests); } /** * Returns the key of the current element. * * @return int */ public function key() { return $this->position; } /** * Returns the current element. * * @return PHPUnit_Framework_Test */ public function current() { return $this->valid() ? $this->tests[$this->position] : null; } /** * Moves forward to next element. */ public function next() { $this->position++; } /** * Returns the sub iterator for the current element. * * @return PHPUnit_Util_TestSuiteIterator */ public function getChildren() { return new self( $this->tests[$this->position] ); } /** * Checks whether the current element has children. * * @return bool */ public function hasChildren() { return $this->tests[$this->position] instanceof PHPUnit_Framework_TestSuite; } } PK!  src/Util/Filesystem.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Filesystem helpers. */ class PHPUnit_Util_Filesystem { /** * @var array */ protected static $buffer = []; /** * Maps class names to source file names: * - PEAR CS: Foo_Bar_Baz -> Foo/Bar/Baz.php * - Namespace: Foo\Bar\Baz -> Foo/Bar/Baz.php * * @param string $className * * @return string */ public static function classNameToFilename($className) { return str_replace( ['_', '\\'], DIRECTORY_SEPARATOR, $className ) . '.php'; } } PK!ӱsL L src/Util/ErrorHandler.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ // Workaround for http://bugs.php.net/bug.php?id=47987, // see https://github.com/sebastianbergmann/phpunit/issues#issue/125 for details // Use dirname(__DIR__) instead of using /../ because of https://github.com/facebook/hhvm/issues/5215 require_once dirname(__DIR__) . '/Framework/Error.php'; require_once dirname(__DIR__) . '/Framework/Error/Notice.php'; require_once dirname(__DIR__) . '/Framework/Error/Warning.php'; require_once dirname(__DIR__) . '/Framework/Error/Deprecated.php'; /** * Error handler that converts PHP errors and warnings to exceptions. */ class PHPUnit_Util_ErrorHandler { protected static $errorStack = []; /** * Returns the error stack. * * @return array */ public static function getErrorStack() { return self::$errorStack; } /** * @param int $errno * @param string $errstr * @param string $errfile * @param int $errline * * @throws PHPUnit_Framework_Error */ public static function handleError($errno, $errstr, $errfile, $errline) { if (!($errno & error_reporting())) { return false; } self::$errorStack[] = [$errno, $errstr, $errfile, $errline]; $trace = debug_backtrace(false); array_shift($trace); foreach ($trace as $frame) { if ($frame['function'] == '__toString') { return false; } } if ($errno == E_NOTICE || $errno == E_USER_NOTICE || $errno == E_STRICT) { if (PHPUnit_Framework_Error_Notice::$enabled !== true) { return false; } $exception = 'PHPUnit_Framework_Error_Notice'; } elseif ($errno == E_WARNING || $errno == E_USER_WARNING) { if (PHPUnit_Framework_Error_Warning::$enabled !== true) { return false; } $exception = 'PHPUnit_Framework_Error_Warning'; } elseif ($errno == E_DEPRECATED || $errno == E_USER_DEPRECATED) { if (PHPUnit_Framework_Error_Deprecated::$enabled !== true) { return false; } $exception = 'PHPUnit_Framework_Error_Deprecated'; } else { $exception = 'PHPUnit_Framework_Error'; } throw new $exception($errstr, $errno, $errfile, $errline); } /** * Registers an error handler and returns a function that will restore * the previous handler when invoked * * @param int $severity PHP predefined error constant * * @throws Exception if event of specified severity is emitted */ public static function handleErrorOnce($severity = E_WARNING) { $terminator = function () { static $expired = false; if (!$expired) { $expired = true; // cleans temporary error handler return restore_error_handler(); } }; set_error_handler(function ($errno, $errstr) use ($severity) { if ($errno === $severity) { return; } return false; }); return $terminator; } } PK!OP))src/Util/PHP.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ use SebastianBergmann\Environment\Runtime; /** * Utility methods for PHP sub-processes. */ abstract class PHPUnit_Util_PHP { /** * @var Runtime */ protected $runtime; /** * @var bool */ protected $stderrRedirection = false; /** * @var string */ protected $stdin = ''; /** * @var string */ protected $args = ''; /** * @var array */ protected $env = []; /** * @var int */ protected $timeout = 0; /** * Creates internal Runtime instance. */ public function __construct() { $this->runtime = new Runtime(); } /** * Defines if should use STDERR redirection or not. * * Then $stderrRedirection is TRUE, STDERR is redirected to STDOUT. * * @throws PHPUnit_Framework_Exception * * @param bool $stderrRedirection */ public function setUseStderrRedirection($stderrRedirection) { if (!is_bool($stderrRedirection)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean'); } $this->stderrRedirection = $stderrRedirection; } /** * Returns TRUE if uses STDERR redirection or FALSE if not. * * @return bool */ public function useStderrRedirection() { return $this->stderrRedirection; } /** * Sets the input string to be sent via STDIN * * @param string $stdin */ public function setStdin($stdin) { $this->stdin = (string) $stdin; } /** * Returns the input string to be sent via STDIN * * @return string */ public function getStdin() { return $this->stdin; } /** * Sets the string of arguments to pass to the php job * * @param string $args */ public function setArgs($args) { $this->args = (string) $args; } /** * Returns the string of arguments to pass to the php job * * @retrun string */ public function getArgs() { return $this->args; } /** * Sets the array of environment variables to start the child process with * * @param array $env */ public function setEnv(array $env) { $this->env = $env; } /** * Returns the array of environment variables to start the child process with * * @return array */ public function getEnv() { return $this->env; } /** * Sets the amount of seconds to wait before timing out * * @param int $timeout */ public function setTimeout($timeout) { $this->timeout = (int) $timeout; } /** * Returns the amount of seconds to wait before timing out * * @return int */ public function getTimeout() { return $this->timeout; } /** * @return PHPUnit_Util_PHP */ public static function factory() { if (DIRECTORY_SEPARATOR == '\\') { return new PHPUnit_Util_PHP_Windows; } return new PHPUnit_Util_PHP_Default; } /** * Runs a single test in a separate PHP process. * * @param string $job * @param PHPUnit_Framework_Test $test * @param PHPUnit_Framework_TestResult $result * * @throws PHPUnit_Framework_Exception */ public function runTestJob($job, PHPUnit_Framework_Test $test, PHPUnit_Framework_TestResult $result) { $result->startTest($test); $_result = $this->runJob($job); $this->processChildResult( $test, $result, $_result['stdout'], $_result['stderr'] ); } /** * Returns the command based into the configurations. * * @param array $settings * @param string|null $file * * @return string */ public function getCommand(array $settings, $file = null) { $command = $this->runtime->getBinary(); $command .= $this->settingsToParameters($settings); if ('phpdbg' === PHP_SAPI) { $command .= ' -qrr '; if ($file) { $command .= '-e ' . escapeshellarg($file); } else { $command .= escapeshellarg(__DIR__ . '/PHP/eval-stdin.php'); } } elseif ($file) { $command .= ' -f ' . escapeshellarg($file); } if ($this->args) { $command .= ' -- ' . $this->args; } if (true === $this->stderrRedirection) { $command .= ' 2>&1'; } return $command; } /** * Runs a single job (PHP code) using a separate PHP process. * * @param string $job * @param array $settings * * @return array * * @throws PHPUnit_Framework_Exception */ abstract public function runJob($job, array $settings = []); /** * @param array $settings * * @return string */ protected function settingsToParameters(array $settings) { $buffer = ''; foreach ($settings as $setting) { $buffer .= ' -d ' . $setting; } return $buffer; } /** * Processes the TestResult object from an isolated process. * * @param PHPUnit_Framework_Test $test * @param PHPUnit_Framework_TestResult $result * @param string $stdout * @param string $stderr */ private function processChildResult(PHPUnit_Framework_Test $test, PHPUnit_Framework_TestResult $result, $stdout, $stderr) { $time = 0; if (!empty($stderr)) { $result->addError( $test, new PHPUnit_Framework_Exception(trim($stderr)), $time ); } else { set_error_handler(function ($errno, $errstr, $errfile, $errline) { throw new ErrorException($errstr, $errno, $errno, $errfile, $errline); }); try { if (strpos($stdout, "#!/usr/bin/env php\n") === 0) { $stdout = substr($stdout, 19); } $childResult = unserialize(str_replace("#!/usr/bin/env php\n", '', $stdout)); restore_error_handler(); } catch (ErrorException $e) { restore_error_handler(); $childResult = false; $result->addError( $test, new PHPUnit_Framework_Exception(trim($stdout), 0, $e), $time ); } if ($childResult !== false) { if (!empty($childResult['output'])) { $output = $childResult['output']; } $test->setResult($childResult['testResult']); $test->addToAssertionCount($childResult['numAssertions']); $childResult = $childResult['result']; /* @var $childResult PHPUnit_Framework_TestResult */ if ($result->getCollectCodeCoverageInformation()) { $result->getCodeCoverage()->merge( $childResult->getCodeCoverage() ); } $time = $childResult->time(); $notImplemented = $childResult->notImplemented(); $risky = $childResult->risky(); $skipped = $childResult->skipped(); $errors = $childResult->errors(); $warnings = $childResult->warnings(); $failures = $childResult->failures(); if (!empty($notImplemented)) { $result->addError( $test, $this->getException($notImplemented[0]), $time ); } elseif (!empty($risky)) { $result->addError( $test, $this->getException($risky[0]), $time ); } elseif (!empty($skipped)) { $result->addError( $test, $this->getException($skipped[0]), $time ); } elseif (!empty($errors)) { $result->addError( $test, $this->getException($errors[0]), $time ); } elseif (!empty($warnings)) { $result->addWarning( $test, $this->getException($warnings[0]), $time ); } elseif (!empty($failures)) { $result->addFailure( $test, $this->getException($failures[0]), $time ); } } } $result->endTest($test, $time); if (!empty($output)) { print $output; } } /** * Gets the thrown exception from a PHPUnit_Framework_TestFailure. * * @param PHPUnit_Framework_TestFailure $error * * @return Exception * * @see https://github.com/sebastianbergmann/phpunit/issues/74 */ private function getException(PHPUnit_Framework_TestFailure $error) { $exception = $error->thrownException(); if ($exception instanceof __PHP_Incomplete_Class) { $exceptionArray = []; foreach ((array) $exception as $key => $value) { $key = substr($key, strrpos($key, "\0") + 1); $exceptionArray[$key] = $value; } $exception = new PHPUnit_Framework_SyntheticError( sprintf( '%s: %s', $exceptionArray['_PHP_Incomplete_Class_Name'], $exceptionArray['message'] ), $exceptionArray['code'], $exceptionArray['file'], $exceptionArray['line'], $exceptionArray['trace'] ); } return $exception; } } PK!fsrc/Util/XML.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * XML helpers. */ class PHPUnit_Util_XML { /** * Load an $actual document into a DOMDocument. This is called * from the selector assertions. * * If $actual is already a DOMDocument, it is returned with * no changes. Otherwise, $actual is loaded into a new DOMDocument * as either HTML or XML, depending on the value of $isHtml. If $isHtml is * false and $xinclude is true, xinclude is performed on the loaded * DOMDocument. * * Note: prior to PHPUnit 3.3.0, this method loaded a file and * not a string as it currently does. To load a file into a * DOMDocument, use loadFile() instead. * * @param string|DOMDocument $actual * @param bool $isHtml * @param string $filename * @param bool $xinclude * @param bool $strict * * @return DOMDocument */ public static function load($actual, $isHtml = false, $filename = '', $xinclude = false, $strict = false) { if ($actual instanceof DOMDocument) { return $actual; } if (!is_string($actual)) { throw new PHPUnit_Framework_Exception('Could not load XML from ' . gettype($actual)); } if ($actual === '') { throw new PHPUnit_Framework_Exception('Could not load XML from empty string'); } // Required for XInclude on Windows. if ($xinclude) { $cwd = getcwd(); @chdir(dirname($filename)); } $document = new DOMDocument; $document->preserveWhiteSpace = false; $internal = libxml_use_internal_errors(true); $message = ''; $reporting = error_reporting(0); if ('' !== $filename) { // Necessary for xinclude $document->documentURI = $filename; } if ($isHtml) { $loaded = $document->loadHTML($actual); } else { $loaded = $document->loadXML($actual); } if (!$isHtml && $xinclude) { $document->xinclude(); } foreach (libxml_get_errors() as $error) { $message .= "\n" . $error->message; } libxml_use_internal_errors($internal); error_reporting($reporting); if ($xinclude) { @chdir($cwd); } if ($loaded === false || ($strict && $message !== '')) { if ($filename !== '') { throw new PHPUnit_Framework_Exception( sprintf( 'Could not load "%s".%s', $filename, $message != '' ? "\n" . $message : '' ) ); } else { if ($message === '') { $message = 'Could not load XML for unknown reason'; } throw new PHPUnit_Framework_Exception($message); } } return $document; } /** * Loads an XML (or HTML) file into a DOMDocument object. * * @param string $filename * @param bool $isHtml * @param bool $xinclude * @param bool $strict * * @return DOMDocument */ public static function loadFile($filename, $isHtml = false, $xinclude = false, $strict = false) { $reporting = error_reporting(0); $contents = file_get_contents($filename); error_reporting($reporting); if ($contents === false) { throw new PHPUnit_Framework_Exception( sprintf( 'Could not read "%s".', $filename ) ); } return self::load($contents, $isHtml, $filename, $xinclude, $strict); } /** * @param DOMNode $node */ public static function removeCharacterDataNodes(DOMNode $node) { if ($node->hasChildNodes()) { for ($i = $node->childNodes->length - 1; $i >= 0; $i--) { if (($child = $node->childNodes->item($i)) instanceof DOMCharacterData) { $node->removeChild($child); } } } } /** * Escapes a string for the use in XML documents * Any Unicode character is allowed, excluding the surrogate blocks, FFFE, * and FFFF (not even as character reference). * See http://www.w3.org/TR/xml/#charsets * * @param string $string * * @return string */ public static function prepareString($string) { return preg_replace( '/[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]/', '', htmlspecialchars( PHPUnit_Util_String::convertToUtf8($string), ENT_QUOTES, 'UTF-8' ) ); } /** * "Convert" a DOMElement object into a PHP variable. * * @param DOMElement $element * * @return mixed */ public static function xmlToVariable(DOMElement $element) { $variable = null; switch ($element->tagName) { case 'array': $variable = []; foreach ($element->childNodes as $entry) { if (!$entry instanceof DOMElement || $entry->tagName !== 'element') { continue; } $item = $entry->childNodes->item(0); if ($item instanceof DOMText) { $item = $entry->childNodes->item(1); } $value = self::xmlToVariable($item); if ($entry->hasAttribute('key')) { $variable[(string) $entry->getAttribute('key')] = $value; } else { $variable[] = $value; } } break; case 'object': $className = $element->getAttribute('class'); if ($element->hasChildNodes()) { $arguments = $element->childNodes->item(1)->childNodes; $constructorArgs = []; foreach ($arguments as $argument) { if ($argument instanceof DOMElement) { $constructorArgs[] = self::xmlToVariable($argument); } } $class = new ReflectionClass($className); $variable = $class->newInstanceArgs($constructorArgs); } else { $variable = new $className; } break; case 'boolean': $variable = $element->textContent == 'true' ? true : false; break; case 'integer': case 'double': case 'string': $variable = $element->textContent; settype($variable, $element->tagName); break; } return $variable; } } PK!(Evvsrc/Util/Fileloader.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Utility methods to load PHP sourcefiles. */ class PHPUnit_Util_Fileloader { /** * Checks if a PHP sourcefile is readable. * The sourcefile is loaded through the load() method. * * @param string $filename * * @return string * * @throws PHPUnit_Framework_Exception */ public static function checkAndLoad($filename) { $includePathFilename = stream_resolve_include_path($filename); if (!$includePathFilename || !is_readable($includePathFilename)) { throw new PHPUnit_Framework_Exception( sprintf('Cannot open file "%s".' . "\n", $filename) ); } self::load($includePathFilename); return $includePathFilename; } /** * Loads a PHP sourcefile. * * @param string $filename * * @return mixed */ public static function load($filename) { $oldVariableNames = array_keys(get_defined_vars()); include_once $filename; $newVariables = get_defined_vars(); $newVariableNames = array_diff( array_keys($newVariables), $oldVariableNames ); foreach ($newVariableNames as $variableName) { if ($variableName != 'oldVariableNames') { $GLOBALS[$variableName] = $newVariables[$variableName]; } } return $filename; } } PK!VVHHsrc/Util/Type.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Utility class for textual type (and value) representation. */ class PHPUnit_Util_Type { /** * @param string $type * * @return bool */ public static function isType($type) { return in_array( $type, [ 'numeric', 'integer', 'int', 'float', 'string', 'boolean', 'bool', 'null', 'array', 'object', 'resource', 'scalar' ] ); } } PK!Vqqsrc/Util/Regex.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Error handler that converts PHP errors and warnings to exceptions. */ class PHPUnit_Util_Regex { /** * @param string $pattern * @param string $subject * @param null $matches * @param int $flags * @param int $offset * * @return int */ public static function pregMatchSafe($pattern, $subject, $matches = null, $flags = 0, $offset = 0) { $handler_terminator = PHPUnit_Util_ErrorHandler::handleErrorOnce(E_WARNING); $match = preg_match($pattern, $subject, $matches, $flags, $offset); $handler_terminator(); // cleaning return $match; } } PK!#  -src/Util/PHP/Template/TestCaseMethod.tpl.distnuIwsetCodeCoverage( new CodeCoverage( null, unserialize('{codeCoverageFilter}') ) ); } $result->beStrictAboutTestsThatDoNotTestAnything({isStrictAboutTestsThatDoNotTestAnything}); $result->beStrictAboutOutputDuringTests({isStrictAboutOutputDuringTests}); $result->enforceTimeLimit({enforcesTimeLimit}); $result->beStrictAboutTodoAnnotatedTests({isStrictAboutTodoAnnotatedTests}); $result->beStrictAboutResourceUsageDuringSmallTests({isStrictAboutResourceUsageDuringSmallTests}); $test = new {className}('{methodName}', unserialize('{data}'), '{dataName}'); $test->setDependencyInput(unserialize('{dependencyInput}')); $test->setInIsolation(TRUE); ob_end_clean(); $test->run($result); $output = ''; if (!$test->hasExpectationOnOutput()) { $output = $test->getActualOutput(); } @rewind(STDOUT); /* @ as not every STDOUT target stream is rewindable */ if ($stdout = stream_get_contents(STDOUT)) { $output = $stdout . $output; } print serialize( array( 'testResult' => $test->getResult(), 'numAssertions' => $test->getNumAssertions(), 'result' => $result, 'output' => $output ) ); } $configurationFilePath = '{configurationFilePath}'; if ('' !== $configurationFilePath) { $configuration = PHPUnit_Util_Configuration::getInstance($configurationFilePath); $configuration->handlePHPConfiguration(); unset($configuration); } function __phpunit_error_handler($errno, $errstr, $errfile, $errline, $errcontext) { return true; } set_error_handler("__phpunit_error_handler"); {constants} {included_files} {globals} restore_error_handler(); if (isset($GLOBALS['__PHPUNIT_BOOTSTRAP'])) { require_once $GLOBALS['__PHPUNIT_BOOTSTRAP']; unset($GLOBALS['__PHPUNIT_BOOTSTRAP']); } __phpunit_run_isolated_test(); PK!Ŀsrc/Util/PHP/Windows.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Windows utility for PHP sub-processes. * * Reading from STDOUT or STDERR hangs forever on Windows if the output is * too large. * * @see https://bugs.php.net/bug.php?id=51800 */ class PHPUnit_Util_PHP_Windows extends PHPUnit_Util_PHP_Default { protected $useTempFile = true; protected function getHandles() { if (false === $stdout_handle = tmpfile()) { throw new PHPUnit_Framework_Exception( 'A temporary file could not be created; verify that your TEMP environment variable is writable' ); } return [ 1 => $stdout_handle ]; } public function getCommand(array $settings, $file = null) { return '"' . parent::getCommand($settings, $file) . '"'; } } PK!nsrc/Util/PHP/Default.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Default utility for PHP sub-processes. */ class PHPUnit_Util_PHP_Default extends PHPUnit_Util_PHP { /** * @var string */ protected $tempFile; /** * @var bool */ protected $useTempFile = false; /** * Runs a single job (PHP code) using a separate PHP process. * * @param string $job * @param array $settings * * @return array * * @throws PHPUnit_Framework_Exception */ public function runJob($job, array $settings = []) { if ($this->useTempFile || $this->stdin) { if (!($this->tempFile = tempnam(sys_get_temp_dir(), 'PHPUnit')) || file_put_contents($this->tempFile, $job) === false) { throw new PHPUnit_Framework_Exception( 'Unable to write temporary file' ); } $job = $this->stdin; } return $this->runProcess($job, $settings); } /** * Returns an array of file handles to be used in place of pipes * * @return array */ protected function getHandles() { return []; } /** * Handles creating the child process and returning the STDOUT and STDERR * * @param string $job * @param array $settings * * @return array * * @throws PHPUnit_Framework_Exception */ protected function runProcess($job, $settings) { $handles = $this->getHandles(); $env = null; if ($this->env) { $env = isset($_SERVER) ? $_SERVER : []; unset($env['argv'], $env['argc']); $env = array_merge($env, $this->env); foreach ($env as $envKey => $envVar) { if (is_array($envVar)) { unset($env[$envKey]); } } } $pipeSpec = [ 0 => isset($handles[0]) ? $handles[0] : ['pipe', 'r'], 1 => isset($handles[1]) ? $handles[1] : ['pipe', 'w'], 2 => isset($handles[2]) ? $handles[2] : ['pipe', 'w'], ]; $process = proc_open( $this->getCommand($settings, $this->tempFile), $pipeSpec, $pipes, null, $env ); if (!is_resource($process)) { throw new PHPUnit_Framework_Exception( 'Unable to spawn worker process' ); } if ($job) { $this->process($pipes[0], $job); } fclose($pipes[0]); if ($this->timeout) { $stderr = $stdout = ''; unset($pipes[0]); while (true) { $r = $pipes; $w = null; $e = null; $n = @stream_select($r, $w, $e, $this->timeout); if ($n === false) { break; } elseif ($n === 0) { proc_terminate($process, 9); throw new PHPUnit_Framework_Exception(sprintf('Job execution aborted after %d seconds', $this->timeout)); } elseif ($n > 0) { foreach ($r as $pipe) { $pipeOffset = 0; foreach ($pipes as $i => $origPipe) { if ($pipe == $origPipe) { $pipeOffset = $i; break; } } if (!$pipeOffset) { break; } $line = fread($pipe, 8192); if (strlen($line) == 0) { fclose($pipes[$pipeOffset]); unset($pipes[$pipeOffset]); } else { if ($pipeOffset == 1) { $stdout .= $line; } else { $stderr .= $line; } } } if (empty($pipes)) { break; } } } } else { if (isset($pipes[1])) { $stdout = stream_get_contents($pipes[1]); fclose($pipes[1]); } if (isset($pipes[2])) { $stderr = stream_get_contents($pipes[2]); fclose($pipes[2]); } } if (isset($handles[1])) { rewind($handles[1]); $stdout = stream_get_contents($handles[1]); fclose($handles[1]); } if (isset($handles[2])) { rewind($handles[2]); $stderr = stream_get_contents($handles[2]); fclose($handles[2]); } proc_close($process); $this->cleanup(); return ['stdout' => $stdout, 'stderr' => $stderr]; } /** * @param resource $pipe * @param string $job * * @throws PHPUnit_Framework_Exception */ protected function process($pipe, $job) { fwrite($pipe, $job); } protected function cleanup() { if ($this->tempFile) { unlink($this->tempFile); } } } PK! 3src/Util/PHP/eval-stdin.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ eval('?>' . file_get_contents('php://stdin')); PK!"""src/Util/InvalidArgumentHelper.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Factory for PHPUnit_Framework_Exception objects that are used to describe * invalid arguments passed to a function or method. */ class PHPUnit_Util_InvalidArgumentHelper { /** * @param int $argument * @param string $type * @param mixed $value * * @return PHPUnit_Framework_Exception */ public static function factory($argument, $type, $value = null) { $stack = debug_backtrace(false); return new PHPUnit_Framework_Exception( sprintf( 'Argument #%d%sof %s::%s() must be a %s', $argument, $value !== null ? ' (' . gettype($value) . '#' . $value . ')' : ' (No Value) ', $stack[1]['class'], $stack[1]['function'], $type ) ); } } PK!LzJ J src/Util/Printer.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Utility class that can print to STDOUT or write to a file. */ class PHPUnit_Util_Printer { /** * If true, flush output after every write. * * @var bool */ protected $autoFlush = false; /** * @var resource */ protected $out; /** * @var string */ protected $outTarget; /** * Constructor. * * @param mixed $out * * @throws PHPUnit_Framework_Exception */ public function __construct($out = null) { if ($out !== null) { if (is_string($out)) { if (strpos($out, 'socket://') === 0) { $out = explode(':', str_replace('socket://', '', $out)); if (count($out) != 2) { throw new PHPUnit_Framework_Exception; } $this->out = fsockopen($out[0], $out[1]); } else { if (strpos($out, 'php://') === false && !is_dir(dirname($out))) { mkdir(dirname($out), 0777, true); } $this->out = fopen($out, 'wt'); } $this->outTarget = $out; } else { $this->out = $out; } } } /** * Flush buffer and close output if it's not to a PHP stream */ public function flush() { if ($this->out && strncmp($this->outTarget, 'php://', 6) !== 0) { fclose($this->out); } } /** * Performs a safe, incremental flush. * * Do not confuse this function with the flush() function of this class, * since the flush() function may close the file being written to, rendering * the current object no longer usable. */ public function incrementalFlush() { if ($this->out) { fflush($this->out); } else { flush(); } } /** * @param string $buffer */ public function write($buffer) { if ($this->out) { fwrite($this->out, $buffer); if ($this->autoFlush) { $this->incrementalFlush(); } } else { if (PHP_SAPI != 'cli' && PHP_SAPI != 'phpdbg') { $buffer = htmlspecialchars($buffer, ENT_SUBSTITUTE); } print $buffer; if ($this->autoFlush) { $this->incrementalFlush(); } } } /** * Check auto-flush mode. * * @return bool */ public function getAutoFlush() { return $this->autoFlush; } /** * Set auto-flushing mode. * * If set, *incremental* flushes will be done after each write. This should * not be confused with the different effects of this class' flush() method. * * @param bool $autoFlush */ public function setAutoFlush($autoFlush) { if (is_bool($autoFlush)) { $this->autoFlush = $autoFlush; } else { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean'); } } } PK! 9"::src/Util/GlobalState.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class PHPUnit_Util_GlobalState { /** * @var array */ protected static $superGlobalArrays = [ '_ENV', '_POST', '_GET', '_COOKIE', '_SERVER', '_FILES', '_REQUEST' ]; /** * @var array */ protected static $superGlobalArraysLong = [ 'HTTP_ENV_VARS', 'HTTP_POST_VARS', 'HTTP_GET_VARS', 'HTTP_COOKIE_VARS', 'HTTP_SERVER_VARS', 'HTTP_POST_FILES' ]; /** * @return string */ public static function getIncludedFilesAsString() { return static::processIncludedFilesAsString(get_included_files()); } /** * @param array $files * * @return string */ public static function processIncludedFilesAsString(array $files) { $blacklist = new PHPUnit_Util_Blacklist; $prefix = false; $result = ''; if (defined('__PHPUNIT_PHAR__')) { $prefix = 'phar://' . __PHPUNIT_PHAR__ . '/'; } for ($i = count($files) - 1; $i > 0; $i--) { $file = $files[$i]; if ($prefix !== false && strpos($file, $prefix) === 0) { continue; } // Skip virtual file system protocols if (preg_match('/^(vfs|phpvfs[a-z0-9]+):/', $file)) { continue; } if (!$blacklist->isBlacklisted($file) && is_file($file)) { $result = 'require_once \'' . $file . "';\n" . $result; } } return $result; } /** * @return string */ public static function getIniSettingsAsString() { $result = ''; $iniSettings = ini_get_all(null, false); foreach ($iniSettings as $key => $value) { $result .= sprintf( '@ini_set(%s, %s);' . "\n", self::exportVariable($key), self::exportVariable($value) ); } return $result; } /** * @return string */ public static function getConstantsAsString() { $constants = get_defined_constants(true); $result = ''; if (isset($constants['user'])) { foreach ($constants['user'] as $name => $value) { $result .= sprintf( 'if (!defined(\'%s\')) define(\'%s\', %s);' . "\n", $name, $name, self::exportVariable($value) ); } } return $result; } /** * @return string */ public static function getGlobalsAsString() { $result = ''; $superGlobalArrays = self::getSuperGlobalArrays(); foreach ($superGlobalArrays as $superGlobalArray) { if (isset($GLOBALS[$superGlobalArray]) && is_array($GLOBALS[$superGlobalArray])) { foreach (array_keys($GLOBALS[$superGlobalArray]) as $key) { if ($GLOBALS[$superGlobalArray][$key] instanceof Closure) { continue; } $result .= sprintf( '$GLOBALS[\'%s\'][\'%s\'] = %s;' . "\n", $superGlobalArray, $key, self::exportVariable($GLOBALS[$superGlobalArray][$key]) ); } } } $blacklist = $superGlobalArrays; $blacklist[] = 'GLOBALS'; foreach (array_keys($GLOBALS) as $key) { if (!in_array($key, $blacklist) && !$GLOBALS[$key] instanceof Closure) { $result .= sprintf( '$GLOBALS[\'%s\'] = %s;' . "\n", $key, self::exportVariable($GLOBALS[$key]) ); } } return $result; } /** * @return array */ protected static function getSuperGlobalArrays() { if (ini_get('register_long_arrays') == '1') { return array_merge( self::$superGlobalArrays, self::$superGlobalArraysLong ); } else { return self::$superGlobalArrays; } } protected static function exportVariable($variable) { if (is_scalar($variable) || is_null($variable) || (is_array($variable) && self::arrayOnlyContainsScalars($variable))) { return var_export($variable, true); } return 'unserialize(' . var_export(serialize($variable), true) . ')'; } /** * @param array $array * * @return bool */ protected static function arrayOnlyContainsScalars(array $array) { $result = true; foreach ($array as $element) { if (is_array($element)) { $result = self::arrayOnlyContainsScalars($element); } elseif (!is_scalar($element) && !is_null($element)) { $result = false; } if ($result === false) { break; } } return $result; } } PK!,##src/Util/Getopt.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Command-line options parsing class. */ class PHPUnit_Util_Getopt { public static function getopt(array $args, $short_options, $long_options = null) { if (empty($args)) { return [[], []]; } $opts = []; $non_opts = []; if ($long_options) { sort($long_options); } if (isset($args[0][0]) && $args[0][0] != '-') { array_shift($args); } reset($args); $args = array_map('trim', $args); while (false !== $arg = current($args)) { $i = key($args); next($args); if ($arg == '') { continue; } if ($arg == '--') { $non_opts = array_merge($non_opts, array_slice($args, $i + 1)); break; } if ($arg[0] != '-' || (strlen($arg) > 1 && $arg[1] == '-' && !$long_options)) { $non_opts[] = $args[$i]; continue; } elseif (strlen($arg) > 1 && $arg[1] == '-') { self::parseLongOption( substr($arg, 2), $long_options, $opts, $args ); } else { self::parseShortOption( substr($arg, 1), $short_options, $opts, $args ); } } return [$opts, $non_opts]; } protected static function parseShortOption($arg, $short_options, &$opts, &$args) { $argLen = strlen($arg); for ($i = 0; $i < $argLen; $i++) { $opt = $arg[$i]; $opt_arg = null; if (($spec = strstr($short_options, $opt)) === false || $arg[$i] == ':') { throw new PHPUnit_Framework_Exception( "unrecognized option -- $opt" ); } if (strlen($spec) > 1 && $spec[1] == ':') { if ($i + 1 < $argLen) { $opts[] = [$opt, substr($arg, $i + 1)]; break; } if (!(strlen($spec) > 2 && $spec[2] == ':')) { if (false === $opt_arg = current($args)) { throw new PHPUnit_Framework_Exception( "option requires an argument -- $opt" ); } next($args); } } $opts[] = [$opt, $opt_arg]; } } protected static function parseLongOption($arg, $long_options, &$opts, &$args) { $count = count($long_options); $list = explode('=', $arg); $opt = $list[0]; $opt_arg = null; if (count($list) > 1) { $opt_arg = $list[1]; } $opt_len = strlen($opt); for ($i = 0; $i < $count; $i++) { $long_opt = $long_options[$i]; $opt_start = substr($long_opt, 0, $opt_len); if ($opt_start != $opt) { continue; } $opt_rest = substr($long_opt, $opt_len); if ($opt_rest != '' && $opt[0] != '=' && $i + 1 < $count && $opt == substr($long_options[$i + 1], 0, $opt_len)) { throw new PHPUnit_Framework_Exception( "option --$opt is ambiguous" ); } if (substr($long_opt, -1) == '=') { if (substr($long_opt, -2) != '==') { if (!strlen($opt_arg)) { if (false === $opt_arg = current($args)) { throw new PHPUnit_Framework_Exception( "option --$opt requires an argument" ); } next($args); } } } elseif ($opt_arg) { throw new PHPUnit_Framework_Exception( "option --$opt doesn't allow an argument" ); } $full_option = '--' . preg_replace('/={1,2}$/', '', $long_opt); $opts[] = [$full_option, $opt_arg]; return; } throw new PHPUnit_Framework_Exception("unrecognized option --$opt"); } } PK!VUU#src/Util/ConfigurationGenerator.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class PHPUnit_Util_ConfigurationGenerator { /** * @var string */ private $defaultTemplate = << {tests_directory} {src_directory} EOT; /** * @param string $phpunitVersion * @param string $bootstrapScript * @param string $testsDirectory * @param string $srcDirectory * * @return string */ public function generateDefaultConfiguration($phpunitVersion, $bootstrapScript, $testsDirectory, $srcDirectory) { return str_replace( [ '{phpunit_version}', '{bootstrap_script}', '{tests_directory}', '{src_directory}' ], [ $phpunitVersion, $bootstrapScript, $testsDirectory, $srcDirectory ], $this->defaultTemplate ); } } PK!ފ,[ [ src/Util/Filter.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Utility class for code filtering. */ class PHPUnit_Util_Filter { /** * Filters stack frames from PHPUnit classes. * * @param Exception $e * @param bool $asString * * @return string */ public static function getFilteredStacktrace($e, $asString = true) { $prefix = false; $script = realpath($GLOBALS['_SERVER']['SCRIPT_NAME']); if (defined('__PHPUNIT_PHAR_ROOT__')) { $prefix = __PHPUNIT_PHAR_ROOT__; } if ($asString === true) { $filteredStacktrace = ''; } else { $filteredStacktrace = []; } if ($e instanceof PHPUnit_Framework_SyntheticError) { $eTrace = $e->getSyntheticTrace(); $eFile = $e->getSyntheticFile(); $eLine = $e->getSyntheticLine(); } elseif ($e instanceof PHPUnit_Framework_Exception) { $eTrace = $e->getSerializableTrace(); $eFile = $e->getFile(); $eLine = $e->getLine(); } else { if ($e->getPrevious()) { $e = $e->getPrevious(); } $eTrace = $e->getTrace(); $eFile = $e->getFile(); $eLine = $e->getLine(); } if (!self::frameExists($eTrace, $eFile, $eLine)) { array_unshift( $eTrace, ['file' => $eFile, 'line' => $eLine] ); } $blacklist = new PHPUnit_Util_Blacklist; foreach ($eTrace as $frame) { if (isset($frame['file']) && is_file($frame['file']) && !$blacklist->isBlacklisted($frame['file']) && ($prefix === false || strpos($frame['file'], $prefix) !== 0) && $frame['file'] !== $script) { if ($asString === true) { $filteredStacktrace .= sprintf( "%s:%s\n", $frame['file'], isset($frame['line']) ? $frame['line'] : '?' ); } else { $filteredStacktrace[] = $frame; } } } return $filteredStacktrace; } /** * @param array $trace * @param string $file * @param int $line * * @return bool */ private static function frameExists(array $trace, $file, $line) { foreach ($trace as $frame) { if (isset($frame['file']) && $frame['file'] == $file && isset($frame['line']) && $frame['line'] == $line) { return true; } } return false; } } PK!>'f%f%"src/Util/TestDox/ResultPrinter.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Base class for printers of TestDox documentation. */ abstract class PHPUnit_Util_TestDox_ResultPrinter extends PHPUnit_Util_Printer implements PHPUnit_Framework_TestListener { /** * @var PHPUnit_Util_TestDox_NamePrettifier */ protected $prettifier; /** * @var string */ protected $testClass = ''; /** * @var int */ protected $testStatus = false; /** * @var array */ protected $tests = []; /** * @var int */ protected $successful = 0; /** * @var int */ protected $warned = 0; /** * @var int */ protected $failed = 0; /** * @var int */ protected $risky = 0; /** * @var int */ protected $skipped = 0; /** * @var int */ protected $incomplete = 0; /** * @var string */ protected $currentTestClassPrettified; /** * @var string */ protected $currentTestMethodPrettified; /** * @var array */ private $groups; /** * @var array */ private $excludeGroups; /** * @param resource $out * @param array $groups * @param array $excludeGroups */ public function __construct($out = null, array $groups = [], array $excludeGroups = []) { parent::__construct($out); $this->groups = $groups; $this->excludeGroups = $excludeGroups; $this->prettifier = new PHPUnit_Util_TestDox_NamePrettifier; $this->startRun(); } /** * Flush buffer and close output. */ public function flush() { $this->doEndClass(); $this->endRun(); parent::flush(); } /** * An error occurred. * * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time */ public function addError(PHPUnit_Framework_Test $test, Exception $e, $time) { if (!$this->isOfInterest($test)) { return; } $this->testStatus = PHPUnit_Runner_BaseTestRunner::STATUS_ERROR; $this->failed++; } /** * A warning occurred. * * @param PHPUnit_Framework_Test $test * @param PHPUnit_Framework_Warning $e * @param float $time */ public function addWarning(PHPUnit_Framework_Test $test, PHPUnit_Framework_Warning $e, $time) { if (!$this->isOfInterest($test)) { return; } $this->testStatus = PHPUnit_Runner_BaseTestRunner::STATUS_WARNING; $this->warned++; } /** * A failure occurred. * * @param PHPUnit_Framework_Test $test * @param PHPUnit_Framework_AssertionFailedError $e * @param float $time */ public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time) { if (!$this->isOfInterest($test)) { return; } $this->testStatus = PHPUnit_Runner_BaseTestRunner::STATUS_FAILURE; $this->failed++; } /** * Incomplete test. * * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time */ public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time) { if (!$this->isOfInterest($test)) { return; } $this->testStatus = PHPUnit_Runner_BaseTestRunner::STATUS_INCOMPLETE; $this->incomplete++; } /** * Risky test. * * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time */ public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time) { if (!$this->isOfInterest($test)) { return; } $this->testStatus = PHPUnit_Runner_BaseTestRunner::STATUS_RISKY; $this->risky++; } /** * Skipped test. * * @param PHPUnit_Framework_Test $test * @param Exception $e * @param float $time */ public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time) { if (!$this->isOfInterest($test)) { return; } $this->testStatus = PHPUnit_Runner_BaseTestRunner::STATUS_SKIPPED; $this->skipped++; } /** * A testsuite started. * * @param PHPUnit_Framework_TestSuite $suite */ public function startTestSuite(PHPUnit_Framework_TestSuite $suite) { } /** * A testsuite ended. * * @param PHPUnit_Framework_TestSuite $suite */ public function endTestSuite(PHPUnit_Framework_TestSuite $suite) { } /** * A test started. * * @param PHPUnit_Framework_Test $test */ public function startTest(PHPUnit_Framework_Test $test) { if (!$this->isOfInterest($test)) { return; } $class = get_class($test); if ($this->testClass != $class) { if ($this->testClass != '') { $this->doEndClass(); } $classAnnotations = PHPUnit_Util_Test::parseTestMethodAnnotations($class); if (isset($classAnnotations['class']['testdox'][0])) { $this->currentTestClassPrettified = $classAnnotations['class']['testdox'][0]; } else { $this->currentTestClassPrettified = $this->prettifier->prettifyTestClass($class); } $this->startClass($class); $this->testClass = $class; $this->tests = []; } $annotations = $test->getAnnotations(); if (isset($annotations['method']['testdox'][0])) { $this->currentTestMethodPrettified = $annotations['method']['testdox'][0]; } else { $this->currentTestMethodPrettified = $this->prettifier->prettifyTestMethod($test->getName(false)); } if ($test instanceof PHPUnit_Framework_TestCase && $test->usesDataProvider()) { $this->currentTestMethodPrettified .= ' ' . $test->dataDescription(); } $this->testStatus = PHPUnit_Runner_BaseTestRunner::STATUS_PASSED; } /** * A test ended. * * @param PHPUnit_Framework_Test $test * @param float $time */ public function endTest(PHPUnit_Framework_Test $test, $time) { if (!$this->isOfInterest($test)) { return; } if (!isset($this->tests[$this->currentTestMethodPrettified])) { if ($this->testStatus == PHPUnit_Runner_BaseTestRunner::STATUS_PASSED) { $this->tests[$this->currentTestMethodPrettified]['success'] = 1; $this->tests[$this->currentTestMethodPrettified]['failure'] = 0; } else { $this->tests[$this->currentTestMethodPrettified]['success'] = 0; $this->tests[$this->currentTestMethodPrettified]['failure'] = 1; } } else { if ($this->testStatus == PHPUnit_Runner_BaseTestRunner::STATUS_PASSED) { $this->tests[$this->currentTestMethodPrettified]['success']++; } else { $this->tests[$this->currentTestMethodPrettified]['failure']++; } } $this->currentTestClassPrettified = null; $this->currentTestMethodPrettified = null; } protected function doEndClass() { foreach ($this->tests as $name => $data) { $this->onTest($name, $data['failure'] == 0); } $this->endClass($this->testClass); } /** * Handler for 'start run' event. */ protected function startRun() { } /** * Handler for 'start class' event. * * @param string $name */ protected function startClass($name) { } /** * Handler for 'on test' event. * * @param string $name * @param bool $success */ protected function onTest($name, $success = true) { } /** * Handler for 'end class' event. * * @param string $name */ protected function endClass($name) { } /** * Handler for 'end run' event. */ protected function endRun() { } /** * @param PHPUnit_Framework_Test $test * * @return bool */ private function isOfInterest(PHPUnit_Framework_Test $test) { if (!$test instanceof PHPUnit_Framework_TestCase) { return false; } if ($test instanceof PHPUnit_Framework_WarningTestCase) { return false; } if (!empty($this->groups)) { foreach ($test->getGroups() as $group) { if (in_array($group, $this->groups)) { return true; } } return false; } if (!empty($this->excludeGroups)) { foreach ($test->getGroups() as $group) { if (in_array($group, $this->excludeGroups)) { return false; } } return true; } return true; } } PK!  'src/Util/TestDox/ResultPrinter/HTML.phpnuIw * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Prints TestDox documentation in HTML format. */ class PHPUnit_Util_TestDox_ResultPrinter_HTML extends PHPUnit_Util_TestDox_ResultPrinter { /** * @var string */ private $pageHeader = << Test Documentation EOT; /** * @var string */ private $classHeader = <<%s