From fe1540f5460d3ab65211f60626eda105e6f1b173 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=2E=20David=20Iba=C3=B1ez?= <jdavid@itaapy.com>
Date: Mon, 7 Feb 2011 12:56:45 +0100
Subject: [PATCH] Add index test case for a non-bare repo

---
 test/data/testrepo.zip  | Bin 0 -> 14827 bytes
 test/test_blob.py       |   2 +-
 test/test_commit.py     |   2 +-
 test/test_index.py      |   8 +++++++-
 test/test_repository.py |   2 +-
 test/test_tag.py        |   2 +-
 test/test_tree.py       |   2 +-
 test/utils.py           |  20 +++++++++++++++++++-
 8 files changed, 31 insertions(+), 7 deletions(-)
 create mode 100644 test/data/testrepo.zip

diff --git a/test/data/testrepo.zip b/test/data/testrepo.zip
new file mode 100644
index 0000000000000000000000000000000000000000..aac9a6293b8b0a0b8a7cefa3ee7ff3f17d3c3881
GIT binary patch
literal 14827
zcmd5?Wmptk(_T8IyG1&e4h2CPq@<e#mM-a*knS!?L8U{wLr}U@S`<V;S`idMzC|9D
zRNjBzUe|%$Klj9$nKPvz0|Sc;IQ+1gNC^J?^4}jM013bWZ0}$PwzXkZQAPs5Fu#$P
z#ep107Zd;#>>>;R@bizt2?*xvh$W~Hh{J<@9KsF^GO_}*IJh|c20H{i1!fAiw6vjc
zwz0D`LjD6Rb&5B%<G?H?W)4RTYW#~qs#7>PXK+kyY%J`L&<;htKwKP%aEO3IG}Dm)
zzG(yiKnoiHpuPaj)(*^U2Q~oNgIVlBR<@Slp9;7DK3CnsezFsHzjq&(2S+QKg&gaq
zgQkU1B$Ejitrh#6dCJmQc?B#!6(t~ajpa5+!VmX>X&np<vFm9G9B~^p>+WlYu3LSU
z(eWJhcoMTgERL02<L0ZTNnxg5cApm54)#&@6%vyl$?WRlmA_2iHZOXjN65uyezoZ1
zi01P3Zl>hA96gI=)2usILKWR4T%xa~=9rirRf{R8+P{>zvC(L-&_`1Xzm-tow~I<&
z%znF&Hv}ic+$s{voF|_=*CYEupF6(p!QP`V<MHCEku=9};ox5T%B}ah*7={cZPag3
zhcm?~bqeli`zfW|z9FllVG_r*7p_91l)ydgJ35u8KO9H+;Yxek3wDimlLX=honZyy
zJ7V)y6&eNXH$LpVsh=R&<^)C%Jq4A-i^Yp9YuYe97>gRQ(sqcajz*xVt#qKmG)iut
zn8%|;2CFJuNuRspY4<!FEEvK#ul>A*ZAI3|D*0vrm3>s%kYf{UbdkM;#`BFQ0r_sx
zCQerbfMaG)(~vPU(w?fe&ic)M{_(bgwLI<tG|jHxL&3BWZ3@`jMOWwk@8Y>mRRKoV
ziF?1_npfpow<Z*D(qeK*r*6@dp1J3~xtp-IE*9w{MC$<Whf4uRRaz<eIFE6Zs8Lyt
z#*)!KgcF<6#}U|JvFIn}fa>ziZrhT|&BVm_z*EOR03SZc&>Re=#Hi1R0uI{UNs#_<
zML|lid)hG5TQ+eo-9g&FBI+i!n_={o-ER{8V2Wq^GOsr^zfTp=Vexg@>*3?Ad$s_G
z$qT!hwQjDjFLB(Eex0JbcUNvdLxG(u6^kjvXlOxcvn54eWH9=5VK$sv>8D&FA?xx_
zG*bbVQ2E#tty!D^t%a(EI%UNB+2}r&Cc~>}_^~q^8_|Vc_a!ZC^k+i^Eqe)lKdLt<
z`u}**nzGgqOnCc7sleDK(ME}9fp9TJrD$>%Yi-_h$>+{-=}V@D-p!(Jcgj<$>OPo0
zRqyP)RaxWbmDS_n-j2%i*u8bUV^$<Kqjf?37P<raQ0KJM*n*zE%}s={$^7N9)-R);
zKpRTZ_L;o;w5r!HGPhN?(7?sQ3Q^8LM_Gitg5Z(ZTnC0YiP)_-2XUpkri5kMV(3Vy
z^4Xx3#dY7O*e!UOjT%<r8PWNBlJV?(vN)t7YGvWnelBP%Z@hK}oM}f*HeEq#B=aU$
zI*1<nJtrKfr-5e9Y?ye&apRue_QRxi<oq8ZDN3Vo6KzX)z5_j+*}oM$$QivyG!(Yv
zE^@o%Grj}=Y&}A`N_y?P6;D25iO+H+`;1{g17ek8WTG|EwJs95jBt2i+jX6&8%gd5
zXx-_0k>bK=wrqQy)s!-R5&Id9ZCxm$OIKsuG$T~(X9`e<r4DM`_E#sX1w&fBb#+*V
zdM6OjXOSE;h~OTNvfWQdotdjb*siDflCk~Z(YLz@LHbw{2MZEGYw9~%!SQ*TuZEdc
zTZ5YtO!ZLwDa{dzGG_W-ws^B7D&d8FYL$+$^OUq$_LZ=si(I%h$gx{{`{j?7chsHm
zKKqMbU7Y7pLa(O_$p;gNC2<W<*2av%2QbWG<$#TqX9t6zo)lWHm3DbZtry$V20=ah
zWH<V%lp{bzgmf|SMV?Ymo=x?Xg$%B_v7(77>gvm07am{zc2!_=49!4|4NUMSIgOPh
z{Wmwt=!Cg$!LTNf;5W~^KzTJ8>+<SxcedhW$j#gXnx%DlU`WT)S>%rI(%=fvsdMPj
zg~1ZQV6VsJk717#${BIMiz805E<W&@a`61(i6<PPk2uw(nZO7ihQ?CX2`@H>p;}cR
zly$`g9Tt<9n@yub;FTY8PxbEmtNidkdfA71YK%C|4SS^vdwn@FvtJIzi!@<`M<(~S
zD>Tg!hCPTgtI7}82JE}g!_PF<*17I~SY>MPDO!;+E>jHEYl}gXx>ERD5C?Q^TCy2>
zL?@5OduPKzbYv-RP<%V8bN_W<bm)^2Grv~Jcg+eyjA-Lt`<qvvC1yA}#xpx_EUAO2
z+GjXuYoR@LxJ=Rr7@l#En33o?h4QZ;(pgRvurx~xa>GCwj{&s$TzzSC(cV%fKN8|M
zVJTIW<_HPWy-Ju;z-nYPD$MV*1w9r=letLuM8CN#=-r-$;uomtnP#WTcW`=}8i9^w
z*je5h>_anrqJZm8*o%GDbB(KA_T+SyBxQAi&>EA|IN@aXEx*Q?`dTZmp`@Z1RWr2v
zN%NB%%=9X#Ys;oLuKJHHm&?^lS<Jn99z*>6MW+=9!@`FlMb2mWr3vv?k!gzu-S`8D
zwe8~!WL+B!Z-Esl+;Ouu-K1LGuDX)=A(X0gr8CPu67n>$GyCF$?hzVOxTy#7#mOP$
zlD40mh4B%Bjok;(1|8Br@%U6sC+Z61K5%SWUD(HNW0`JCb@>*=KHRssOlczc@jw<Z
zDa5Vii-B)g(}L@@B<~iPDrq{8-=tfrb0@{~R%|47S2N|aZs8eI_m~COdDr2>E!-ZZ
z0ne<Dlr|g{<8fo*<E%~d83rD~_jRXl-zixbmYGK@ogpSPSFf(cEodwzuG;9Kv)RFh
zj!51^X%ky?$$!>u{a!j)O&&*Y)0-uqXdh6ND(tZ#`T45o$U%f{5~bG-G2UQ`k5l*x
z<A&yHYY~29T1gF#B^JGVd2E|Ff>)k$F(4Vv9AuAh`mk2F9RLn9nm@Ti3hGWv2qcqe
zgdCcSat9lG2WCfGBap*ok_YBKMJ!(+D(v7vx`Dr*4~Gi^D+Wb8+OR{++qbJliwkT0
z4OXn}NuTs(OhrPq;K?iEX$>(oK(UWzZG{zCa!_w&navY&g;L{tUJEhc320DfWM7{|
zRO?n1o!(VyLg5`z2kFJ6?N$;cSKY%NamMD1|6<L`!N=o?=&^BM!fr3WUwv6N(JpQS
z>ZGLbewNSOAW~-jOHxA{D=RaHOQcE6VZvB#6d17U4F;%cvTJYlylHQiUJX@%mH|tt
zq_YO=)|*V|KH^J|@+<3{RcyIFpF$w~9>&q4@Cvhnh%&EqFn*LxgKuW4ec{LImnCv`
z5ep0>ZF9-)NHv2~7R(NJsY=wZci)?xdj~6mYgMghKoDL#NAIcd<^#$}$?hTHv}r>!
zVFviW=YN+L%u`v*Vu~NbE8<?qOC%|nGH2|nt5V}_F?d9Xo_s!^2bDrB!$&_(#4vWH
zTGH>Y?o&-_4J++_=$UHj>3tWfk+s$PstaT%$tb%=HBk)84<C<WEc$rERYa>Qe`3gx
z`3Aj2HqdiV7a0G@Dt?E_UbzNWwml|<G}mJO`8|382EABrs+Bq$4fjNBftN~&6I<b;
z>^HB1QD2SoR0TZ1Z<1*4ekx`-%GgMgCFPLDm8R0hQMvL!og)vK>lU03JcxHeR-!3g
zy!Tosf=HnlR8SLq46v0@!^8YJYdrD+YHr%RC2SOJa6TPHc|#vRh*T*dJg4DawVRBM
zaZEMGG|v^C20lUgK~-7=1Lim<FTz_`)+DqDfew%3)v^g6*Imua59xg29X{E={zA)`
zy#t?Rzl1+@_Ty|k6DvMG_-<E6Ws+Y1w^!Luir>$F>3F500%R>-2+g^JRQg7xg2R)F
zio%!s1DhSAcAl~*k?nQ66@(2fD7jD{fQ@^9Y|{M)N#!@(_+I2QRz^(K?rF4`nYvqq
z+rQ*$Q|qjP&4osmY}4%Is}k?J*|$kl*5H3r0T#AOS!1NlP|<;&&lo|N*}0S6W`*VP
zJ;Kf<qK6)PD#7eGg1!du1B16QV{nOBd>%3x6aI)@7Dc-EvW@Zz9(EFjQeA6+E*BP#
z&~9WLnE*`6a42=IPj;N((B@r?ZNJS18(D!H1`G@euI*V5xdif2Huxi;n?MIC%o#&6
z^YYqsSQ{`iqq-UiCa~~%9C(Pz4}F<Y_YH}jykGS2nl*iWomg#ba)iT9I&sJlb8=Ky
zJsrM9&W%pT(0&jAW_Wuw*YJta<JUwzRDnaE-UC|6G9SJf%F<8`DHj(_fGcBvm`a-7
z-i(Uu+c+OmZsWkI@y*>%$l>01SI2wJ4OgCUNYRqhf8Shc{?=v2UyPW@<+Pes+4*J=
z**S-l1#JsnZ9w)`*4=b8DW#7h8&<)M^kSJL)_!9}?R+lAKO_u!mg2Bqt&ZK7G2tW(
zGuR1mJXpq9pUQ;BdT9$iuUc!Svc2OM$oF|~hiHz$nv)x-JG6oKKANWHdIKD)T|Sb+
zce7TvTAvIIm(N-n+0E;Q+Ov9m?^@EI&$Y;F59e4ts(Al6({`mo&5aeDKz;L6P{O^_
zP~-#)01%@A09P*vzn6}@MQVyRliV0yRbCw`+_Mv<^HlCKDX2QWS3C(6EW1V&U@LBG
zXd4Y<FV%c}eb5w{V<b~<K`R*s$dY<9?d&`=Jv8kcn-_(h20xuCLr%R}Vp-P9n=364
z6JcM*X@n!ofqT<jQ;H^+y?29<kb5-ly}7V9Q924=WaexDm=NtToWDJYZh;M7-lM^2
z(@@d^bjRSEN2PaAQ;QkpxNof7__#WlqdCfBb#RK_)L6-zEpHHQ2$52*ZI!AmogP`O
zhmgWQ8oOSR9n+qvbIs2`{w1b&o?{;r3C6UBfKo1dKb4s^XOWWio%Hp(Iy?<=B{?~C
zZvXpc+Kz5^P0E@C@%WfStZ;oUZK}y-3vfm8E5t$KvP>N5ciXeRBVswDzuU(QQ}a=O
zk}MfAN0C%1hoY)JDJR*&D--1!V&5O8z@AU&_)*B)uSwpXW^Su??fc{&vj}jm+;%Yo
zfqDT2?4lY+w%!gKp8Y-{&=G*u`?h4OEoL+p4^@{b>472*6?!*OEwZ}_$eXC^8}{o3
zkT?70az>l<hJ1o8j01fnIZX7R9_J5n(0aAJGkSH#55%ROTrny?v`D46zM@cxrWi6A
zjn(2D=8YQoYsgEx?;Egkb`*4<;1(rwUaJmy)%|+iyjIjj+OI$9)eO#~H}sy~TBBR7
z-~IfZKe#DO?;(GD02hpCZXFkmXjZrvkO(O&q@AW3MlJhU(bT88H0N6#W1Qw{J~mbt
zF*`l3G0pqrN5+BZH0E`?&dV920?AFN&a)Ck-0}TJdyP7>HGex>YhQ=Yl?T_zsTpYV
zS{&sWI0N;Q3z}UmSMWH^U#=!89js*hNXUwv*tf-acH5rhHLM7Z3dS3m9zTtu^0uq{
z5?4jL<In>|c2_z+66`&bOy2hNuK#3h+-&bkXxle?1>wQ<N9uOrq)}x?$wgC29@%u|
z2jYv4o-fN8iQb7nilnU)s-yebY43=eF8CSSZNi4$)4x(h@mlpwx6;Alh9Ym16dv^M
zmuwtP#gVf9_ujhbir3^9DuM@*>h+y%AJIB}x*c$Bog{l|$v`lI7zQhqU!~Ud36bjh
zjNPkMYe$dgmBW=zMfbPRbW=P!EaaTbks3wh&9z7sOF)iBpM5`nux!x{XB3=q?Ar;t
zH3Q$>&+9-8&mGR?xpbYZzD&#Uda4G7UDpS13@gX@l_iRN(w;2wDGxV~DQV5GL9ay0
z@|qv|)D+QVlXtUje5H_9YsE9TUg8*+YG9L@6N~+6ppo{*7rXmUXK{3}^LNcC)si9?
zMrmK~roU_p_o5ySWLz|S3LUAK6&|r|wBn2~2gk;nl8=KoNy17Fmx`ziW1<zFDLrQ4
ztn2(v=!bRwC=4TWgP=d|uE1@J>t!5Z-L~rLwq?CLt1hV|H?gY*^7o;?hnPvMF?(2<
zdB%^3MD9FfqJW97QkuifW%eZz$!<D$+NfnAxAr`oxCVdmUgVvkTw=)_tWV7zmP)tc
zs>A}Zoga?(3)Eeyd7blJMKVjNL1)^3<n6taxriAB0WcLB0GNRUHRcNf8l)Fx3xf2c
zj`9&^D|?emBwL<JI`$(#3=f*-*(eU#n@p)~TGv-^)1z+r_YZC)m=%nfXemdBQB}uv
zMJ`bBT_q)8ca0i&)7Utzv|Xnyty5<mBg<Yh=zX&zUkx#h4gD<xqdWQ=A)7LMyjEw#
zc#WbQ1hA%hmVI`IZ)xH!`a;k*)WY2ArEBo=!_Jtw9muVmn^TgwPwofG)hJxud%@5C
zVUQrVSIGc1i71xHY%73981cHVG1>z{OMkeQ1{n^8B63R`5?==pR$*RG^PnQ`)e<aM
z&P>cZwVZwcE6xM|*WRDo&{=2~BS@dIBy_qJhAz%O&@?Lx^Bb-gO7!b66)B{`MlBuE
zN)P(lU0Ij}8*l|Jr}(81JjNiUHM`whQg{UmVZ_9BpdUFiI8mHOTJ=pDFcVLZfYwxZ
z(%L9eGq?i;c4(YLhEcgGs@z+VAPe&#5Yy!opay(DG35iIx0TxrLQKW8&ams)n@H{A
z6Z(#&R=w#Jfu&_wA}>Pf2p!z;;FsCNTKF7k!aE<C>=<Gcx4YE~tPSuQl@(P_GJQ;$
z^&uWNFRV2qlGDn~iGXUrAgeCNN-=$qC>@<$!;Zt4Bf4lq&+_H={USCajc{M+0@x+v
zk?L<-q}L>9qQd&o7hx69`a25(b}`*5kZYI{W}$e4lWIRz^=9_^pb;8@Redcp8>Zpa
zZz%%e<(Ft;COOO<df#qwu1Ga)ODZ9gyMYf@#pL>DX}3Z}TkukZp?0o+Q_ZGSIzZm_
zifNS2mz;h>c6;s(DQW9CVZ%5ktgQ<M+M+1#`)Tdwo2hFEKO{i!Mqcf$%}(xp{xVu$
zfKJ}r3zAKh=yTu%mFbbBv!aExn|-4!z*Z+o+-C|K9kzn{(GFFghQ%clK5EgD|F9>{
zd|{#N#<wdcJ%EH-i*FxNV?;m!0Q47o05ize*3#7$<X~ue8S9T^lWzxN_?zr8l9|1N
z8xD#`qM~|<>nI`TmM0(Xnc$g4A9N6*q*+$hRR6unJ#_NX{GgEup0UpYAf+%8rZt!(
zs{WZ`mM^;WREDjCYAaz?{N{t|`*IB?DigRu?!Mu7dBqCSL^7VW;~B3qqi@7LogUdO
zoTw{k@8VqvNyL><4W!8Wkwf*u+>xnRmmb%QjBf>{m;_%UCTWa8C+{s8M=N~aXG0C@
zThm_}LzRVEt8&xph7Go7uEoF5i%DNd&I}3u*i7?kB8h9e(9y|}hV-FgcZl1qN{?yF
z89i>BzS}*09$yOzOEr^;Q=WWxHv9I)R*g9$-{!Na*Qtutvw&q)1)^IzNR*+yNWX^_
zs~y-7Z02;Ck`=7jW7h^mZCGGbuHjC)fhZLSdX(6|^@d!*GTDW~sndyW|2so~2sw{T
zfsU)%GVKsCV_Q_wQ?3ThOyY<Ue|_6ERADy`vB7>35=7Nl6t*3zE^RY72Wn!T;IEtH
zp0=`pn_5DoUF|Tvv~eZ`K!CKA5)~YxOl16Eenk&<Px9iP8qrEHQ*Z1ovNwPR+IL7I
z>NP(&BlqF~o$RCa-<~;9h;}%d4;g^olaWk`xz>@r(_i}hV<U$-!olckc(@?6i^e0&
zWgQi~aE9HGj}hB-LpoZc{+&7_ufp%#;ZnEGGW$a2u7f=X9=G1Hnq1Nu@3GQ}R#q8W
zzdnt}H90JddY>T(6UHQF7DbdIE&R=v0g_-)9N#U;d#>;-#*EW7W4FDSrYW_<a;br;
z8x<}!T3jAYi$A6eW5LT;g7{nnx!th3rS7t`B}RnK^xVU;CmPZ&w>jw*OJBP&b|AOr
z4XINvno<03??H^7%?J>uBO_J*t|a5Is_es0K^4+|lw&Bd>N}!K?`e2~E1&gS25vs~
za4sgz$EDfC5*yw5(J%0vtoa4n9dK1d=MX_6@|J9cj>wbBrog`N6_N+yx=LQ?YS?zu
zRl`|BxSHjv$`$Xss<X|Ww7k1M8zLY0h#+$K)nEw4?N`+~Q<T6sQ=~f7gIvoXsA4>{
z%F+cQTEWsHdE!@fHpp*cB4M=6;(t&)Bm|||Hu}?%5=vUQ=P@9{4LOQCiz7?WQW+u1
zV{~iS4De68f*+wyETqIF%RVF@C$GNK>Nk*xDwuG!gPDi^?pq9<zNhJB-dXzm${qz0
z9WazuR=BL!(i>Eo+SuTHV9K7XV~aug5Npsg+|fy(e-3%32%0um$hap`(HLUVZW6W#
z<3zzB>6J)EWA;G@dPRLib!=1Et-yFH_q2!`R&L}9lr3-ThrTbVp<OR$w$(rzKg`{o
zUF-L4_m|epKd;T<NvN;M<6@<*I*-hIG^R2y#ICRsmy~INb=VEHI~XZEOM`Z>#h(Y!
z77#qYMpwd@pH-zBSUzCBERe2i!9vok5SqPCl>9x^D?MR8h*Tqxw-e6rkucl%!Bd4#
z61+sM=5u2bCGTN|_udCZ8GRoh@Jue*<6(@^82fC(iCj>u*VOjmz&)((yN+0M_RLAE
z(%*?zM}}C{v%kdJKXLZ5nMRa=e7g{8fXSL#QpHDTsb}5FN3nMFWtT=RYZ_@K+~!QJ
z1=8v>^G2`qQQfKP>z|m3D-}>&HoYZQv&Dc{!&-E*=_sK1{iYEOFzVitAdLaNMT`X~
zg2;y2*W!@)#oa?R`C&Yf(Hv-A%f+U(_i0pcJ#D?;wf2<j8afrc$Ho`hM*t>G8u)1x
z8j26Wdr^1sC6L*o@%9RY1aN$}+j3cCf_SWmYlwnT+9qsUJcDNiS>KRwW4o8zkCS|I
zOU$4Q_<Gy*ew@Ub^POxs6`hh2QgoGv$}lieeUFUe=oy6Zo<u4z&u~vhj`q20nNI0W
zEl{f$y(A?o`_5Cb=jQe#Vfmw$KmqxovX2I{lBb52C#I@Dho6=<CjZSW)gUv=!*gn?
z`sd~j!2}KMy*(hW<YUOeKNH1&f=P-Ai~gKaUH};Wq7@064MS+?sVbX<m^uwo7Zv5K
zFzl*9OmACILALN<abatxvSrJ?@93M&6u8pL+QzJcs)@ddDT=5I>6YX%xFBrO)?z=d
znTj^<&&%}a>MP4TY7<EVJH-zIs0mUL={pGY1K{s&4G9z9-g+YY4Vcz0&N>Qzlf3z7
z6@R{F2+kMA4s85y^_-7L_7_A`$UytwxJT{Y(`u*sC$1I9-T`d)|M?F7G_rX@5y)>s
zj7bV|2+v4n1hzM{GqZItv$6i$;2Wi{N2XU+R*_Dc`2}k~Qx|J~g{q`%7n34g*9#_9
z$(~**6$N=IW;vE_Cc3WP0VOrME;Yasp!+eU+3+0nu|(xi*Q}^gi(L?IXduCf<P1k5
z^0Km0%6ej=Qp&PQ5`WXNY-FoB3>&KGz;p>gd0@rhSD0H%xfpaf6MBOaAy(==9j{|P
ztTV<|ZBbwl8Gl%c(^C7YDgD|kWwVUk5kAz;kLE|TLXC4sn7via>!McLm>1LUm{FV^
zavy1Ai)okBtSmG#FNgR?KYZEw4wI@CUR&_XZla`&)x?1#UylnuQ}{DloR0zQeNG<n
zg~_k=Choe`Dhe&r)gg7iGsUuP9;dB0-70!(yYU_y;YQl$?t%W=X<I9U_tE6y6KNZ8
zA_6J3Z2oO>&Ei8mf5OS()&irM{bT%}-VXp^ol(zk=f7Y@0pd^m6hEEn$OVo}_1L<`
z={1Y95zEZl_`ju+3uyd_SchQF0)1DDApCAX4$&EYe}aKs3@sgv{<>Ph94?I92E-BF
zNjJz0%^!1Ot-;cEg}IA4nZX_NKJk6vShxvK{93^ChGgW2m}6t6hV<EH>NLm}nesLx
zLg8pDELLWYofd1{4F$G5O$6-p!Z^6F<1g;l<!3=>nJm1Jv6T7T359I`mgfufbHx?t
zxw`_mX_@1i{hg679;|rd$8W#5K@sEas4=F?#)ye5XpphDT`I>*5blp%t_gKbZ1;0}
z?ThEztsiRx*4GgJD1Zy10Jf?e7(<Bgwvcn4HjTh8Kh2mM68jI&srYZdiE3x8udfen
zAg*`dUYC#36xe18A8;=WwI@e|kbo!=2n05J>%)^-1V6r2ojCB>%($kf%-Y^lPtkc@
z6TUe6<+Hdc<;Iv0EO@$_K@Am<PSxx-{PQA~jNJQ8Ts$mbn4kW46hr@g`+oxRUvB^W
zfP6N*95ck<o_q*<N(Fx$;4nUbG2_<gA-X&~<Yx@(805dhFrOh0ACDo20f-CC#cRaD
z$IS&cG5~_vKnBJ<?8e-D>|ij6jhBPxFaB}%-TKLa1L)VY{uebJi^5!hR(Xg#+K_X0
zvB}WJ+SttGZvmLAyY-4U1uEPi$L)8BEN`hgMdI~D?l76PK3nbZd!E?vMWG$fFDrlH
z(RQh3mQ(wUWiI9s5*QQVq5E0Jq--lj<Vnv0Mdh*BY)gWP_H0;BDjdSo?+@M?h1(dI
zgAE;yJ*I!Xz(a@l4F>sg)+T=8aTpw}a$VpSe^@+(tg+NhB7wjio|_l42!Ukd1#_{n
z8ySFj_`sZoyc|HFkr9v=1UBH{G3EvHu=5)58i9=d=8rB=GTmMBcYvG*FC_cAy42_f
zSi7a(K?6iF;e-D$b=r}LFJ#IVWN7ivrM1gC)Gy`n86H7ikOKbU^U$Gk)_aLVAc{LY
z7b_0}c{ykK?aAjPvo26+;XkuaF@eV+wJ1GCY^g{=E*Qe~Nw;YTt`-(5{!Bi#%U~i8
zTHW<JHDzFAtcPe+6b9ayQQ!<n0r?_SRfVZdas>Hh*wA9SHj2_Zks?S}zUpF;P&VuB
z-v7eqxl_gYq32<2nRUx{>qB%=7^Wf0l;r*r*@G{AO}9tko5Q{V=AZ;(|ES>dS9PhE
z@93&TE^X&vo};UhgT%eVb7AZ|gbdMmDaQl3ro(gbRY4#@JX~NtUZ5cl$jA_A#04^7
zGvwq08yXt}dD#uP*mw;LxDAbYe_quEgk7K*>7`{=fK~cHP9Ttj4U*i+-tLlp#h6D2
zDot=<aB%;2Bf~hLo@AMObO+aQrx*^PzK<!bAOi(W26Lo@vumjY5WWvT7=Tsb!~e&Y
zRN;=6RL_Wi67J-R>Jc0yPXy%nh#ZGIzOedl;Ik{L$N7A49QeP5RS4$c!s=g`J#AGu
zfa93&&tU#qUWFi^8$b`$@aMfaxw`sC4XZxv5N-U{>Q8Qukk46Uy&S2Nn=Z#mStDIQ
z>YTlo%h5WyYjT{HI>e&R73+}JsRfP8(K@;Pahw)A$_2E3&t86ao-ar0<h1%Ysa44Q
z`aH2t&8{y;=Hv|NIGHBMhVyx3{xVUz9LbYS`{N{A@Gc~IUJL(n<WBamkCUT-{5V&_
z^E%p>BX+X&dYss6!t;rp(}=wssgwP<<D{4%8O?ceUC^ET8@Z#HeE8r)g3s>{_KCQZ
zOnRE!fBh*4@Hx-<QLsP1O@jX)@KJRBa6a%+x%xNo^SLHC!Sz$JbGiPnRQcc0$xfid
zkzb7dtB>?I8t1Er>V$f9{z>CkG4pRqhcC~`uFfBW%JJc$I4#YI9uEZmAJ5OB0iA5o
z9Ea~Z1An?<^EUyGF8fe`lU<JE6c(?Z7T~uLUC8+#+~0N&`Et_qWhhVM{+I6kTP24K
zpKNm+XE^D6;NMM;f8(F+A{^l#3X|iLeC;gbKYI!g;B)#3#}l;ENy<r$NKu^z{^L>q
zQ1$63LwLfY63z#{j5GZS2PfMA#}&TxH~7o=(fQ_bGUixNpR1hz>i&P<=}#{`QS~1e
zq45m*uO7hPkpC#>xS8Xf(7h(jX}*8ej4H|y><feZ5%$^g{g)*kX7u?NV*f1W|80+F
zOZi{$Pyi~Q{lCFqwy^&<6Q`Ym_=NsqXfM*=e}(-2enBUlW8p#qKa2W*-_hBU{<sqP
z=`P~`e<<+(&BWi8C;;i*oy=-}8Q~>j?vW*)EwFz{d1#3-7ZUhcZbSG#x77YqYo0B(
jf59JG;{4y>FI#$F!~`5<9sO`cgBBo!4gkb69RB)0pGxc}

literal 0
HcmV?d00001

diff --git a/test/test_blob.py b/test/test_blob.py
index 2f66609..65082af 100644
--- a/test/test_blob.py
+++ b/test/test_blob.py
@@ -37,7 +37,7 @@ import utils
 BLOB_SHA = 'af431f20fc541ed6d5afede3e2dc7160f6f01f16'
 
 
-class BlobTest(utils.TestRepoTestCase):
+class BlobTest(utils.BareRepoTestCase):
 
     def test_read_blob(self):
         blob = self.repo[BLOB_SHA]
diff --git a/test/test_commit.py b/test/test_commit.py
index 4160f92..245490e 100644
--- a/test/test_commit.py
+++ b/test/test_commit.py
@@ -37,7 +37,7 @@ import utils
 COMMIT_SHA = '5fe808e8953c12735680c257f56600cb0de44b10'
 
 
-class CommitTest(utils.TestRepoTestCase):
+class CommitTest(utils.BareRepoTestCase):
 
     def test_read_commit(self):
         commit = self.repo[COMMIT_SHA]
diff --git a/test/test_index.py b/test/test_index.py
index a4a05c1..9040f41 100644
--- a/test/test_index.py
+++ b/test/test_index.py
@@ -36,11 +36,17 @@ import pygit2
 import utils
 
 
-class IndexTest(utils.TestRepoTestCase):
+class IndexBareTest(utils.BareRepoTestCase):
 
     def test_bare(self):
         self.assertEqual(None, self.repo.index)
 
 
+class IndexTest(utils.RepoTestCase):
+
+    def test_index(self):
+        self.assertNotEqual(None, self.repo.index)
+
+
 if __name__ == '__main__':
     unittest.main()
diff --git a/test/test_repository.py b/test/test_repository.py
index 1df813e..58030ce 100644
--- a/test/test_repository.py
+++ b/test/test_repository.py
@@ -39,7 +39,7 @@ A_HEX_SHA = 'af431f20fc541ed6d5afede3e2dc7160f6f01f16'
 A_BIN_SHA = binascii.unhexlify(A_HEX_SHA)
 
 
-class RepositoryTest(utils.TestRepoTestCase):
+class RepositoryTest(utils.BareRepoTestCase):
 
     def test_read(self):
         self.assertRaises(TypeError, self.repo.read, 123)
diff --git a/test/test_tag.py b/test/test_tag.py
index fc4cbc7..d98037d 100644
--- a/test/test_tag.py
+++ b/test/test_tag.py
@@ -37,7 +37,7 @@ import utils
 TAG_SHA = '3d2962987c695a29f1f80b6c3aa4ec046ef44369'
 
 
-class TagTest(utils.TestRepoTestCase):
+class TagTest(utils.BareRepoTestCase):
 
     def test_read_tag(self):
         tag = self.repo[TAG_SHA]
diff --git a/test/test_tree.py b/test/test_tree.py
index 2fde234..7f3d8b8 100644
--- a/test/test_tree.py
+++ b/test/test_tree.py
@@ -38,7 +38,7 @@ TREE_SHA = '967fce8df97cc71722d3c2a5930ef3e6f1d27b12'
 SUBTREE_SHA = '614fd9a3094bf618ea938fffc00e7d1a54f89ad0'
 
 
-class TreeTest(utils.TestRepoTestCase):
+class TreeTest(utils.BareRepoTestCase):
 
     def assertTreeEntryEqual(self, entry, sha, name, attributes):
         self.assertEqual(entry.sha, sha)
diff --git a/test/utils.py b/test/utils.py
index 8cdc9f9..bf18579 100644
--- a/test/utils.py
+++ b/test/utils.py
@@ -31,6 +31,7 @@ import os
 import shutil
 import tempfile
 import unittest
+import zipfile
 
 import pygit2
 
@@ -43,7 +44,7 @@ def open_repo(repo_dir):
     return temp_dir, pygit2.Repository(temp_repo_path)
 
 
-class TestRepoTestCase(unittest.TestCase):
+class BareRepoTestCase(unittest.TestCase):
 
     def setUp(self):
         self._temp_dir, self.repo = open_repo('testrepo.git')
@@ -58,3 +59,20 @@ class TestRepoTestCase(unittest.TestCase):
             self.assertEqual((arg,), e.args)
         else:
             self.fail('%s(%r) not raised' % (exc_class.__name__, arg))
+
+
+class RepoTestCase(unittest.TestCase):
+
+    def setUp(self):
+        repo_dir = 'testrepo'
+        repo_path = os.path.join(os.path.dirname(__file__), 'data', repo_dir)
+        temp_dir = tempfile.mkdtemp()
+        z = zipfile.ZipFile(repo_path + '.zip')
+        z.extractall(temp_dir)
+        z.close()
+        self._temp_dir = temp_dir
+        temp_repo_path = os.path.join(temp_dir, repo_dir, '.git')
+        self.repo = pygit2.Repository(temp_repo_path)
+
+    def tearDown(self):
+        shutil.rmtree(self._temp_dir)