From 8d15c246c45bcd9799fb4309473533dccb7172cd Mon Sep 17 00:00:00 2001 From: Thomas Leonard Date: Fri, 23 Aug 2013 10:33:33 +0100 Subject: [PATCH] Added feature This is an easier way to update version numbers, and is more portable as you don't need "sed". Just pass the file to update and a regular expression matching the version assignment. The first match group will be replaced with the version. Example: ^version = '(.*)'$ Note: this is sets a "-post" version after the commit, which wasn't previously possible. --- release.py | 29 ++++++++++++++++++++++++++++- tests/test-repo.tgz | Bin 7366 -> 8834 bytes tests/testrelease.py | 2 ++ 3 files changed, 30 insertions(+), 1 deletion(-) rewrite tests/test-repo.tgz (100%) diff --git a/release.py b/release.py index 2e9d258..e3f78fb 100644 --- a/release.py +++ b/release.py @@ -1,7 +1,7 @@ # Copyright (C) 2009, Thomas Leonard # See the README file for details, or visit http://0install.net. -import os, subprocess, shutil, sys +import os, subprocess, shutil, sys, re from xml.dom import minidom from zeroinstall import SafeException from zeroinstall.injector import model @@ -135,6 +135,27 @@ legacy_warning = """*** Note: the upload functions of 0release *** http://www.0install.net/support.html#lists """ +def do_version_substitutions(impl_dir, version_substitutions, new_version): + for (rel_path, subst) in version_substitutions: + assert not os.path.isabs(rel_path), rel_path + path = os.path.join(impl_dir, rel_path) + with open(path, 'rt') as stream: + data = stream.read() + + match = subst.search(data) + if match: + orig = match.group(0) + span = match.span(1) + if match.lastindex != 1: + raise SafeException("Regex '%s' must have exactly one matching () group" % subst.pattern) + assert span[0] >= 0, "Version match group did not match (regexp=%s; match=%s)" % (subst.pattern, orig) + new_data = data[:span[0]] + new_version + data[span[1]:] + else: + raise SafeException("No matches for regex '%s' in '%s'" % (subst.pattern, path)) + + with open(path, 'wt') as stream: + stream.write(new_data) + def do_release(local_feed, options): if options.master_feed_file or options.archive_dir_public_url or options.archive_upload_command or options.master_feed_upload_command: print(legacy_warning) @@ -164,6 +185,8 @@ def do_release(local_feed, options): for phase in valid_phases: phase_actions[phase] = [] # List of elements + version_substitutions = [] + add_toplevel_dir = None release_management = local_feed.get_metadata(XMLNS_RELEASE, 'management') if len(release_management) == 1: @@ -175,6 +198,8 @@ def do_release(local_feed, options): if phase not in valid_phases: raise SafeException("Invalid action phase '%s' in local feed %s. Valid actions are:\n%s" % (phase, local_feed.local_path, '\n'.join(valid_phases))) phase_actions[phase].append(x.content) + elif x.uri == XMLNS_RELEASE and x.name == 'update-version': + version_substitutions.append((x.getAttribute('path'), re.compile(x.content, re.MULTILINE))) elif x.uri == XMLNS_RELEASE and x.name == 'add-toplevel-directory': add_toplevel_dir = local_feed.get_name() else: @@ -212,6 +237,7 @@ def do_release(local_feed, options): status.save() working_copy = local_impl.id + do_version_substitutions(local_impl_dir, version_substitutions, release_version) run_hooks('commit-release', cwd = working_copy, env = {'RELEASE_VERSION': release_version}) print "Releasing version", release_version @@ -229,6 +255,7 @@ def do_release(local_feed, options): def set_to_snapshot(snapshot_version): assert snapshot_version.endswith('-post') support.publish(local_feed.local_path, set_released = '', set_version = snapshot_version) + do_version_substitutions(local_impl_dir, version_substitutions, snapshot_version) scm.commit('Start development series %s' % snapshot_version, branch = TMP_BRANCH_NAME, parent = TMP_BRANCH_NAME) status.new_snapshot_version = scm.get_head_revision() status.save() diff --git a/tests/test-repo.tgz b/tests/test-repo.tgz dissimilarity index 100% index 6ba25e7719dade70582c33a4c168b855019970a8..f96493b1248f799ff096244345437b846f76494d 100644 GIT binary patch literal 8834 zcwPa5B7NN-iwFRL|kwI1QeCU`T>gi?wv_!y3j>K zcrzGi|Z35kB{nFi1L$27Tf>4d(voA|IR}FpZYbVVK$n!!Z?x z`vA?o9hOMB98Wp`@Zm{Io#pDg{}&~*Ab({x!{0k4XpH;`4U#{OYb5!5h1}%tpiSI8 zQGy1^AJY*~?rIed%i#npFUj8gjzDoOs{pu5SRbuihC%`>po}^4TWinxu7FW|+ z7=NotN~hPT35+6j26$Nlg1;wKw|_HD8a|EtJf zt;Vzx{(FOPJxSA;UaL`?s7Q)1YDt>XN1D_+Q=|%};ReD8U9t+pCH((;Qg!?1$!w1= z0yb{_N5FqfMM(JX4RVveM{@nzs9yXhbk*X2Tm#ib!hbJNW&ZE(`6aafr;wZdTUgIS zzd(&&|0OV;wEpWAsxJR~u?g6C`9uFN?f-d&YL&l-Hvtb;{pEn}Cg% zzZS-XlKj0v4Uzw!T@9)){wK7WYVy|+gi4D4y+K$52{d%00Hm8)s4!p<&DuzZ5yU{o z(FK|(vaKXzQBth67r=2?0oUlX7zjgc`#~ zkw^In)Ko!HrR>CWRIB}acoX0c_)NKVC6rj(&4BNWQx$p;UgNG=ac3tk?6VE@r` zp#v46M-CrNTbq%h`#^P45j-H{VrcNe!(l^GuJS|E;(p-&o#%hF!v3F5^8a3;TIA2zOrHHkc;np8IY8LZ61xOF-(OIxr(B?Rw$@DwsL&a<%@{Z*@%lGI7UZAu z$(X-jeyDL$`nT=UiHfjJ(Q6l9Ui@U)hbyQNFQ=C++V=L`AN~_6ZB_ZhNKl7M`0ouW@SRbA$*U#-XTc6;j*_T`m|z=xMUQt^FxK*7GQyub^Q|C^dnqJJgvSG^7V)f)5+dGf<*?H}mtON4VGvj<18n}dKJ(ur2VHyU`GtF%4biP# zv-xD+xsg+E&lsWJ@f(?2{$uLU9G$CsF-T9=l%Lq?3?9tXR1%kWRkcY1%0pVw@~JleKUsf zKeS9LP7WW|e35UrEj>2$-IZ7|<;+VLrmySy3E02no7ZGd7DUIbeB#SZ^AnH1b*k(B zYsLqrjU7C8q+=$2!7ucQika^`eO!CHPXvBBbMdz=6OynlXIhj@+iA#)U!p6${ng&0 zm)9)ZyldP!^Q4(8}O*5ya+*z`UV$I2%9-1vAIk-6iAQQ3!Hag?mT z*7ni<)35{n*GDUdx0?8BaPQ67hO#ZbQ$If&x83h#b_d@FZ!bw6xGZw^oTQ0l$7MaI zhdx%Zx%GqpS<-iS`8!81e7ok*iy>TF>+BjV33s8_XF$ zFT=lnJMj9x)tj+b{pPIxa8=2^pU;2!$oW%iI)5@CJ*6`9<3+DYNd*veE)HjBu ztmyUBlml&iZvVI4oaaJs&D}J%Xx2mP7F$1!ES(*AYsUa@+P`P;pD`BH(MLV_Paw>% zT>sS}{MV?Y{l9-Q`ToJ9$)7wPsO4z-7dRgL8ywA~qd`Y=&mK)a>HbuF=EQCBH#`66 zbM=YdOVj(d8hjn9KB4L|=HJ)%-x%G;|A&spdnW1+&to%Tos043TAZJ=s#x1;LigiI zJDz_jk(aN5*Gv2Tu79n6M#hcB>kcPxUAR4vQ>3QB_RGd*>|bB{(7MSjPd@V~|6%IS z&Ew{O2g~~}KKA|mqn&>DCkK;Y!25IJ{9j+Y51MiB?`}@L@U&s;BSXut>UWzKzd!1o zSpl{AN!_m5*a2>UnLE(uH1Uke|LBb&c|H;~ifZxy>i>)9zoh+tuTbss*Qzjs4%cW* zBuS`oqh6;nMj8p7UPs_2txiK4R0h3{YG@zzt^aCus_OfH@T(O6d4mdkXQUl^@g&yz zd`#A{sjbPE4B2E^V*Kpw*M0jv-(t4zo4{r}*G6OSeMA+_K73@xh?C#1eq;6On6O{` zyY`ORHfGV_;k($1*x@JI-*{8`<%;O@j&_&c#122-l+Qao_t~Jcua^#(*Yibd$iuI7 zO`I9t?!;%Kil5Jk8*w<{hyAy*DmKmTF)L;2gIjNQ>3ccI*zAR!Yc4lembd!uz|S|= zO>Te2w-k?~Zag+;eb%aB@$Yfna(6G@c=h7ofdLy+u+mL0?P@V~>!dcnCga@_9$(%w zw5@N)9py`J`Nm%<8@Q%Tn|EJ*s+s-s!K2J;TWp!qa{HFKC7-k> zkDYn$N^&d4-aTdvdG_r-@vnC5^wGYFU!289bXr{8A#dOK>5qm_>v(qAhx1D=Y0Itp z*Hw7Fa_f~5OQu{`6y*=wVY}JmYM#1l;g!t2`GqSU8N2+r-;MO|az5)2-y!&F&Y;<` z5AGa2=yPSu4YTks7woonUa|1tsLZ&4e{UMS_os==Kc4V)Opm4fo73B-JzZ|jzu7$C z6fk>4{%-akpPZD`KRqikp?`W(T3?T}E>b=DAEtrEUTy!6kn%t8P~E?BkOhDg3r%t~ zplv+u0KAz7&fiH`X^tbaX<%X)yhRb zJkF*=P-}iRIv=3BQLwVWA%Q{40;{FkP4UOc_Ci?eeoM4*@gkMvO={-e#Fs`A(1YU%yYUZH?)5eCK0_eZ==UAaqxtU){M1D}|2I z&8{BIY_7!!dxcF3e!|Au6ysGkh%5i>2 z1>po}DwjuvlrotTKzmYfW(7y{xpopv@JgChGL1Ht~`z5Dl^-o9~oDRkV4h~;o13_HGsFA_S&|V`$l%atURoadMBk>4( z5R805wu80<#aNgZj0%KJ%ONV^axi{8peZv8zX;cQ^%5@21UQE?b7>BR&>x22#$3CF zp%B|^PJx5-7GO~>2R&gk!9tHgqpA%k$l0;X4{$Ikfb+<;F=K&(a?OYaK@p=y0Kd#o z9Q}_lkS8n-K)9{x2plv;GkLTEJx(AZw#yZ8 z!fS^GSHPJ`T){$I7fxVW{ReOqbttFIR@Ml@3V^7@auJZ@S(}ML>ktZo;EAB=N&(f~ zCL}Bo2uNmNSqlwa2MpghkZ-0T*g9%X-L;zG@(zqm#ATr!2xlzE@T{W{`jWUpV5CiC zu0;U&LXgkef_PXJjZYjG9HiBXRznad$()SoDZndajDyaD=Y(7ac_W^y1JW zMgJ^=er*I$jH?VH0_i zHN%B7N^r(pE(-a9vqPaX)PB{t-L(MjU#S#1uj&(0-b4w4YADVrh?I~u*GFJ zP*DZTgBQ{8;MDSILk%W|hK7O^v2pj|i%q~_O;lo9u#>y;Q;Zu6?KDce;53{PLtzyH zf2C51KEmNpf?%NK3afa;FbfTRHtAgVb7Mh~*hD}87COOg(BjoB)K^dEiXd&_=&CnF zIl^c_Ae`~o08D5?Miya>Zp z2cPA#=D;H7SwKK#8xvqLVP^8c>N+F`-JmpiM=tF)Nk2E)pb)isui+rDO0VIF(eS<- zN{M<gN|7U6pU}Lu6WYj@>CJzJjhQhn%CD~H+Bf_L@@Oz$nhK-n{N|z8f7t}uR&~pLjo?<5%L>UqN)Ok+_}RX zI4+taDVMSIVQdU%hMq_$fO#Vxtr7o0t>6`&4Fc<1|3lCGRm=a?8tM6OuTVqdKRd(= z5}64=pYR`gqFl+sWSe=I>OfdxObnc* zkT%8IU}ljIk|5T>+=>G!w8MlV<`lFHhFBu*hog82W{3{fm`l;Fg-jHfnaMmF!6jos zlgl?VFra}LD=h29S~%7%jes*}Y(~gHQi#LvESjdJKsmqy2%ghpYxB9>_CxJxkZjDIfLl{FgP(WA#GT4 z>cA+Fe`h9k=fp^WT5+cOuAP0}K|^7~C<|4GLxa^^p`%e;%H&YUB#aQP)CoxjD?V<( zIQRG&EAl2vnO_tP)WLX}opxA+v`GfDZD1_~|7-79VjMZD76B>lNN|D(E>ye@WAE5* z+cP`f`FLh`Cjk~nB25;eFu!fPyFJaiyPa zNC?P@+(6d{S^5OGt^nxuFn)zrQz3ni#;@n|_b}=RX!4N!u6MLNye}1R9gQkntPE8z9fEcV zvnoB74xx-?vHk$_E5x(co_KO+2b9S@5Biz)LOc)jL8K7+=n{#-fzx$-Abt*}k+X8` z#OmpbF*G#b;V}x482r4UltvGuTgw4nOreD+J>BqXWbsA zc+w9pT@uy3XBWlZVrkD@EbD1)9uL(ORdG^%F;!!6ab{8U#V_h7mj?U89mxMv(|ci& zOXp*fEEQ%*jsg(pVOdr@&eT8H3(t%ER1+*yP>R^Tv=TvnlPEd4snXWk?#5<&zkH{4 zJk?_41y<p|4%JK<3q zg_(wg!fqD!R)cWhxL)xbIwPA>y#Q6r>9z|Q*ABX~S)<^0*HLPRBe&y&oT#EJ1(lBL zS+88$SEWdm$RWr1fR#+sTU$Chd)C)A{KLK!v3?HK4p28x=W;M$5k#Qc`sn?^C}74F z^R#~p%c8k!S_TVO(q{zq8Yd!lEPTVfg8D0JWT0{SwoFk3CHHEG8tF6NWbY6bgzsC} z$JJ0aW`hnkVkt=hX0E%X!7vXU?~uO|c1W88%nxCU11=p7M{VD;Xg@vRVt^yY%k^X( z*h!vktDt3kyci#ql~BcJXbpciT;zLah+HdL>>t6hJ;kcwG^lXej+^o~hnEp?V54s;5+*83#wQGcCuMmgrCEJnbzVBzJqAG=r&?<1)Z1>;s;) zbTVgGM1$(kuaZlWh&EpI{CzE0o>^2fk%rz}=~L%{;Y3d*&I|%m0?nrid>*xGITO&W zF7JHpJG=G$b@|*4dx+TcaS1ed*rH1(ozf8X6tk$*mq}@VJTqd{+FfHnN=qJ8ncaGI z)u`J0i)Eo>`Fsf!y!NJOpr(>P7U7@|s)@em=@mJ=#y-75BL&B3^(_}P(74HoHc=BT za>MyuZn@Z``OR#*xnE{|ij4|DeF#%6X2ySqI;?I2mX2jn*6{&X@%M498sG2$@}OR! zpE`MPtWA|Jh`58szC>;gei66kP6dcCL0Wr^rM~oA3@W|8V|ER3d6Q~kr9~T zn0UqnP{i@pUQC{V}cw{q>oeiLEc z1sqr=WzuJRNCtylJLI$BfSOq&35(*@vzTW(kpr?I-M%>f*7XA%1=hEWpzoll21+z; zSYZW5gW2zsBkBS-4%vD@ypXeo8bCvS=nUeduXu1ZkvLaS#)reeAtZQK7o9r6h~$!- z0Xk`DJGEdJz_SRxxM5iXK70VJkSjWLkT4i+&w;R{9VR_y{NSrGGj0XA-; z=Y#g)8x*YN&~p@!0}EbiNw`=BrCkf>;)E`Y>p2wvf#gq>yOeSf z4PsZ8L>1tZ&xufUF3Z%c764<53GO1DZhRPkU?dx$Evc{3=IAqV3ByK@9j+W#9auh6 zkq}p4F?{4cUXetCWDrRW;80?OfHA;3-IRjn|Vu={(fz{_AEqm*DCWiD)0g6eO z0b?OIQT0?7f-2`^#El&V)V*Z6io~o`FlFZ`JTe`XKvg(01|cgniMx>9R)!r|;Zc&o z!gR=@CPk(8Eeq2N`nX>hG7&;@DA0Z$y%B!3T0Qk6iJofcQaz0SPW>NC;R6F|;-@1n z&n%=*JeyG_^AtZ_Xf64OE7K+Q%qNAtse;*Z9U9{HSV>t<7k6(`C#>HK0#iiBT7srs zuD}$K!?(%g8W$og$}bbYU?#Ec+y)^pS@IS!QeCS@a%8vceQh+=C(>aya!E!&ease%~<7)ZU$ z63_BLOAm~mrCpio_!@4|?jQnr0HPa-c%~I|z}O^HeRc^6RDz8Uz&gqW;OvS>Rqo6L zL2tq0>GZOLX-*GDn!`2TTV*G_?NfXp76K=W!Uydo`S`-@{ExE@0H2os(OjB}|Em0t zIl;Zfe`VCS%fVd^#~LDxx~QiE+a?Dmu#{_<_j?p#O+4+B%Aq)ZPB7E|pB~~nlRi#8 z|5;z2I{&$(^8e=oXPN&24Pe~x|MLXshkBATO`5vPNzQDc>`BfCD(hzN|MJ+z8TD}* z|F>FG`JXFI75|$H+!O!Dxj0$cK%bB|l&qYdBtc6l@+8lWo&G^1!T^O~fQ|%CBb9y~ zJTa3=Crykr&hM0_8@gYN5Ir|Z78&QV2Y%E$0(LhYlnnHUZY6Q?9M06a4>}Kmo`X$z z{Z*J(;s$`yhOvBMso7XD8=WOiKLTv%CMUNOzCxneZyV&$UUGCKCM z1@D{9i}lvUi>vm9W~Wkr+0}~S=UtQh*H5a(w!$Qg?|9C)#|2c&4A@p$?|1Z}sO#J>sbE&E9|GB^} zZWQ}?oGRvj+&YaR==&k2;kG&I-?v=f#H>j?j;7^1=%{TA+n`*4zTY$Yee_+@h8@Pm zcKLXgDENWXbG!m{69s*Edo&yl)^xp&F$44h$?18Yg zv2$PCuzp_Km0^|GWk@rk&f9_uX?c$0wP)+-U)|KM|B;<#2zgFjxL}9$M`)>SSER9q(J)H0Bv%mLsUUj3Z{opn;oEdJ zh9+sox1ekiwLKb6b9{EJ-f zq4(wI$}`J`_`{s%zbwJepGCG=h5oFi$A#YI{q#E@V&pv z_MV3J{+_m%+xoG1=QnS>`lm09)_(WS+nvY1^tbo__>bJf@s+B%+_jx2pM-K>%r!w7 z{n_V#`_?NT{OFa1pZv1@uZ1^${raWV-~V*<()T`i>ZK3pwlqMYhXhEg2ox**^9y-D=2m9qYljf(|h+>!YTS+<3c^X|G!@6 z-~U$k|IG(BwqU`9U zb96RdR)7z&Uh+gh176rJNM9cY^sBMIFZ83Ji&@@1i+q1gSamQz&^q)3J!zt_sR^+` z!Mc<{H*}8P!J9C0T_YH6x{l|#Mqikg>q8F#Um$=1#`p&c>VZW+W3Zveb+CRW;I%2U ztue|N_`Sezg&z$Ek^CKkILF{CFGT)uJtG47L5)uDV~RGPfS|(>vdfSYuc`frj<3ao z!3^&WeQXf;k$i^2bnDd&p#~`H}u(6X({yS!SkeS%QCAror;lEkxXNT z`*>WA6?AT+7x>XYxP}7+9*;1d4xJZqlPfhGvt6haQht!TAGU;}q?UlnQySe=Tc833 z3KS?%pg@5F1qu`>P@q780tE^bC{Un4fdT~z6ev)jK!E}U3KS?%pkU7MUy%M%n?^8BG#R6rw3M4#3AUKMMtwkpb7 zeromYea@XvCKF;b8C#vRax*jc?z8tf`*-#}ci$VJ!JuNx8P;ZpR$f|)pN{fUd-7+j z};l0!;|cUZhdG+k5)$JS`<}}`cdRXBe zH4ESNP_u0q8n=HYXeMWCS135tG|60|R0~k56FnNH)#G*ArQ5o+;CK>HsjqrGcnPZdL=Uy%N$eLt zLjZxSRht949FV#G%6h>(LO-OS<(nwfU{HhotN<`a*ORGM)3p?nH`_Q4zp6ySBqU0p3$dWU%$YM$3Wb9-L}i`x zSMpYyt>%R4*sTsrSfz*w=fyCALL|gllU+gn`5O2CR==bVUlK6*_}^)Fy0Y2*+Vh3N4)JU*Y@Q|55dGKjxi zqNlu~)aA5$#Bw*B&c^QF&6aBaD&)|RAP(sYF!=b-<#Lr~{eLD}fAUvU$uG%6qXvUt z|4YkD>{_6S#~{3X-W26w*Dg{EsgxKaQ54?e_sDlQl7Q{jI{pbkN+$_m#4e} zV(}7t#RNyG!|QXE_)6X0(uxX~*JJm(OPv$EK5;^Y6`}j5F+lw9D08}c%imd2iqC&# z+c)^jAe|g)JC(bRuciYZG9fw=4`uy63u3cY!G zCns78e!piz&lC3ZdtQE=^gO=j@d=ja_Z-@@=MSVOue2wyL4Iz}*|%Rg>rW$2Zam}K zts}eEmALHo635&RruXdIciI8l{u$42+1n#_eYEl2i(3!MyYIdKC&j02vQ&=Q*}iJ~ z9V=Hpc=z4)Cr;nAsP6m*@$D;TpE9AW>`1HhL)(Mr9KHHA>7{dXo_m|T`{=l?b@Q8^ zQPhF>UvhqgTB4tGBMXulg0TcjI5~5PsTK zRljA@A0Jpd<>37<{bcVE@9|eJxo}B~y4vxUsc_QK)ersbVAc`w24I9hXfByQDOK;eA+s@sW9S*Emy``aS`+N2KjxK+8K`>7 z@}E88gwHoN&e}ZT`Zcqci|1~xzNYZUM|Yln!ml?@yQJr#18=>v?WLLXsyahEpa1*Y zQ%A3Sz4?LHPWi*DUv3_|SnO7I1m=IX+3~0U%KPxCtvl^Eo7QZ7@t$>0efH)b&v^5t zZRfo*bN4K9{sB@d&I4-BIRl`L%z`?IW6gyI{`UH5Xs8?*}=b|K_YUzbO3lrU#ZRz3$}u zHiTZCu>ShIPj}7Cr2P+#|ChYSa*YG{e<%9!u%s=c#$+G!Vl2&(Ta8FT5sf4KMK z#ZyPUckaRJDHYG&qO?MvKQ|mc<;^wstSlSdeg47OyMFnrDY|(ZoL@iv%ZfW@%%A`9 zhWnmveE7CU^E6A-Jixzc$^5%T{leUg6|Xbg1!$7S#H{I}DQ&Hpme7J3wwwhE@i{U4vA zhD6!}0*=;P?Ma9HrU%pNzCV@(-)jf|V7LK4dfo@c$)F zSE~F=9dJ48|1;2X$Fg_-XaONt$R%|$p@UVUVm4QT0c7Q4qdsBSs^DML(>@Cjly3@P#2* zSENUPnh(4*kkuksBqYj242M-EtV;NLf|lRmB_eP-D_CQJn)0LnHzN0vem5heL~oq=dE2P=TCliI2T6U-`qY+?un z2#fvso3!RNPoC1$M9hUPGSEqPfxSV7se-1!fV7AfmOPRI${$8OB1lZD?6-U3LN7Kr z;AA%+T$)+KjN;tsZ@^@RoB&Fql8%Q-tVXJ-n2>EGpE1&4aREoz8!(Qg(tzTh3=~Os zv;SZxV5#{NYuLbXf}v%LnCe+9pvy$GWLq?8 z60x+*DvP5nhSO{Wo(Z{iDjStz0;?dh|d3BG7i z*Q3>nOj$g=h=T!-IA0dW48D4p7iV4-E*BGbg!xq9AYg@%IjjK7txT9nbElB;B~e3#ss*O`AO~Xka#EJ; zrksJua?IrwIT&rj4sDJU=EQliD5fNNOAVFnCd&Y|sxMCJ?(C;~qNVAc(DI~lpuQ)c zaK<=ous@;a32KQ!aVlJ@hHMvPf|NDQ;2#RRF$Lc66xwD?+!3WyEiP5F@ERo4&)W-6v` zqJ@Kyn%G)oTd^@bM=QI8n-n-k8l)k}Kw~IVaAGE!#}S(ra?E*7HovsEovj5tpW>Se zzGrHr7Z2DsF1fbtw4coqBIJFCVkd;lg$ufVw`PIL=>pv@#kz|m^3kb%K5 zJ}$z9cH)rCecgc15sG^VhBckfndb#J=qls)!#ZAF(3?+>1 z+r`{>CnlU$L<|&92@&E=d@Rbah)O{qg``nt8(h5>0nmVUjU$ZRdn%59W444& z4)a?>M}f@>E()Swlw^`mCA2!?l~n4%y+!u=-q^1KYrk~k&e{V!0JNg)?L{Fz7$hyR zJzFox6nANvheh`)Q*JZvhy=bMv3yB9;#X801@@<+8kEpggC;`Qs};j&@D<0YBjRsA zX1fQ-7Z$KH1Q=fH5<`w(V}rAj_~t75cuiL&#sryqFbG$p%r6-;z<`@ArxaEJ7z_-t zozgJQL?wU)?_Cm&y`-44Z2>q-w!$ROmAO`6vY`yTwuTR@1k?8+!1qm0XI5u=aa3& z?dY=BE#54o#Juu`~y>f<#M#Pvcno^3TO6m;K&yOD~;Vj1u-l%Dml8R221f z7?@yWEJ_fBx?-3DT6hCXxq3Sh?#knfa^vjPMgIn;@o7ZdU^<>F$kV~ z0N2qkfMpkxM97^qL5N!rJTblG!8rR4#z=>)d~G#|@MWLfAB;JH{$1g>y-V`lZE5%a z5}UX~LSw-Ff4i&C{=YN({;!O*p{)M^1bE-@pYsmDuZ0tKe>;y;|a1Mm!!$WgAFz0jt*bp@N?i0_zbTVN? zmoZ?x>>!WD2oD|02tWq#1K)dk0$#-qbM3=^;Ia$P7!h&K6iy9Pjp4xHfCEnHCf|c8 z1A;#YdqgV;xH1Y%4@$?O$2FFzp+D{Rdc0PZ@FjBH6IBpwCyJ*=HS!2{ZXIXb<2F{1 zqJdvP-4&mYo(mqb-^V>4T1>NIV#uQc69YRbIIiZhFgJ8u%gGz>I2~_vME+T{OWz~I zu@F5u_TVB@?ESet-t}=xyfk+m=yhM0*Q1C@cFpu3~rsgbE+?&B+A=a^onJC*Ce zi6u!Jm)AFloCkp+Of8@-0hzppmWtS36u9RHOsTGw6_wEN6f}(12(*J+gM#wTP_EAv zl^Id)<+G4Da~Z~d!jeu?lUOR1*f*kRoANl+1n2}r#2)99*Ul%!4IB+Tbi2ba#ERi2 z0)@Y6n)m}%08r2!>4e9~K(cl?LKRe|;5jvs&sRz>m4~LYkNB7Bs2S<2Q2s#c*mg#| z;2kqY@_~w~r%{sKrX(oQfRnJb8IB%FZeD*bj`I1a z4K%Csk>%EtG?ZiKVKp(6LK)YHO5JUq(w!9CsP(X() zw1~6ruouh-*@FUwWuo*`tL@=t%sGHZFr&7J5Z2IRw1&>r*u23HnzZDMO)eDa9`W#{aXKTjToc9$=`Km({Xeb$1>tDL2>|o-ziMqN z{=Zh&`CqAEvHhRW`r5R&BZbU?H-8)bG@Wq|Uv?z8;i|slo-}Z3husV~7ix=7N|??6 zt5pK$@jupl(ER^)u&Dkwfc=8Q6HHK*i|sD?o&e3(0eZUg%pLbz_zw0%^iG8*5e0E= zP9aIO?Q`P_?&9c_5qd-D*ub)dT5K$f+59im_7(LpkN<6ZivJsyj{i&r3-Q0q#ZqYl zV*>n$csdQ?0P(R>yW)ow^5quU5Az_SV*Rr%`RSEA^V!c57D4-tKH! z^%=S5IANj3Gh#-=ZcA{TOz#Ut)CfvcwZJ(!+;}+MMu3q3t*+x2(R`H6o2)zzhp>bo zpUZC0E>q?u{1Wd&T|L7?i+naa&Hqun`O0W)Uj4tim9+mhc>cHM|I^1R@;{Ex`$ez4 zWLc{BKhcj5Da!(GpQN%*Ct^(J3eWHrAyX}tD?HOzG*M&X`68#BEs|&ZF;;JR7#n~= z0xk;5JKY1{bB&{&IzkB`G?MFBEzPx!C^glC;!mDGyPfhxiaUjBPD$s412Emtlv}H zNwk-P_Wq69%UqaQAM7lZ0va4;GN1l8{Nvh>=ghy){B`mB-+%h$w^#RHr9M#~C=~vO zH~OiR|2aYZ@2YL<@4u#kEM|4 zU&*(h5p(x{Q}rL4RUQAC4k`f;3RA4|e&`JV!gU4Kzt^-cR&e*K$GTYvv46)dv; zZ@Lkf`~Ghx-v4-{?LVpDU3mYCO3yq9d7;wKZ+p@{ASC%8i|(wtkLCCOwYsIh|B?#c z1^(Ck{Pv*mzf8Gaxea)!{U6nT2kO%Mzciq%|7nPRj(PIGQni!z|9ail@;?p0et$=Q s5ko^mLqkJDLqkJDLqkJDLqkJDLqkJDLqkJDL*xC&|4?A>@BqjF00aKcy#N3J diff --git a/tests/testrelease.py b/tests/testrelease.py index 30719fa..787216b 100755 --- a/tests/testrelease.py +++ b/tests/testrelease.py @@ -126,6 +126,8 @@ class TestRelease(unittest.TestCase): assert 'Prints "Hello World"' in file('0.1/changelog-0.1').read() assert 'Prints "Hello World"' not in file('0.2/changelog-0.2').read() + new_v = file('../hello/hello.py').read() + assert '0.2-post' in new_v, new_v def testUncommitted(self): support.check_call(['tar', 'xzf', test_repo_actions]) -- 2.11.4.GIT