From 90a1b432f621053867997e6543034d0a59d9b7c6 Mon Sep 17 00:00:00 2001 From: Michal Cyprian Date: Mon, 7 Aug 2017 17:00:14 +0200 Subject: [PATCH 1/2] Fix unversioned_shebangs check false positives Prevent check failures in case the package requires /usr/bin/env, but doesn't contain any of the problematic shebangs. Resolves https://github.com/fedora-python/taskotron-python-versions/issues/31. --- .../unversioned_shebangs.py | 5 +++-- .../nodejs-semver-5.1.1-2.fc26.noarch.rpm | Bin 0 -> 24086 bytes test/functional/test_unversioned_shebangs.py | 1 + test/integration/test_integration.py | 9 ++++++--- 4 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 test/fixtures/nodejs-semver-5.1.1-2.fc26.noarch.rpm diff --git a/taskotron_python_versions/unversioned_shebangs.py b/taskotron_python_versions/unversioned_shebangs.py index acfd74b..95ef608 100644 --- a/taskotron_python_versions/unversioned_shebangs.py +++ b/taskotron_python_versions/unversioned_shebangs.py @@ -52,8 +52,9 @@ def get_scripts_summary(package): for shebang in FORBIDDEN_SHEBANGS: if shebang_to_require(shebang) in package.require_names: - scripts_summary[shebang] = get_problematic_files( - package.path, shebang) + problematic = get_problematic_files(package.path, shebang) + if problematic: + scripts_summary[shebang] = problematic return scripts_summary diff --git a/test/fixtures/nodejs-semver-5.1.1-2.fc26.noarch.rpm b/test/fixtures/nodejs-semver-5.1.1-2.fc26.noarch.rpm new file mode 100644 index 0000000000000000000000000000000000000000..417b2bade5720cc520564a7fc5d2aa8524f72dcc GIT binary patch literal 24086 zcmeIZby$?$w?8~|cStj+q;z+Kf^;_w!_YZ&cStFSfJm2gNJkq5V}ZvGNPjO&K}}MCbwJC4qzi}{DM|cZiuiDH$Q~e zid#@fz>*sVu@bQs6tU)o@bg0XEulg}+`NE1@TiPZqE*UgExm`qJ6c89yXJ5~py8C? zynjCb@xVVG_{RhPc;Fuo{NsUtJn)YP{_(&+9{9%t|9IdZ5B%eS|DSu{R}AC&`Z^cz z0}zt{f&NRJLlgue#s-R{fCR)Ph|U3ukU_*dFoA@4{)lrR;vUF1cnhEijF3g}w{I}{ z4MxO4uz*B+gLiMR@D2V3P()lL<_06;B#8RrZ}0&?5&W7PdDhRZt&F&zOf$_VGEFu?gA9>7b-#*2t^^O z++alA2yAhK5k5u8BVtGhc^rTO{zS^W!9eT=fsr?FFe0u5$fHo)V1nO#6zLm`@G~Hf z0>8ne00nG7DFi5BKPnkO5&Hc%d_+GG^7{Y<#taovFTh7dv zkB^97A@~M2{9J${>@@@^f?sljO#q6huMMCGdD9#I`VBVwjR|CbQ&dZU0{tXJj0?hk zs~dbX{;04UynVyBzQKrjijYUxiO@&PO9V!YBhWq(VAHSmJ#R4g4fX;kz$3cp2deiC z|BwFp+~7a#_r1Xg`+<2w^7IBH#tUeVqz|A#`$WeGEC>2iyc6^*-U+&icWT3&AkH3k zP%sb)b+>bIhQYzsE^x53s}o4a76t}Fq<>|sz3P8YZhU@!>O$Eo45D-3F9Z3nXg*?M@mx{Gpg+1Pp5 zdRlSv!)E3bwjU&P{g0$0Me3yQcxPA-@>vMs10dgxpt=tfwE;bA zVQXGtK|WzYOMXjU9&0{sm@p5o5RWAcY6%m9@$*>oiU`02VK9DcZXsR)0e*fFJ}W^% zZf+hSZWx~kHxEdFn;#}DWC^k46ST7Cw&df3S@Obotzeecyu8-dLOcR6A$}1aYaw24 zOJ0bTumDs5h!sPucp*G|+&ny1f*@;d7>|G;zmTvHl*h_Sh+oi}PlQ(xXon9#0#+hG zomN0jL|A}_&zhe{5U>;m5w_+Q5wa452wL)iK!SV%Jp3XeFdklh5kY<)Az^+iZV^71 zfQU6j5GukA;S;p97O}Px;RD!KBK&+X2$Yu(VKEQH($ZQ0sDU2_<+I|43JOB4goUgH zpu$$dKq#As$C8KJT0{isiV)P2n;U9n4Yjrw<`v}S5fKoC@d=6W0Dj}<5wrwxa&iF^ z^4AEPJGoeSI>Ow!eh2uuEbW|cvVR?>e}{p6_tw0>@!v|bZWmtLKO zv>wc(OE(lEt(|<;rFGgVt@)#@OY`GimuBCZv}SKom!`u`m!`D6v?jTzw8pneX^pSg z(i)$Fq}4NGrPZlQx)4e2?GI_S;=(R9E%~mSO-2jm2!pu8zzV;*4};q|+knO4K%ujZ z^uKIZl3)(-&G$zjWe6N*1=e-~b{(*|y*q;bI|Uw)hMkKC9IWBuY6o-lgaS&ghyos7 z9$sl1Cy1RRV(0p!0d5YyKeoKTWgs^PFG$-1=4uOb2H%G`Iznu0fvs8G-R5^*8Zg}! z;_2yE{*?%pnN#9(+pZU1Y*pS}CrOrF1^$j!-v@YCODlABZL?_3JHHkGMjsK1e1Er(h*kf8?NvmJ!1uU+SMhJP2+RP!zc(JgH2;>d zzcl}@wLE{%vwwG{0~-ma2+$-4SPOHwT! zp&r1=7VKgTMw}7B*1*dOs0<3IID5MOD*Jo(@&DC6HJJB*T6Sa8FAKT zk>{^U;Q>34^RTR@1PUyv0r+4;Zg&#(RR ze`X?P%D>|Z0ZiZ+;Q_aUdi)wA#D&7c&e9PEMx4Z9?f@SG45AYR3U~Q6TNE@DR0P3R zFjttf70emx3$}p)*Azg<#rc0~=-00G@0fi5j>-Fn33l%8h`0Z*OUobA=-(;w02A=n zv;t69Tsa)`6R+9pHdpd_^81FvQct#R=#Q^j8=En;!nE0Wjk} z+yzlBa9FVV?H3h+|JfMCCh>2%h&B1&jW1Aa=WOR;2fS);E^@z)jlb@dh-2gbDk09! zz`Yc4=l%6N8Q?DZ>vt=N`!C{74cx*1^Z?}{n1A{m&hJa=A3}(B|ELo|5$R8L|32Y@ zZU}JT|08?T2jE@`jKOabzhM8!(5fohuB?p%0w= zfKM14?gEzp?)<|jFHr8v&LMBEsIH}>q-bcat*)yjryv2STf=;yFjvId za|eLC2XNQt0Iu&Iz#i)Y=Kz+q3ouhTIDi-d#7V;4-Ic@A)7l#Nk(IlhA54NDXdVuO zy1=bCY@kpMcW*o3WCkn+4#d9fF7eCF2vR0N<#X6LBO)&Uch4Vl{f~Kvn9qo^|D;yH zI!1Kc7o>I*`f!KB?OZ+B!7|!%N=m?c$j1W=^8tM70Ri?m(0`Wxca|XP{y#l`tb>1% z(*jB~0Q&%nkiqoyu;vg(Nd1b;USD5W0C~boAwL5nVD)|aiJONEVn8AW3hy*Wv#$(4 z6>KpDQQ$41TJoNG;>s?pb8AI6_de}Sfn2_eJS*4swXp*u(;~&O)|ik{&rd(iVL$v( zqN=oQUi(2k_A_dQ%MmWfLbx;|uaPkFDqbM*nDD|*s-{I?wMoACcy<Ik0I;#XCv*ZXOWp(APyi8g+sS1N$!*Y}Rlc^~%*RT@o$Ymll&f?^|c&DXzy*#x|vMu$YzaOB4vGH~lxV zqB3Yk+J`A-zJIwQyFIH+T{Jr^9I@n3MHbdu@wKLKoV9Yuy?`?1o}@6EInASB$IHsO znusahVL@@5XJs@aY6|VRxIZzA6;ZU@r?xR$r~2iLmKI1=Rn(6c3EvoT-HtwdPj=SB z=qnerqN2WLWu!1s(oc7rxP;_UKukT)SS$gTpcC94diKdQ015nniHL^s+UCcuuaMu} z0&GX)rGOAr>Lr783z%RIj5{mu+HHIpZjq9r8XsJuFK^*c4WlL@ezR@=D1|DcN;LL9 zD^`2YKyt*)h-XaBqCnxx9lg7m2QC-s;%DtoiX)Rm!J#$Gd%Du4M&!`~;yRQME z-hO38Q=qs#z;Y-up=rnG@RM~8yUx%F_KI&%p&gmuaSn!Ih}nblVA*}qsPmX4>u20s zy;ukRj5KA|$L7>V1jsL-OAc=)t7g+YIh7|iAUMbh7sL57QFaEnfd(E%ucEKlo;~RM zT>Sh|^}ya+o4o|lw>m42i;anP#Vx-s&KIMAx~??z8##nKnaMnh<8r798`(b8at?4F zC#z6wbuO90pPl3IFp^`aTZ{(}WlVdzg9j$?_L~T*dqWzNvq?;;Hy{%y`uE28p2W?wdHL?4 zzH~S=HMXl{(_DJwwR0Emz)&O=EhM><{H{~Z(&%lw?x`jXF^?B_9=u+q=YE{_{wxLW z(7}pO>NIltjBJmwxKYIV15ZK0J6nt-QVi`^Edm+Wq94iG`}JOr=1};b3gIGWabrBP z=NFoJ*6lSb=c1(kNKJ*n>Gg0IrBy23%zB4@K0(>@pjONBxb)QVW~4wv9aYcozG*cP z)tfbbMBHU`_D=j?F45N=CVnW=+x9gE{G1IAC^hiJz>yd#{*Z6N!$E?qvU&mHV$KPVWB4}Ij8lL zSe8eS|J0em!l6t#=OFXr6Xvc7sZt_>Ybcr1a$*(q6@0&6{9>CY5TABaXXM$6Q3Q#! zJ!uZ1xCPe*5@jlkSPVbxWZK|KSAG_{K9if>%O}S1XLv4i$>7to(nwlNZJBJA(J`X%^{ACJV586FF8*ma6D+=e=0_d3=Aqv$$0WU(AKG-{O&hD-RJ$ zQ2j@bSkugv?ep;`xiNW_>IFKM?^_7^oT9T+XnQ17lOtnL3tA(d#sr~p#XdHCEXJu$ zjN6?XiC>d6!d*PW?az|089cccum5R#CsjFwqiB0WLy{ojJp@&ebtmSF+~&P*`#d8^ zsFZEM>R>%_r z0Z6)rX5d5BYDzub&KF^Z3f(xzwK$q-L8gAUYK8{r|H)lw|tQ{mom zuSKrj^||xqfg3AwrO32|vI4t!wapHG`4El?)~$S~EIBEh`BGP)OXgd=Zvmfoeu2HY zcP>U_*x7CsnSdPD_k|`R{pUw$f$u@risrc(6p@tD#s{Koud24EHriA%2tG$Cm%2r{ zvVPd7%i2fR!b@Ip3eEfEBe-DjG1yHzpGb`BqVoDsoqh{_-$|l5QMl@Pw(5|?dDFK~ zayCSfTNfTP4bWak&YaH=q!%bFF-9pyDh3m#&u=+fy9C~4VlQ~b%w#E)GV8CyVQj9z z<)Td1X3Ov5{m>&Eg7wyTN9(;{p#K&>-Q~lePx0t8Wev3wNucLO>T6Pu=vK6ev?4kf zT_TB~#q1A!D{4zwM1!J;Z1Wc|q`vrxW0{Sr&)1CGO|v;e?VIs?h|1A6sY0jT>NueW zGWpS;SP3mQBQbHvx($SEelHO5_Lw9&R>Nv&%E4{_>5BWdZUx(Y?PrhbB_5G{ZdI?^ zmg{wd#;IyNB_ZR$ke_N~{!$hRZ;OKFT+*W?#=He0>UU}UchWgrQweSH7tZ2$dgdUk zL>nr~-9!7kKd7GKGxwLNFgY-kRza_H?GnB&6V9wvmLYVvL zd)Kpv`HK#Eu^h$UQ~VsAzPvQTG^t;IS1TWId@2wq_!2c(8QG0@C>Ihi8FzOu0onEA zGz|^mGmh;a+{7>2mikHRYnF8|U5*^0=Spt{Ev&b&TAAKuTI8&h5$eeHOFWE^d+9N# zF&Don_*^FvlhDH2#%P&b^3JE|TOs%QUVkCqs(xCCDX_Y)W}6I2}Hw)ly93vG;oR@j6gp~@(HfMMOJUBJ=!cqr4_@S?<3x|8m0l-y|OUQVj% zXw1*p{vgcgkfk~Q#1Y;zsHPn`VSf(v16eGrN#b~rL0yhz=62i}*Ck4R3Wi*NcS^7F zfb01#6=q#4AKa5cP!(%Yt@(lG3gcsv*kXg`NsB&trK0|`=x#01hPSLGj+P%hRvvvP z5Zs8u_G1Sx6dgj?CvrrQFN2;(GbHlW;JTI+jMZmoWZqvB5LB-|g4W=oG@q9a)`@MX zR8lU#-DN2uYD>88BH$XAdp8iqEn7x2k=-EU8%hA1HR{4fL-zibUb^YU-=r);q@tED z_A*r?c5VN)umvYsOnJ&qf=hpjV){&nfZ2M~*IwKjc4|G*?J&RfL~VW03%M(L(W^2q zr4Y)qhtaGfgW3}LB#9%S$JFjfHnPo0sgX=|@jP{L*d#^2cJ%*QL?5 zCOY}T<?@Seo_(Y}+ z6RISN|AuUgOiF6s?PLmF&jF;fnL>!I%;kfd&FuDd?rG1K$$gxe^vKrufQ_I1cBzme z5$i&kkvV77cdkzwYuL(<1nxk87#>M(`PP@X{$%*4`GTlN`?m=axh*H;a!D()kza#}4_>q;NJ>(XUD3blI z(_;Pkt+IekI(#uceXBN{p9=iVmjY9Yvqv}^d0)Lt%wA{l9PdQ9UF7!G_J!3LcFEW? z9IBb3By-u3@{q|%31U7u=`D$yB=>XWS~-soGa5Vab2u3&*YYmpmS!dWew%Z-P(HK{ zTQXGfyK2?>J)aLV3*|IAGLjEU~{dTS^hjf3ehkk9mh*>8;VI zc87a!?lR^yENIiG1u|yV(HeL=^uFCQu-PKt+6>3liRt6U6xWBFN>U$0(|OOEw$N3j zUk5)OTT};4SY;`(zDp;3MO={Ko}w3oqkVX5)Vrrn-{|U1T&SE&qxi=%M%)-_P??ra zRLZvnCRkUo!VK#LI3b4@PN?Xy!WKejn|OZK+no_H3%j~6FOZ*X+u`;wqDU5vkEV8W zYxwZE>CAYw-w^eP#3WOtOk4Eb*D+bwSM%AlTaLxGX>rG=X0%lnuf%&lgBZvS(oxcX zvbaj&KcHL4V1ew4x^6?ls%i%_Iy~kNVNEn?eF4yQt1YXBjSANTtXVB%RbdI4%3y5p z81aYtt^E+@7dZ!OL>WaM`yny(@r4Tx^#;^~vPo4C(RufVi9b&rm0jRm<7> zY7Bu^Hf>QUlETr;|O{kGn18gRaFjHg;P= zG#8t`5$nrZLPk@|=&fE#TdXf6I94=-Rqhx=gQKhpdgiRQC-IiuG3HrT6s=stdMgK8 z+;&}^$_IjR-0w=4C%Jo-mq6I2?W6-QSPC-Yqg{k4$3vl3{aD%k>$L%OBzmnE3Eg*w z5>a!mPUH?Q=`SUZ+nE?EIeb2IzSj}6G|W2i=I6v*)*cvtc5>D_sK?iqSu^z!{ey`~ z#KA)ee128PY$v$AFRJUWRz)_gL} zaZ!GZa-v+*OQaY{tHhqA zHMVyeM;mX48XSYJc8AnMA|IDD(T!q#zZWUq1iqPS0|=htPUbXRx`bN-j(@&SCBXPN|k*@H8nP# z-GopKy}xNxk(Dv8JUV6BlQSQyj@?*}{M@D8I@7x7!KwgdH3P{xN%_K~)T~J6$n?!8 z`-WeP+wWc*d6`V$^By#g_kBOElH_nVmb*n+3pR33+iGCFGF9`Iq5sRkx_BkLYpljjJ&y*1z!4J6B~l%h;DH z*&BG-MRraouC+aRrxWabU1!+E&t0by`~VmA1!WXj$gO6Bpt(|ZIPZJR98OXO?I1!_ z76*S;j!BF37xu#_bW=_!CiR)*0S#?N3*Cg3<9z|m($<+%@Q<<)DFdHIw2n);^41M5 zLl4&kx3S>*U*%$|xtBZy)OmgKFhbtI2t43-YRebh5o>G-sx?X~L|Q?;jlN}q%rfzY#*OE_nU z{!gDcJ2UGI15~1FJJdY=yXf!mnwsB;dceb8r7Ur_a%jeHt*T$0%=?@eWb5xQI2)7D zzmfE_pIKd{Q95bPD!WbkK$vV{{uLE*2CMX_Uy8iiW)1-(70U%Upm7G>2Hv=AksOcr zQ2C7LwQ}B>OiTIJHnJbLOfxwN6x}O-tzJ8s#B-J?KJ~-inX+-64KwEc?qZsd{dYYQ zEu^m$gyGfq@FN1w0wn>!)%WywBD9$Kho zFKeBD&CW;N^;VS16Em^=)m<{;ZLuL+Bsbbh%cU>En==s`sm!6RYU7`!r^2;Q2C%vV z>wI^PIl{|nI~St!QqkcbxP3Ln+fZ1fa8W8XBOODSWI}YBMls6NopcI-*LaS2O zsG_d_m_fm}_(r!5v=eKf=jM1JJ|5rK+PM^MyDXr<(4Vfd@L8U}r+}X{Ib(%*UtC>o zIZE@&)>eH0?htSXUaDgE^~Ca<+|#OYiSHeSVv&~bT)%iOsy1!j--uW5(W{O~;Cfg6 zF<5}Co6Vlsu(v}lyCj>A#G8zw8<%wcapAgg1HpIw7E?jao*9*&apwAgJ7#Kcu}NY? zp4{=-3OS8^EyFo9jZLAFpW|}M_9oH$7N*Q6T9(o1yT|?|14*P$I$2Lo&}{_#$0C}y zn_a)YK3CI!Cv29{>?rxvF(@Va-r(a{?<~I8O*_odgLvI<)WTCXq~6T~m%3?TnXWnO zP<^5DuTep^dQa(D&*sKHC?$uNHuzndv^YR1l|CtFN{9tX{(c)gjbH)SP5IU-8= z8bOg`GOBCG)hz~Z^1EfouSC6|Yy)}DWufKI5!>%**on~xo_JY9x!CT724%p2XDU-Y z>C#~&2!DIDdw3r{%4(@HLeFqgh|6k z3f&=SpV^1cs-IaB3{-Th%_<*$Y_WK_SeFP|aLJjE>00>+miUk{HqHJj*&_c9z8v!O zeOQPO0_IVucq zq|UM{8zkWkf9a8dn~|bDWBPg8x0dHPRKlrxxa)Js%0rzNX-H=stX6x;37z@G9RKP| z30WXhyEzn|Fx}ODS1iIvMJ2##g)~Nd%pXU0{$sCMU#-+O+WRSzVUL#YV@rm{+^jC2 z2e$1T#b@o5`#P+5K2=yIvQNKPBH#S+J$7$po(PvJS0cO%8JiaEUGKGD*8aVRa3ure z?8OEY#awO=pCqrwJ7hIPtrs=MNY5TQm0Z!RXKv`{K8fqOC#gyY7c#Wq79*ZkWYPMz z!DzZf6RE~#LD$Q+CAi;x7GxAdQe@6z(mP zd(_m$-m@*~S&44`(m3(F(N$mh^x9-fiCg*YW>T+FI4Ozf!QA@(byKw_es%J24wqo?K;sTl=$ZRAQzUrq9;w{VHO+62D6>cGo^v)9|OV ztF%ow(L5CQ{}Gy$)~t{o8D@v%Kr$sqJfu`3jDhT)PdoUnN)76#^HCYMu6{ygT#2W07 z@?b^24FBGOAbJYgoeZ?l-;}ZdFu#l|(#L$k@Zkj2;@!8uo^vL6rGtM0U&aqsNo) z-c7CMU}<(C3osPcp__X|U6MZ3HlkYQdM;UlqJ4~tv_@01sbA0eX@dpHgpT{wiy6$7 zO-?g%DwcgLTbkq^HEAwxPsx7fxCV~sPgkf&;IP+Mb&a&9$7(Gn3XC$Mfu4aM2owpI z0xh@PCYcLDIW^`W(kea_%^e7CgFfH7%d=n+%! zdB=g1U@={??cHS87sanTCmIRKwUJvDquvwB5T!779a$FrY0n2~BX+f-PpMeQLhn)s zA)ia12LugM@DoaO`%GhD;F!(3cqx<{V(*E}%D+49!Iq`Qi5pWpB=`Dq`5w#7&zEV$ z(WHo~>iLVF`JbNbi14$|+Oy?_kC&`uq?VFzW!JyBBC_F8c z;z9R@Mn*;n@0o@>vXoa)H4s^Vu&%bT=D|GMVdJ+RSg97+0FaEf-3w>ciui|8RhLNPHxP7I!RJ3(Ku8a zZa24Qcz(d01*-k9k@RAUpNkdg+WUJ^Fa1&~+=mXj@qKA2v3>3juE@V4-v9ZRMzGV>IQ-U&)@A64Qt-d(xPY!X1z!-i$^_JE~$Yq?km zlZs1W^3C1WdExsM$&D4)N{0uTav8^!k0xhAmo^_U@y%E}_qb;=pG6U}b)4D`je6=d`L*n!723Q>$?pqD$OA^VY z=xisPBpmu&-8>ViYJ30tu5yJBjAw#w?L}cij8Wd^gifP~Fx#OnVFY|PSt_G0-!-<* zSbFAq6h765^&G2X82?$-0#Y6gn1{%A4c#n7>E0O8?H|@Gf}U`puZ@LtZS;9U@gr`F z;UeKhF(RA~RlJJDgx^1XLxL8auGf|~(1EWvjbjR>PQotM7A9>A8)uo0=eg_%zra0y z%V*7I5&sN3ygdQ$UGB7ae}SL1vOCsP!t%KSw*WT zaf2ENe;h&%ufJWHV>GV;i6c@@6vR#}3Qb5s@f>JU{dm7rMj4!2pjJjo`zHGSx*-?H z;mxDWazd@oZ|5lDir5!%Va(|HkrS044aNr$LR8`0cDlVPn}uyVK0|O(o9g*b|0XvV(?O z1#@;TG4IyB!~(vx1zZwropyU{WIUi_obmHJ){Gb7Q?a-sKMTwLLb^UIJhYr9PcJ@H zlZi$F(qrol$L@N4Ye>+rAM4Fp!N5;Yp>bD462#0W5A(C~C&p_OBkIC)w$ADRT9b$| zEg_y0NARtdIinmrRarjJg4b~ukG5asmzF*Ar7O{Nkto!%?#*x&y2V7zx#48B*~WV* zA7;B5lB1FyY>yJDE4(i-xU}>+l73A;C*tVO$E+NK_vq}4u84y(9^Uy{&?-NrGr_Re z0l^28iE$Ml=61}IK3>($m}40K-9p~^2LsSAsPPIAGw)j;-0nmZEihIt(duOOq&hP^ z$-zubei0fBHo{Jt*{6FKF(lARdbMRZqZrQa`}pp{=UN_K-WHY(-necFLMo`uTByuV zTYaVr-6>)TSa{OBv8=}Z-8kDXIE*r;G1I?;$Z;qBuYKs?e|b#mn-Y z@SV<8X5$VDA}6TE-Y^Aqo?e>gR|vB_JA3R$4HZvw#mvh`x~`M)$T9kNs#A$lH^6j1 zu$e${Um0xucLzUAC&a=Q&!4=+QeRTb+DDS^&>HC+shmccZFA_8qM}nm`YM?v054L_ z+Ind**UmCB)D*5AR8j0f6c@sO&n&hAb@V+tQeSItw%g3>=rjMxYk|bJ)lZApTH`+- z?Pj6eQF^0WwgQDIy`JfxwCgDOA}3~E@yedCx2>ROU)Sz98xL;QmiLlWJZ71hEYmPI z#El`rmrd}U7;0x617jq3NcDN5+J)Q@S{pkH8U20=<%(+~IBYeBB8qwi;f;ZjevNzjmF&?usJ!PWC_>x5ym zWkLMC67`k-8tiavn~J-)S6r=MI+V-3pYv8AmTlVIYh$E!c^R_ami2Lb)dtd8yQNy# zaxaXvm7&I#;e)ovxPX$OQrt5eV`k~RPj$K41PYIj}omVS1NrR%_3ViNx+&8_vrzV&oRE~L0 zZhF5qi?)11TtDwH<>!+%bsuG%)_$xIhTUjK{b}uVHjcC2N4zt8c_RU{Pujm@kQ|Lh zeR@yq>Y@ITyyEH919;vz5qbyalzkk!YkTr3m@wkaH$I}JvS(+(zT~`R49F|H-i`*I|B=B<%c})rT!90XcQ^LiOG-Q4 zojm!aR5IHxd`D5za+K+6g|&xb=HCi*18HedS}2igc4u+=52AMq+(0gGJ-rW7h29!t z7JV>zIQApwgIZi^{$ct{k^QE74zzcwNXh9{K6DZ*kve0%wN2J47NJ)5xd?9De4;cp zztw8sui*8BOQc?Bc)N0(n3^z2<@%X{SQ8ex%S>mbGyAP2pQgSf)92D_zKR(JAAYXj?YwT93;x1NH_4=N53C?ak!xzfF!#&SssOYr+ z9-p76ISJP+d)Q06?zu6nD1#pp_11@HX4+#Y*g5)-;v`JHb?(J1Kh4xo?G7Mdax392 z4JfU}_J9W*E=4}YlXVzlcAaKi$38Whi~GSVNqJsBq*=bk#5A6m*xDjrMtVPTaI*m_ zL%ZHA%KidIeh?@s%a^3Pwb^MT_F}f^(IFSnBRm7pVa|QzVBz}Rt{4^qUU9qh&oN`p z>}8Kx6l@xiFVGnhez=mx=CDM(^4O#Fi2g7rYm7vAyVbLE_H3=DxGMc(nO)!t?5Xti z<1j`Wu>q!mariytQyP)7S1X}7en)p6s(TFd;XarYJK7nPBKhQ5>(Aqtsn-JkNvuT} z?zyT%*9Ig1>XIIxn8SWo{9>&%s}3ijA#X4uX|D9+eyh0wugMCPGqQPrh==4 zXSxy*H)AFtQzgy*bKbqyPq_7|{FIh_-kj%R z;2d~15`PUUdEe~io%cgoiVXw5pqjNtT&On@^wV2JDE>>55oFmjFw$AK;{%pImt^6& zP-Mch)rhIar`5LZO;oh|46LwN>$bKFE_Arscl%hg%=N^Y;)${`L2Pi50tsK& zJOhoN-pJI1Jryr)y&_9G($)RXq~s=yLytP0zP(|6TkM+lV!iVfsQbGvg+Ptlo2Gmj zMqk@c46LVz?&WekWhUvC*ON+Lv^z0zsAuSNYtrNszE2Vieb^i&ho5LwKL(4viUe8Q zb-cw_Kzy*+Bok1vFQzSW5*|`hhJFjntztBlMm>gHXRO#6&p9Q}_i(<*NzrGmBl*Ec zr`I1pV`wqqaJNu^ckak&L`vtoL?n;7po9%8&%kCLn5DII23BJCkIs&AF)`q$w-6jZ zO}L(-x`#oSPW5=7P~@9!W{bqQ??vx4ZX$Y`Z&bnP@w;;qNBY;t7xS4Kg0D+9D?ljY zoWjYm=@#=*FDKSjp_K!qXdRjR(#s5m>lfsN?=?zVzs%~D%P)-}Gv-D!)rF)C9w?%i z?DV{ul$r>gs`nUkJc~h2*&ieGy53bCUQ=vWD54i8m1&-7FUNUCk@>Kx+n5!CYw@}b zlS8wysu*qG;&YH$WhVbJ$>WjNxuw45BKGmLjoSxr9XWsU!LsN=OrN=@_HMV_`AQri zY*odGVTwb?Fq{FN__TnHZUHT-X_}!w0b9`-b}MD-NnkZt*cW9hvyq1DSPycIx3{G! z_f4CyL=N-6&MQVQ9fVn+Lwlop($B(?NjI9-nxzsQi!y78Y;;GpgG;B_6BR;d-Ogpm z2AKG^wycNi@55i!UzNOV3n@esz76lMW=sduyLtwyuV{Uxbr?H*KDH^Gv2(PJI$j@v zH+b@Gw#j>yCWuqw`lLJ$|A>S*5oRF45w)pI{8TSV*i`Id^jHV4?E*t zf5UGv8Tbtg`039J~{9FIe4D+XNqRdpRm8~ zeUzrZdsd4?nvH#;$*N!cEUX!Ic2NZL{wdsjuf$s;MD9>%Kr-W-HXOAr7|ZoFa7|5+A(f?VmegR7g*78n@uT6@lLbFEa5}U ziH8P?L|#imP52B&39Ydt^lP6*?^UyB#0hB?eLZ7Kk%tDKKGY(tb;Oj0KZ$Cq5%Alg z>$d2bKck@~&mr=Z#-&vzm~hW@lyI&ms%|HH_a*dL&xj8axpY>KTv(Qlo4rF5E3vI* zt39D`x1y%A)bK&k)3;Ff*bIK=a*5H)eTOH>f+>6F9sNL@pd<* ziXhQ(u_Y)XEE72R8@Xt&o=~TM<)%vd>840o=k9|gruJU#+(>z! zs9T&{JtzX6NTE4>GU#R{b%ys^FO*+w1iQdfzC(l&4n17W6J)TiQzs9v)L_eNB|g@i z_wAl?n?=K8RO@okj~i^+c3>c=7VTyi$#=s^tcjL5Ry)w!@4Q;#beE=n)H`gzA%TfD z$B2!Vv1o8;gvqrXobyy(ZjlaepwUljn0jU8CzhP-+`*LcE(BjH3)2MdnoC1feY?yN zjZ|+d?paDGa#Gxu?RE882W;Ts@n%`au3Wz_4?CY@*+UaQA?%U`)qmKgRlc(%iWvT!;HpOG|sekU|`ez@WE zy%?jway}fp^T!O|8$`jHIrO9`>ydPt;M7= zOjOvXoD1$UdeQmK<2~oPNW)^Dl^V~`3O>gAaF4vbw>|^;@_S_vk+4A3^s``k6?AQK zv{i>lZ}KSo@T)swC7)n!Dmpqk-~`cqy)g>Y`K!A%g;y{4!&C|%h%?K?nyy-*$vygz z{$=;MLR#*m*IN~dg!l5G1(%Yk;0!TxZ(%M$2r{PgX^n6^)?m7GzMh~|x z!e}S8Qyzw(IGH!&+XPAVr{os18Z>?&WASil-_?N~{|Zyul}KTdGH=*?#d%%&%hYwy)=sUeDCDDz-Bsl zkr7B94?7r2qxoFc+KfD8_uRX#cW)ylz8dXMYDo|TG2;F7c`e_OMPJ0;p%TbKo2#l1u5h{$cO4ja9VvF)K?D(>nY?58cvt4@B&4)7W?Xc((x$MPwjZ zxL#(K5eu^-Df0Vg<1ik>FH$a})_QZ>_nt70(uCKB7$2`Vi}X6ACFbRwQTh5PSiP|6 zzQ%QHzGUpK(22>Vd$9ltuW_pCO87Kj|ETk);u(^0uiqD|WyYGVHsK0sj~sPW{@Gfp z%x{gLf$!x=V%b%0^ie2vZpQRtRs7_RrJtCW?QED{hCO$^djBSExc>^>aM~^QNG;GOEGlS zk{`0yeKEh{ql%jn=Txhdp4(e&OpuRjA>L#actP=6^qb17R_J;Ee#0E^gy-%4O=-OErrJC$1frx@Hyd=DgX^7-5D8XYjfur>qzrOO%6C|~g|JObxZ8gsgMVug2=R<_<% zvRAoWjVFvL;n=vd=(t+CL!`@NJM^Zsi*jntxOqIjA_&u;rpo-xUgF8&uux9Oy0A)V zkvf~#6@SQg|JPIsxKNn=z*go5?aUZBxi|`HMlytpx^kcu*ZQCZGtsCG8bdRg6GeSD*o#lSvXKWKLx}UJZ4W)Na zv-Jj~_PSU;ePK{lXYanl1h1Xw#(&FFKv8Q}UzTBWyw0Edd7Wj4Vm#EVGO$TL8cT38 z$^%`87R3M}eL%5`&I)dwuiKpgKj|Nm-#ymG`rP1Lk?rsMwzm1*^Mc;X&g$#Yx}s+` z@(cv-C7Df+vGAFGZmDU;^BgTHuXWxh4Q^u~Nn5uue-0HDKgbHiMV>>ccrL8=CML^m z*J|w>0hXvy-IgNdfEKGhhLmZ9AN&~;FDI@vrdqC{Q!B6Q1*9@s$oHxyMkzyAplU{- zz!NXXGp=+@vFM;~F6`A>ufgG3%s$gr6j|15e@!>`i^2ir}pFt@V*^ z6kwD=aVQ8oDAv=3icm+X`kd?U*s6X~pH25D{=(xY*zP^O=woK~X0@A20=Xs1 zkZcXixhM5dLIPK!D$dN-I#52Fk)cXgDufbqrI@)pkiz{eE>7|y4Sdm|FfUPd|LjO- z?O=S>-K%7s?8hbsHAo?@u|e|qn}DfzVG&7PWkSPNVz@-2@*9PZLeI%k;v9z|vMN6g z9Y6k*7kH)CNGz!l`Z5m(qu1b`d%CXgEgHOcqrM&jmE(z5$5C!$L-W`<330V-;bW%B z{Y_!Jm7lVGb8NFU;j9})6sO6vV!X|`Ez)OSn3E0@Pn-MC3U|rr<548~W4XkS+`pv) zuenbzf<`Y!v5;G6BkN_+#uwz_So3_+n1;T&omrUZM!}*yr;Q6BZ+SEDmH1^ z4NvdwFcXjTrFK(qb<8a+F7AmHL{vmSAwVm--$||$8%x2!$-k#gOTRLZ zXI6dtkTh1Hcd3|W>f8O5_l%RPL5V0wmK=s{yGKrsL1zinjMC4!YsbjtZXuaI$u1XL zg;Q)s>4Xw9;LfX+<7~%CPU>lTS=&FFe*I>4tG?CCTgr5`(v_2lh62SbYcf0*`05t; zAKPr{IGKkTvvk)hm0B-qHsgmVvng7IWL%VahhXqz!5IkYn^Vej6i{ZX2dr`HBMstj KeIRT@qyGo|Ix-Fb literal 0 HcmV?d00001 diff --git a/test/functional/test_unversioned_shebangs.py b/test/functional/test_unversioned_shebangs.py index a340300..82db03b 100644 --- a/test/functional/test_unversioned_shebangs.py +++ b/test/functional/test_unversioned_shebangs.py @@ -58,6 +58,7 @@ def test_shebang_to_require(shebang, expected): ('/usr/lib/python3.6/site-packages/' 'django/conf/project_template/manage.py-tpl')}}), ('pyserial*', {}), + ('nodejs-semver*', {}), )) def test_get_scripts_summary(glob, expected): assert get_scripts_summary(gpkg(glob)) == expected diff --git a/test/integration/test_integration.py b/test/integration/test_integration.py index 8664bee..e725991 100644 --- a/test/integration/test_integration.py +++ b/test/integration/test_integration.py @@ -113,10 +113,13 @@ def results(request): _docutils = fixtures_factory('python-docutils-0.13.1-4.fc26') docutils = fixtures_factory('_docutils') +_nodejs = fixtures_factory('nodejs-semver-5.1.1-2.fc26') +nodejs = fixtures_factory('_nodejs') + @pytest.mark.parametrize('results', ('eric', 'six', 'admesh', 'tracer', 'copr', 'epub', 'twine', 'yum', - 'vdirsyncer', 'docutils')) + 'vdirsyncer', 'docutils', 'nodejs')) def test_number_of_results(results, request): # getting a fixture by name # https://github.com/pytest-dev/pytest/issues/349#issuecomment-112203541 @@ -282,8 +285,8 @@ def test_artifact_contains_executables_and_looks_as_expected( """).strip() in artifact.strip() -@pytest.mark.parametrize('results', ('eric', 'six', 'admesh', - 'copr', 'epub', 'twine')) +@pytest.mark.parametrize('results', ('eric', 'six', 'admesh', 'copr', + 'epub', 'twine', 'nodejs')) def test_unvesioned_shebangs_passed(results, request): results = request.getfixturevalue(results) assert results['python-versions.unversioned_shebangs'].outcome == 'PASSED' From bdd7c87be53a5c818ea6ec785e11f01666ee5f0c Mon Sep 17 00:00:00 2001 From: Michal Cyprian Date: Mon, 7 Aug 2017 21:12:15 +0200 Subject: [PATCH 2/2] Add more debugging messages to shebangs check --- .../unversioned_shebangs.py | 17 ++++++++++++++--- test/functional/test_unversioned_shebangs.py | 14 ++++++++------ 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/taskotron_python_versions/unversioned_shebangs.py b/taskotron_python_versions/unversioned_shebangs.py index 95ef608..9d2878e 100644 --- a/taskotron_python_versions/unversioned_shebangs.py +++ b/taskotron_python_versions/unversioned_shebangs.py @@ -38,9 +38,15 @@ def get_problematic_files(archive, query): return problematic -def shebang_to_require(shebang): - """Convert shebang to the format of requirement.""" - return shebang.split()[0][2:].encode() +def shebang_to_require(shebang, use_bytes=True): + """Convert shebang to the format of requirement. + If the use_bytes argument is set to False, executable path + is returned as a string instead of the default bytes type.""" + executable_path = shebang.split()[0][2:] + if use_bytes: + return executable_path.encode() + else: + return executable_path def get_scripts_summary(package): @@ -52,8 +58,13 @@ def get_scripts_summary(package): for shebang in FORBIDDEN_SHEBANGS: if shebang_to_require(shebang) in package.require_names: + log.debug('Package {} requires {}'.format( + package.filename, shebang_to_require( + shebang, use_bytes=False))) problematic = get_problematic_files(package.path, shebang) if problematic: + log.debug('{} shebang was found in scripts: {}'.format( + shebang, ', '.join(problematic))) scripts_summary[shebang] = problematic return scripts_summary diff --git a/test/functional/test_unversioned_shebangs.py b/test/functional/test_unversioned_shebangs.py index 82db03b..2511193 100644 --- a/test/functional/test_unversioned_shebangs.py +++ b/test/functional/test_unversioned_shebangs.py @@ -40,13 +40,15 @@ def test_get_problematic_files(archive, query, expected): assert get_problematic_files(gpkg_path(archive), query) == expected -@pytest.mark.parametrize(('shebang', 'expected'), ( - ("#!/foo", b"/foo"), - ("#!/usr/bin/python", b"/usr/bin/python"), - ("#!/usr/bin/env python", b"/usr/bin/env"), +@pytest.mark.parametrize(('shebang', 'use_bytes', 'expected'), ( + ("#!/foo", True, b"/foo"), + ("#!/usr/bin/python", True, b"/usr/bin/python"), + ("#!/usr/bin/env python", True, b"/usr/bin/env"), + ("#!/usr/bin/python", False, "/usr/bin/python"), + ("#!/usr/bin/env python", False, "/usr/bin/env"), )) -def test_shebang_to_require(shebang, expected): - assert shebang_to_require(shebang) == expected +def test_shebang_to_require(shebang, use_bytes, expected): + assert shebang_to_require(shebang, use_bytes) == expected @pytest.mark.parametrize(('glob', 'expected'), (