From 6114d7cf9c86996a0de02fda99631f5ea3aba30b Mon Sep 17 00:00:00 2001 From: epriestley Date: Sat, 20 Oct 2012 08:43:31 -0700 Subject: [PATCH] Add a large number of move/copy diff/patch tests Summary: The way we represent some move/copy stuff is a bit messed up, but it mostly works, so add coverage before I mess with it. Test Plan: Ran unit tests. Reviewers: btrahan, vrana Reviewed By: btrahan CC: aran Maniphest Tasks: T866 Differential Revision: https://secure.phabricator.com/D3752 --- .../__tests__/ArcanistBundleTestCase.php | 148 ++++++++++++++++++ src/parser/__tests__/bundle.git.tgz | Bin 13465 -> 22922 bytes ...2a775ee86409e8779dd2eda767b4fe8ab.gitpatch | 18 +++ ...2243bb19d6b3bf15896177b13768e6eb6.gitpatch | 18 +++ ...1d5355abe5d4c7ead3a0e7b4b3449fe77.gitpatch | 7 + ...7e1ecd254c884afbe37afa612f61e3904.gitpatch | 14 ++ ...a2c2b56dee64d72f59554c1cca748dd34.gitpatch | 4 + ...ecda5f666f62dad245a3a7549aac5e636.gitpatch | 18 +++ ...b4801f3028d88ba49940a558360847dbf.gitpatch | 18 +++ ...e3695f95c3f558bc5797eeba421d32483.gitpatch | 35 +++++ ...d1a767d270fed504cd993e78aba936338.gitpatch | 31 ++++ ...588cf7d16368845b121c6ac6c781e81d0.gitpatch | 25 +++ 12 files changed, 336 insertions(+) create mode 100644 src/parser/__tests__/patches/141452e2a775ee86409e8779dd2eda767b4fe8ab.gitpatch create mode 100644 src/parser/__tests__/patches/1c5fe4e2243bb19d6b3bf15896177b13768e6eb6.gitpatch create mode 100644 src/parser/__tests__/patches/2658fd01d5355abe5d4c7ead3a0e7b4b3449fe77.gitpatch create mode 100644 src/parser/__tests__/patches/30d23787e1ecd254c884afbe37afa612f61e3904.gitpatch create mode 100644 src/parser/__tests__/patches/6d9eb65a2c2b56dee64d72f59554c1cca748dd34.gitpatch create mode 100644 src/parser/__tests__/patches/b0c9663ecda5f666f62dad245a3a7549aac5e636.gitpatch create mode 100644 src/parser/__tests__/patches/b6ecdb3b4801f3028d88ba49940a558360847dbf.gitpatch create mode 100644 src/parser/__tests__/patches/c0ba9bfe3695f95c3f558bc5797eeba421d32483.gitpatch create mode 100644 src/parser/__tests__/patches/c573c25d1a767d270fed504cd993e78aba936338.gitpatch create mode 100644 src/parser/__tests__/patches/d26628e588cf7d16368845b121c6ac6c781e81d0.gitpatch diff --git a/src/parser/__tests__/ArcanistBundleTestCase.php b/src/parser/__tests__/ArcanistBundleTestCase.php index dbb9daf0..a6837483 100644 --- a/src/parser/__tests__/ArcanistBundleTestCase.php +++ b/src/parser/__tests__/ArcanistBundleTestCase.php @@ -146,6 +146,154 @@ final class ArcanistBundleTestCase extends ArcanistTestCase { } switch ($commit) { + case 'c573c25d1a767d270fed504cd993e78aba936338': + // "Copy a koan over text, editing the original koan." + // Git doesn't really do anything meaningful with this. + + $this->assertEqual(2, count($changes)); + + $c = $changes['koan']; + $this->assertEqual( + ArcanistDiffChangeType::TYPE_CHANGE, + $c->getType()); + + $c = $changes['text']; + $this->assertEqual( + ArcanistDiffChangeType::TYPE_CHANGE, + $c->getType()); + + break; + case 'd26628e588cf7d16368845b121c6ac6c781e81d0': + // "Copy a koan, modifying both the source and destination." + + $this->assertEqual(2, count($changes)); + + $c = $changes['koan']; + $this->assertEqual( + ArcanistDiffChangeType::TYPE_COPY_AWAY, + $c->getType()); + + $c = $changes['koan2']; + $this->assertEqual( + ArcanistDiffChangeType::TYPE_COPY_HERE, + $c->getType()); + + break; + case 'b0c9663ecda5f666f62dad245a3a7549aac5e636': + // "Remove a koan copy." + + $this->assertEqual(1, count($changes)); + + $c = $changes['koan2']; + $this->assertEqual( + ArcanistDiffChangeType::TYPE_DELETE, + $c->getType()); + + break; + case 'b6ecdb3b4801f3028d88ba49940a558360847dbf': + // "Copy a koan and edit the destination." + // Git does not detect this as a copy without --find-copies-harder. + + $this->assertEqual(1, count($changes)); + + $c = $changes['koan2']; + $this->assertEqual( + ArcanistDiffChangeType::TYPE_ADD, + $c->getType()); + + break; + case '30d23787e1ecd254c884afbe37afa612f61e3904': + // "Move and edit a koan." + + $this->assertEqual(2, count($changes)); + + $c = $changes['koan2']; + $this->assertEqual( + ArcanistDiffChangeType::TYPE_MOVE_AWAY, + $c->getType()); + + $c = $changes['koan']; + $this->assertEqual( + ArcanistDiffChangeType::TYPE_MOVE_HERE, + $c->getType()); + + break; + case 'c0ba9bfe3695f95c3f558bc5797eeba421d32483': + // "Remove two koans." + + $this->assertEqual(2, count($changes)); + + $c = $changes['koan3']; + $this->assertEqual( + ArcanistDiffChangeType::TYPE_DELETE, + $c->getType()); + + $c = $changes['koan4']; + $this->assertEqual( + ArcanistDiffChangeType::TYPE_DELETE, + $c->getType()); + + break; + case '2658fd01d5355abe5d4c7ead3a0e7b4b3449fe77': + // "Multicopy a koan." + + $this->assertEqual(3, count($changes)); + + $c = $changes['koan']; + $this->assertEqual( + ArcanistDiffChangeType::TYPE_MULTICOPY, + $c->getType()); + + $c = $changes['koan3']; + $this->assertEqual( + ArcanistDiffChangeType::TYPE_COPY_HERE, + $c->getType()); + + $c = $changes['koan4']; + $this->assertEqual( + ArcanistDiffChangeType::TYPE_MOVE_HERE, + $c->getType()); + + break; + case '1c5fe4e2243bb19d6b3bf15896177b13768e6eb6': + // "Copy a koan." + // Git does not detect this as a copy without --find-copies-harder. + + $this->assertEqual(1, count($changes)); + + $c = $changes['koan']; + $this->assertEqual( + ArcanistDiffChangeType::TYPE_ADD, + $c->getType()); + + break; + case '6d9eb65a2c2b56dee64d72f59554c1cca748dd34': + // "Move a koan." + + $this->assertEqual(2, count($changes)); + + $c = $changes['koan']; + $this->assertEqual( + ArcanistDiffChangeType::TYPE_MOVE_AWAY, + $c->getType()); + + $c = $changes['koan2']; + $this->assertEqual( + ArcanistDiffChangeType::TYPE_MOVE_HERE, + $c->getType()); + + break; + case '141452e2a775ee86409e8779dd2eda767b4fe8ab': + // "Add a koan." + + $this->assertEqual(1, count($changes)); + + $c = $changes['koan']; + $this->assertEqual( + ArcanistDiffChangeType::TYPE_ADD, + $c->getType()); + + break; case '5dec8bf28557f078d1987c4e8cfb53d08310f522': // "Copy an image, and replace the original." // `image_2.png` is copied to `image.png` and then replaced. diff --git a/src/parser/__tests__/bundle.git.tgz b/src/parser/__tests__/bundle.git.tgz index 99178e93552775bd8f074e2503ffb522145d3d26..9ad428c61c6c69d7790b4534d1692ec497d82716 100644 GIT binary patch literal 22922 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

jMYAx}X%ndMl;@#v? zPO$6B-Y)Kw+LY}w+2cc>Bgy>pSfx+0@8{2s9b*36EUSqa-zzNMBwXGr{7WBOeH(K@ z`01s7tg^{He--bu6+y1wU8>~O(<%68r{My z@H5&Xo>C0+(cfiu;F|~`<5)~e%YEl^0>)+gpO8ZRpNfHNzVEz#0@r*z(>}OBI{|^! zNo*CW{a`%?*mwa#sefREoIVo$ zVieNxh3G^-J1^MXp!qwCrB|%Q0Id-zzKT#Cq8-}n_^w99q~lZEtjFx}r;I#a#GsTqjg?#oh#fKAgu68)g|q%D`Bi+9db>6C z>oHrifpqb|fv9u6&07gekN{G0IS0>fcmddDtCegD9k#|^t`GUne2hP%s>$NQB;$Sj zo`oPa$IV_OyZeu9e)HhW;aLwEm~zTy3|xo$7`R$+V`zCHx>*hvXJzO7!B4d-ZeMcLXXmU9m`Y4X^&>`-xr0VzP!?G7;!%WtgzRa8!+0CIs&ZJurE`X znJFNR@@O!=sq0J7#c5Nimg{MYe36op?8v|neInT0Oi4{8NaX6}Lynaku3D`-0o5$o zsXi=qlZt2-Y4{}(I<_Z~d?c+ATIm}B?}*vOHU*tE8ug_wIk}3^>oymX7phabJ|0Lv z3&gP2bCM$NU9Gh+mEshABdTdg*^Lz^oE|+PK5h67ovz&dbf;aK`zOa#@w_R3d2GH2 zvzd1b4Ki??6Ym($GBbxdaDQy~g<*s>9FaC(XH@?gOK7rEbVWi8j2=Gkv13fDFa>%S%M>u3nC7I>o}t&*yw^wWO7 z5h8(^VD~~URQy}|D;R-tVd|%clusH5clgG~9T=_*gPgN^Pa5t}vhYv_J#;GObI~9> zVu?T;-m`#O+``eZ^Eq!GVM)9C_O`eGIhsqeJWqc5)}^(k*#?Ks?wg9Cc}<7nLH}}~jPHGe zz3QEz!nb1ATT8#|U12URkA95Hkp*l~E&j^kr1r=2J@aY97*$6u+y+yKv-_&1A zBH2z5>D)O{|C|^V6^R?LqdO=xLpvs9BMe03fyGLRN?2G3nBW)H9)P$QNql)a7D-k) z{%(vFi&#!872volm9hW55)hb-gyapKOFj>=gU2hbQY$~E^an7qB;241ef{ZH3T`tJ zZFgBO^-leX*DtxauOKhpQ%>*~^&I{kuhHQa<45SWgm!ZWu(E&k%6zPVc}Yy{Q?fjO zWqQs2oSVaFI%^aLE&2 z*qfe;1Yb3_X-|#xK!TKp*hnDT;+(U0>e!=k<2-Fi{OQtSPy<7+o>NV7@Zj+<*uzIo zC^CFDt%Ux%h9n@!T`~}E$LV^4m`odrUTp&48F>Y)ZcAyTV*fkGoR1CV`0}L3&RU*$wf44q>I)(eDZad92N{886S%6yx%`RTqu(79IFjm?KlWKYi_;y zeh9K%0-LUQe0wecS%3sUuru^mCryg%$Uw#-$cD4sSWY9jPi^W!q&4p6he@7&An;cF4 zz`Gcy`ta+cyv&C?P;g?8TY%BKgv>BrTZ(Un?4=_(5`d31e=Eu-< zwl1f>5*@t7TGP3q^5k+@ghm+53Z$3oP)dxj%WdaCI#zH~HtjWYt5r{a^D*d28g#d} za}hjbptu*{T6g^fjCg6{8Nsa%er=s)%-)bo`+8j=%B4X$WWwKGbCD?Uh;J6(9N06)P&GcKEbf1A6KpdiUac*?Y(;=4S!UxNBD z`Phh%SXpQ=!g1t=axyuKJcHFVm79s{a}r;?{S-QX>b3of{4)wJC0WQRF5o*`Dm#&< zkR_jzA4VQ2qFmLIu}+eI#c{_-JDTj*?je4kph!U>19$XZ%PO~hcCz!hpYw8f`H3OA z-^uWIST3+JT=hmI>w6WO6~9chp)jZKnnVqr``YRUe)b%}^S&`3)W&AoCfj$UMRuE1 zc;pv@44n@-{zLF=uc2NeROfls=2K0AN%nvr8z+eg&$0h2rB->)) z1sfs%<6_9f6E$b9pRg|-#k9c{B`}dJ$OrXFlM6O zxlE1lx7e$=SKE5vQI9(x0M{v&G*iM?*gpw`_UbQ;@PQ~OHn~QhwqA+oV)zULhIBU5 zy*1paM4|^|*M(<%#u@ok`Ts8_zm> zIoU7Q2VzC42$DOfmkE7Ek(7B?WcV!p4O>_Ss>vM}?U=lT%*v~KBgtDWsY3SamWnOK zA1uG(of)rnk!@fu3tp^u-o973o7}*_GA=64VFi9Tb%*2DyZzRlVGxHnF)cn(=a}Ro z&7|6#z)+9T6#S(A)XP-=IXsyPaKw0UyE7&l5SslD!_&; zrZ`!abJod?zB6C0JH8j~FJ>~59MpmMC?KW=fes015ezb|Eo*qFm`d-Rz%k)#n|+4f zvRNAmUzOjytp&izZ2MPg)-cx6aA`WY%4qsnGNU>e$#wX%*?=$ zCiGmoJ!Ux@3oCR#skntcY4e%%+nkGXIXITIv|pqoTgtD=b(M-Ylc1Q$$ik!@9Lg=B zcTcQ7wY%iu^_aL#s70d7|yZnu14LnF!gd_%E=Isihf-$IP(jwoOh5FCl z_k+S=BezA%7RZO?rsN0AO)2IV^CSlLGx)S58}obFWeM~5ThqWErpjC*Bq!%wHb3RH zK!YdosxH692yE+*ZzoQisNr{wwE^ab`7PZb_j%JaUIDUBHH$`ll#={qdSOO zcU9k2$DT-ZohEYJ7^i#kbE#*czvYB8JychB7`fRj;(&!`t@{UW09s<5RR2IrycAyh4$NC(=@H4f9C_ zkAmORe!i|>^uubXjf888ENhTo85V-;Tj5(7O!M6k(K0Pd3rjyq4O^WZLB)3ECP?@5 zD*z6M0dtaA+pkw8N4KxRv~;_-DU+mk9QmA8AKQ^Cl{C*}J`2xJ<}y9*+&O%&B?4M?vzdr1t~A`%(_2KwfsJjkQnV1qhE?GrLNE3)(;3y>J`NKQOnq zjdA1VR2CiF2#XU88DY0v48j{ZT*){7LfgFEm0ZFrHLO~Pz|zh7FHTg9^D_XCF2&BjF9Dy;XK&8V}0;3B1kU@hp^G_`t1HWX&F|) z$rv=L%aGOf1uxFF@(fv|${iwclGKX$9B7*LF=SxUs}~TzZrFM|Nb@t>PJ3Eo!Hy`Q zbyJ@faG-&1c=q;)EYRm9#`@R+$OnQ=JPohUrCz`b5PI_Md#UiGY;g#C&J+GGKTBBf zIq)>e{xY1xo+7*U+UMUMyc5Q6Xb5@MJiu2Ph}h+zbcV|lpbGv@A` zL1oS@hMJzIYSJG3+mS27uk~nqvpKNi+o03353@EimwxUlb=027G+Yk<>t1EWw@ zXBkXIA37qYD|3EKixeoowFbSaFR8qGwOXnC+GLKb+^($J)7q{!&AiibCOGWUzGIcR zG^~V^k9Xd-><2957f7ooI*-Am6`viGh{GZHz@WQO1B|I9R>Z^1SgP02dSpfDTmSfoYY3)xl_L4 zPA<+5^L*NLWp2U~;g$Mi0i3Kf&CqK@GGjeG0y45$SywO2+2aJ@6ah!L zpp?46P$$G)K%R(6)+26>{?82S$a=|Sp(aKOS~n4RtPpiiyRtIgzfQ@_-uv~uS2i5yDvJ?>96O5)0q-G%JbUg7BkecxN;R4o z=jDdGHl3XIVUkGU84du?aTuao{UYX4ag_i2*|wri&+FuHP-3vEmwg zWrVB?C9eaDzuo|6WtpOK-X%HPc9UIQ@Yhv{q~)n^C5($WcRCCfK$cl3!qzUM3)#_m z`G0INegurv9=?$P15c(t-NSH??tn&oYoO3vwO;ViP6=s``UnUxSJU=g*a49gM{qOm zq-aFPjKv(_l_hAvYtb!q$=tlDdp9}hu4uY(Ihm$jQLL-UkZ;J2>zRm_{$YxDHo8Rp zeQ5Iny@qO%&0SC@2;+=SYbR$FO}a63tE1sZhy6XP!Bbc{-O@JZ4Usry~Fl}ca`_XCpfCBK9A zbojnBM;S{THMl(D(M}WaNc(||w8EU20p>f`)c=Ggg<*`MrFH9Z5TUMz6rnH}qDQIs znjI4=p(Z+EB&dA7s0t6u2K(HDx(WaT)#_VFZP<_!8`@8i%lxrOPly1i{n&dV%BT@6 zqGeEbekQ-!CAOrKf^5E?fF^d%Jzw1T8jT9>-kAx#HWwxuQQmZf4rzBE&!rx=#bHd* z!0EqhS0{b*za6-q%o~LAuZE4<6Ir&Q1?5Ok;z5Vgy-UysJggsvA@S|(fDMK^Lcfq>AwD6$fqK~-#-G13%>ya)cOTP9<5_@ zBbGwxNk#eL@H=~FY3RXo%ZYRMP@1Zl1LlB5MriWo!;?FCvyb%mi z!`ZX&0H!G^r+znQadbilLE5CANJIOO-ZD_L^^URiKbAjwl5e@-d)jv-u3U_|4Q<=| z-s!95MzzOjJ?m0Vi=3WYtfR@Dk9yyZ%T?>O>Q*O4Ie~-u0AwKWbGz}4a%9C}u>-^@6(|F2)sJVTWs~xb;82m!bl@^ICPQL&4 zn1;McoO}>TP&>->qS^BIxfZqR=s0hCesWxU{-;%W)uAQ-T4-7%YPf^kp+PziEDi9- zRRDEpsX(Z@S6LRYa}KqMyEH2w0X}tZK@{3C*v54Y(WoxKen6zP?>AsRWC%iw`db$S zRt6SfkU`v(dlzdI!}dhzD}Yma0S?1Txd){i4&d0e!#(QFXCc;@`xj477}XNi&R>JX zU<=m}1Jq(P*)&1JEg>mJOpPCb1$oty+5%Zt+M3pEnwxeDqt8I!s_y{OZ=#PbQ$Pyo z3{ZlcodGHcUjq@wmu8(v(8$xuly`PRvPXXburWNfc{q%r96syL1$;r;QZ528Tu!*H zI~yPeAE^5RUp$BCns0+I50fC-b=Uu$cjP=}12Nk@$jr`vmk@&Ej&nG6ATrfTC;;Gj zU3~@}sX^Fc_74IVH%PVrUWPh8f?@$D0Q|c8V)gcQGNfzee@5AzG8;hh^gKEKG~}*F z4v=^c)SC|g2BGP|QWY~`^^^nu&j4mG7a?Ej@1bP+_fY9ampjNGBt<`PgLL`tiG*8- zT?`Q(084mUjpqR7#cVQAi1{?lr;EOvS;$!2F%Q7#Ki3JlDz0!d{5hKz!H*mmn=cJmJjb3~50?fdplAO?KL zm5v>yFa56ndh@H9y#tbAP}7d8z)?Mz_<3h3QCYh_vmH-vd+1)1B^;jy>DiNe5||n6 zQ`PkSQ$S=^PDyon&V#Vu`aUv-gc;zV%5)GiTC(xO~>Y`he~n$jFdkz za!VjXPbgi3P1B0~PBq;9HNOCgWJaLCb0MYFZ zXDeLr4W%$i$8%L0YH>PMno;k!22QfK9}Ix+I-IawjLTet9_qygLJjCLce2fCxMHs0 z9crmT*)qHg#Yt)ZcxyQ>OWA7cOEqbq>xXWzwj^%eC2XNg?EyyQP*-4Wg->Ky!{B-skd_UW+2Pv-i*art&FrCA#N&ZyM}@_k}^ z;JoFn(|o&Y-*6*xe_eL5>Tp6;sBE$wlDpE@W7F}tzlMzfY7Y*FE88-Cauyq{)hY*U z82O84fji%;UZ1r>MasLnFb)pl!f`zISPAVs>~yqWzsmu&b592Zp~~jv>Th_X#Kwi1 z4(l*LBcFks?mLB6H*15gM;TX_A)CX)pAoBHf!WMMm%u`&mY5B$*DD0*uAin)EEd~LLrn$&;UN*d6k7eaHS~^@n4bsEn zXgu1xoSQB*bN|4Ui7CQ9E^7j;Q;AzI;?G7re)kDFznBoMln}DLo)?7je7~{KnNJf( zgaMpp4c-p2=kk5ZFJ0=cmj`DOGQCfcBh_31jUDs9EU%-~hJQmVmv3&UZYw2RTq|w& z=H&bl;6e_uz7z?~buy`K9m-sEC3;yYbMeRfnhTIt6731oRQF_SLP{0R{>oSxrS6{mS2T9LmZcE9j& z=QatRMFw!}J34c<|Mo?nJU+20I-Q4|w6QOR9+EJ(~XoD6!TdVEPu_V=2Ju15h3{5WTjMN6>INzU{GooUpUK11mTIO-7` zYU~`Z-;C@RDgw}-S}@4Cz=B2nHu!neJ&;(E)dbv=u+sK*tk&F?pEtcsj^Ck2z^m}= zpyf#n#T=!a=Q(?m3TvMsf-!o`IzRI6K9e^9ijR=~d$a6Ue*cwl>Q&%5_ySrLoYQ2{ zqX(sJEgzWCV!3|&72L%?9Z z(k3NEx%+MKBTHow^7i_kP=HI_8wq|LHPn&!F&hbk`qtx_EwbCTWgha*57O?#fOY-6 zzj2(C665k{okMX&Zjzh%YnQ|$rKH6%49htZ*$KdqzWDcI;3JINIFO^Lv7emyT9$hFR4UdbV-|sd)MR@i^|-{FbB+-Oju*Zfg;W`=RLS`= zSr%*~18<8He;#+3R{+JI9-(x3a0upKK=dzI`1rAvD0XF2nLJSBY@$^D#D!u{)Nwk$ z$)jUMw9KSsWo4E%X919$r`Fpodr1|1@LUj&|0p%JtasNr7t*un_T(%u9?Se zgs$y`TgY)hzGsyE-uqBl4}AV_k+4dnp~YkV-J*9wnUL-A&iUhw+4<3e8i437vA-pa zdMz$}+xB}M;mvP0{<2D6#5Jd~!RX$YO5OucPq}VXy;s`yX#Tq)OXE^T%V*o1z|D z$CDt-t-RaE!~m;fG7oYufB|wcEDjQGx13{M#(jBTdU#Oh*a9mC5dAAdPP;B<=Ny3F zW5p)I<+{Y>>rvMEsn)jqaMsDY?{KBFHJ!p>YUJONP1bm{Tv%cUu>aZR)A!8AowmzT z4{@mhp(n@GlJSOPY85z2OJl}f@^h*)Cu`ZuTKk4xopTO1l)#I(0F_6z`5W+SJ23!Q zm1f+waWREspT1(Dq&#oqPJD2^9VsfbElxFBKc|1|9(8pJd1aqhz_Yf&qfM zB89UDH(Tv`h+1B&V4?Q9qdw^Y!K04EY(cWVj+zA|gcvU$Rx#zd0G}x4R1a}Z8Y%|F zV@Do-hJMOMpujIz2`Izxn>9U50=tlW8&eJK5|E()l9g)s_9@AzE#7yO(`Nuy+jI8- zdqNlX;`DAdH_g1%!!6i7#5RAQg2|MD%5*D2t78EZx z=XPSUS05JWg(;eUS?*-Qx+2Qyzf{@&y}6^d;PiWy@nx-x+U@Zz8AP-~`CAJA$HYU< zQr1sM>Dhb74v4$v{_gXcG|2UsnNRyM)t}osJxb2{5Sofr9 z6lk&ayWKh{hC=*GOs>9>6+wWiqGw`jLD@{NIX&+%znr_3(?7DwlIUxsVA@qSkuL+q z;l20Zg>r!TzuXkH2+@74@6mf;1@SC!!M@fUF1mEzJN-^4=5Y~fKZ{>^V0Kb6J-V0) zlWidYH`@U}$w(I3s<+Pm;y9TF`AoiBJY8tFAIgZ2J>7)S)t;-u@Ws^v0>=}5!aoLH zca;-+^*cug`d{v}MZSf2?c6sy`6A-=x-QN?tGaQn2WW5kZ@qmn(E*rP=il#I(5u?# z5LR>K$z+pJQhfpV*rVdg9~8zo$3HCq#T76hPf--eBRQtFVG{o z=e<5 zzdau1w<{X=V*|6d#=g_Lx#HO5YT|b*gxEe#lvP(Kn05rf&c! zh4E!4Yg<_nvRL)u@t?aFqLx3`-|^F`F>JO5D;8cS!Lzv;D4|=xq`}~4NQ$DY6c@(< zK^?A^phrs~H@dk8$8A5Z+Gkrnl_fIz`(hDiCQ+e`prGZ};YUum`{NnO+c@Y&H`y*% zQ{L}G$na`F%VK+atUP1`e0jsmyzFCK8)@ioG#j~J>e0yab=MGnb!pO~^5-^J_MNzx zfl0vn>}RZHufxxJH^^Ji>14^~o;S&zj-S!TqldjVk9K7F&4z`jPpib*fS%-C`LiKzQDd#!Oe3x7qIXfzK0m*9qm40%^EnUs`nD2mtxBPc~cyuuOEcyaj0cA7z!0~fhQWLw*HB~z!XBB{z={wvn~x@ZXQ-+5H)W5 zb;xeD5EAg5N62F`DXH-&Zx`rq1rD}gFO3%5CT=&Sc~TiqF4OT!7hK`-Fp|`as&eyE zK<6wPz+S>6*tcz9p*6^{-4J}% zGHjOZxi?H<3cB@O-RS19ZBh%|-wNA(Y+!%f=b0S|s+tT-R9j5ORy`8^cpD9v7?6>Fo}h#N9k!FrM>8LygQTj;W0SOC%ODks&d|w94>{j0p(mz^rQq3FjQy#L}9FQ&QE@^x-k=|zNFu%7?E}fwix;Ht*W@p6n@e3>+tpj zDq1yJkL@j?8>lhxQj~+I<9eR?m?Bu@FvK>(7v^ez*I((fTKBI*v$ZYfwHp?!)ne`> zkv!2iAP8{5mGe4Y^*&s#%8?ca5`N$1NNd3s;K=<$iPKH8-4-6iN!u^Nqa$yZYbw2) zhojF`kv;lw5%95y>+Xj8yYZ@7~pZ-1?tfE0HEgY{FiPR@bKz%p{v~r3TUx@@qx!Zf#pQB_faJ6t7&&+@e`6Zt(V|Cwb#(K0m^qh@ za5ZQ#+>d8;)lW9D354{zUVm+BcDXUY69)m*8%HSc1Ft6|TFAHJ#eW@T$7fc+Kc&>w zUY@EhA?J|kYO!h=4Y2DqCjkaP0;HluJ9M8%P4Aa6tv|nOrIT$bAWLtMy`^AyCHTav zY(sZb4j>wEHJm5q0{i?DLO6Q2y$kGQ?E=j?rQR(i)sC~tCM|D0_XR{;o(u0rOCRbU z?oQXciJ^~*fM-AdCW@3rvUd$Dm!nw)s*uTM=?X(jP%=`4RIl0N5=oxA1#Ls8r{;DS zC|?DnE?eoI_Ou)VTn{)E2fH7@TTRg^e2iVY>uu%n*-jhFT+hTwpn(U;v$HGU^47Z* zpVRZQs_)#bElGFnwX1(83?>FHd%_w|N1WU0gyvXfqnuct=9?ZQ^mxVYG;xMLJ|=IHt54 z6~r#-1HDZSv1JD_yAzu$CjVfL|6%=iw)PP+1OxalfHzFl+hCd}P<*=pCIrJDNO)dA z<&gnh|9o)GIyz1&=q70s;OO6jp^jlr^=u#R3ByahPX9-K7{^XID;xw5Yh|1QKZWjU zp71A1)~jdPqnx}lOe`sTgqbr<(YG&|wM9enC^INzOD@^F@#FEb2*DNC^3j%%G0?Sg zXiBh5L@6;b5vE5$_zodTBLC*7pk1~#ltm+Mkew-lZ?^QGv|h#!o%9X;PFzxXRAws< zd)|n@!M!iYCbHif_Xm|4e_XBj_R1|Sv6!%DiHs2VxYW>V za|1t(vnR!P9v{`TkMVJd=WzHaMDq*A1XG`YTprWmOWXdSbBB*=D#JN!t3*Pv`+xt4 zei!w`?WdIMCV+sp6OOx+F#A|LRKfu z8V8rmxQegHa7;mok!-rSi^V#0ScZ{$3P=9U>t9zkOBGnMxZLh!389nP>04Bap|RwZ z8X)VCjZ3Lz+~V(l<0RN(X2U}5EdXXR1L9Oc8x%n?1$UFk%Lw+{)UoI!F!rbJe0YyG9fKWU*$L+-k2j4@} zUHl_p53fQ^S?DgyyNB;mT_Ip^0V9z78l<8~UaBbK!7doib9QqHsYMq>Hf}=xuLGdc z4HE>3dQ-~lOVwY=8ET_k^DQeYAEoXj`T$mLPpYu(M*?h>EwlRI?+|P zF}^bwaVeLY5z{D|Wsya)LlIl(&RBhkET(KYDJq5`Ku;O*wlsv2I!1ExMMAiGGL8mK z*d(5;paLFuA75SsTBy3XJNBWp7ixMEYHPCysU{AcOmq^K(VGC~ZcWnuA5!1hDxYVI z=dn28bjS&WA4K`%1ifH5@Z>aYU`DKs1c{|ePiS9l_z0)en(=(NufmD=cwov-OCZq6 zuIsSW;NKvh>Ch8Ou8ys;4Z%oJNrz-_9Y3rd<>eJqWP4SaZgPg8X%dB}d}&h6Ba_-w z>ILtE8vK)7?Kf*``fT+R$rc($Kr_gz(in$)+u>d;F;N+~H*K{JIqZINt9L8~J}$NrU(wSF zO|^wG4-PrRW(8O0Pbv26N$=G>$1H0T$HL)SVv2^_AXD>U$lEdEi^LCbb2bh2+%2r` z2wL1thRjzJ`Sb#N$p<3V75K4f+;IeY%I#BMAw*~Hl9%z3O}Iz zp7`2t#}$;!G_I~k`hq0&JM|uRm+H6|F+s(^W7%g(uSkIr{9-C*lrdl|LNTxeFJEfY zH19JrGnV9Fiqf49eLk#A>V-^^B>SsbDw7C{4`^*~eZuJHbdOdRUR>?2eUgjE2}%7N zDIEMS@1onX_jq12T(Y#(awB}*s$Zq5l$OsQjhE2hg=3w7Shm?`A?7wgFC_k`N)6eHaQ17f*-@Zz!pL5Vj z8jV;fF{B{4BkSF}nh&ci$%mM57tp@diVNV({`jh7@MtbeZSU3I^eE#&7}6lzC_4Vx z3)vO>)M)sxAhxT;GV*luC*`CeUV(1x8w*FGs=S10N18|QC}Nxx0s4~L)P!L;fg-RC zWWgZHGeErwkVR+x6G(RcGVzmAX+^!7SQ{q>O)ycHBC1TKoSUg(KIV=6_A8aSL`wWk z^^zfXZqSp;vkgWgU4!Bqs-r$xN;b}h^FPUYHkedH9po|QJYDInlExTc@x{|+#BA@Y z{CLtX6imjZsCK~17C0iQgY&6*SU8Lw?-|By+4!E9{^7CvCfy9CjuBXUZiB-3uelmm zr4%=)j$_GHeHgh(UuLcQ|ffXto ztP)#9A0rW8XcJ*gl~;nt{9Hn%NS~piA59HPkR(bKCkL-(kMSMNkLjyVBR*46>W+O@ zz{Pol-i`B_tG9upnr)gAoCMi_)#~Ms!AH~VZz@>itMRE+@^tjug5O2Fb4Y=Y5h18h zVHWt3WHSvY2P5VG0so1&N%n9Ttf-&4SPr$pa;3P;OVV}8BA5f`Sg=_gB72j9refGFns!PHJr==5Ur^ey{XFpcG)Gw0higQ;Ai~>rwMn= zNKSoA&SQ!^INNpSB*a4S&4nzTIWD8xRgx=2^u`qjy*;thMzh^zO z&pdsWoINzhn*1z7^f2q%x|$_J^02Rd=2S1{@tc)qz@@|u6S&>NLI`s1F=f&<_CE9~ zg==^GB-%;WH<|fTh(Go@Oe+7}I6+3VoO2?l^o+A&P%J5kcqlc*%0@-o55yHi9hYhV z8WIr%|4r8Wp)0#)f+yCPQhA5)EwWn@;jZue4CU$)PLIclk~>hh;cmuR`Ru|=f_!5< z1)ugk@l^YZ$y~D7m7GLSco{+}YvEIVhF*(-aZV5>AiAYTQ&@<1pT$-d@-AGm!a~YA zB&)KtA1UqN-6?JSY^@sy`~A-EI2QJg{S$Mr&{!tQKIt%Sc4Ov0x|o%0n-1b}95tkr zL_Le@x+I#4aXkLbbmobP+@ z)KT0OS=nk8-ZA(yb&o43vgbd3#x=F_{Zx05H0(@_Vne*ZS%9TPaD?)YqHs&(9q{9=KKcLPCT?}x zbEA6K=iEmlg_}kr`(BGckH*@&!kG)Flu-6#v*oS%$rq_-_RZ=^ow91@m}SM+A=f!w zn7*HrcQU5tgT+}mX0BoftekpC`?93iLiJ+{e4@lTR%)bA$0(=tzqzWrImD05iVQ9t z1ZRB2+1R^?iV$*3tT_%(lNPJ&hF@aqyuo&(yd~ZB%t?1{r29mds&EM~NM>A-s{jJ) zfCj1j^Na^IsWpQ|U>Hji0oE?3J=dF+iMIR^9^x!y784xX>*pl}iK6^~m+A1soQ-`O zWX4MyKv) z1&#MGVtZa=F5GmXPdyv24ZDYXfB&!;*E&$iXT+X*E|u+AMqYO{8c*)GCLcx`pz6zCl(XKvUj162Bz+&Y4H?x7PtP9DzkI^y zO<&13)z*!*!gmTa8TXt<6`H?GbRXjgxCgvHNZET+3QaLg7^xRVD7sUea!D19ALH2u zTjj)7&=S3VI>pX{kgV)SjHG5oCH@G>@kn*$`N&b+rANIBiD zUo$7lyvHRtRQPiPl5a;m{>(gFhIHUteZ9fazLut)Kn{4`t|_U1)3M&k-$5~YoWPi* zPrQbDBD$ODVRwUI8GVg&Nh^cAfTE)RPoFb)ejiP)1!`pqiX5|SEP?KlG*O(5qpPmZo4Fw$JqN!YT~6dVy}Mb5HIwx5wI# zb3Of%q~9LzgDfjGghonsCKc3)`Z^P>Y^Fh|xFY@N6r^}BM|{R&g*7|eDk?gKC1q*G zYLri2sp1_hL{;kyYSk_EJj?yunMBnzN|^q>+wvivcv~GqBlHAYlW9#}gr-u)o@Go~ zg9UY}SffbNK8|`{Nq}drrwiYF@qlo^A%RnNTHHdLT;u*Z+jBOO!yYrbuPHRrlN>}SYn(@fr40y*lWznK z1qEumc!X%`G)zfowz7oOESXpi7=(&Zf&Dm_@UQH#h9UhMv-$6iTgP0-ER<_(OdPCT ztMQ|@-PEx#xlb)iF>DOfGX`oWlG^(wqa42wXV1`6)}C3iNlx4SEx(9Fd%+p(U(bD{ zw>iuj9TOFv0d6f508C|wK8$kzFAW>c$9gG43$)XiWb_rM;3C)8y(-`PMG z%bb*sM->|zlFw$mALa3J2iLZCZ4685V|daP6>YR*Qc-j-KE0+T39cY+n)y-1Q*&Q9 z!jY?9c1o6szjTH{y4#y-pdW%`tOCYWAu>KGdyVBN%H_HyNw?K(2l&uPk1hx7yC62Oae3H-#Fg^96|wA&1gPJjq_Ae38Q% zZQ9H^hIO7}kC!?~ayp*et#JLHfYnAJ$&Sv0;pgOgvYwRgMlH{w^R187s+* zBjm}V6!}ick9JG>d-|yN&7;sa5-l`&-H0aDLmNCtfx7;Dd4<;3!e-bk6$&4-#ss6Q}TU2AJS(V*_soH zZVIf0&jqQ6t`C6ne!bU0Wl6M@CCvsG$ZrxF)4%tssc@M!-?PRxk1DwJ$TxoH{}qik zk_c2ZC9}r#&U0vbs}jY5!#MKPo!JR}bJ?u!O%FboW$1bz%Xb-0m3fp-BGOT%jR511 zbv1m!skceqy`T6&@&3*X~z+8l`dPZF+Ai^~kN;|7_D)`<*t&bo?LGA=dT}w)CdxbBS*fO^N*DWtyblEOqjP<+W## z3j`Z?&h^S=G2eB^TfDS>cW9Y{6>|M*X3w21+(TG|W3sdgRcK9(#-Ys~-x7uvMJ2wZ z>MljiTY~EUIy?NW+B!gE&K7a>HEy|x$uMs1+3#fx<~xyArzIh(j;N@G7gI=l6_Qu^ zD{eQKH}NhP1Bqyx0vuPvVv654cGL$0>T77EJbv~hvJM(L<7&V7^d_Z~Dmm;edEwv% z4Wn}$%Ur>#vC&7T)2vljw=|`2j%XaH? zrsc7xUoaOd?p{8D zuRo)MTU0b&{&b~Ttp5nyY)cSR-=g0WLz`)nf~o76ylpI5S$Oe0Sd7C(tpm-MzWcfe zq`dtXJy>_>lV&<88h?)JNL;p|z!m1zGOj5cmcZ`zv*PCGiE8`rUVD=~`KCpGd!?2fLh{*;jtMH|aUF^*8rC7U@`FkQMO}{Ujxb{<%vpARog70)iS^;QO;r{?qki); zaPkEfn|f&MxUr3bd-9K4U$H$xB^%Uh57n7M(=e;H)TStnqvRGsMH^E`=nUN z6)+_;vGEouNSCbZd_}f+srnE(B*Gp8I+OoX$ort2^4!8QMTh$E#cCX@C@8a^et7d( z%K?vI)IAurKJkPU9S1z+Xbu+@|5=T@n_Y#AOYD?qGQZ`1z+|BKt0V!R4;-D(R$g~w zs6_hn%8+{Tn{o}l5FNGIYpjk`qugh<`Oj2HYu(fr6MQGjCMa~fkoOk-i<=dXlBY}yKP6l zbT^Ae@=haF`Q8~)-jM2?xIvgpc!MjYY>iRO291~;duTCHLVUNifE7Wub-D&3y}4hd zm|g;%_j78J+#hY@2;Grb9wA%+YoHaI-Ja(mv*wLl5aa6+ktl)JlR4Kjnpf1hX`7p?k#%9UN-NT<;J2|YbAC)o0fY26K4_>4{prGL z1WiHg0MRIX;=jXG$%!@bWz69O%nIXVzYdo2xK(rdCh!G)axEKpng~>!=Bh1vzTnfm W{q+Alq1pgYhg7V;p!`8a`Tqdd^n;TC diff --git a/src/parser/__tests__/patches/141452e2a775ee86409e8779dd2eda767b4fe8ab.gitpatch b/src/parser/__tests__/patches/141452e2a775ee86409e8779dd2eda767b4fe8ab.gitpatch new file mode 100644 index 00000000..ca108c1f --- /dev/null +++ b/src/parser/__tests__/patches/141452e2a775ee86409e8779dd2eda767b4fe8ab.gitpatch @@ -0,0 +1,18 @@ +diff --git a/koan b/koan +new file mode 100644 +--- /dev/null ++++ b/koan +@@ -0,0 +1,12 @@ ++A monk asked Joshu, ++"Has a dog Buddha nature?" ++Joshu replied, "Mu". ++ ++The quick brown ++fox jumped over ++the lazy dog. ++ ++Git only detects changes ++as moves if both files ++are mostly similar. So ++you need a lot of text. + diff --git a/src/parser/__tests__/patches/1c5fe4e2243bb19d6b3bf15896177b13768e6eb6.gitpatch b/src/parser/__tests__/patches/1c5fe4e2243bb19d6b3bf15896177b13768e6eb6.gitpatch new file mode 100644 index 00000000..ca108c1f --- /dev/null +++ b/src/parser/__tests__/patches/1c5fe4e2243bb19d6b3bf15896177b13768e6eb6.gitpatch @@ -0,0 +1,18 @@ +diff --git a/koan b/koan +new file mode 100644 +--- /dev/null ++++ b/koan +@@ -0,0 +1,12 @@ ++A monk asked Joshu, ++"Has a dog Buddha nature?" ++Joshu replied, "Mu". ++ ++The quick brown ++fox jumped over ++the lazy dog. ++ ++Git only detects changes ++as moves if both files ++are mostly similar. So ++you need a lot of text. + diff --git a/src/parser/__tests__/patches/2658fd01d5355abe5d4c7ead3a0e7b4b3449fe77.gitpatch b/src/parser/__tests__/patches/2658fd01d5355abe5d4c7ead3a0e7b4b3449fe77.gitpatch new file mode 100644 index 00000000..b8295313 --- /dev/null +++ b/src/parser/__tests__/patches/2658fd01d5355abe5d4c7ead3a0e7b4b3449fe77.gitpatch @@ -0,0 +1,7 @@ +diff --git a/koan b/koan3 +rename from koan +rename to koan3 +diff --git a/koan b/koan4 +rename from koan +rename to koan4 + diff --git a/src/parser/__tests__/patches/30d23787e1ecd254c884afbe37afa612f61e3904.gitpatch b/src/parser/__tests__/patches/30d23787e1ecd254c884afbe37afa612f61e3904.gitpatch new file mode 100644 index 00000000..34a4e542 --- /dev/null +++ b/src/parser/__tests__/patches/30d23787e1ecd254c884afbe37afa612f61e3904.gitpatch @@ -0,0 +1,14 @@ +diff --git a/koan2 b/koan +rename from koan2 +rename to koan +--- a/koan2 ++++ b/koan +@@ -1,6 +1,6 @@ + A monk asked Joshu, + "Has a dog Buddha nature?" +-Joshu replied, "Mu". ++Joshu replied, "No". + + The quick brown + fox jumped over + diff --git a/src/parser/__tests__/patches/6d9eb65a2c2b56dee64d72f59554c1cca748dd34.gitpatch b/src/parser/__tests__/patches/6d9eb65a2c2b56dee64d72f59554c1cca748dd34.gitpatch new file mode 100644 index 00000000..a9519245 --- /dev/null +++ b/src/parser/__tests__/patches/6d9eb65a2c2b56dee64d72f59554c1cca748dd34.gitpatch @@ -0,0 +1,4 @@ +diff --git a/koan b/koan2 +rename from koan +rename to koan2 + diff --git a/src/parser/__tests__/patches/b0c9663ecda5f666f62dad245a3a7549aac5e636.gitpatch b/src/parser/__tests__/patches/b0c9663ecda5f666f62dad245a3a7549aac5e636.gitpatch new file mode 100644 index 00000000..db11d5df --- /dev/null +++ b/src/parser/__tests__/patches/b0c9663ecda5f666f62dad245a3a7549aac5e636.gitpatch @@ -0,0 +1,18 @@ +diff --git a/koan2 b/koan2 +deleted file mode 100644 +--- a/koan2 ++++ /dev/null +@@ -1,12 +0,0 @@ +-A monk asked Joshu, +-"Has a dog Buddha nature?" +-Joshu replied, "Yes". +- +-The quick brown +-fox jumped over +-the lazy dog. +- +-Git only detects changes +-as moves if both files +-are mostly similar. So +-you need a lot of text. + diff --git a/src/parser/__tests__/patches/b6ecdb3b4801f3028d88ba49940a558360847dbf.gitpatch b/src/parser/__tests__/patches/b6ecdb3b4801f3028d88ba49940a558360847dbf.gitpatch new file mode 100644 index 00000000..5c758913 --- /dev/null +++ b/src/parser/__tests__/patches/b6ecdb3b4801f3028d88ba49940a558360847dbf.gitpatch @@ -0,0 +1,18 @@ +diff --git a/koan2 b/koan2 +new file mode 100644 +--- /dev/null ++++ b/koan2 +@@ -0,0 +1,12 @@ ++A monk asked Joshu, ++"Has a dog Buddha nature?" ++Joshu replied, "Yes". ++ ++The quick brown ++fox jumped over ++the lazy dog. ++ ++Git only detects changes ++as moves if both files ++are mostly similar. So ++you need a lot of text. + diff --git a/src/parser/__tests__/patches/c0ba9bfe3695f95c3f558bc5797eeba421d32483.gitpatch b/src/parser/__tests__/patches/c0ba9bfe3695f95c3f558bc5797eeba421d32483.gitpatch new file mode 100644 index 00000000..e189ef08 --- /dev/null +++ b/src/parser/__tests__/patches/c0ba9bfe3695f95c3f558bc5797eeba421d32483.gitpatch @@ -0,0 +1,35 @@ +diff --git a/koan3 b/koan3 +deleted file mode 100644 +--- a/koan3 ++++ /dev/null +@@ -1,12 +0,0 @@ +-A monk asked Joshu, +-"Has a dog Buddha nature?" +-Joshu replied, "Mu". +- +-The quick brown +-fox jumped over +-the lazy dog. +- +-Git only detects changes +-as moves if both files +-are mostly similar. So +-you need a lot of text. +diff --git a/koan4 b/koan4 +deleted file mode 100644 +--- a/koan4 ++++ /dev/null +@@ -1,12 +0,0 @@ +-A monk asked Joshu, +-"Has a dog Buddha nature?" +-Joshu replied, "Mu". +- +-The quick brown +-fox jumped over +-the lazy dog. +- +-Git only detects changes +-as moves if both files +-are mostly similar. So +-you need a lot of text. + diff --git a/src/parser/__tests__/patches/c573c25d1a767d270fed504cd993e78aba936338.gitpatch b/src/parser/__tests__/patches/c573c25d1a767d270fed504cd993e78aba936338.gitpatch new file mode 100644 index 00000000..e517edda --- /dev/null +++ b/src/parser/__tests__/patches/c573c25d1a767d270fed504cd993e78aba936338.gitpatch @@ -0,0 +1,31 @@ +diff --git a/koan b/koan +--- a/koan ++++ b/koan +@@ -1,6 +1,6 @@ + A monk asked Joshu, + "Has a dog Buddha nature?" +-Joshu replied, "What?". ++Joshu replied, "Hmm?". + + The quick brown + fox jumped over +diff --git a/text b/text +--- a/text ++++ b/text +@@ -1,3 +1,12 @@ +-quack quack +-I am a duck +-quack quack ++A monk asked Joshu, ++"Has a dog Buddha nature?" ++Joshu replied, "What?". ++ ++The quick brown ++fox jumped over ++the lazy dog. ++ ++Git only detects changes ++as moves if both files ++are mostly similar. So ++you need a lot of text. + diff --git a/src/parser/__tests__/patches/d26628e588cf7d16368845b121c6ac6c781e81d0.gitpatch b/src/parser/__tests__/patches/d26628e588cf7d16368845b121c6ac6c781e81d0.gitpatch new file mode 100644 index 00000000..7adb8b18 --- /dev/null +++ b/src/parser/__tests__/patches/d26628e588cf7d16368845b121c6ac6c781e81d0.gitpatch @@ -0,0 +1,25 @@ +diff --git a/koan b/koan +--- a/koan ++++ b/koan +@@ -1,6 +1,6 @@ + A monk asked Joshu, + "Has a dog Buddha nature?" +-Joshu replied, "No". ++Joshu replied, "What?". + + The quick brown + fox jumped over +diff --git a/koan b/koan2 +copy from koan +copy to koan2 +--- a/koan ++++ b/koan2 +@@ -1,6 +1,6 @@ + A monk asked Joshu, + "Has a dog Buddha nature?" +-Joshu replied, "No". ++Joshu replied, "Unask the question!". + + The quick brown + fox jumped over +