From 42d0ee8302c361a0e3bde7bc59858eda94bc13a4 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 6 May 2006 00:15:54 -0700 Subject: [PATCH] binary diff and apply: testsuite. Signed-off-by: Junio C Hamano --- t/t4012-diff-binary.sh | 85 +++++++++++++++++++++++++++++++++++++++++ t/test4012.png | Bin 0 -> 5660 bytes 2 files changed, 85 insertions(+) create mode 100755 t/t4012-diff-binary.sh create mode 100644 t/test4012.png diff --git a/t/t4012-diff-binary.sh b/t/t4012-diff-binary.sh new file mode 100755 index 0000000000..bdd95c0d3d --- /dev/null +++ b/t/t4012-diff-binary.sh @@ -0,0 +1,85 @@ +#!/bin/sh +# +# Copyright (c) 2006 Junio C Hamano +# + +test_description='Binary diff and apply +' + +. ./test-lib.sh + +test_expect_success 'prepare repository' \ + 'echo AIT >a && echo BIT >b && echo CIT >c && echo DIT >d && + git-update-index --add a b c d && + echo git >a && + cat ../test4012.png >b && + echo git >c && + cat b b >d' + +test_expect_success 'diff without --binary' \ + 'git-diff | git-apply --stat --summary >current && + cmp current - <<\EOF + a | 2 +- + b | Bin + c | 2 +- + d | Bin + 4 files changed, 2 insertions(+), 2 deletions(-) +EOF' + +test_expect_success 'diff with --binary' \ + 'git-diff --binary | git-apply --stat --summary >current && + cmp current - <<\EOF + a | 2 +- + b | Bin + c | 2 +- + d | Bin + 4 files changed, 2 insertions(+), 2 deletions(-) +EOF' + +# apply needs to be able to skip the binary material correctly +# in order to report the line number of a corrupt patch. +test_expect_success 'apply detecting corrupt patch correctly' \ + 'git-diff | sed -e 's/-CIT/xCIT/' >broken && + if git-apply --stat --summary broken 2>detected + then + echo unhappy - should have detected an error + (exit 1) + else + echo happy + fi && + detected=`cat detected` && + detected=`expr "$detected" : "fatal.*at line \\([0-9]*\\)\$"` && + detected=`sed -ne "${detected}p" broken` && + test "$detected" = xCIT' + +test_expect_success 'apply detecting corrupt patch correctly' \ + 'git-diff --binary | sed -e 's/-CIT/xCIT/' >broken && + if git-apply --stat --summary broken 2>detected + then + echo unhappy - should have detected an error + (exit 1) + else + echo happy + fi && + detected=`cat detected` && + detected=`expr "$detected" : "fatal.*at line \\([0-9]*\\)\$"` && + detected=`sed -ne "${detected}p" broken` && + test "$detected" = xCIT' + +test_expect_success 'initial commit' 'git-commit -a -m initial' + +# Try removal (b), modification (d), and creation (e). +test_expect_success 'diff-index with --binary' \ + 'echo AIT >a && mv b e && echo CIT >c && cat e >d && + git-update-index --add --remove a b c d e && + tree0=`git-write-tree` && + git-diff --cached --binary >current && + git-apply --stat --summary current' + +test_expect_success 'apply binary patch' \ + 'git-reset --hard && + git-apply --binary --index 47O+4j2IXg*pj^6T^JTHC@_5BnKD6? zfq{Xuz$3Dlfk96hgc&QA+LtjfFtC?+`ns}TV`Ua$wV1QVsG5O+LAJy-qQp5rH#aq} zgu%HeHL)Z$MWH;iBts!2BUQoO(>LIKifSGMgJ^@Ni(^Q|t+#V?b3{UKAOF9*_U6(9 zzOy-+x~AN^B-H!K#bJ%Fm2&U32ePZw+ytinIQaaUjo<}|*WB-V`djYF2h1}0*!|E| z*xTp8p}RjAR^GhXVSZ=D#;g2EowIbZ0C;OrRQb37q71DSZV9WBj`6;eLhxyp|DO`u*jLTg=MlCyQL0r z+{k72wJ@w;QD^I4uyBW=spm)KGj8r?>Nel@RCDXZ9_F~Rj_Iun^NYs2W*4T+%KY5* z@Ql~nfLDKKyo@;i<=m$f_h1p$MH;i}>O*(1^%mcr%UGo(vPM%veecO5KX$!5bJ)VL zqGh$>*{-K?5o!PYeE;2PnsxOc%h{^Q+Zxr@yw{%hb0u%dq2*z@o#r-Qc#fUjoKvM&BMI*(5%cAe)}6cdkxB6?WX1M zRO_8P{mik_d+WlB=O(?hU87we*BCWP<@P_f3o9HqH?CoCd8PSRZC;#}t)JQLgKGQk z`Fy6cQgU@@N_=Um0b#^%aQW7VaRjb^XremU?#`O2PY2P-QwOr0lm z&wBAks!Q5eH!C$(^GdYbxu-Y$L|o@siap;Jv}51;8=p*tI`7=;UZ}w}OWrai)8)yt zg{q#XR^HGP>ixCJ;pF>|TdscSffQc%%)^pqWN^E z-ja`J=0<`ENDXXRqOnYNLF5YEtIpM17tGmSk$=RL zX>0skHwA$WS3J+=EnPf$a?FIwyA$tBxYrUDD8j`2)V5mv*QK3tTDd^J4CDu~fvi3rqH{!lO=DMJ>QpPoK#=}RY z{IAZ7h^vRWz12CMk~U+8Y;PNHP@mhcY!%blUk!{cpYWM%FF1TaGJTQ6W?mWF!@GF5 zZcMcKUHfnGKi|B*w3-!ZGFf|f{fy9gCUYUrC+-d3&M!$;+ZQ~u^%rDeeEE&m#j=8O4etWKcdwqMcO3>`m2-Q?x zC7V+7dAjnY%U0O_{xE%|@U4wWS?G&#qzK!f-G~@azp2R~{CHu2Oke7ypY{eM4PHuta_S zq(wfRxoN`cxjGN0Mee>KdENTe!naYHNoPGyNCpM%`u;RQ=Izw>&P{KA3$vUo(OeZ4 z{n1MF)MUl>iHe^3b1r<^7B}yOB`_fw%rY`*-DR}7rSmsZC=CY@k(=3*6t4$ z?W(m?Le9S`GiiG!emnJhi`(9%7Z++3zq=WsT)DC(ME~{z4Iz=!*Zq%eU&DSR{dI!Y zg|a!8k1|e7)J>l`Cqu$qVs-fS=(4Y;cAid~ijd(J1>%z^Q>o4?77h_@MocrUNPwJfMDjYff z0>v^JyN$R`rkA>yS_c#4=$WmDh4wCUa9~qNt^H@U zx&4`>R*I2Uf6>{LS(-@_X=kr$_f{-kU3p@nsO{#BB~{-PCVE(G>OY^SI@>Mj(}i_w zMcft#dR)}FbU8JR>sV#xr&m)AG8qrPyD>BU#YDTru=yuXD8GFcmZlP0b^ebb%a#+C ze}x5ET!aHTH1!wlFq4+w|Iwjg$waQ=U5CzTZ$zNGU$1Wh;}3~T!`Fq-o)~Z`Sog*6J9KGw`-I0ilhV;46YQO z=xPf3BYrVW{lq37*I(L;7cLiWb~l;dlu&iNOR2kq<04OD=RWrITB%8Qg*G|yXc$U% zx#i6NH^VHh-~XJ6p#S=-0V1hIZp*fn={yTh*mB|&_d-`4HRqrP!&$l~Z7w9MzwyXS zh_Zd_p(|G;T@e|k;JNADgyp7&nHqUdel7UDtx-+GOPHzg4X^D-(N`?Dy>A~EVc59w zzlT>&j?y{v(+BnhWjvXAKW5MKh?9$g6Ha@~Yg$!sVoL;TwC&0JCm!FAkZHYKaN6_x z>^C`cj3Z{|yop>8Y?!B%cw1o=gTQ3HnY#~e*1fnZHQBSP$iB+Kum7Tevr*NAoWC+N z8_s<H4b{T> zK6Z5Pl{g*scTE-VLpRwiS@l=16^B3Rw|4n+W@E**WT`p3^1s@hwXkq@*j#0yu3qj} z`PRqq!;$kDUyNVJ&K5ti=XPVcZuu_f&9Cn4VD^1vY$WmXt_#PU5|vlB8(T7M4yrEj z40b~F3!vQtMqj0;EuZH8P+s_m!AtCU;K;kfrUH@Q=^W1Hb$? zXi}WL`N%fL*cibhhpx8Hh@aj+>6A@Yq!7b`|HlRAyz5w8{@;Mjudiso-S^h1mfoK? zq&Q1_&ib_StH-WiZ#`t@o^7`H{-z}q#gWT5w zpBQP**=)jJpFiKxV6xB3H46pm^XE5OdVjvdzU$FPCYv80OGNH^a0*YV6um2Pq*>nI z{pe%XcZ{(gD;QV(k8DX`Ox5+cCaS}+;MaWDX$#DFzsy-$8S(L)NfxV6`Pz!~SuZ~v z7P;_HnrTI@;(4D<=Yy|r6H%;jJ|MYZ`d-0hGiIh#`|N$wyWy|H`N&!BH+d#0Yh`Pg z$W%$NRh?`zh@ACgM$e}-ju(%*6xK3KlDWEPR*gtF%Ui~(hgn>v9_LPTl(#j^i+8^_ z^U0o`g5x|TD=ZvBi&eryf@Zb{6gKEzQ0?YSo75d({OLH)mow3t?|q8=*ZkSoE~C0d z%LBwTWcIzi%p(I5e(VQ8R{(rq!{r=&tt=Sdd@0M#mQP`%PU$4H< z{WYc!+J8H-u;PwrsVV=$;@=9bGAgHvCRn__wAA~@hr|3A@7?QrzwbAnxL%BdhRC6_ z=J$JEy~yIZWZw6x;)+wJOm%g@d-jo6ZLamW19^76%7x0*h_zk2Q3Rt1i>cN_Qa zm5q&!?Ku8;vf8-T)(s{8-9{Oxp&Sl^PSyx@Zg!l>s5T~>bB3b`}IQE=I@uw%j}c0v$f|{JmU0kk$JK( z_sTNg*&Awqmo2-Vb@0t}&ZjS4tVqxCbGW@E_x85l=E{qUTr+ZVjxh7vG~C>r{`k+& z&lWX547TOn?V7CapH&sfFl*lW&6|a*zrB(CZtNPkK%;AAb?vK_%L9Ufn%1q;>*?uP z@~`YyZN|zC8w5^I({+xGm2H*Txh8nI-@;X^v_!?$#O;-mum5A%)zzi8_uH$ht0Q)o z>3(~EKmTO*sZDd5&S#u(jO3fN?jFe3XUgvsvVVJXb1|negNUf;!mV3Hx8JX`mh5Zh z$dE31abe+=@3YPG-7MDBZ#%Lj^YVtu&uK<7jBkBQ%gdMVOZUxO8?$o~kGn&4u(PxC z%J=E#=A8U8PtrJT!oxp2CFSMjr%s&;2n#bixA^Iyt!d}yt$n%n>yoK26@GHOsQvwI z;r8v~d-v}B@#V6A@vErQ)Ajvp_h(<%TlRg!zP=}c3of^(?hVzqk9&PmeZEia{Y#gc zB6ODhu5t~$aOu(`NsUjR{#h|6KMJy7v}OHzBe_5E=B8AJhKCOm*FA9s(~5_! z;vX(~>%WX!ziu6$e9Z^Ox}Q(QgL4Z{>uxu=8VgDiix)Gm-}_Cf?9C0smACX+{p;-B z?fac)^W}nb#P&Sdyxnijt~YMmJ8kivJu>!xzf4{^TU%dWe)_pjueL^r^dB$$^P{ll z|KINx_5W`E+Ti_w<4=&z)g*cBcBm%4IcEp6g|eZ(8^Y1xo zX=&LATb-R{%Ki20*A?s6e|KGxZhfJhU;fy>+TR5~KRxwy-fgvnyU8H4z13>V?}t%g zSMT5Ne?G4|FJ@ZHlfVVydNCc-Tae~v-`Qq@Gp9WLuq-PpD=4xrM@v`t=)q=o!|ZE1Msqwb9_l)q zbaS2vU;D>L-TI3*Zx)_9b!v*qrwjM4ipSS9?ydfwwd~C@|M`7gU0fZDI`;p4o1da% z&n(N;YO??Q(rm^9b1aKL{P}!dICH05k%@`Pf-PG_xW#l1DEHe;ntWZ!SCKz9G_>{J zy?b-^iFK;Ast7UqDoL_g+09VMo){ynU4O=b|Eur?mG4JR$s1p&|7YVBrn*xt?B9&W zcmESx)_4{9f(v$L&M*Hx0w%{a{5&qm!&|^-$?%}Wea;&1q8PUw#w;c8|0QnHJ6S0C z@SMN}W_9#s{*|NZmc|!_o9pLo zOPuq&>PXxI#s{l)n|D-A`*ca=cgfc`8vAY~*+?0%etFQ!lJvh=bn*4fuM>{MFTOsx zhBwZ`f_aNnl}z<#smS?9Vvpb3lV)*c1CI&AoIg*j{{7Xe%o4Ic|L1-9`bSUHulvRy zF8cZ6r2o3d7j9{b1W(pEey06e+(s5-@dZ~uJdWp&U-pLm(AyhzI3!^ zo9yamI%f}0;!QlWdLi#qmD;~$Dt+gkIqE6gX4|srQI~?)I=v%*cGXM?c^3G3B7+Kd zuV49*i@WP@T;N*p+F`kNh>XL@M>c2nn05qsGW>kVu=R~dV2wfJ!hbCP{#1(mwcika zwo)oX=%nUFwMbB82wnikiQoklrdcjZ3p_#8rr`hl^6w|r#DCyVWME)m@O1TaS?83{ F1OQsY(TM;6 literal 0 HcmV?d00001 -- 2.52.0