From 7ed2406ccf7e0f13a953966c1ee4eba19dc796a6 Mon Sep 17 00:00:00 2001 From: ImgBotApp Date: Thu, 10 Mar 2022 17:30:30 +0000 Subject: [PATCH 01/81] [ImgBot] Optimize images *Total -- 563.14kb -> 391.26kb (30.52%) /AltCover.Visualizer/Screenshot-Avalonia.png -- 94.68kb -> 58.85kb (37.84%) /AltCover.Visualizer/wiki/Annotation66a.png -- 85.03kb -> 55.44kb (34.8%) /AltCover.Visualizer/Screenshot-GTK.png -- 70.17kb -> 46.85kb (33.23%) /AltCover.Visualizer/Screenshot-GTK3.png -- 83.36kb -> 55.80kb (33.06%) /AltCover.Visualizer/wiki/Annotation66b.png -- 75.48kb -> 52.63kb (30.28%) /AltCover.Visualizer/wiki/Annotated.png -- 151.12kb -> 118.54kb (21.56%) /AltCover.UICommon/RawCodeCoverageDataFile.png -- 0.41kb -> 0.35kb (14.76%) /AltCover.Visualizer/wiki/FontSelection.png -- 2.89kb -> 2.81kb (2.91%) Signed-off-by: ImgBotApp --- AltCover.UICommon/RawCodeCoverageDataFile.png | Bin 420 -> 358 bytes AltCover.Visualizer/Screenshot-Avalonia.png | Bin 96951 -> 60264 bytes AltCover.Visualizer/Screenshot-GTK.png | Bin 71855 -> 47978 bytes AltCover.Visualizer/Screenshot-GTK3.png | Bin 85361 -> 57144 bytes AltCover.Visualizer/wiki/Annotated.png | Bin 154746 -> 121380 bytes AltCover.Visualizer/wiki/Annotation66a.png | Bin 87073 -> 56769 bytes AltCover.Visualizer/wiki/Annotation66b.png | Bin 77291 -> 53888 bytes AltCover.Visualizer/wiki/FontSelection.png | Bin 2959 -> 2873 bytes 8 files changed, 0 insertions(+), 0 deletions(-) diff --git a/AltCover.UICommon/RawCodeCoverageDataFile.png b/AltCover.UICommon/RawCodeCoverageDataFile.png index c30445c0a75412cca7a90b2b1da1f55f9e27042d..62402115de51502e1a07c36c64a84b89196ef21f 100644 GIT binary patch delta 262 zcmZ3&{ETUWBnJxv1H;x|=C39y+H*4{dAqwX{BQ3+vwvc~L_K?nr>`sfGiEM9IXFw`~xk_I=gW-udk l05#<1r(~v8qG>R)v@$h=XpjgIi3e(6@O1TaS?83{1OV~4RiFR> delta 345 zcmaFHw1jzrBnKM<1B3kM|A`Y7?d#c+yxmStGRDh z2fR-(ZokS?gQU|IZVxVICq@4Y z3`x1}<_}bhm=qb}gt8eO85o$_{bFT(u6P2StXkq4QIe8al4_M)lnSI6j0}tnbPX(Y zjm$%g46F<+txV0d-3)*%1F6l&|Dfo|%}>cptHi1UtReedy#r7KgQu&X%Q~loCII5N Bd%*wz diff --git a/AltCover.Visualizer/Screenshot-Avalonia.png b/AltCover.Visualizer/Screenshot-Avalonia.png index 45c9df815cd63841b33aee7387e30affc0970e57..eed4792b2d973b2eee8cf831575b972ae7e88541 100644 GIT binary patch literal 60264 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 z%0A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 literal 96951 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%0A7id;-4%Pb9KGt{_3{8oJ3uRM2P))JJogt9d$A% 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 @84LjE^)#u#{4Nyo4mSJT439k=j#)J)j#8+XX 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 CJmEP2 diff --git a/AltCover.Visualizer/Screenshot-GTK.png b/AltCover.Visualizer/Screenshot-GTK.png index a790659cc7015d9ab91045df337dbac53d05ebf1..b156477ca7b7a2d1fdb725ac9d6533af5df28303 100644 GIT binary patch literal 47978 zcmbTd1yq#n*Dj8t(vpH8Aw9HogAS4s0|-c?fFLO$9R?vt$S~41Qqt1WB1jC~QZu4- z=a4h=e@5T;{Ql>x@B7wSN0&2C&He1V_P(xbZ=)c(>J+3*qyz*66q*|M4G0JbpA!&V z&L+MLT*=vLu?4=aINZ~@M?g>+Pj>P6DsX<=R>MGtfFOW}fZ$~q0l^t?>E$W`!HYWt z1nV{g1ac_^1PsqJ8ub-`8`qvZP`^)r!~e}`DNF>ekUZBg^&%j+-huyjsoVXN9q@Ak z&HMKr`ps-%0#leLf>+|FM4Hk!r%t!4+hi8@q*18qsA;Y`qKaECk8%WDm^+!6ZDA?8 z%!IAfbN0+%zYdErTw139C3$E}NjT}MN_sK~HTcfz}6`9QW%s~F#R0s;sTP2-;fg1ewg ze-6TE{(Su(rv${@e=e_r;ILxo!whQg7|OM^Az-26=UND za674j>Q)Mcv$lM2udJ^SmDUyBORLs!F7B$3bn@G>#q&)L66~;WK zXZ@zX!yrqTMi5`x##7s1?wRk0l#;5@8>&9otGX`E=Uf$}XiS%zbW6h?Vd|m;;>5}P zZg!3NV)H$(aHw0@XQOe4ap4}l%$0=l$(3Fjw#)h?!J-dM)xRltq;d2XKc(Y}A4bxa zs5~@ckJcv=*yP^k9%#g>g4cp&mb)KH@0S}*@zGk|lEjUU#I7~F6FP*AKCT|;UY=Gi zw}h1$=JGF|k_=lOuGR7TW=`g`%^yxYrkH-_iDn}h_5eSVwZ}*?J_7L-9C~L!dY@Cmnk}$o5n7Y-0O*Sq1{MQ3p#$M80FRG zyE%dlK~GCrz5Hr|jvrM_f*7dty4{$+F=$CF7j0SgXS}JWJ*~-OunUogh>Odtg;BmE z(ScEnlm{-*9b)c|-AvwbclNCrewK{K~zboX!QsWRu-mcY{1^+t#&D_d^C57c~l`y*E41u?DIqgcJ5 z8(!jt=(wIoyquR8w3AO=Zt3*}>!7&ZqUJhFg1wc@RK2fqhP7{ljBSH6O8MoVYO{dH z!o?gFe_8#CRdoCU@r<~3-fWB^H56*|9z?FzxD!r(qOL%G(gR_9O(r5;t8v4{Wke|q z;siPM;Z+lfo`N2E40>?8U{l#Pf5uRsrsWp~)7+zJbgDivMEeQHHEj~7B*v4+HAae@ zeVuey`6aj=(MKJt`>OQXNuzOzl0joFX4Hde>>lcxk_cforlZv{lg}MB z&rPM(^~}Eh^Ci5MzTs6A@f1~Y@6(3MD05&J=Xsd<_It$g8>sfYCfaLk8 z+o1Z?3n^^8KyI~-Ue9W=WzA2jfZzAM^`+5WvZ}t92<~QrN&Y(Y|2kOw8#`Y94F&(k zj{oD7fJ*CcBk(JKzWrG2iL<;?_Rsb{FxmUr19PmqLOipk&glq=m)$ibaOO3GwuCCuJb z_GzfH+&-(YEbzJ<>#+Tasj2yMJ>@UK=-M;SsTNe=lf4V%Mka6VH(3dEG*Ee<) z>OHzEyqeS}U3KzNXUb&K7dsnlO;XtYUn^v|1M`ES<{&Ep^V*X&Ua6MUV?)oe^i$x) zBc~XPfHirdx{E`|(#YroRQnDW@X}#&@JePV8rS@?A#6~-O%d#mQpPs(?C3ac9=bn~M7q>Wv}{~5QMU6z%RE%Pbt`l47&*Uh^=t#ZKh=soN_T5{ z(HEExTx3C^2kQ`DjJ{OMwsA;X%z_|$#3WXis#Z_KTniLBh zJkG)$i8NJipqNnS4Q+-y0d^ffRW{07eb;b}+Y4l^2i0v&ztlImRW+Uh6 zMfLQ6xi722F1B(CIkT4wUm0qV^T#DtU=F80LIaK>BCTZL&eo5r;FUT= z`LWL?veoMt?KRkT$8%zWEbEcqJY~r4PQ1w6zEy)jm?tou^X@puvyP*&ZtFSBr0Xo1 z?{8@~z;wsk)m(hkq`_vri)9DtmQ3U! zy5f`l{+pKiq1L)vO;`bG;gjtQ2PHYtC9I?4-UIQF-5+gbAZz7|8J+mW2$Pt4RZ#uT z53}hbJ>3CU%{HnJ$ z1DWO=<<8bjwe3)AX5jG-Qo7Os_o@YN_f_16h|kV^ zgO~5p#XIb;XaUYlKG+5WX7aE%%BfZ^*z@>sJZo&MTQ7S?_QlWT#Pc@av&G4^BFq@C zuWokf!;*=$L|Wi^`c`V7BQKfWJ{TQ5-$D7Kg5`Ib+=u2GX180$#tL_*GW`NH9`q@et ziDpxf@EAO02w4-bR($S=>ue7e7e3$5#x2E+73%rsK(Nc<0(H%YwN5Vr&N|b1DKA#X z;j)HAZYgOe*xq2&nd9*XwyjgNdSGktddF08pO@Q02XJvo#xri zQ=^1%%ju{V^u|=s23vWXQZxK_uJTrvj0VTSIaXG>TZ;TcLtBa^Yx zt!I78GCnrbYlcmQ*ZbufcI0`FgEu;}Dne^EqT|s)$A=G>RM zfKC!P(IQY`9Tg9ttuAuEW2A@Vcd*JQZ<+=%7Z~N%l|k7z@Pk3?O!Iv$4hdLMJp+ognAm8nB7gPgg_?)P2=Lfdl#5#C!bphz!?tWXtzWh|M2+&Pb>vp4w zSA~(hpTQtJbEZ!ZyAr&El*fz|&<1kwqAgBGwgr^tPV?6&t!K~E<*h^ZmDy&B7Mk!q z`eXI!-<##*^ki1_XpbyvK%9s0LK_6#TaJ2bf-79Z-jc@o(j$13l6(nFNU#w>S&yCf7WC;5YA+OHtv4S~ zEy=fn4s;{Q^u=aeox-|ID{j#tP#4Qb*_ey$@C(1OU)L!!xCS%3;Ts;XV$b2!&ZUL-LH=0UFZFGr#F{pBeRro=0$k79vb4J zvk|^OHEkq~^mMj&SX!;*G_g3XcW=c^MkVqp$?c6qvau=$Z1xaE@>1%sZa#<4HUAR1 zzGLdWkBL;8IoMjGl-3PBK}0sShWz@eN4XQ?eGrWc7x|+-u=hjrWN}Ar*a^1K{gy3r zVtBJGFx^ww#i5X5&A7AzpLPK+Ih3|(; zAICO-3C4QmZ-k=PTl88}&9Lcg7k$MQ$g@R%R7NPa-q8ANK?LhGIojuro4}nkb(;Sc z3bwA>eygWYD-(jlB(gPEV9rjfaVuBdaRq)(XXE4Jz45w1z{HJos4Mw}?n8LVmWpT- zMU=6#V}?z7t+<1+!t2{Y*SGnuXDPk-*$Iy<(Aze{orKE0ctT^1cky>Ib9=LGnC0rB zh(UR42E^5P+{L+a^Y##K{adxjNp>=M)?Q0CRuupVae>&!E9LuHE#^L3e6jAq;VmwK zFQ&3a+e89(Ww+MKH_r4zmb%*>iDM_sS=+c9&MJ+5`w9pAjtC9JsFRT@pB;a*d?)pt zwGa3FL95d%X z1emhYcpegz>*xQo{l_c9^G1Ep5N`5E%bp3T3LnwJUf zFv8XBLvMvppPhG#)POf;(c?WL(QSM7mEV1lAx?`7K=_&^J8nImLFurFw4L>#P-p8p zg@t-qSxOB@6X{l%rEWb|Hq;ryq@H0{0}!PMavlTj68DiYIjrp@8E|L5B3sl5ANESe zuDDj&z|OQWjKSksS6o_y7<%z4N*B}HPc(SiH9X}OxWB+%!HiqAGnab|fN8zhi@#vH zP%Wg=-P(3^kAeX~N$KwYVv$k`fYgMu$?+bV{cy|IHz`c0(r0Wq*yp}T zy83TVwgiS+Gmvw6-ri+~yP&>eL4jy(shmOdS9M?!zg(V|yY)Q#!->I9Z@#H$t2O(3 zypwZn!9p;5qoj!{to0v5hP%PN!|Huh5~@%moexD1U8Wz|UOU2{8LjoiG>C)O-gcNp z+H^t^)B|g~U@g>CY zIuT&_DleSNU;xb<+dQQ8M8HP2px}{#jr0)Qv2OB_+q9|h*G>6l_V=D0P)JK&!Iubf zEuZdjzs>Ct%KMgaS-!_!=NvHf2Nf%oX6FchneCsV9C$i)cYywJ!z)&i>YBWS<7qQa z*!@+_5oS0~^^(#U!ga!D{|<)jb(5Xx2bP4M2<9edl@(3VinsKPDSB`&A*iFsPTI5C z1)v>*7GYSqIWP4arw@?mF370nlX_+e-QqN4U);;IA(fxxyc3Fv?y8vEu((hBir9O8 z1AnODOC+rpzsUpcAnxQa+2ybUSM6PurhrtJsB9IRq?!-$9|YXT`&s$bH+>|ZR!9{L z1(R@FR@$aqIY{$hi4!lKuIa#gm@{qAEOehods0$+EG_Gog&xoAhSOiy>9lMwvUXH# zSW4&hFZVikqUg~f{sqqQ)h}37$HGS~D~cksreeIBU+U{VL;l-|#j#Qo^TZo|V_s?E ze7v6kp%?h`G9+9GMw87-r8VgBB7n20#5^())JehUk&fwdBgid3!ztZUcC7*R- zKzRIVo?xATT5I@&wyy3v4zD=hwJln>P6odMEUyRn2W&3GuTUYF!VUhcUoKN=V`6S# zZ*ag`W*&6oA3%A>LXh5LIwqB0&@;}ckaJfJnwJnTUdO!)Qv9-BTynh<|Jizwx$~6| z*hhaTG}yEW@{R9aZkXplnk1DLehI&fAY1ZnJGXR)TQoQwQN8<6VqC8VI-2w4MCbB# z5*w;Ij}Dj_a+wMdJ&WejgvPsOq||092#+jk|8$=C(y*-!q(=C>_C%7Sz zbq&R5&JClr?eKU#^6}`N$M}VvUyaNqco;CJcMD0l*Af&8H{THFcO-lgEOEY(@LQ4$ z=(<2OW0^QvPx1P&Qn%WmPVweXHvOy%>4fXX5@6;dw$iuUr*B%b=CpvJnkX$u%2d)^ z1C?BRr8jE1DCorU>62ax@7rgoX&;Yke%}TBgFm?U+<}*PY4=B1;L)n1$CGb9y0a4O zut@`i`Zrlkgr4Xj>4A5o9(OTFs&be) zOt=MdJ%g1p&0T`rW1!xuHy2o^t)N|WqqT$x=>~ zPfD4`QYp~glT;Tak5Xp1of@dY(yo}5CCd&?vT=ok16KNB9{uCC*pi|GqOL2d^6`BT z<3cZ$A>)J7_jVCNN8C=KX)()Sefjcdr;cJyr6dW)W{B>&4d6EH-F+`8>>XE3@OQ0P zg&J=j2bR|p;JG0J0u~Ugo%NQ4ghb67)oM#^JiY6w0 zV^*1%GEdO=ihTrfrdztNWC=#xA{aIYPa{?!jkbw8v|8X>y$XVlg)=l|GoJONN#46} z?@*~|h}_;UH@+#*k<>bM-Y7c}A~vi^&JqxK)F{$=)+o21SqR zfv36BH+xNyK37D6)~3^@S-{BXG--K|lp zM@M@8iqU0kxEMniS{K0=SD7WPshA}eXNoMnV>LcVHb$-Gm6yu~=jw(Oi2DnG9OLZ; zmuwe|RY4CCK@hiYMBnZ2fb&$>5VRyth+lB6GCdrXm&2ZCcHUUe^I zlC^7umvpwLJfGkf5P&&u!>F_b{jLLh4{)A<2aUQ4eE)H>cz628UjUa0i0y6hF9Ggc zCir{tzdiz-a~Msc=VzPt*S(Jj4pSlfRwZxh*8oHlM)ROh!AEH!$XB1OUYzmhyh`U- zWq&~wu=>8A2)66I^&SH$_feecfe~`T>BUFK)~=1l3$dtJBKVL5@}(4(yFsLB!1-vdb6@A{F?z@RAe+Qmn6B0FyD<%!s-<2+t! z#hs8N`*+E2@2g+hAXSvwR=5@{&TGWVN_b`lGATDx?0m9RJTdT2N9sNZNDa{qG=Po! z`l|pCMDC}$?)EM`SDym;z|f2mUTO|vp;K?^J1l}k%r1&jX{{u5eWM70`wxGgf7ytv zM1DEANpj+QeW`u-=I|6)Rzkwt(+SZ+PC+qYv7*Xg>CN-*op9r)$6!-qdsBTogU^B} z&uA0V51PFKCB>846JGwpVO8pe$c%9*4p@7*7`?svAauk6lolTrtH;U6*?Ti;nTwA> zb5X@Eue!6i&<<9a{ONg1gLT{1vxh6Iy<^&gjz%)cf>ATHWJEE$vLE{NWjaO2)S7?G)NLMpGEsb`+~RpIxb&QJVQ*uWJI`o)hcWq{9H-2cKr zI3&ra!Jl2FU|mx0{5Fh5g3sZjjMOHbx}lV4gjfoMCs$Up4VAq5^@H%0O7dV_+=ut&T z@jFtsWv60(Crxoxiap`KUDWd$c*HArkaL43mWn%ZBnViOw_z>ZumVlF7=vRWj`LDS zj%=>cpV7+(dJmABPtGENoLn@Ae8>AiAhA(~YpI(*-SG zkmtu$UZFTqSQ5PqG-gm`>4pr-ohRE5bY*MG#8%_2(ldgG3tEGQ5?P1~dHWTa<)4}D}*-Lg* zk~Q5m{lI;EDcbBR+$9ns^_a?DL>*MbWvd8I?T!2vCN;qW+op3O3x|$SHltIPI2SB5 zq{a7cgI5xGa%+-A!=b@eCz$>XHi5f0*}Hhd@+<@s$hh}=9fgxTHp?%8O=tb>d~EsH zNN$<#Xk5k*sTFw5DvclZLMakjbDyKUhg$3D@ZgO&iK7wnlaU3@2lT1_4qn`*Wr60t zwqFKpNJSeMl*?X2q^#J>dglTnW_LBa15AXO!F(~ElKkMcn|BKCwD|q_$GgwMM)gW=!v=23K2vfNQ&KR? zxLx>*yxWxRE@sGkqyec9wo7IR?o;38+#wSoKPLf~F^J+U;hwP)Mf z!i%!b>Cq6LRWE7{kUvI{UQ*LDh>0v+XEZlT-x||TkLb!&Kg%^xf_~h{QG>7-SWjPq?VKU5KP*>>ou%C$A}7H zm0RK9e@>6^ew_l{q~US?CX&zDf3&!1<5c%zBOE%#>TCuTJy4`wl!ZNR%6gO%m&X&n zMSWQPXdHCwff@^xX`e>PNB&j_D*y=|)Rz6u$MLkk8MqV%&0`#b(-GT?7s#daJPm!) zd52N_G1p`aW0lf6yUL*J+M<~GV^`NaKr1(~O!SmF=o}D|N%VZbkN2yuO?ZAyyd$VF z2c^IIDGM|D8xDf&?lYbL7}T}IyM%wD!UMz0ApxTeY}e^o2>}`l5L&Z8^%MYV`-`#h zr1ifz3ZuCT66GTzqt_+{@@k+<_|Q^0jVEp|iEf8;4DT83w?@ehR2KC>2 zC%Zp@*!qBse%=1Vmv}s&09+Fbm=F3rs&ZjrWJI4hf2ssW)57gjTCY&Q$rt}`OM#j| zOA(Rk?NUh?GcP0R*N;20Z%0QpiSx6G?SItB!69Z= z`Obz`pOHnz<2_)@@h6NZam$Q%^)Ed+U_is+2E!pkk71Lb%X0ud$ADmlhK3HAFDA1T z1LxSbrmG!nY;2sIND)gprNvBPRfbRf^R4#NYqAle#u9KymsabP-U?^N z(RTCmJ_F=G?NSn6=L9Bm75pC#L{zpu3|Dc;4wl*(8w%d`ioDL^q@63NDh8=Bp2>FE zHa6}HxrGpMVhOK)TL6jV{*)KNGchrrrHJGNYwBR741Q50B3R!+*7d*UQNqa^k<_M} z!f?7eHd|n6D1u-rDk_DK@S*QEY$e0%`p#JOkW!N70O7-x#%GHs>-OrYh@Ol z%3F-6{2)P#CJ5A)YAiK~OaC2YQe2YPc%Qp!^Y@K9HvHJ?z!hXA^F@F+mu0^pT^h+% z&mCC}KA!Iuc#gvyhvLprQ|I{+F#_y*X}>gfX-G^}ZI?R!)S@JD@q6?ga_J=48HtPa zc6DF&=ky%3`#d~nQS19Sd7R8Cnv0MBpRnhiesG6SqStg>4x$!#Xys|L5d)FSNRm4g zL&C-i!I}X#WbNhkn;-_&c}3Hxfe@{PTIYZy-`68IV(^AiN)ZtpmO`vT<_#AOsv(1! z^2sJYThF)21YwO;cRG8YGak@B{So7Rzkq5l%zy*dSLSPkey(0}r?RRP0hRx<`nFb% zatKM?@W41s43a1jzR9O*TNgR%J$O?qBGpV1W@P#rf_?{i@@%q%;lS^RgCNH|d>;sb zXJU73htC@7V8;w?C#uLo>yvK`UESSpB6)z4hCnK~A;=Zy;Sh}>&gYc+h@4R&A$gN6G5d`A!?)b8xLlkxRj&Smg!t`)JdV`%0R5?KcMU zvyz&p|5qto1bZg6R^))ev*%O%jf~}%DOc@`YD>@){Qpi|)jZgL_vfp=ioj@#>#Pcp z^#9Fq{J%k4yjB2AoX<;0V={mftuKBt_-BVKkXhekW2<0CZD~F83WGA%c!hK71WOQx zc>9e)Ri7fKEi{cckdyN_-NaMC+S}jp5b*CpMfi{{U8f&NfgNDacZis^G#(cQW8&a; z=^4(BJhskoh(Ws{TxpUQ76Rbve_oD$4~b^GMW+pV=38|bE#3!AVwa#h|CDyv4SUrD zV9!1j^TJZNbJvzRAkxKb?;*^G|1%~lS^v$}H5z*8FxI)L7ju)xmM5k&O;lx4UD2+m zK`7JWsX%F2>|tHpZn3k$b%(4k4Oblut{Wh!5NeR#f?u5B$Z0*60r5{2AFR5k7cj%* zq@0J;3~B~NE?0H&!mPcmX^o@440D08uAZLt^Y*Lp%2>Y}hjNz3>)%BWuD;vz%LuSP z4m(AEk7x_5WDBd3|I{Wuob8tB-NzX~f(L1eBCrly+6+qagbYwz>&f637sG!Fl#T?YQJuC zga6n52N!-Ns3fPAkH3{-5>Lz{eK8SHP|O{~8h8PDNi=1o*62NYcU{?M^HKg+irv#G zW-Ixt=k{nq|A&WOD?i3NpG&Kja4x(@aZ%;Q zTe7zx%K2Mya`n0W064X5Rr)aDGCNa1%_lHD4Qwj>u81|?k0t-3A5Jg?J%9VmgOZ3P zfg5t)zDN6Ab*5~?f_=E0O()*EUm~S~FS0S%Qidn^A;`tf-b(MAJ04T|v-$%tow6{S zjMInBgml`aT|Laeu`Q%=W~*dRMu83(a$t#12<`x)p9=Fv4kudJU;9l7*}ydc+*C3ns?bG@liJo%wf--GtL^C3C~}9@asM#wX*gFdfc%KM#Zz zRsezP@2t=uoIGmG0fBUMk6!Cn>o(POW5rlHt;vw^gf@aL>T&Cy0)x!}Cgq4xbI_4? zEs}%H(8W)PF0(slBYaBlHvB%In*mD#K$^6+xwgxkuXx_V>KEQ;Chae)g2L<3fPlY^ zX{7)&)+o-MMa8&PbHFZzkDm2RJ>&|loCN9zXNM$JK^s}HH!x{@plB2Y%j!$8Nv#FU zo)=sSj52v88mXWWcyc7a40ffLIX_XbqUSkuAF+ZekJqJ({JhZZ4sL)jAFc z0B4r}(WmaYdiE7?zuT63(;q;@Xb!;W-n+(q5Lse-0AH1uSbEIrxdpm8Ki%bhBVLj9 zjD*`u@z1Ldn;_RIC^DajN=R@apWAJJbxsZJ1o~7i9u!+9SW?Bsmxj?ZD#7(gTzyIk zFEs)wEAFoKPxcopmSoRDPy0=?D*-X&uRXV6b&%`*HxET%c42sH;yably8|>03N+^_ z*di0w=2AqMjubf%HLA*qmwxJ96E_#H$DSAint)Zjh&s?CDg->y(C{x7oHhip95hA! zSnQB~V0VFUkCj^Ml^)Hr=hat=q9%v%_0`2xBwjiR8Rj!aYq&`|O=CKB8@juoUQrl+ ztg=Ja^&G4Yrp9k-9iPz$oqIo+dfaX>ba@DPO*sSNPqYdm<@SQ*3BxXBaX&P+_unstkINhKh+OL~Q z(p}60l}zUcab+atWzY>4Zpio)W4$?eHM^iL-3>ok-QOh}C~^Zhnx4 zXDNeuvVF92^G;-xgV89Twc_baTO5yDR-ji?7_^=%w*m5T?8T*TVORj04)=i@I_zw^ za*n((;I&ykSv5ew%R>{uH%;M(hx~fSRobFWJK^aoNClu7SgLHjs(CD%jvCnW5T6&Vdyz$z(FvR>;kVx;-@i9BNw%QstA@3HvxWn@WdmfKnbUc~ z7||_*$tG{j(hto&i)^sg_4m8>5`sQzYEHe9vP1!BOey^dy^)XVyWYk($uGS-oAtnM z8iuL?ZabG}NrE5TTb|7g>vhx>!+e#$BN)SCM!%#azm2{RC~vl|DS820st=WHt_<$8 zV}3ZhJ3NQO-p<5)APLloaRhXz#BcudL!+q*BiFW1pG=}YVIS`#8?t6y!s8k&ZMaP$ z6+&uY|LK>6HWv|=^u=b$!gt}&8@*)wFlx`mmk!+l6mu~e4Um*d=Ymh+G^gIZ6?M@F zB08S-y=%@66x4_?lrjxR1~tp;gBvnKta+h7&X-`34tPus-Ga5Enuu@1%BZxI4SnXo zy@AfU*6JWa-Hc=A`A^E(J+9ywG;BZNa{_<9y5yZ>4v_W1&3kNM)4mWw5_=vt(x$U) z=_Gx>Rwiy3P@=!}zw8FqAOT!(iIb%Jwos()X-ZtjJBS!6ZES^aMdaYLbCUU#O?Ud{ipc)T^{kJrEH;dZ0AsLvv-Ji+=Uhg9*BVq!G4PCcN ztwFtKi6nC2Te5xWY2hq~rmEQU$QGcS;@`~5G(EiY_0^sIYkmaFn|4-^4Hw{i}r2J0E!b1AT%2i^LgN7bDcT5hE0C&3bNg zTqm6@los4oZa~la5B&pnEst7PJL>iflk<$Sf?O=?AJDji1+)|`*qiP$z{h>WvLE53vC)SDHLq>h1Hj2S(!5VDSob4 zd5J-lP4R{qH~MDm;6vkmk5Z|y#YkAcAAH&QEg-V zr!Kj3T~N_f64(6kv#AXgARACKzB`(X7EC2@N3>stZ;oy-Vo+^hSwL)PgFvYfK#zgw z^aBVni~Aazwr7P_{=2NSh${Z``06tk?SU8QT!`3Ccjf1;gv!s|Z0(91urQSe3l>%5 z)4rU`v*o50PKV6|7p!81J@`%Wdr6BX9zD}a=I0mBj z*8TZVsg^r2w|~#6ffBu|7HRGD$1ZvJyfBP93iD(yiw=?ZfqU2A*FEfQ9&IN|ABbrq zA#m-wod9R_x7I9kVc0y)+Kvaj8K1iNUI-CW*IWlPE}DWD@2WlUr5iY@=o5Qp@`N4q9pUa2eV?w1t`FH(paDHsZ*npHFzun{=8D`Rf5(K;LA6^hi`R3umq-x zlhAq8=ZvALqb_%c`&ID*j03zauoq`5&Eu$i!DjG=q zXp`%e@-FGrW^-~}iZcPhkVhx0D>iNF<)W~Mg=?YMk-{$A5s!<*+X}49D}k%c$jhYm zIVgFLb3%0xZAhr7{~LoVZ9CY5&0uyI7ey3gQm#)Pf=D0cmQUz=zke>hyZ%qDCB&*+|VF?Q(;G^-C^ilhV=vwmffJ*y^`mfP0ek4G)s{W@Vb7t4BaQ zx_U$em|BxKm0dgdf`SW1A!Cib_Wq80A~qbVsK}8>87_-imPMBA0fjDVlQPgxN5|kfTr=`|2rJ`M;b#m55N=oIQ9JTsRp=GS{v&3b z-L5HevE#O6pK}JirVb1IsxFjEQ-4lCHqkODubE}3g$vrmUdfj$mAys&h!^voeead| z*lRk~g20Ntuqs$Q7xSBt(m=2Ko@$_Q-(1!pm-h!EJB!|*+nU*7zuxLoB$8j~BA%5% zq!gA0(s@_J!HlbZs)zWKo9?YS)B|jVG#e)I=>$Cp%=f9SOH($L zVCbC=QR>GfFVPbZ&6p97IxT7vyN5|Q%*+K|u7liaIJ6MrOIer^u=yC3kdhjX? z>d$h}-pt%KmEQI{`a_T<<(w(<^+v3h;<<8sGkSLh1%lIA zM20-|Pi)(vLM+SWx0xby#y-<70ti~uUwW;D;ZYiDk3QQJ9lb(7`V2ga7h^2(;2_5q01J2s@n2}A z|G8FG7)I04UumzDZ?(U0$XSd~f`G+-VKJz7`QYX>r20rEx1uHN&UrL#Xm1WU1z zC_v*qpRTrd8L@P5;k(!e7;k+`gUiUKxX*{G-8;ngx5A;v(RR*?J1>T)wBmoj#Y%|nHxtNu2AExV4+T*t9sU3N$IoE z2QXQ+m#l-x;ft*jrLcI(6~@7N4j6U4$Rt&@%XJyGXhxsuH#&?$aOD0KKT}w#B%5iPq_R z@h9qT-<=(RY_jUsWWX(QTPTvi9o_+a*;w41tB~UkLC>RkD(RnMbp9N4H;(zck%)f|;ul(>T z%m81Y*l`Ht>V2!UmF~~&euCA@Y>&=TBfPsHpEU4=2hqT4Z+H}8oM9)yn|kbC6}WW- z#>6(j|b^;=r0}AOIiYK@}xRFrkmLGJY*P zV5yxQ1}t|y$68+Mz{r6!uBA-vMesrf9h&JtJr-`q6G~F_tIRzaLOMh1r$C?wI!(BP z+oGIww<452QYM^hdP-{lw$M8ROMZH8*tv4FydlS>QU*9B{0^vl1k%&hS^G<>_28w@ z|6M(31uCZTl7R-`JCmf6j7+WB`O=;S@o1jWquVGr?I-UVeY3h0U;%ogAbSIpa77T*%*W6lrEnkPTr$ zLp>~`{xQc2B!Vwf+~b4w>q8qM*Zh;H_+T`9xoa`kmu%HQWgkkJitUXG>e%^5=&mRP zs{g6i5`ByCgn56v`B^ppTf%<%DO{F%u&j}g6W05)ZvK;|>?;mf?_FLn#43KJl4I|6 zTfykITzH`7d3x2@SD3G7<6~+qZNw#D8vfKt9@^vif3+UmJD1E}^6S`OCN-jJ>=aSF z`BqXceDu1$8MwE!oiU=OBk`?1+AK^g_2=Nt&xS}V+vPia-3zPw=OJviah79CUr{%; zke?7X;9e${9*r2%S<`e#6(Eg21etCz)Fh6$gHx;ddApgaW>qdIl9oGtSulLUs7+1T zQY8jpUM(s8T&RFGtp9K7t=t;)W@!KE+U>_LpLRmEBg{p6a=;|-HZd@1AW!+e`&zy@ zz**%V%$VsRUfCqohXRZ%wCS}2`=sr98P6WzH@8ajy|hlLCa~nkZ(rACPw8espk$JK z2%+R=bRI2w{8@cq!?~eFt7<%lFWNswSw72O@n`!oK$*PZT+cMZ#C{68mqTa0mZs?217%6A)vIc3&jefK-N^aW5dM`U{7)*qT$ z_WSA|XZYZ~DH6}#Hb<`ht(ps~Vtw7ee+{oZ{VDnf zPYV_vO84EuzYh?;{&LtqX$QPi`VVvabCd#mbCrx|;BOHh&|+%$wHKS;0{wG$7+R%s z70Uv3{rZyS&S|lKBmn}rOD)9AeLu%4{c(#fClt>q6~n58w$>iQ0fGLn;G764patq0 z#;nbOs+Y1UpG1)h`?hOLU_QUh`lCsuYWJockCf8-hrH>{>he4$h)AvlPFZIf1iJaE zC`1{^%;DAiSa5IRcVdrvbbsqTpr93~Nd0JelCv*GVh_@87LlK`fpg(}5Xt+0Dj|vO zkKf?=sXQ2T)a2RqVZUIred9<-Q4qFvUzl!y=&cy(cY$Yd964$XkEjP8ecRBH1@tb2 z>c=j~6-?)Mt)%A0^(j43hlhj}AyF0|J3Z_-iL>W<867lBHcG!i<9+=dVmhYemBBvY zKfh=d@M*Is4)ORZFg*uPgNKx$<*{$SN6*`% zoukiEMa~}L5|%}Lu7(Cyo< z?!x90=P{P~f&e9-R)gE!=b(n$h1e}VZV@X3#{KgDFLhdrR~!TzH^{{{w%lFvfg+E|TUaAw zdrjlMT9;xzgP(4neGB<&x9hvZ45p~%mSRnjFY=nFsU;Efiky1w;iDdDX|!;19$2T1 z)=m*`xmXe;fY~JCrs{fI_8T>c;43?Cw(DO}1DFZOvgH4_LU&9VITvg|tWeHp<}J^k z+WXYf$kItK2J9?VY3)1!1#dd=T*^{0oz2V87)KA@bcnH(vmFwnkB8??5r>c7%vS&Z zhCvo4J{xophFKef^>;=OGt-G2@(PWNIP^R-LOS+DCq{3Zs`*E z?lrjgexC1p-uHR`eLp-7WQH|s*1Fdf=XIXvJ*YeeQ0Ci9U`m0JA{_k8RT3b=jz(^V z$l9Pqq&bCGd%9~t1y~pWQniDpivjGwe&9kdG-t#y8oK&lGUh-LbGy05DF;-yE@ncp zQGi8)<-@8hA{!eT>1c{R$niI|pR(GhDQCH8T89PtCS>UbIB(;hqC-!7l^nF`t9dtb zHx6Tl=+;&iUwwJ!as(P1<8AJG(F>*6$T4vj#h8))J6~iV1?QZI3fuf`qFVQ7qvU1X zr6B67ib@y|K(H<|t2!BQ$^!;=elWFh8%5FT-7e!D7jk*gzRW&+_U z@8~1Gwt*Mz(J@y{4^of4OiBYoQygz+X%ts0E*RKSi9mJg!WAMv%ENJtg4>ttq%}-e zK$K!aMeFSmR|1~G985+B1!Wmh;%N9PIKSxWl z9zrEH+XSOzLDdS9)kXLg9TzCP#vcDGOPMb0zkh{2eGH)-`%%PQ`| zWm3@-ZF`y_{iEfl24+3v7;4h9ywLXXE&&E0-4cCBIgjZ`Tfbd*yfj*m6~&=knp*C5 zLrk34tDp;c@(BU27&#yH<|sZiUidqSO!oi!CsVbQ$5Ut+TuMk}KrjbR;m}9!&ZgJ2 zCB#zRR6Nk$^?gP- zu%rb4zkox}F#GJY;SFfY2ye4Rcwt*A_()3Vb@QQItA{r!&vKOpKA0PRfoykZsM!>T zS$1Cj=I%j_2sX93$K5Uyw*zcpRR>S)+rG%bZ|;LRV5}*HC4T@~UMQZC?E`8WHat;( z@lQ7K<)GlX7kxLwNb`3(aXpUF zeoJ!BXh;v!;=WF{#|E7~Xhy*Nl7^a_Ytmrt1^qo#-+@E(&4ROf8R-Yr%exIwy(~g@ zbxA7F_C%=K0?NY9jPsK)0~7iC>&WvtlrX$2Rg!;Xj$ zk}kT(eFyFUML(M0!2W>|-)n3NHH>nyC1zT`oKbU$;4>Yg1oZ>Zb*tA4%is_|li#9f zOG1vO*GR_>dstoz5_HnUQqy$T2QUW0!c2^WrM2A66w@C7+w}x!)-3knZ8@U%Vhmsj zI|kPvqW?(K|1!9Q0uZP_pa9e)*O|>=q8|~?{9$$#H2*spM2)ByCdZth$^jRnnvb{A zs4v`rW@RvXh-)vXgX)$4V^HfjD~A+-8gKSG;CAf#A@j9MUEelgRC2sWXF!}Gop^aU zW@neL4D>TsHQ2VUf-+tERc6l<1!X#kY3sFW&9g=pT8=pM-v4t)RCY3u;pii|ba`>R z&HM$yCG0GfmjkSrKNiH$w?A+$02Cev3T@N@9xLDD=4!DHDK4@;A#0a0h_`>i<*Ox5)^kF9_HTMxEp83{CO&d!qSV zh8UJpWN-)uj(tx zzgJ|znLkY();V5DGLo7E7Y{-^7!DusfTe+imh(9mk5Z;HZkkRkdshLZFoj~k?2CsY z4~-3LTGYQI^f)_0h%pV)53Tq0=;H!2ib&8%Qpq1#mY=y=Ek7#?V{3JA1F1essaaR^ z3yy!YbXxW)x(}~P+S0p?4$3IzluBV%eUR#Z!fN)c_= zQ$)9=mQm9VI2=?<@4>T#QiW!PpWF`SYh%zNN6#o$6DVM^7G$hNf4}DsG##~=j2tG0 zoYGNpw#qh&k8^iJJ?%Zcq=Y7o;Fk!EoKMqY`hTC_*yEhKH?1Qh8m_Ko2QiVK^9=)f zNv8fj){4$qL|-xc*$TvU;3_~TGH8UwaC$?La~WGYg&?FsYgG%A$YubT1qQO;qgzCV zYgaps-Wewq=AeABPc-<;KYX|zSwa(f@NynUfzcX8jL;wW-e)WJl?WjQXe#jw)ho?k zBC+sHa&_08;z`eDRWKH~n`89h_Fv%C2+zN&VgmSX#|Zt@oTDz3X9q>%lmQFRC5GP& z3lKdb|KkAXWb+%egnf$iA5_14Aqq|ok|z}*y4D$4?=mcs0T*49@Qeh*A{r_UnUa#aGPn=a zo7HLF&Fw^j;my6-dod?BF>(sYAm2a<6~llF2yQ!9jUHvp;H2e+0>eCz^GE%VyIDwA z%yUmLZJUFGrv$p!cTf{|P~a(bO#P%2U~P~c=px~as)n_ICuRECrZReDd`T4-DM|RaIatafq*5H z+wad#_#%oA01nT37{|Xdtt*K<&+n&2{g7gV!$!Cl0!Gii0^qx`p!}q&7-rvd%MM4p zbX9_7U39t*m#F|0O)Ob;`yKL!yg?6DNri>j^?2I{~es~pyZRaKfuTs zzT*ECgXw*^?pHT6&QEdiy3K8la7TC78(9wR(;Z&?E1>%z4}TmVw)L#4vq3X?MGo$I-X^JpVkS<*_Sd z-R({68fBXsP8TWcfVR!BRJ;9z$G4EaG+d*3;D!V@=GMZg_0IcqUR2Mi!uHS`d$dj| zNQI!_8!git&hE}7t>l^@e6>si{vecQ!Gg5D_j2r=HyMYA!>(WF^4@!RrOR=ml!*;_ zjq~D*75djgBZGj{-&xPa`xFS2bG@wH(mo2mjwMrP@Nkgsgv*ev38Lf4DgP=FJsv(3 z6vRG_pnc~h94Z*8K5jL&>&unx6XVMtt4J=gm7sT-uF{B3mx{1inee2uJ-%ft_esRS z;uTU;L?hxh&;uMhNl*P%R9f0Qm#BjkfsJz2Phg>PiTqqH&+UGsl*%@**K%>Y&DnQz zz^F%^wDr145p^O0_FcR69X}kE)O+M)dV^l3vv2r>YYgwocsMmib*bJOcz^u`PpEl< zeQ2Pumx9H|KN$laRA{`RM{Vb4sXSHYNn2K$1hVUmp2FnFO-Iw|#^FzEVZSdHJ1N3L zqukJaBHY&Qx*AOQo<+wUZH-7Kl0M@0t_MwMTT4K88RIbv{4#S5ms^#9=9Z{Z6V=f@ z&p|L@t&U|JK_d|~l~i!zmnAWK-lZ1CdIGVdzJC?Bh82*~AeK8 zRGQ(>>-Io=J9guDU$8=np1}pme7q5$=IDBnWPn#rJKRQs_+e1X&ipF#D6Vhy7hkBr zZcnk;L*HJK%@s~`E~!)uT!1s3@iWx}1?G)e$YTjUf`=Zj--0Q^_SPR_2oSV{GK%I5 z314k6ar$O6>eBa26{Baa^_op&khL?QrWRRcO4)at`zSS)z(TD z#8m{LOy@FG6@%57|9q8u_Mp73;`w9Sy?r_+RCW1n-NKLi#h;@GMQG#o*q(&yJWwOJ zVKVb4E>kMw?ERqNgGW+8bRiKop{#aWVczvxnn7dA^5e*mxiG02;0t+8g-g&!n`u0L zk|!lkT)A2a7SMtOe5Bvc`$Xr)7e-#zDc;*!_1kE^=&q?6hm*Oqtts-5ys1y_W8hW6 zth9Ll73a>I&l#JlX+Y=uyS&kej}_E$H(GBHproljiu`p|C|yC$Ntd!x(TZ63Vy_!q z@OQ?11UvHmh<|sexK%hCs#URf_q;5sM*H&p!9Qy!uxP4!HFH z`mrq~T)s&PueLZzFxCXA$5I*rC15Ph2bc^$oSZfQMuch}_Vt}b~%^(=uJ0TdXtPktVb)95CNi2{C?LBy9RX$9hz z=D@}!zq)!#_@X|Wm6^)d$rt6t^v4=)A>`-U`rnGJ#nwBeE8-1a0C^yx!u?ls!>rfN zFTT?sBQ_^Z#nGn&TQv2BuS8xWc~L)LLcef89(N2xsupEAo2Pzk*Gjt|&Q|hbUE4-H z2x|MBSnJ)EaHmB--9`RWo?g#sBop`P~o&Fk;tv_5owQHyR$%|t&{UhRx zuiT7qA<7wpp{i7aQhxxFvntIalS?_wmxNxaWWH@zE6UoJ9t?6G0eoR~P0r^MZ8hS_ z_ZwgtSKqo_X?*r*NcHjPmz>k#LW9Wj9DkBMdgr`Kyb?WvKl7x=pG0nPf0gk?M_rWgwBPvYUOHdyY!IcL*GB1zsE?GW*TB19o#oj_ zokzPT7dENt!`6n=R78~qs$%Kte?HmC)4^yBY+lvU4+gT>Gp2Jho*KB;ew4y*i;U47 zst$z|OgEF!Qk~3(cOSdx1Z{6dzR^ik3(b?vvP2W+)|MbO>y*&69=SM1pLTyPa~Mh$ zMb(CUdQd)zLw{O9?gk5LR5pGe7RYybk9RP`v0k8y!>Rs_C+SFTeZIY$^TQkXm%wwK zJzG@p&`Za8TUPDYVQ6we82mu0XQ&2qcFKw#hc?#vvzT3rC(RH^qpp0d!?3WcNs9!geRYHoxOnMel{AbLDC;1r5RS0fQt#|sBc1sTpqB)gUq;PC=;BKw17S?<#ve;e)nat`gI z`EK0}qgBNMk6GwnV0(!Lxc^sA9Xq{_zf*d7nE8>#m00!aE|DM(d_!0Moayt=u~~h? zzx$OO!%l{9!fDll;o`r*f#oDh;?Y~wH?-=#+QnJoFjQu86b_~lTVzAIN^05=B)qnH z1?E~`#tS|rg+bh|ksbJfPTsoeP;aZrXzK7?nqGzZ#QNl6dR-zLYU#Dz z&L=y6By8Y<(N?;3c1FTIzQJLm?a}xrGD4aGX=KJOWKtSTfI{BGxkUgcN{E2?*&2I0 zn)guJqNd)+%U1a1p7&D5z%6`)E)m(}Az@k|N30JQ+1Dp~=6gW`15o8d$oy>alCA!;TUaIL~5#4@= zGYCQ{Y?wHxmq~)$< zlN1T(PXZt&oe(0rAr*HCgRL4{eQGW-1RDdK;*hMyl>h_`va7RRl?T@oktfk{E)jN~ zw89=0%(1ibX*E>3rd>57X)0MJ7xb_FJ!c=WYB#Ar=#4&II^b|Om{^}uzvH_(%~!kO zYm&8*WhaXfepqYx~O_t@v z`dgp{On6k!Ex@Z3AZaa|K2|g$Jm?gIyzH*R1JW)?NH;Mb0RXkplYF{!R_Z|GEeCfy zhg{RNvKEHMJzfmp00{^V021TgXk@d0OHjw|2a>26 zVBU&jq)$g33Oa4PypO6HKD=1ezyNiXXtv?v;W_w7Dikjq@I&Qs2KU}0(~C${k$tdh zNf2gawEoG$-R^|VpxA^xN!b42msYc5uwt^}9aJ#2SR1j_>8oUl!pi7v^Eo-BL$wGE$vqvX?)8c!zfKr9sRsE9*S4f z4$iq_y9ePvF^rSJIz^TnHRFTj_-muC!V#VTpFh&R6h>d<$}-&*RmtO#cg!}>hz#}`5rt%H@w_;*g$9@AwXHeO{lSD^ z7_pb^m@Z$h*y$*&XC@ug%>LHe<+c(=(}9T1=9k6n@}Ue>mYfbk0R9V6!H0Nw$235MldokifC3F{+eXrE;bR_`}O7r+M{J>#}ZAv zPZxHXPu3LhLbHE#1aqr}$7$_E`|(bTmzkzliNawb8PJnd34EflGnluX`8)@3%t^6{z(W@P-(F0AS+gAb`@dx&bKI=Y5T(4Mkbq}e-OE`&QTN0 zmW_vP)0-b_8!}2TCmVs9=Z`l`ygBkb{A^4O{bC&+x<-1T9R|%lWC;`alY5x`x=@S- z+ps6HYyazK!1ea>>n(#E9t)jmTYMY|^)8FQ`1}l(`BAsi(c@-CJ_`-b2VI#8k>b#}<%9`3H$I1sm&IvZQaxg_#`!0iHgpX(RFIdKC{rPBx z8M-$0@SUe%G73Z}T(R#Aft>N;@4gk}fk!Z4xgZVvm%v;$BcQrkoLzs57N}>9x5G`Y zQw&NhjNta zHJc8%Jqf-GGz5dV^y~Lh2dC?IP>Ra@P}ycN$Nh;cep$AyoCDpHDbh zrga@slAr7@&&(hHd}t+dspx}kTFr$Jf|W~X2a|&opM?)PGjH!0$J6Ig7vs5Msve~} zuNF4gL6%9Y^b|aU{0iVQ*cWijiYc)Zc7pE~et(z#r1{y3tC3^c1(QN+LD2>e zG7z$$0(p!UnhR%yN>HqkZ|F-1)1XTpvMw&&D}N!Cs@=g`oTs%&{VaYutkhUNk#V85@N5bPDN>-_VTR|znw-^vm;K7{l! zf@!j?kk1*;k^S;onkd?#T~B;i!L|0~QYTNHPdE|hb!I@IC)nfu=PtQlO9MieM`X>& zLt=!^&7FQLI)W94#_=$LBskND4@tlYB!8zA*NFBW_QSccIUWKVfZ1b~#YM214Fqra zDBW*d2)#XpjJ3M*FUTbl9>nK%Ka~wCX%DNW^z#_ zZpp$E)Ew1CONGWV5vwu`vGgdHWsP&VuE7TNH76TErcs-B9}eG!Zd?&Bh~`}YB-!nl zg(AFH`*8k-%r-9g%#o+)#@<4R&jFnQ#fQB;U^;p-Wa42qvhXz>Qyn3MiRc#I99)e) zUYd8Raeub=#F-LWpXkOPe?4s_8V8Nlg|bm>iP2++yPtKm@U_}OU}sN^eg~rb?DRSg z*Gx7mMXPzGjE1vH6mgzro+?k%c+AN<=@0uMBb6J&1hGnP-OwCF9cmJBjHKRItu}pr z7cC;__5}oTX<(n~*_~3%cTKm(fqysr5rb7Nb56EuTo$fxb}r^{zD(_KN=>+|`KhMG z(Dm#QTc4X4&)@y6F0JixZ0%TR5CdOl)dOLN>8fBBW=gfE;e7dVFU?#Z95hd^N&(bl zBRp47%8JN}V`7B2 zD(A_F@mGcN3rw!k4>3a41WiFYqfE9bpSWLIp0@ADvnxujKWGY5b1M7u=0iKTZVWUu z?o`qxolbeTWm(HaX6%vsJT zVwMfLWsdvg?{A~Sjsk`ORL&7N3jsXrXhW1qOq8%=A251V$w)uQj8BVu<4|TW^utPn zg^E;xG?Noxo{g!uSwDM&&uXI0ZLYmRg zA%ZAI5;^4n=R^%)CRmhQ(cm^``~%}5d)Huy2cR^w6N(0~Jicgt-9F%ow_jib2Fzxd z-ZzuRb?aAb#?OJLIU?61{o&~#nHno>jXH_W*KRNB3kxZ+7w>-WsELpLC;BA;RM$^x zjYmCi1(?b%-4b}=IvFJ1d`ClBA1AN$WYJYK^^@JHQtL3!lVUG)iG`gUW-(4%y;tXJ>Fd%goSL8gshSA^1d9BIbEha=DT+6h?(2toy3L2 zlJ)$a`;C6HV<34&i)_#J9>kqNACzATcPOK5ggp1f<0$7zYI9VYvsXpgo8@+?$)E&q zI=(DiTy+!E+|uEy25YO=--Of$y^|p?+!Lx=ZBL<=N%=nlBk``6hB`x<5PufWqxMpf zARaK0wcl5oY|EsDw_RJ>MnS(a`SA7YRUKO{M{za{I|7&m8&cDx=m=x=!4 zjEVI2hZ}kMR#w9%U?68Og*@>W{%M(x4?Oqq=~CD|9DHqPmAY;Tybqd-D8);wD=4w{ zQOFqbWs0&rwnB0lm(vB@w&v20PF1k|h?6#vXhyS|Wrd}QkK!wD>YS~av-&9{l0~J{MM{eL{ z=E(F!-T-z1H;r@f)68h~k@LZFTVcRrkbz^_BN#AAiJk3qUHPM$X8)Mgl<_Q&fQS#u z9CtJw1CEffi@jfrQg^6aAWacD5+-a6?355i!fVgCJ!%?&lakq{P0%CwVvoci_Z33j z;+liVpQC0D#8`PRgx~uVWx)f|=FghFGXM>k4E2#=Z!^$ZS=J&EufaeCl3{^$c-eC+ zZc5v2wKVB?#iV|}iDPY|nv4nvj2@uJ3#Uc3Uk)&K2`+~g)EyF4J0455Q^hR*g>jk( zHvIth5-;asOgwjslRQ>ShrZsuiMc_H$;m%#ynz2}vdrrA`|B$ro}D~NpZ-N$n>Qyk zb2}Dd z--nBwMJm8khR{KxFS(yjT;q0YY8`xch!6SC+}_j2&ec^gOu8eMXSo>MyO@jM?AA_>j}G8w zCgmjZ3lZYC##zx!;kns?+%D5*4Z8D_T05kIvU6K+W+Elv}^muJ#a4MX_QJ#o_Xx^7#)qs>q!9p-&^T+VX^v- z8sO5n%Cfe=ZZiZZa-dMYfu_^TjqjQn)bpu`aASxj}LQuT@hgfSU2^at!{mu zTd&y~o7!(a-CCu$+tObit(U6awe;Zct{2G}k_;Ts<6&mnqyDK9nmf<0CODD#- z3}0ZBV1A%k>)WeB4Ij}3!2y)(QJ~UaCdHVm95(ZvB<=X?jf4aYBRrjO|!%_Of=3=4pZnGEUiIQTmuFJEMaV< znC$eg8s^=o@+0NcnlTO#x$nL!%v@D}iqU#5vFHrXs;8P)PCBI98H`tzghf1YU0^Kr z6K3)!LYF)hGIJ!To5J?cN^eB`l~e{?w&sAZx?4H$Atq9MNbmwtN@18fkKyO;imDu8 z(V(Rg_UYBgC}eS+YOY_D5$JFEfa+5~8%o{FlM(o?%}T(E71zotPf~pO#Tps}7^h0X za5EdzzdxrEY>crKYmx6V9n9ysokGK=TT_7tq{jeXj2Yc^Z@4l0uBLph>^ zn60KL6XU(v=RkQCrYLF887+bZfuQtLq%X^AE@H#Agrhjhv>r4yj|{hIp&;LBs)sP9K98*;~jbtS%Y^_mO=G*5*9 zA;5nCh@Tj`vAPC}_xz=Jh2j=y#FmLLx~uem4>m9gSpKvy6Ds1|Z(R#`BRB@swt*8p zLyUg^G_vzIDD)fT@(jMdjJhXg}m2t2P|Lv`pz+WiW-)G2KewR5OwZAFzuo z#$BgXAZ01KesF<`Gn07>W2pP@0uV!FG%$!Z%*ZHn;J>(Yd3NW;l^T zy^^k}xluCJ_wXzN^)*)bftOxm$oO+}uP&{{aRP%6bR%~DM~9OfSq*-KqwMmxi_y6^ z?2XqZ%=6OKmk_^(^WZW~cgASY+EV+~qB6btQGf$HkJ6!u9I)3}CS&fcG_Rz{A6$rS zw>LEQt=TylWsvEetaZb`&HrgHE6Ri@D8=KLaePql5MWZ04;O3rXrwE zr!Nsp{@8dLSn^=ffm-2sd>W4##WR2p1*{^ZCY~u?xR_r&x5c)8bVuf03Ks(jm=33i zt6oW2)vd)^+DX5Yz4pWuL+j_R8NyxR4>TR+Pz0Rxo@)xgCm?Ahh!b^{r?WRbhet2F zQMua}PwYXp6pXS`${%SxT9WmYnIu}&x%})kOnj@p)e*p7c((DO!fz3tMVU5tOVl*y1If#NVwrHGkr?}Qx*!7-kZqdeEW>$v~+h}TWR6D zEnw&KT`pDOQV7y+NkElcpC$GVyp0TDaFK50!DF9r#@Nmf&|pG0`D{9lZ6{rE(`a!m z3K)I+vRwP490KE9slzyBV-dpDgd@+=|bd)sI+3bCkxR*G~H8Z8>nK6~&4yCFS3fK5` zO>L5OS4RmV6HEr>$~5*2j1{~Rn2ApN^P^@2jKn2;l!8;ts4dE$X_GhWG#}I+&U5LIYmaVZiJ!e0zO<_ z`_-xu$gL%5x8kEas|Sk_N(N}<>6`+FV0}m*71-!}js9-N3X^QEj6iMlrZtbJPf>27 zZ0l{tYO7FML&?R#tj$Vu7a=KF=fjE=!szf(9*(EEyQXRpx(nkznIr6y4-~64Rfh^C zMwq?=oFQc_ugy=RWo?w8N5^PKJK!dU@?^JN@APoUrsBJw5U7DB-PTKkg5q=J(!#wv zH@k}FHI<7$1q9}nJm6`M6Mh?>mKAi!^5Zx#M7Dr$HolMT!%1h->~%mkgO9L>(1;Z3 zAC!F`K1{=}t;Dhh03>|c{KE1WG}hqNCznLNcfpdm=B{6WkL=^n8wGYfi7a_35HaDm z6e+AUxq>Lk=@h-QKiN$Fqm4x}Flw-kPxc{->59mx4O;n*~VdT=4%>$DN{Rjzr{hyDl>L6dl9O#&nTrI=j!3 z{BaJ5qMAt4^p1|e$G|R|g7)zajFl%^dhgkoUxL4+WdjjnJ_HLL1NiH~0C(I5VOukv zk*DAkiR`qml2)dzNj#FtMol5+V1^2CxWt%MMs`18oPNE90Xmfe!%lY%q{P<}V^KtMSehPG`Lu&ZaBB*6 z0o)pF`wTp4q3Rx*ia~s;v#|lTih($~kE?MGa{{R^V3XkSJ=90Qcs>65z4*^Iy)U3j zYMaTzqU~pm_}C@L!#|>xK3-9AehZM#-{|%MbCKa{r}cFCI7ulf<*fb-_z&-M@RxfW z6}958B@BHZKk{xhnyTwOJ(S$`K3Qs#kKi;Q+IXk;kRm>5@^ELp^Prq@`Nx!}>+)V*{#LD)*HUGD z0g>Bw<&jt1R&7DCxnsfUVxC_4!Q|fDum1VF6;AgB1*<@Fr3SFeQIf4cI718!uEJ;|A|i;0h}_&Aul%vAee!csa3a zo38ecdVt^0L_ICeRJ^pD!1lsZ*WK*9x6`D{e1g;D!MBF!z!`$D;Ul)XO&`~8;k}L+ zZj+O~gTTH5CEAfNViML|;trLpus2V1X$)HTUoj`qFPRK{QL94mk|-Ln3S3QLp=G)Z3{ z?JLKWH-j8&UZ?QIEoToMc1JA@BX1mffYw3N!SD*tPJsGLM#LHG#8Ow;PBfE5f~i0o zl&xXe zCCG}D%9cO-@-D*8KF8CJBrI}B)G3;8s5RSs>DKoMzb|HiDV`qJZEK8-Ev`}UoHX$( zsaY&=IUcQg^NB7?0&_BfK3nzfjFp$@)C>B$&5VS!w0}rkBYe;@MxyQZog&ymxb)3F zBd6m}P>N8skv6W9p-dcaRX@~Abq}(oTOzH}MvZd6pBw1v1YVf>J8*ON#=xq)7Nin-xwW1%U zqC^uczoODySm7I9X`%F1M+&hf)lVr*j9y9Qo81maYDQ?~26XHae_MI$hI$qlbDTQZ z_d~)t+kUXvzJ{^*cziQn!61?>0F|UMY%H8Vk0hLsyq;j#CAgQJ#Md6TW_;LvZgAV? zgmpdYN;8$qWiT6qy4&kS2wR_U!aKS?y>HDX1ZWrJID87ZKg1<-tcdpW7rO-Dqez<9-*XWgB@k@^U0VdkF8ke-u zs%Yer1W$`$f~#-%C+$8CY)(Y4IH0$SzrjHzSBEWEH+@KdO%43IIP%*xZdTtZ;9WQ=0KZY)8$C4gc{EoMgZX8C>-lTAxLxKL(!r<0kg zIhqE(MQQ~vfEO>+^#fqJPvc0=e8k2Cz1@RcqB)N3zU-2wFKL&l~jTPfdr zen3-u2qpOgCylS^NgpF)vm_*xDRT%R{pWbKDUrtRpn-s}mNUuRy(Ghyy9WUB0C)?w zNFaP7UB+W43e_-YaLjgxIhm9{W&A1@#sN)-ubn<1r#}L8O|6ISMKZj92?Ck^2YUJl zVG`g1H3R9(*~el?H%?Bb6(>&*b2->3sYai=IN3?LY*tE5Rvj1V9sdf6#$OS^v++jq zI_;+}AE1D*9t7o#82vZ0dIhCLpdrv)eD{2t?E1Zk`6}-Z&upgnJZv(sS39iN5;lJn zdF&AQ^3FKz<~aT&wvGd^@CuGnc`d*5MlT?w57&6&Goj*!)?ENo9ZX|ywCMg|Nj8E% z7tR%na~}kfP><5p$N_U;GA6i`tHNLvOv3Y#7wtgo_xI9x)3{@?Yc0wZJN^Km8()K$ z0n}ls{X}N6!g?@mv1f)7Kp`^P_36yla5hy-lwfR0xn`ol=5bPBnRQj@TQao6B^ezNE1E2W zp&-1!kB|t+oa7ikJbJW?0{#{uB3YtpN$H%pV}kAtMnb^fxqK6$)=C7j3)T{Q<=+|P z%=5A#+Lkp)!VN`Z{RR@ANX`vlLRyskDSSIuP(s5vG@Wq7?RgX*@FOT03p;dbc^C$^ zzQ8^Oj)I`a?5^KwBDoq^-NGn?93UtsF2(m^Vv10Au<=+gex%_tl^Lpr zS73GMNrU=hMa)LbrX%&O%F5|1L_hOJ>g_5sLLO3*ziHuAP5+e^UNuc#LG(OR++Oh< z6ht9Mp=`2Ox@$|dway$ zLq#srG@TV@$x9O2GOhYPOX<@EMc=>*ckqXyhMm%p5F6QLN-kKvhi$#kC;m`iNBy&a zRIM*TL)Pusr%dw~#cNa-3f{H;1K z8|B?t4cx6hCc*=#{vX@PNW7v^A_;5ungO_g(u>LQ+ou^m-fD?eYD#aE^qa3p^spuF zU(WNt`*6)bU-Pn6ZjI)f+qhcf5<8!KxDvs+k(^dFB3$12gsX@aB#es?Ym5GxzCPX! z7?uwspIgnS>ey%XQ` zTB~Z0q4cugfp$2e<80FkMe;h{G)kdGHBef;!lBQ00mc(yz0!hgp8k^3 z)O;fuJdA?Za+F$cr7SiQ$cJ*G#Dz<7K&fJM2mN5$vHvF@x2GD@SAE*SJ2Ibb4+ehR z@+pD`Z5x{UvwUk(A>ulgzs*tL`I(Noi`C|YT>NC?^0G;_$M%y$>VDVUC{9$ufG2ol z{@DIZjv4G#N2eOslQM(Y)WT|MlG(1JD9>cm!@6$S#NsH{o%o^&FQBqQqpJD50lVN{ zh0kI5bKo#`8@K$p!C&N%43W&#HElG+LCmBOv0t2eVAAC!DiqowEX**_s4;o=L96M1 zX~8gcq!{aSHs&B%;}~TW{txukvw{Q4C3XL&A;nI>8F6yvJp1nqonHK3CKBJRbD6>e z_Qr}<8v<2Lbaf-?CHhd*9uj;$y|S>Rg53Qj6*c#{+-_~#9TFDDU!!(XbFSF!5&&r+ z;eTbV?!Pgm0Mkxi*9@VL2gTWoV@JerleQve%F`k*uw6(b(sL)9#rmkts@tmb+KJ%{ zU{K74Hq38{rUgX;sQy4=H3pqbN}D|3t>RBqSWgFHK&LYkybQHH@^yuP>NLw*2=<3b31e22FGVa9Tr))?E}*5 z%&mN6FM|oR$*pcCQ{!830U~H&F$4$;dZv$tGRzDkLw7Nr)M9`%ul8#(Z_fr`}Q^D(Fg(JOQid%pd)1!yp-P=%%8tuOp^t zpR2L5KyI2`x<|Pd4PDq4==n(l1gAHRQoCh|s)4|)BSn0E6mMzD?C{u}Sh(@0L ztfOH_RFTPW-!Si2p2>*t6xPBQ>l5;_TD*?WKG5iY<3wSS7l(pOWVv+SKj~LDk}K`$n+R-p ziwvjdY_DbnW{J@Lm2HJwq`)wTwP)M)(?M}ln%;4}t$t&G zw~k4QEL!>jxO~zLtt*sO+JN#Z87NB3qx@@a#jBs7+9*oV*sfU>IL*$mT$US3c~^aU z=v}5PTC6WsS{N=Rye4tl_r~M1p*qjcrTN=rXZMRpfahh^K4#L_o>#bn9BL$q1l^ zd0a)y%}J$t&HU?3AD_*bH1|B0pd7o*2w$C$Ai6iac!JP1KbBZTgnycWSva8L4Dz?C4=<{-mXijd zfw2&HeP*!RB13?eGoek2Fz8&-cIED&)|B-2+Mxe zH7@|n>PBJ%wXa>VuvLpFr<>?pqbR<5&u&Ks*%eXpOc#L;*NX0QU*l4{KXwmK(`WV& z$Y3d6fXoCs?tB77O~hr$LmJy(fcp5ify9|#_FqIM2;Ua+J?kRjiy!~WIe!TW|9{aR z|JBlc)_u^V@dy}yNkFoIQ{HLyfY^nnBi&(IE%Hu}-XFi{D0B=JA`3)i;IK;FHbNj$=^{d~>XhxfF)GKAO{$Rn zG6#K+!}_I@E9jLw=!aY`KY%8qEg*D|ouYmZ)3FlMEnNT6*>uX*Ls$z&p=orGh_xu` z^0{C5dNm?SV1&X@qIi%9_oW1_M|faJZyu*P{c>uy-70cQl3VrGh_f+V>l>CC^_dXi zI@Hgcoz-zYn5|k67~MFvG@PqzaeEBAO1r`Tq<7vpfdNGkeO&&{FBYv=yRbF;EqL^0 z@9AL`*-}&FjvqDmj^xS;pBAC4&gEuvv<_M^Vbu|xdsOr1DIg>Ldor|BkyVyfV3u=-`UAP`*c|!;yxR;mWA6=BtsX zlE*r%Kz{HR`TB$yA*2YDsDU3e+I@SE-JV2mT(mLqnO@!rj2_av3Pcj`?_U2Y3M}fb zrt!lURr#jvnZKF}kT9uu`h?%YYNBt|D@bLA65!07um&Nk-lU3WMv5r425boi2%^9&f=+HF4N5}N{S}jN>^`ni&NV?hUCxP4Zth3d zvp%f2emK@v7P{oxc(Z`8{4{TBO}#<(CO70Rk&DT*moN3Hx*W@J=7hv3d+t<0fjs)b z2>#Pg0;FXHU;dnLdT9!M+32efjHlQNfRdbB6yH<)r3IBIMSQ}C^VqYW{t>2PGEnfP z(4X5bhzsn%1W!C>L=kj(JViS6E1pp|N2js%EXt8fQ_@vMQqUd-(MYZWu@(xn zg80|1^B}STvH(e8+ zB&^;2;0d_c*-_*WA?(5IU`R))&>Y3X**wz;AwQ)LZJW302Zi8fG0%>Cd-HSNQ^}+O z!SCB|{Ed)WL-Bz!Ow7}Ipavq{+6`9f8S{5m(8SS?R4Qa2Klb5LcWbO?!fpUdDW}Sk z*-{U5pMZ?za!g8~i(f-}YjXS?T;`TNEIy*4fwTI}a+0ZBZwn1G^)Y1A;K=a501q)m zN%KfS8ob7UpFL}krH*146Or4U=kI?|36Tsvd6SC?bKM2r0yJ-z1yH+)?{nMvIUUnv z3K-5ohb&~El-zCvGL{n1#8yqN7sihMftFLaaueeY?e@ylAe}r|FX?l1odL4;>u|pL z_&$0@^y{4uNKK}GaS@8nCa#b#0RF}sqhOuwT;VHNemw@SHFUzGFGv{NqZa1kS#W`{ zQlXgt3X?h@#VU!OpBD|u{ut1@ShNp8UYYNVF>~M7{kcBZ`-30>++y7x`5%%$P}IU{ z{_%Z_y=KAb;|`u}1?*$K&IwUh2TkpiW{|~uC-u6n_PkVf({(SvrO(9}Flr#)_zrL|HVIQq20Wp0JoFA!yd2d>9N14GORuTYY(S zS!`Atzx!ImMm@5YllY`z*ImVae?|ws>icOeAxF>W`eM+-xQ>;}018H~O;qguyoJCJ z5jp?w?R;#%*!fB?Xei0v+9760yox*O?}TVAehB%}k8b5(q}BX*9MWI+!VD`s1|V?$ zZ5wrWJQ(Zr6R0h?sr$m1Dr~8n^k*z_`0bXFJl3%?+fTMnRj7?XpZauFo-zk((uHG(%=+ z&*X|EwoK+XJ1*T$<-sk*ITL#in4z=(s8-Vl*&MBZLjj?GAN%i`nv^&g_s^&Fg_CNH zHhN%Ra0V5xkTjYSFCPU!mBggPePy_fLA4{O!hQF7uU0_s*^p;DhV4bs8=$!~jg%WO zYqLmnCP%bB5FTRK$5f^*0;Wh;UW;4%>k)ev2Cerm2`pmGl=ha3PtuML6r82*QPz;r zgAoso(})|6S6)JvJ&87ng=M))BSskFU$u{S6ocAnboU18cdZM9*d$q#HcVM8)z3NmYbsyeJg>$5S~iH}3gWuq}RQL}rZ~OQnvzRxX~oNEyUU8fa2xpRKlPDW~J=%YNGKa)9heFvk=Nc3y}84|jUeo=#0h$%OVlr1O0T z`x$D;ra0qTB%{R@&g;F>HPRb!ru|kBCR8Hnmf&JXQ>h5EMZrBrS`-d?m^pnLIV<#1 zNaZ{tOCyqPV3dK^3lWe(>%}w7gU| z&0cL;)pftmE8J2L=aDPTPA|AT49W3!m$d>&k&`)Kr9;V0<{6tzrPHwV?Wae(*>hS- zdNYqQ-qn%Lcv)JMi80^U;g^r~a`drC!Y^)W%fm{@t{PBk(3WT)5_@C$aash`{uIy( zATEdznQ&T-MEZK*Si8dEnwNLRoNzA9MABU52%p!SgK^qE^`eco;#Aj6PeJ>|27Wxl zO#<8baDPMnE=oQpR#|Iwb`7B>D!%Jm(L6BVkaiUX-#-o47O|f$uf9rY$`G`>FeqL( zQ({jlb55JTPCf!^kxy))3N%P$5byXo-Bc|wJ;)`yNOAxNz<1&zaR2H5tHz(~qYxT> zCfT2MWSXGT+MMOs8%z4*Fa5n1X+6k*HvP6sG ziAMSMBkPbkrfx%`XU#g;1$pi%bB`zAaJZvSXi{6f3QJ|B41=CE=tDxppV#M3KdUTi zMhjz+OUGI!ZQoTD3P<+bXZo}k&h5ZE&_oApaCQY5EK@k}3!JFyVjRIr>7P&csxm+= z#RvEhKKhE$#U;`V?7M*))1SB1*O==}FZiH~|-q>>!eN%aHM_qK@~F zuo|@Aali{8S}qTZpZQ1BNj<60SlCzLc*(K?#rN?%*;h*7!C>mePaM?EFekH!WJZ7j%rq(b|bN7nSxy>Vvcg54*Z?=-;hi;v#>dK$E7rZP-MElzdPK;+# zPNwj093#7KXS1oWJJ{;fO>*RQr~W$^`Sm+$hdB5Am>7N+27(rsaEswa2+cvSWrb>%P z+<&`kIPuQo_sNfJzE-YGI&aTWcEXd4Sd`0_z$vA)-8=>(!T}r#C-t*q^JW0&08;^z z|Beafeqx~CTK4Wtl%&ZUKZ?JpX~|VARz}9!N=&@wCiFKkL%U6sS3CfFaA{^5VIaI3csfuG#&`JE z7F_V3KPi?jNjC>t_*QOU-KgpguTU+fJ#1_&?U-__lZgsMooBnQ=U1D5!cquF2#@JH zs>O8~zjgozAUt|mgUDpHGFh<^PjUS7DOH=!$dKru0+j-rPT(;Fq>)7 z6u4E#_3N)bc8lP5f0~GDq2gQiFI(OfXzz*~Bp|+kKlvXAatBf1H&QD&*_3%7PgCZ>0o6q{x-$5-7u! z$6rc?{R5(p-*%YMDZ&nnFXrj_N;k4a^(Y<05+0;S^(=L(Kp0;VZ^Cc7c>9Eg5*K2x zq~*7U)~{rrEh5-Sfez0@X^ojvwhGZWmcpEyUSW1ocsd1^HGliEDDv7;o4!WtSSeE4DvfGph3~y#!L8Vn& z)p71fSLt}6t~G7f+6RT+Pf1?*F;0KfGX~D|3415U*DQEmcSevlJ@C9->`)bVm}P`M zINj6Wbp8J;jQi-8Pyum*6}fKCH(#FEiag%!sge35!F&v&dqPeH600Vw?Hc z^Id27$!I6mysh4!_68^8-CqC|z%pBMOZ@HH8`cE$(3Z;_qar~IxC5ikRD!1?<0YQ> zU&Ba8xKkPDINum$t~M8Oq3LtC6?mKU+^>PO?4YIWYf}88A1uGLVo5H8B}|H2_Z44+ zZaJu0am1O5!4kZSs?fsQ%*52hA%=IQqY@KRevfm>=5SZ)sa`V*)IJoSOI*`dfFf0& zdyOFEAG-=jo$Hz}gz;y3*eBu&Us;c3)CKo_p9~5#M)MdLS|!lH2GF4&hyB8`bhB}< z^)7i=lSXWV&<9~$qF}#~wpl7%;$tP*d*Wpay^zfT z{_ngOonq}FBr2zS84I}L4qg21c(b!^#vigZxN~tH06OE__>2?;FRJn<-s~+!2=2frN zuueICi2Ip^#+~_}Vs9 z&^(k$!u{O*p=XRiFOcokt2|vzvF)vabQ1t$Ep<@`({QB?99|Zm^+vA*t3l}oLTt!G z)61tyZ%U^pFl~JakkvVY;!E=ginqU_nLJ5-aNCPB@L~6q+2A@z$UKMo6p=|iKUAco z>ca>z6OhX!k`n74PEBBXasg5SN>Ge$qzvK;U%2J5%5uzB(z z?w#qgzK=rb6H5u=A=%cnzAKXtU_u*lOodChBGb`=52iOFunjfeVOm~FezN!M!Jo6y zo58{y)@Zvdx$0S`R@T%#?aWIFYThZhOEByp@w~X{Hc^*)BG)87JgIn8%gXYHFvSwa zNwILwGh$O=`xSZYm0acg{W5+^4PC~mrD6GHmTFuBiN4I#Q#LQb&Tr~0Xw3QqT4va? zXoM5@LxZ}%+7IU$QLmYD@;Lo64xd)6e|Ip}2MQwMFJ3CYz>1pTHW|6KY&cd$UzeYO zVbPiDEj-zZ)i7^2p9y7gv3(ZwJZ0o@g#G441Y{OlamPTJp>vL!zhqzEq&1ps38}X5 zi!y#!UnPuupR=5n5f`U$5TM}WXv0fhw3?*Yghm)GzE7ZSA+8T}5?tNchmVO}2lKt3 zVQ6{c0tt})nby<};@SlA>&;ruWxza$jbgp2B=O}=AD)7I;0cKKz4Y!Y=^-#le8Xsy z{a(8J5DT86ll20&nxkz7N2fnndIEaNr=!0hF)xNU$u0`tsMq4p)t|!HJhWv+V={qD z0PiIwG2A~SI=bgW$BE3K3-9w>ZSD--r_mP+6(0{}K8YciOVgDHq>=Ds)_nS7<@am0 z(k99TTKS8lK5IcEuOUf}QMOS%iC-h6|0!cf_|nw7h*wB>3w$K>6aONkScf2ZlP5AI zWB+2t^ox{-umXqL_ZV@x>D+sL;w!4KRm5`~qkXrP!@VfU^j=PulHS&3I*52Z5p-F3 z%;*&Dj}`cE$jo!T){8IT?5`}W8Scg>< zP>9e_Wmk}wDclYVP>T9DBw?@Y+OncU@jECSa;dhNn{1J*s|z{YOu3kLcD`bi!+R&- zQ_RuGpCp6y%8=V(5I)=nmi-^AA`QYC4u7!wIrE*+bvU|#1&BO!Se^ra=kiOM6CJMR z8`>RgV9|A8ae*vH~heeqdt8|e!(Gf>^^zY5`Gj0hY1YMC@)7`*Fp%z~fH zU@Qt=QmTk9uw`^K0G>Kgkp&2A%0h{(xzw~tkRcyjVIRliiJ+;WilJ0SLT}h~&-Jag zgK4O>E58}ikahf;D8!32g3t7!@gfQPZxDgT(ee(&7@eW_&U~#0D0>%eh*l^Fmlv}T zOt437-6byY$Oo+O^?}V3=+9)rWF8aMp?F?$%K@o%K#CV?0FRqYjuUZ7B9-wHea9Q; zEF&$2Q!Jj&J&k*#QYykhSr~x0#9}SmUFvAzq7BTp#(*SBsiQ|F+TtYa3_4+k(+rB1 z5TX6XmI6ftVMLCY4q`_Ca8Swyekw4PCD2AyU(ri;nOjE{X7f97uoB-sh_2-TJ@oZalo<5Mki9YZrY^DRph-3yqcJVx>hX=OE%7A@&4`qq9GSJLIW1TBDgnPx|~G#nkZ1`s`ye6w|>-PZhv0Y|rEfptj$> z=@K$BzCayV8meji_A*B)h@70fsHiCK6moXm&Jn-%3(MccceWc})1`cUV{S%yqh2+J zroS7b2RpWR`IUaj8c6@-BehCac*)?sEAaZx%f$h^^j!ZSnqr37A>&NHikX%5whFpS zeujPQrc-W+pC|_GgHZSNREbP`HJF-T)&3w-a(iI5Q>di6c2|BV@;TW4_-Io=p339E zNUzpJj@<8GX99Aqd|s+6o_|-`EYM%Q1<}qa<*%fft9KC>1)>KwCR+cGbh@(>Y+A$^3u$oIl_3rA)*>iq+ zc<(u)-sJ8Uq9)K%JUkmRwZZP@IE8BEEc+QiE#Yk`zW!5q@-6@mi-Fv$Ya`}(e)&`NcozLmcn6|X6mS7ryv5q z`E#52&UO_e!|YAlChG&ZGWrhW1mWGz_2YzBZrfeZ@nUI6$ay#O&XJU*qf{3HuEcI4B9H`}+DGJ$m#YWOIaT>2=+5 zX-y}L^&2VGWRI$-@I~T6j-X@^xF!dH^3!@C0_tv==(d$@VB`An3aOgfaFZ}~uYJ^9*Gs~J*CA+Tv!u$w2^|LVPO zTv8Uy$NaxbJTf#>`SxOOhYvSX{M*#R(-;;ho>F_o;?v$D?$$9Ex-KnrPaMw^j;gK_ zIe7=oPGcy1^X5&ldlM0@Tww&Nz-*5!+|!!N1->;K@p5aykv;P)A-v&-?AU(MM7;WT zY_|s!7Fw(&9X)v|Q?>XPQzW37#*Om}Dhj#ND!gZ(gz?iobQOVvHml)F4EGu>pr59Z z%>*2Hbm;^^S_+fd2`M_-Q@woFn05jUhf|~iok|z%;D`tDf&|Wl=3wU8=;<#)7(s>( zv$)s$bRizA-uOccwpxP&yXg?!n}FnJ%_#if=Fq+N7UTj55_xJr)%=PWF2awTUdQU8 zdgLqB%T!wZy(zf!lF6v3`_aBs0r0V0^@EGdGxe_rK%^m zxgRa}%)-a2s6MP&{V%&+MDa3CZrY~?n?lRK#;VVX>g^KK{o+5H7lvPhOc@Jw`#P^> zP0HNlzH$MlxfBC>q;Ax_BR0iXL)vTU3tBj0PWbWV`IT4 z;eXT9BA&ul4tk1=)=IDTU*h;ami<=Ay5>SfQ&R~OsH=#MO@Hj+eS(DNXY}NXTnIl- z#qhoI4^0%=Vd4rm?6O97`D~aAMBdOVX8$R|>il;*YmpOAm@B$oZhNj*Pfq3L(KG3a z#7b>e3{RN9T|!fJ55DFZ{%nMm^2s7_52DJO>Q%Y+6*)nL@Z$a;_sqX-=4a!Eku2@_ zx2GUA!*K{s`s4&|-@4`}FK>}A^BrB_IO95oSA|_c#mev1m6`W8E-yaNTvU#s@6z0v zR}tm)BTF5BZGkX*<5H*nxtHopGP=Ot7ZHxvRY;k(&|iTrgkS))kFFI59_%`kjvcsT ze5P?$0MBc6UrU*kFS~NAb@tn7TqvWC$mlvl`~D>ER<=`c#-4{_)jbxQ6Yw^3(<}?V zUZw|94-#8efrSScAzV4o`}Eq3{hp3>l!J(SkiEzv)o%`8bkU=p;~p2Vjp5@nqgks6v+%n*2V8*tRtx`1Al||3-aZ zucUBe#ugr&EjQXa#S5e`bCu>o)bCEJ%RQ|{)r6Pc_UnIeve`>5P<3^@v)rzh6Qeyg z!BXc(;Q(|D%Zg>UdTfKWsNt)UQ;06T<{PTiCr0*efn+TkYZW?bIMp-vSDW+|{hQ8r z1g}Mns2tX5W=?bYB33I}!jfn?2!*{!JuS9R$Y#xG{K_HwXcoC6cNQLuJlq^zHejj? z(gTn3tD?K2MoHB0R7PnJZW-e56Zt&l$Ank^O#te-`I+pXW|50ml$K5B7$Qh#- zf@wfLQahE*gVPoDisI1=ktPiV5h+F8(O~eDw#mZSz$mkaR0c-(UGwphQ;BUJDNU@h zSl^I71w3zs=X`FqxS#;Pe-b-4VzQadwC^iSDzEeapPXdc(A1xxvsVb{4F8%%nB}5% zYGec7UcYwc{;mCVI*m%b%EOZ~b^NxsEkxW=x8Pv!h#c%+)$H$q)^J`;RL=+GS^o$a zA2GtaPvBgImKM(M=6gML3K6ML-~-H|`dFomU+Wbr;_*^Y^;){Nb*m6lZ2e}cD_bgB z(zZF~%IaGRhtj5{J->p|5YL9jwZT=+8s77j`-isnV^~U+Y=aIG_3hKuCsmXnHLqJA zs%8Mqyis(wi%cod#tem@pQ_Ai6;$n{zs4=$7+_fM$X$vShOqGSH&ZfM?8kImExK@W z4lNP5x?B^9Bes`r3YPDdm`-GM9%k-XR+!6!*mCmj>^+fKgOE2sU5on=$Ssp{OJ-X1 z5A7Ob23x{;*L$+~J~E|b6yGYeanjDQJCa5k4C=p&HG^j~Du@exSDF2hT?bJ2cDHL> zY}W-ecBe}0)v$e$abO{zSUBh(tl2j(pb==H>EACS7-JXtmJxDUB23~0rnORT)L*wd zpS_T8qTfMjpIVlKQ`JBV)?C1XKNW%$tqnB}WslsVD73Tn4Wa9>&nxbYICc;)v8zZ_ z=ejUrx_}&_9eJLS@E3Y*?%6?iIHsB^98#CI&Qx1=;qAK)t*l6QjM3=`J+{0Ey`SXB z6XAlms!D4&rX-?y;#O0N+w!}~>56|NJU~*-8^zL{GCP#`Aw5i=iGoi;We}EozOX9s zZ(rLAij@a&XY2AmG3g|kk3EP=aZggD(BrB&t0W(!V1E0=-)jxC!T81M^Uw)J&_h)| zn-L(olE6FfVI;jZHyl>s$Ow6DOgcXNaQpPA71G8)07Kz{#p>vnZpcrN_N!tk!&)@to!no-W&5p=A{X%4;xM5KRE@$$aQb!75I!MW7Ky@l8ey{g zct8(SC^$G-eI;HrJ1j;$lKv4t9e(F0AySeFn%B$sEZHCbauWs1|l2r#7MmAueX9x@RSh!?Wi^JlnB55UF;Z% zLQ%(pj*J~?Ad+fK)w)B7h)?qR7 zENpXF^!xJo$m;ja>lRzDUwM4auNYm`v~HYEsvt~1wDhViiFo*MmiEZT)#c3ZU&c(8 zH)5E+-LFtml(Vncaa66_S|Oz5x<>=0C7g$4-hbcaTtX85W#74Qcussi>SjLnHa-pt zc3uwf4~e9>q@<|0l&FNbk%XLrl(>Spgs?b#6(8z%hOYQ8cR1r|@8THnUw4p{SCEn2 Wz5}xngEicNL|a{7tsHYY;{O2L7<)kg literal 71855 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 CMY44O literal 85361 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 diff --git a/AltCover.Visualizer/wiki/Annotated.png b/AltCover.Visualizer/wiki/Annotated.png index c7ec3cc948f704589bb2816decb3774b73ad6e2e..8af71150dbadcb86e34705c94dd790c46878fd04 100644 GIT binary patch literal 121380 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®i>VpZe>HG0+wrHR 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 z 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

5Tr`FJ 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%0DkJ_g5r2bKAz-p)~CrNRfPp~;yzFF=*AOtf3vrD z0%YBahe@dM4b1w*mm@om_Q9XwRR$q4)#>S}R9WMolGBECXbU$bK~ya(?&BBE}@ zh;vPE-XvJqnm&Q^-^R1hXX2pDe}hO|b&0}~$%CZJ%Maah49J~}sNWYlD=Hv|fuT zYFuNY`yI&=!}Fp}&#sV{^v2Ag=iT#yR%#f=Jud#MDc+6F#ADq)qT!b?KgSq{(R4}y zX$LSbssye&dd5a~yKXNmFp6162|iQ}dwD3L9aVO^+wU z;!25BHyEyt6XA+2NZqcd&d2pAquw!ySSB$zzFb&? z9&sAfAnQfs!F6O!-fvs~NxIFfnXEPpasfgdx=({x2t*+C5b^v5=ew1x&1Q_8fqz%fU+TJ+zCV;LXCsF#XFxf-4 ziveWp%5u=|{BEb+Gu>bKH2VhlKhCUa2FE|;$>a*?uG30Aqz`#Ux$Flt5!)E~BS`ww z_)cD*L!OD37G~lU;5m&=+#9*VB=1ExhS+!RJU%@1v^fH^Jloa){Rm+ zMBow&i?I(6{vRPRuNY>-&wIW_?Dg%B&mB+Q3McQhpS-(++L=f35_^|)e;kX6?C z$aMSj^Z5MH0UFH+p8o($gu6I?LsIg{WQ~6DSRY2(a7;oPqxlx~ucbgN4>i^#0 zg~MvHk!XM*-k^#(1$O!Wc6P@8D0|;2y7iGMfxT`+rDu+S z8j2x5#0!4jdk9~zf3>&z{Pj^Yv+`hyYdr>53I3JvWM1W%z6QSIQhRhHl-dff2H7L4 zRMqp@;XJ&abzQgS#iEkY_ioX|2eKO=jg^-)!nZYlq35JjSVUZi!#mO73-@Xl@X&aM z*yu5eaV9Dz%jcE`GCuJ}0Ov5vxT-6tY}8QyjdARLvvO%CX?2aR;~AGa^Iw^$<^fOM z*PTV(Hg#ejFLFd?w&6KJR3GCe5!CVbzHUqnx{_qIuqxS0+Eb@X?`$5g+uRLz&Xu^K z{8aMOn8!#P1D;!K0u@CaP7rxJvyF*+KVD8YGW+u@SWMpj)_!rr?7!#s^PR;^9xX&j ztRXQ`PbfxgYDyT!@x0Qz#Y)CP!@7GO-yYxt!ji#x`BHK5hk-ymITlMIfiw3NyXQj5 z0Ea_gUD)bb8SC%gTlK#F`wC^Zd3+xXz)e4{i0<5eatsOXfpN}vtlKKd$>LtGdva*7 zSI}zgzW@XZq?h@60HG3BLvWds$l|(rfK3md8oe+eUdI2iXD#6HhRJv3zV~LkL7Dkl zBV&Cu`A7V9WQ*DsV1&S`sdhPNA_;*7ATBu9kaF)i5m!@#rG&@Bx-S(UR^>klLP*=c zv1fNk@M7>2o;dwc%DMT%rTV z;NXii`2z8D{P>-E6SP>y_vgg=fJQZowMeEq{fIAf ziuiYc4FI4M3rPFj&1iUML3j48n{7QnJ>gbSnS-r{BtlVV=hT*Ofvoe}^?(hVzP3oT zWiJ^=qHXpD(Pb;0UW7sFUlvz?$OuYOlYcQ(A)K6?y7vgUV)H*ESHr6E8y2ByD_Fr_ z;DKjC=8kwGiSHhOPh>i|X}s#`|9U+pgmfg+SshOb=(vRj zKtoxpZK(r0DpU_M-p~dHOAkg?Dnk}1ypxnoJ1qn^|KwN0X{-ma6%U_~RKa_uyGU6&&KD9C zY$)!_&o{9ebP3IAz13I7hp^%#+XU8&P>-!W8MzpycgX74v$Am}=}ud%$`4L3*76A| zOFkvOSUapo*@Trc6PO{*{I@`4PpUm{sEx9h@t*eSQpvBhnYG1gE!;A%Ht_-FD6;&* zjL0vdb~-uG6Hxu2R}Vcx;nm<;>z-Z(Ol);36o7i@2f&zf1OpafG@cMqq<+4=Y7pJ< zNZ&ehq4eHtdsyz|f1q}RNQSi5wvGMu=r>nhny@pfnQS0~Sa|tFwmQpZamzb$wxzBA z+30~}_#&($aYBl|HvrMX9d1QCrFW`22tR`7!NYAG-mQ~?z-YIzn}2e(^aekkhd+I) zac@%cbR)#)>xZT%ubb{@L9$!-AA&>-7=mDG8CJQPVAw;55nyMS^v)u z{GYvGw`|nlDO<(=vnHfCBmCd1$Nz6}80(Hl;Sb;U|7-}khIwt9&XE)yOmnCQieK^I OkAaSfcAchU%>M#e_N-_C diff --git a/AltCover.Visualizer/wiki/Annotation66a.png b/AltCover.Visualizer/wiki/Annotation66a.png index 943f4f2e1d2bb6e28da4b150cf49881cc89b8b30..dd99f84ecf30079889a9fdf9a7e3773f4c1b1944 100644 GIT binary patch literal 56769 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

JTcnUR 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 literal 87073 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 F{|AtoG-dz* diff --git a/AltCover.Visualizer/wiki/Annotation66b.png b/AltCover.Visualizer/wiki/Annotation66b.png index a3229acbf9430fbdce8dfb52f6eae4b9a194f048..1358429a79706aae54b92124bd0f87eb81821826 100644 GIT binary patch literal 53888 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 ZEGqWr4d-s3Hi9=$D9fwg$dWVm`9Fx#0(<}f literal 77291 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 diff --git a/AltCover.Visualizer/wiki/FontSelection.png b/AltCover.Visualizer/wiki/FontSelection.png index b946e6a32e0feb5c2f204726b6a6b42dfe6b0cdc..ac491efa91b62f263ab2c5836360a3b9aeb7b0c2 100644 GIT binary patch delta 2087 zcmb`IdpOgJAIHBgYq3qaU&FL;D$Il-w;`LmHI7Lxn=BiZwUo;_bFwZ*EDF_G31>zw zxy~(eDVk20P-5zwg=khPeyRBRJ?Ed_^ZWbvJfHXH{XDPd^ZNUfr`@K-K{zN<-2L4F zpgs@sJq82-fH4`1_XmJfQvk?d0l@ke%2)t^Ge`hfj0OP5VgS%S^?Q5p!Fm@Z1*ROy z*V|KWQ{FI8S%Nxhd%@ zaJqVk4sc35Y8di2KXfNyN<=>Z^U~m>sk_i_LDLG;{8m90|F}ndRgjrRrJg3V#KdD~ zHRLaGSa5b)24ZrKnYuGUbwD=1CceTGO-WYpKI^}9N6~k;)fF+jWDjVf?&@ z#oM*K(rBP?x`heNZ)$f{fOISf9%Ybv=bU3i=L zVv#)8F$yvUuj$=Rdhy2FAl}zHPHK{Nb%ym+8ucQ;Wgz$w;@iSsmOE0O)(>1kZ?Mz@ zQEQUir%B8lp+aVXw=Z7nn5gq24i6{)X~Y5Rli7{mxF}vRlFIi%mSwuZo67`#=rE=| z8_|Bku%Mh%k?Wk;|6*)dM;sATw(?NK$5Mq<8Uy~@o7~kT(>|eqlGn1N>F1=s`c|KO zFZ6QwwiXr5S1ZMcOpS!z8>B^|uJf?Ve8g#{nRKaizdF7S+oFis>5!*|cwRgz$PJ#S zeaMYjjT=nI=}|E9j3IJ9jDD~mq#eolxCc~pvrq3pQ~%BTk8~{v1I>jux}t{h{(f_t7=0dg85SyD;>{2oUo$ zgcj78m5u0dC&W@b=2{ILIV#WLFA2}n{qUiZ@yUoZt~q-WV(*vJxt}GTFwNPYSSS|} zmNRs>pSb?C;25UC*URyc$cN|r%kEp}PUuy6^mgv9SK1qY31{wNcgvzQv$~3E)L`OlvbWmZWkWF~-+{f{k4+s?EOlq*3sIIcKc0^b6I4-@ za^_ahremK(cjpa@0XGSvd0Q^R8I_XmRXokucl8zl!{W+jUz{YEYkMWRdjzeb;Z`` zoHZP*`q!tLaON^Rwt2Hg@We@$T**$iYG^L%za#sxW5M=a)sB1jikOmjJ{(4ab!n_& zU9}Mtb6GkzjCRkzZZk1*uQCAk&ce2vry=a@Y_QxgSf+NpR%k0s|2jU|7(HsuX>P8m z6KF398MwRYyUZTj+G=KZ!)Kq>@`-(5y7cVq=12^O>AKO>etrBn!gt<^d*I1oe0we< z-Bao7C#&w>UjMSkC`qb7bqPnvuXpIRfX5h3BQ909EUucZDBufwuDPay_wjprJh{g90HlmRW zHZ4p^`}*d_yOJ?onh#vjtoj2>1M~SyhaRidSOJcX3{eNQ;Y?TJ{)YB-NpDBXHS}nX zcP+q=!r*PN!Q?ak*hwu1p?WhzsPYmap=bR5b(n5A zsogtRu8bSp&w?s`zA#;`mXe*_1>zt^7Su4xcdXTZPmc*r3%W|@1{S~|zpfv0Sc8 zk@v`Z$m+d~Q2pG#A5CiUw1Ek+Ubx%nH!M#%$z9ZSQQzjUrgPF$&YVuXTUFd$`uXy= z{KLAO7_!=qv+~%stchGbD@1UNxdtX^#$TBx)vS%fqFueN&`d}LS7ztOEYld+w#Ylb zlyuZ!^lE0HPo8~dMxHyusb(@h|16%KYI;b3;R6k%XUYwfb;%Y9D=fsrh1jA3N5oQM zMNr^b;)U{xKTY+wDIKW_!Cv|wNyEXHQl+cwZcoB>@OF_!QWrSeaypRF-3uL(`AlKDDIJmX= zNlaL{1ftyFx%Bhh_to0xgx;$L-D2Nhpw0N53v{crk0}_8x}fRQSoL6UarpFjqf_h9 za}g`6V50?(v1atHV#`PW)eXJPEl-jQU8plPW~T)myI5Xf#nK4H z`@mYiv|Rh(5;+x{iLrQZ|2+K4Ss5|h+SrA*GFelW1UZ!@ZrTAqw1n->_|CfjSO>b| z$CGU&XP$e(f#Bc~mr*KQ_Er zNHD6#t<$wxQ33ixa7nfO5%+Qd-Fr}GLOtZ5`;2xMAw%?mL>a36wT{wwLn^oMgPuu< z`f-I59_{@hr{c=A>!z~mp9Sj3K~seMgpV6XZDy>sPg)zFx+=Af$Ti9_fhv`?mV(nI z(s+5bD@5igkUn5?;TqSJE#^?T_;W!468tF2LJ6$A88wF$vefzhFuu};$3`H?5&9$o z{7Bk_s29(OD7V=^rf+U}bVT7nu9gIQG#}rZCs~$|1M0z@zZkc61+})~TcZ8-d}{Zx zswKTpwnCCapbKNJ%xh%wY0EPEo9X>5n;bRBn3H9pXAJNcyqym>e$9GJyUozhh!D0B zy@b9*0HuSzyjjn%I9a#r6RmiVmDZsU!4DQ5M< z*6N+oBo0}Q@!N%Gb3@FYpw9gUf2%0I)3(!6Et%N|pjQh@?A&kR{foZvcic@|dbbi& zuDeoj$z6E?Q6cUI}Y*DW8+v~0_lpW1a5omAfN<^R010O3MRnX(v*_N3YAGG z2mtEvC)D*kx_WSsY9%AWk6;WeJH8T!@`e@P5d9M*zvDj?K&`njL$o>8QX0GarDpi^uy`??>uPYEjGkNDq#up zJYLVP;oWti((Ve|$x0z^nJU-Oj3R$)fC#A{!BFE!1hutzRl$t==^BklGp`YXWP(8e z0`4>zyT^mdLX{8mc&kD*xtEY%?WRk^1k^^!2?9ldD*j&$qE~ClMKmGJqqpkbLz61` zXjq4n{9+U}!JrQq21}DG1TIb&EsQqel9GPHmS7MiDZ2>UKhsC~trXX)0(@6Fup&Mp zltw!9`M~lbd_DzU11;G0>R{3ZoG5S)m)FL+X;{CxbVTpx{wk#4pq$_s-VT8DWPiEBFv_`-# zvISO7nwGI~^GiK($Ak!2oNV8!813auh!m5^uR#HYGBe`_`C6^2bBBEHRkGJ-WW+`u;Z2KV>sMRkx$g?knce2=Tpr3QYuT8sZ!c^ zqnYW(^yz1k6ul71{LemvD1KBiztM@K8cWTPzf1FfW!Ucs``2gqKO6b~usHE>9&#+t VQfNdPgZg_=u$dq%;1oj?=0ABj0)+qo From 17d22406b79b7eb1eeaf05455fb5584fcd5798bb Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Thu, 10 Mar 2022 20:34:44 +0000 Subject: [PATCH 02/81] Maybe fixing the sudden flakiness here? TODO ddItem it --- Build/targets.fsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Build/targets.fsx b/Build/targets.fsx index 114d1ddd4..3e42d4860 100644 --- a/Build/targets.fsx +++ b/Build/targets.fsx @@ -1273,6 +1273,8 @@ _Target "FxCop" (fun _ -> + (dd.Item "blackfox.commandline") + "/lib/netstandard2.0" nugetCache + @@ "blackfox.vswhere/1.1.0/lib/netstandard2.0" + nugetCache @@ "cake.common/" + (dd.Item "cake.common") + "/lib/netstandard2.0" From 381c684b3bf8712af2cead5b3db398aa0aae381f Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Thu, 10 Mar 2022 22:05:21 +0000 Subject: [PATCH 03/81] Work round more flakiness --- AltCover.Monitor.Tests/MonitorTest.fs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/AltCover.Monitor.Tests/MonitorTest.fs b/AltCover.Monitor.Tests/MonitorTest.fs index cf6054fb3..861013926 100644 --- a/AltCover.Monitor.Tests/MonitorTest.fs +++ b/AltCover.Monitor.Tests/MonitorTest.fs @@ -13,12 +13,12 @@ module MonitorTests = AltCover.SolutionRoot.location, "_Reports/MonitorTestWithAltCoverCore.xml" ), - (239, 0) // 0 because NCover format + [ (239, 0) ] // 0 because NCover format Path.Combine( AltCover.SolutionRoot.location, "_Reports/MonitorTestWithAltCoverCoreRunner.net6.0.xml" ), - (240, 37) ] + [ (240, 37); (240, 36) ] ] |> List.filter (fst >> File.Exists) |> List.sortBy (fst >> File.GetCreationTimeUtc) |> List.last @@ -82,4 +82,4 @@ module MonitorTests = let xml, expect = coverageXml () let text = xml |> File.ReadAllText - test' <@ (code, branch) = expect @> text \ No newline at end of file + test' <@ List.exists (fun x -> x = (code, branch)) expect @> text \ No newline at end of file From 17eea029da3a4071744a20de6003a51e2255c6ca Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 5 Apr 2022 14:11:35 +0000 Subject: [PATCH 04/81] Bump NuGet.CommandLine from 6.0.0 to 6.1.0 in /Build Bumps [NuGet.CommandLine](https://github.com/NuGet/NuGet.Client) from 6.0.0 to 6.1.0. - [Release notes](https://github.com/NuGet/NuGet.Client/releases) - [Commits](https://github.com/NuGet/NuGet.Client/commits) --- updated-dependencies: - dependency-name: NuGet.CommandLine dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Build/NuGet.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Build/NuGet.csproj b/Build/NuGet.csproj index 814cdde34..7fde07e86 100644 --- a/Build/NuGet.csproj +++ b/Build/NuGet.csproj @@ -8,7 +8,7 @@ - + all runtime; build; native; contentfiles; analyzers From 428c24b93c097aca38d8892ad9c185a2a08130c8 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Tue, 5 Apr 2022 17:08:54 +0100 Subject: [PATCH 05/81] Update everything else too --- .config/dotnet-tools.json | 2 +- .github/workflows/main.yml | 4 +- AltCover.Api.Tests/AltCover.Api.Tests.fsproj | 2 +- AltCover.Avalonia.FuncUI/About.fs | 166 ------------------ .../AltCover.Avalonia.FuncUI.fsproj | 59 ------- AltCover.Avalonia.FuncUI/Counter.fs | 56 ------ .../DotnetToolSettings.xml | 6 - AltCover.Avalonia.FuncUI/Program.fs | 35 ---- AltCover.Avalonia.FuncUI/Shell.fs | 100 ----------- AltCover.Avalonia.FuncUI/Styles.xaml | 52 ------ .../AltCover.Monitor.Tests.fsproj | 2 +- .../AltCover.Recorder.Tests.fsproj | 2 +- .../AltCover.Recorder2.Tests.fsproj | 2 +- AltCover.Tests/AltCover.Tests.fsproj | 2 +- .../AltCover.ValidateGendarmeEmulation.fsproj | 2 +- .../AltCover.Visualizer.Tests.fsproj | 2 +- AltCover.Visualizer.sln | 8 - Build/build.fsx.lock | 33 ++-- Build/paket.lock | 43 +++-- Build/setup.fsx.lock | 27 +-- Samples/Sample13/Sample13.fsproj | 2 +- Samples/Sample2/Sample2.fsproj | 2 +- Samples/Sample21/Sample21.csproj | 2 +- Samples/Sample23/Sample23.csproj | 2 +- Samples/Sample24/Sample24.csproj | 2 +- Samples/Sample7/Sample7.fsproj | 2 +- appveyor.yml | 2 +- global.json | 2 +- 28 files changed, 75 insertions(+), 546 deletions(-) delete mode 100644 AltCover.Avalonia.FuncUI/About.fs delete mode 100644 AltCover.Avalonia.FuncUI/AltCover.Avalonia.FuncUI.fsproj delete mode 100644 AltCover.Avalonia.FuncUI/Counter.fs delete mode 100644 AltCover.Avalonia.FuncUI/DotnetToolSettings.xml delete mode 100644 AltCover.Avalonia.FuncUI/Program.fs delete mode 100644 AltCover.Avalonia.FuncUI/Shell.fs delete mode 100644 AltCover.Avalonia.FuncUI/Styles.xaml diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 9ff8ebe93..2e6c65cf2 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -3,7 +3,7 @@ "isRoot": true, "tools": { "dotnet-reportgenerator-globaltool": { - "version": "5.0.4", + "version": "5.1.4", "commands": [ "reportgenerator" ] diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3426d76fe..6c3945a55 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -19,7 +19,7 @@ jobs: fetch-depth: 2 - uses: actions/setup-dotnet@v2 with: - dotnet-version: '6.0.200' + dotnet-version: '6.0.201' - name: Tools run: dotnet tool restore - name: Setup @@ -47,7 +47,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-dotnet@v2 with: - dotnet-version: '6.0.200' + dotnet-version: '6.0.201' - name: Tools run: dotnet tool restore - name: Setup diff --git a/AltCover.Api.Tests/AltCover.Api.Tests.fsproj b/AltCover.Api.Tests/AltCover.Api.Tests.fsproj index a05468abb..72eddb6a8 100644 --- a/AltCover.Api.Tests/AltCover.Api.Tests.fsproj +++ b/AltCover.Api.Tests/AltCover.Api.Tests.fsproj @@ -66,7 +66,7 @@ runtime; build; native; contentfiles; analyzers - + diff --git a/AltCover.Avalonia.FuncUI/About.fs b/AltCover.Avalonia.FuncUI/About.fs deleted file mode 100644 index 4017702f8..000000000 --- a/AltCover.Avalonia.FuncUI/About.fs +++ /dev/null @@ -1,166 +0,0 @@ -namespace AltCover.Avalonia.FuncUI - -/// You can use modules in Avalonia.FuncUI in the same way you would do -/// in [Elmish ](https://elmish.github.io/elmish/) -module About = - open Elmish - open Avalonia.FuncUI - open Avalonia.FuncUI.Types - open System.Diagnostics - open System.Runtime.InteropServices - open Avalonia.Controls - open Avalonia.Layout - open Avalonia.FuncUI.DSL - - - type State = { noop: bool } - - type Links = - | AvaloniaRepository - | AvaloniaAwesome - | AvaloniaGitter - | AvaloniaCommunity - | FuncUIRepository - | FuncUIGitter - | FuncUINetTemplates - | FuncUISamples - - type Msg = OpenUrl of Links - - let init = { noop = false }, Cmd.none - - - let update (msg: Msg) (state: State) = - match msg with - | OpenUrl link -> - let url = - match link with - | AvaloniaRepository -> "https://github.com/AvaloniaUI/Avalonia" - | AvaloniaAwesome -> "https://github.com/AvaloniaCommunity/awesome-avalonia" - | AvaloniaGitter -> "https://gitter.im/AvaloniaUI" - | AvaloniaCommunity -> "https://github.com/AvaloniaCommunity" - | FuncUIRepository -> "https://github.com/AvaloniaCommunity/Avalonia.FuncUI" - | FuncUIGitter -> "https://gitter.im/Avalonia-FuncUI" - | FuncUINetTemplates -> - "https://github.com/AvaloniaCommunity/Avalonia.FuncUI.ProjectTemplates" - | FuncUISamples -> - "https://github.com/AvaloniaCommunity/Avalonia.FuncUI/tree/master/src/Examples" - - if RuntimeInformation.IsOSPlatform(OSPlatform.Windows) then - let start = sprintf "/c start %s" url - - Process.Start(ProcessStartInfo("cmd", start)) - |> ignore - else if RuntimeInformation.IsOSPlatform(OSPlatform.Linux) then - Process.Start("xdg-open", url) |> ignore - else if RuntimeInformation.IsOSPlatform(OSPlatform.OSX) then - Process.Start("open", url) |> ignore - - state, Cmd.none - - let headerView (dock: Dock) : IView = - StackPanel.create [ StackPanel.dock dock - StackPanel.verticalAlignment VerticalAlignment.Top - StackPanel.children [ TextBlock.create [ TextBlock.classes [ "title" ] - TextBlock.text - "Thank you for using Avalonia.FuncUI" ] - TextBlock.create [ TextBlock.classes [ "subtitle" ] - TextBlock.text ( - "Avalonia.FuncUI is a project that provides you with an Elmish DSL for Avalonia Controls\n" - + "for you to use in an F# idiomatic way. We hope you like the project and spread the word :)\n" - + "Questions ? Reach to us on Gitter, also check the links below" - ) ] ] ] - |> Helpers.generalize - - - let avaloniaLinksView (dock: Dock) (dispatch: Msg -> unit) : IView = - StackPanel.create [ StackPanel.dock dock - StackPanel.horizontalAlignment HorizontalAlignment.Left - StackPanel.children [ TextBlock.create [ TextBlock.classes [ "title" ] - TextBlock.text "Avalonia" ] - TextBlock.create [ TextBlock.classes [ "link" ] - TextBlock.onTapped - (fun _ -> - dispatch ( - OpenUrl - AvaloniaRepository - )) - TextBlock.text - "Avalonia Repository" ] - TextBlock.create [ TextBlock.classes [ "link" ] - TextBlock.onTapped - (fun _ -> - dispatch ( - OpenUrl - AvaloniaAwesome - )) - TextBlock.text - "Awesome Avalonia" ] - TextBlock.create [ TextBlock.classes [ "link" ] - TextBlock.onTapped - (fun _ -> - dispatch ( - OpenUrl - AvaloniaGitter - )) - TextBlock.text "Gitter" ] - TextBlock.create [ TextBlock.classes [ "link" ] - TextBlock.onTapped - (fun _ -> - dispatch ( - OpenUrl - AvaloniaCommunity - )) - TextBlock.text - "Avalonia Community" ] ] ] - |> Helpers.generalize - - let avaloniaFuncUILinksView (dock: Dock) (dispatch: Msg -> unit) : IView = - StackPanel.create [ StackPanel.dock dock - StackPanel.horizontalAlignment HorizontalAlignment.Right - StackPanel.children [ TextBlock.create [ TextBlock.classes [ "title" ] - TextBlock.text - "Avalonia.FuncUI" ] - TextBlock.create [ TextBlock.classes [ "link" ] - TextBlock.onTapped - (fun _ -> - dispatch ( - OpenUrl - FuncUIRepository - )) - TextBlock.text - "Avalonia.FuncUI Repository" ] - TextBlock.create [ TextBlock.classes [ "link" ] - TextBlock.onTapped - (fun _ -> - dispatch ( - OpenUrl - FuncUIGitter - )) - TextBlock.text "Gitter" ] - TextBlock.create [ TextBlock.classes [ "link" ] - TextBlock.onTapped - (fun _ -> - dispatch ( - OpenUrl - FuncUINetTemplates - )) - TextBlock.text - ".Net Templates" ] - TextBlock.create [ TextBlock.classes [ "link" ] - TextBlock.onTapped - (fun _ -> - dispatch ( - OpenUrl - FuncUISamples - )) - TextBlock.text "Samples" ] ] ] - |> Helpers.generalize - - let view (state: State) (dispatch: Msg -> unit) = - DockPanel.create [ DockPanel.horizontalAlignment HorizontalAlignment.Center - DockPanel.verticalAlignment VerticalAlignment.Top - DockPanel.margin (0.0, 20.0, 0.0, 0.0) - DockPanel.children [ headerView Dock.Top - avaloniaLinksView Dock.Left dispatch - avaloniaFuncUILinksView Dock.Right dispatch ] ] \ No newline at end of file diff --git a/AltCover.Avalonia.FuncUI/AltCover.Avalonia.FuncUI.fsproj b/AltCover.Avalonia.FuncUI/AltCover.Avalonia.FuncUI.fsproj deleted file mode 100644 index 4a644281f..000000000 --- a/AltCover.Avalonia.FuncUI/AltCover.Avalonia.FuncUI.fsproj +++ /dev/null @@ -1,59 +0,0 @@ - - - - Exe - net6.0;netstandard2.0 - net6.0 - AltCover.Visualizer - AltCover.Visualizer - false - True - altcover.visualizer - AVALONIA - - - - TRACE;DEBUG;CODE_ANALYSIS;$(GlobalDefineConstants) - - - TRACE;$(GlobalDefineConstants) - - - - - - - - - - - - - - - - all - runtime; build; native; contentfiles; analyzers - - - - - - - - - - - - - - - - - - - - contentfiles - - - \ No newline at end of file diff --git a/AltCover.Avalonia.FuncUI/Counter.fs b/AltCover.Avalonia.FuncUI/Counter.fs deleted file mode 100644 index d7c7241d9..000000000 --- a/AltCover.Avalonia.FuncUI/Counter.fs +++ /dev/null @@ -1,56 +0,0 @@ -namespace AltCover.Avalonia.FuncUI - -module Counter = - open Avalonia.Controls - open Avalonia.FuncUI.DSL - open Avalonia.Layout - - type State = { count: int } - let init = { count = 0 } - - type Msg = - | Increment - | Decrement - | Reset - - let update (msg: Msg) (state: State) : State = - match msg with - | Increment -> { state with count = state.count + 1 } - | Decrement -> { state with count = state.count - 1 } - | Reset -> init - - let view (state: State) (dispatch) = - DockPanel.create [ DockPanel.children [ StackPanel.create [ StackPanel.dock - Dock.Bottom - StackPanel.margin 5.0 - StackPanel.spacing 5.0 - StackPanel.children [ Button.create [ Button.onClick - (fun _ -> - dispatch - Increment) - Button.content - "+" - Button.classes [ "plus" ] ] - Button.create [ Button.onClick - (fun _ -> - dispatch - Decrement) - Button.content - "-" - Button.classes [ "minus" ] ] - Button.create [ Button.onClick - (fun _ -> - dispatch - Reset) - Button.content - "reset" ] ] ] - - TextBlock.create [ TextBlock.dock Dock.Top - TextBlock.fontSize 48.0 - TextBlock.verticalAlignment - VerticalAlignment.Center - TextBlock.horizontalAlignment - HorizontalAlignment.Center - TextBlock.text ( - string state.count - ) ] ] ] \ No newline at end of file diff --git a/AltCover.Avalonia.FuncUI/DotnetToolSettings.xml b/AltCover.Avalonia.FuncUI/DotnetToolSettings.xml deleted file mode 100644 index b76066af7..000000000 --- a/AltCover.Avalonia.FuncUI/DotnetToolSettings.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/AltCover.Avalonia.FuncUI/Program.fs b/AltCover.Avalonia.FuncUI/Program.fs deleted file mode 100644 index 1e3451758..000000000 --- a/AltCover.Avalonia.FuncUI/Program.fs +++ /dev/null @@ -1,35 +0,0 @@ -namespace AltCover.Avalonia.FuncUI - -open Avalonia -open Avalonia.Controls.ApplicationLifetimes -open Avalonia.FuncUI - -/// This is your application you can ose the initialize method to load styles -/// or handle Life Cycle events of your application -type App() = - inherit Application() - - override this.Initialize() = - this.Styles.Load "avares://Avalonia.Themes.Default/DefaultTheme.xaml" - this.Styles.Load "avares://Avalonia.Themes.Default/Accents/BaseDark.xaml" - this.Styles.Load "avares://AltCover.Avalonia.FuncUI/Styles.xaml" - - override this.OnFrameworkInitializationCompleted() = - match this.ApplicationLifetime with - | :? IClassicDesktopStyleApplicationLifetime as desktopLifetime -> - desktopLifetime.MainWindow <- Shell.MainWindow() - | _ -> () - -module Program = - - [] - let main (args: string []) = -#if NETSTANDARD2_0 // no AppBuilder here - args.Length -#else - AppBuilder - .Configure() - .UsePlatformDetect() - .UseSkia() - .StartWithClassicDesktopLifetime(args) -#endif \ No newline at end of file diff --git a/AltCover.Avalonia.FuncUI/Shell.fs b/AltCover.Avalonia.FuncUI/Shell.fs deleted file mode 100644 index 9075638b9..000000000 --- a/AltCover.Avalonia.FuncUI/Shell.fs +++ /dev/null @@ -1,100 +0,0 @@ -namespace AltCover.Avalonia.FuncUI - -// This is the main module of your application -// here you handle all of your child pages as well as their -// messages and their updates, useful to update multiple parts -// of your application, Please refer to the `view` function -// to see how to handle different kinds of "*child*" controls -module Shell = - open Elmish - open Avalonia - open Avalonia.Controls - open Avalonia.Input - open Avalonia.FuncUI.DSL - open Avalonia.FuncUI - open Avalonia.FuncUI.Builder - open Avalonia.FuncUI.Components.Hosts - open Avalonia.FuncUI.Elmish - - type State = - // store the child state in your main state - { aboutState: About.State - counterState: Counter.State } - - type Msg = - | AboutMsg of About.Msg - | CounterMsg of Counter.Msg - - let init = - let aboutState, aboutCmd = About.init - let counterState = Counter.init - - { aboutState = aboutState - counterState = counterState }, - // If your children controls don't emit any commands - // in the init function, you can just return Cmd.none - // otherwise, you can use a batch operation on all of them - // you can add more init commands as you need - Cmd.batch [ aboutCmd ] - - let update (msg: Msg) (state: State) : State * Cmd<_> = - match msg with - | AboutMsg bpmsg -> - let aboutState, cmd = - About.update bpmsg state.aboutState - - { state with aboutState = aboutState }, - // map the message to the kind of message - // your child control needs to handle - Cmd.map AboutMsg cmd - | CounterMsg countermsg -> - let counterMsg = - Counter.update countermsg state.counterState - - { state with counterState = counterMsg }, - // map the message to the kind of message - // your child control needs to handle - Cmd.none - - let view (state: State) (dispatch) = - DockPanel.create [ DockPanel.children [ TabControl.create [ TabControl.tabStripPlacement - Dock.Top - TabControl.viewItems [ TabItem.create [ TabItem.header - "Counter Sample" - TabItem - .content ( - Counter.view - state.counterState - (CounterMsg - >> dispatch) - ) ] - TabItem.create [ TabItem.header - "About" - TabItem - .content ( - About.view - state.aboutState - (AboutMsg - >> dispatch) - ) ] ] ] ] ] - - // This is the main window of your application - // you can do all sort of useful things here like setting heights and widths - // as well as attaching your dev tools that can be super useful when developing with - // Avalonia - type MainWindow() as this = - inherit HostWindow() - - do - base.Title <- "Full App" - base.Width <- 800.0 - base.Height <- 600.0 - base.MinWidth <- 800.0 - base.MinHeight <- 600.0 - - //this.VisualRoot.VisualRoot.Renderer.DrawFps <- true - //this.VisualRoot.VisualRoot.Renderer.DrawDirtyRects <- true - - Elmish.Program.mkProgram (fun () -> init) update view - |> Program.withHost this - |> Program.run \ No newline at end of file diff --git a/AltCover.Avalonia.FuncUI/Styles.xaml b/AltCover.Avalonia.FuncUI/Styles.xaml deleted file mode 100644 index f85c78aa9..000000000 --- a/AltCover.Avalonia.FuncUI/Styles.xaml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/AltCover.Monitor.Tests/AltCover.Monitor.Tests.fsproj b/AltCover.Monitor.Tests/AltCover.Monitor.Tests.fsproj index d08d65930..78594ae29 100644 --- a/AltCover.Monitor.Tests/AltCover.Monitor.Tests.fsproj +++ b/AltCover.Monitor.Tests/AltCover.Monitor.Tests.fsproj @@ -17,7 +17,7 @@ - + diff --git a/AltCover.Recorder.Tests/AltCover.Recorder.Tests.fsproj b/AltCover.Recorder.Tests/AltCover.Recorder.Tests.fsproj index a4517959b..58397cc4e 100644 --- a/AltCover.Recorder.Tests/AltCover.Recorder.Tests.fsproj +++ b/AltCover.Recorder.Tests/AltCover.Recorder.Tests.fsproj @@ -42,7 +42,7 @@ runtime; build; native; contentfiles; analyzers - + diff --git a/AltCover.Recorder2.Tests/AltCover.Recorder2.Tests.fsproj b/AltCover.Recorder2.Tests/AltCover.Recorder2.Tests.fsproj index c90d06387..5581ace9f 100644 --- a/AltCover.Recorder2.Tests/AltCover.Recorder2.Tests.fsproj +++ b/AltCover.Recorder2.Tests/AltCover.Recorder2.Tests.fsproj @@ -36,7 +36,7 @@ runtime; build; native; contentfiles; analyzers - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/AltCover.Tests/AltCover.Tests.fsproj b/AltCover.Tests/AltCover.Tests.fsproj index b54eb77e3..f5cfb1cc7 100644 --- a/AltCover.Tests/AltCover.Tests.fsproj +++ b/AltCover.Tests/AltCover.Tests.fsproj @@ -140,7 +140,7 @@ ..\ThirdParty\Mono.Options.dll - + diff --git a/AltCover.ValidateGendarmeEmulation/AltCover.ValidateGendarmeEmulation.fsproj b/AltCover.ValidateGendarmeEmulation/AltCover.ValidateGendarmeEmulation.fsproj index 0bdbb3c34..766d05e6c 100644 --- a/AltCover.ValidateGendarmeEmulation/AltCover.ValidateGendarmeEmulation.fsproj +++ b/AltCover.ValidateGendarmeEmulation/AltCover.ValidateGendarmeEmulation.fsproj @@ -55,7 +55,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/AltCover.Visualizer.Tests/AltCover.Visualizer.Tests.fsproj b/AltCover.Visualizer.Tests/AltCover.Visualizer.Tests.fsproj index d626debeb..4b317bccf 100644 --- a/AltCover.Visualizer.Tests/AltCover.Visualizer.Tests.fsproj +++ b/AltCover.Visualizer.Tests/AltCover.Visualizer.Tests.fsproj @@ -31,7 +31,7 @@ runtime; build; native; contentfiles; analyzers - + diff --git a/AltCover.Visualizer.sln b/AltCover.Visualizer.sln index 36a11340e..6842043ff 100644 --- a/AltCover.Visualizer.sln +++ b/AltCover.Visualizer.sln @@ -5,8 +5,6 @@ VisualStudioVersion = 17.0.31903.59 MinimumVisualStudioVersion = 10.0.40219.1 Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "AltCover.Avalonia", "AltCover.Avalonia\AltCover.Avalonia.fsproj", "{48032486-334E-4D3A-B6B6-4E3165A33FBD}" EndProject -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "AltCover.Avalonia.FuncUI", "AltCover.Avalonia.FuncUI\AltCover.Avalonia.FuncUI.fsproj", "{15C2C311-8D52-422C-9C79-F31D91228DE8}" -EndProject Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "AltCover.Visualizer", "AltCover.Visualizer\AltCover.Visualizer.fsproj", "{218DBE5A-CC62-4649-97BC-BC47EC5B4D32}" EndProject Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "AltCover.Visualizer.Tests", "AltCover.Visualizer.Tests\AltCover.Visualizer.Tests.fsproj", "{93D327EE-100B-4837-A0CA-499ADEEADCD2}" @@ -53,10 +51,6 @@ Global {48032486-334E-4D3A-B6B6-4E3165A33FBD}.Debug|Any CPU.Build.0 = Debug|Any CPU {48032486-334E-4D3A-B6B6-4E3165A33FBD}.Release|Any CPU.ActiveCfg = Release|Any CPU {48032486-334E-4D3A-B6B6-4E3165A33FBD}.Release|Any CPU.Build.0 = Release|Any CPU - {15C2C311-8D52-422C-9C79-F31D91228DE8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {15C2C311-8D52-422C-9C79-F31D91228DE8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {15C2C311-8D52-422C-9C79-F31D91228DE8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {15C2C311-8D52-422C-9C79-F31D91228DE8}.Release|Any CPU.Build.0 = Release|Any CPU {218DBE5A-CC62-4649-97BC-BC47EC5B4D32}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {218DBE5A-CC62-4649-97BC-BC47EC5B4D32}.Debug|Any CPU.Build.0 = Debug|Any CPU {218DBE5A-CC62-4649-97BC-BC47EC5B4D32}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -64,8 +58,6 @@ Global {93D327EE-100B-4837-A0CA-499ADEEADCD2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {93D327EE-100B-4837-A0CA-499ADEEADCD2}.Debug|Any CPU.Build.0 = Debug|Any CPU {93D327EE-100B-4837-A0CA-499ADEEADCD2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1EF1ED60-3D8B-446C-BC70-397009F794DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1EF1ED60-3D8B-446C-BC70-397009F794DA}.Release|Any CPU.ActiveCfg = Release|Any CPU {D3383B16-5069-4E9C-9A86-920FA408E925}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D3383B16-5069-4E9C-9A86-920FA408E925}.Debug|Any CPU.Build.0 = Debug|Any CPU {D3383B16-5069-4E9C-9A86-920FA408E925}.Release|Any CPU.ActiveCfg = Release|Any CPU diff --git a/Build/build.fsx.lock b/Build/build.fsx.lock index c3fec1858..23fbae1c5 100644 --- a/Build/build.fsx.lock +++ b/Build/build.fsx.lock @@ -160,10 +160,10 @@ NUGET System.Net.Http (>= 4.3.3) System.Reflection.Emit (>= 4.3) System.ValueTuple (>= 4.5) - Markdig (0.27) - System.Memory (>= 4.5.4) - restriction: || (&& (== net6.0) (>= net452)) (&& (== net6.0) (< netcoreapp2.1) (< netstandard2.1)) (== netstandard2.0) - Microsoft.Build (17.0) - Microsoft.Build.Framework (>= 17.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) + Markdig (0.28.1) + System.Memory (>= 4.5.4) - restriction: || (&& (== net6.0) (>= net452)) (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) + Microsoft.Build (17.1) + Microsoft.Build.Framework (>= 17.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) Microsoft.NET.StringTools (>= 1.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) Microsoft.Win32.Registry (>= 4.3) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) System.Collections.Immutable (>= 5.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) @@ -171,13 +171,14 @@ NUGET System.Reflection.Metadata (>= 1.6) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) System.Security.Principal.Windows (>= 4.7) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) System.Text.Encoding.CodePages (>= 4.0.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - System.Text.Json (>= 5.0.2) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) - System.Threading.Tasks.Dataflow (>= 4.9) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) - Microsoft.Build.Framework (17.0) + System.Text.Json (>= 6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) + System.Threading.Tasks.Dataflow (>= 6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) + Microsoft.Build.Framework (17.1) + Microsoft.Win32.Registry (>= 4.3) System.Security.Permissions (>= 4.7) - Microsoft.Build.Tasks.Core (17.0) - Microsoft.Build.Framework (>= 17.0) - Microsoft.Build.Utilities.Core (>= 17.0) + Microsoft.Build.Tasks.Core (17.1) + Microsoft.Build.Framework (>= 17.1) + Microsoft.Build.Utilities.Core (>= 17.1) Microsoft.NET.StringTools (>= 1.0) Microsoft.Win32.Registry (>= 4.3) System.CodeDom (>= 4.4) @@ -187,9 +188,9 @@ NUGET System.Security.Cryptography.Pkcs (>= 4.7) System.Security.Cryptography.Xml (>= 4.7) System.Security.Permissions (>= 4.7) - System.Threading.Tasks.Dataflow (>= 4.9) - Microsoft.Build.Utilities.Core (17.0) - Microsoft.Build.Framework (>= 17.0) + System.Threading.Tasks.Dataflow (>= 6.0) + Microsoft.Build.Utilities.Core (17.1) + Microsoft.Build.Framework (>= 17.1) Microsoft.NET.StringTools (>= 1.0) Microsoft.Win32.Registry (>= 4.3) System.Collections.Immutable (>= 5.0) @@ -199,7 +200,7 @@ NUGET Microsoft.NET.StringTools (1.0) System.Memory (>= 4.5.4) System.Runtime.CompilerServices.Unsafe (>= 5.0) - Microsoft.NETCore.Platforms (6.0.1) + Microsoft.NETCore.Platforms (6.0.2) Microsoft.NETCore.Targets (5.0) Microsoft.Win32.Registry (5.0) System.Buffers (>= 4.5.1) - restriction: || (&& (== net6.0) (>= monoandroid) (< netstandard1.3)) (&& (== net6.0) (>= monotouch)) (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (>= xamarinios)) (&& (== net6.0) (>= xamarinmac)) (&& (== net6.0) (>= xamarintvos)) (&& (== net6.0) (>= xamarinwatchos)) (== netstandard2.0) @@ -231,7 +232,7 @@ NUGET NuGet.Protocol (6.1) NuGet.Packaging (>= 6.1) NuGet.Versioning (6.1) - NUnit (3.13.2) + NUnit (3.13.3) NETStandard.Library (>= 2.0) runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) runtime.debian.9-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) @@ -399,7 +400,7 @@ NUGET System.Reflection.Emit (4.7) System.Reflection.Emit.ILGeneration (>= 4.7) - restriction: || (&& (== net6.0) (< netcoreapp2.0) (< netstandard2.1)) (&& (== net6.0) (< netstandard1.1)) (&& (== net6.0) (< netstandard2.0)) (&& (== net6.0) (>= uap10.1)) (== netstandard2.0) System.Reflection.Emit.ILGeneration (4.7) - restriction: || (&& (== net6.0) (< netcoreapp2.0) (< netstandard2.1)) (&& (== net6.0) (< netstandard1.1)) (&& (== net6.0) (< netstandard2.0)) (&& (== net6.0) (>= uap10.1)) (== netstandard2.0) - System.Reflection.Metadata (6.0) + System.Reflection.Metadata (6.0.1) System.Collections.Immutable (>= 6.0) System.Reflection.Primitives (4.3) Microsoft.NETCore.Platforms (>= 1.1) diff --git a/Build/paket.lock b/Build/paket.lock index c63b595fe..260780486 100644 --- a/Build/paket.lock +++ b/Build/paket.lock @@ -111,10 +111,11 @@ NUGET FSharp.Core (6.0.1) Microsoft.Bcl.AsyncInterfaces (6.0) - restriction: || (&& (>= net461) (>= net6.0)) (>= net472) (&& (>= net6.0) (< netcoreapp3.1)) System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (>= net461) (&& (>= netstandard2.0) (< netstandard2.1)) - Microsoft.Build (17.0) - restriction: >= netstandard2.0 - Microsoft.Build.Framework (>= 17.0) - restriction: || (>= net472) (>= net6.0) + Microsoft.Build (17.1) - restriction: >= netstandard2.0 + Microsoft.Build.Framework (>= 17.1) - restriction: || (>= net472) (>= net6.0) + Microsoft.IO.Redist (>= 6.0) - restriction: >= net472 Microsoft.NET.StringTools (>= 1.0) - restriction: || (>= net472) (>= net6.0) - Microsoft.VisualStudio.Setup.Configuration.Interop (>= 1.16.30) - restriction: >= net472 + Microsoft.VisualStudio.Setup.Configuration.Interop (>= 3.0.4492) - restriction: >= net472 Microsoft.Win32.Registry (>= 4.3) - restriction: >= net6.0 System.Collections.Immutable (>= 5.0) - restriction: || (>= net472) (>= net6.0) System.Configuration.ConfigurationManager (>= 4.7) - restriction: || (>= net472) (>= net6.0) @@ -122,15 +123,19 @@ NUGET System.Reflection.Metadata (>= 1.6) - restriction: >= net6.0 System.Security.Principal.Windows (>= 4.7) - restriction: >= net6.0 System.Text.Encoding.CodePages (>= 4.0.1) - restriction: >= net6.0 - System.Text.Json (>= 5.0.2) - restriction: || (>= net472) (>= net6.0) - System.Threading.Tasks.Dataflow (>= 4.9) - restriction: || (>= net472) (>= net6.0) - Microsoft.Build.Framework (17.0) - restriction: >= netstandard2.0 + System.Text.Json (>= 6.0) - restriction: || (>= net472) (>= net6.0) + System.Threading.Tasks.Dataflow (>= 6.0) - restriction: || (>= net472) (>= net6.0) + Microsoft.Build.Framework (17.1) - restriction: >= netstandard2.0 + Microsoft.VisualStudio.Setup.Configuration.Interop (>= 3.0.4492) - restriction: >= net472 + Microsoft.Win32.Registry (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) + System.Runtime.CompilerServices.Unsafe (>= 6.0) - restriction: >= net472 System.Security.Permissions (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) - Microsoft.Build.Tasks.Core (17.0) - restriction: >= netstandard2.0 - Microsoft.Build.Framework (>= 17.0) - restriction: >= netstandard2.0 - Microsoft.Build.Utilities.Core (>= 17.0) - restriction: >= netstandard2.0 + Microsoft.Build.Tasks.Core (17.1) - restriction: >= netstandard2.0 + Microsoft.Build.Framework (>= 17.1) - restriction: >= netstandard2.0 + Microsoft.Build.Utilities.Core (>= 17.1) - restriction: >= netstandard2.0 + Microsoft.IO.Redist (>= 6.0) - restriction: >= net472 Microsoft.NET.StringTools (>= 1.0) - restriction: >= netstandard2.0 - Microsoft.VisualStudio.Setup.Configuration.Interop (>= 1.16.30) - restriction: >= net472 + Microsoft.VisualStudio.Setup.Configuration.Interop (>= 3.0.4492) - restriction: >= net472 Microsoft.Win32.Registry (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) System.CodeDom (>= 4.4) - restriction: && (< net472) (>= netstandard2.0) System.Collections.Immutable (>= 5.0) - restriction: >= netstandard2.0 @@ -140,20 +145,24 @@ NUGET System.Security.Cryptography.Pkcs (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) System.Security.Cryptography.Xml (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) System.Security.Permissions (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) - System.Threading.Tasks.Dataflow (>= 4.9) - restriction: >= netstandard2.0 - Microsoft.Build.Utilities.Core (17.0) - restriction: >= netstandard2.0 - Microsoft.Build.Framework (>= 17.0) - restriction: >= netstandard2.0 + System.Threading.Tasks.Dataflow (>= 6.0) - restriction: >= netstandard2.0 + Microsoft.Build.Utilities.Core (17.1) - restriction: >= netstandard2.0 + Microsoft.Build.Framework (>= 17.1) - restriction: >= netstandard2.0 + Microsoft.IO.Redist (>= 6.0) - restriction: >= net472 Microsoft.NET.StringTools (>= 1.0) - restriction: >= netstandard2.0 - Microsoft.VisualStudio.Setup.Configuration.Interop (>= 1.16.30) - restriction: >= net472 + Microsoft.VisualStudio.Setup.Configuration.Interop (>= 3.0.4492) - restriction: >= net472 Microsoft.Win32.Registry (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) System.Collections.Immutable (>= 5.0) - restriction: >= netstandard2.0 System.Configuration.ConfigurationManager (>= 4.7) - restriction: >= netstandard2.0 System.Security.Permissions (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) System.Text.Encoding.CodePages (>= 4.0.1) - restriction: && (< net472) (>= netstandard2.0) + Microsoft.IO.Redist (6.0) - restriction: >= net472 + System.Buffers (>= 4.5.1) - restriction: >= net472 + System.Memory (>= 4.5.4) - restriction: >= net472 Microsoft.NET.StringTools (1.0) - restriction: >= netstandard2.0 System.Memory (>= 4.5.4) - restriction: >= netstandard2.0 System.Runtime.CompilerServices.Unsafe (>= 5.0) - restriction: >= netstandard2.0 - Microsoft.NETCore.Platforms (6.0.1) - restriction: || (&& (>= monoandroid) (>= netcoreapp2.0) (< netstandard1.3)) (&& (>= monoandroid) (>= netcoreapp2.1) (< netstandard1.3)) (&& (< monoandroid) (< net45) (< netcoreapp3.1) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (>= net5.0) (< netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (>= monotouch) (>= netcoreapp2.0)) (&& (>= monotouch) (>= netcoreapp2.1)) (&& (>= net461) (>= netcoreapp2.0)) (&& (>= net461) (>= netcoreapp2.1)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarinios)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarinmac)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarintvos)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarinwatchos)) (&& (>= netcoreapp2.0) (>= uap10.1)) (&& (< netcoreapp2.0) (>= netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (&& (>= netcoreapp2.1) (>= uap10.1)) + Microsoft.NETCore.Platforms (6.0.2) - restriction: || (&& (>= monoandroid) (>= netcoreapp2.0) (< netstandard1.3)) (&& (>= monoandroid) (>= netcoreapp2.1) (< netstandard1.3)) (&& (< monoandroid) (< net45) (< netcoreapp3.1) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (>= net5.0) (< netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (>= monotouch) (>= netcoreapp2.0)) (&& (>= monotouch) (>= netcoreapp2.1)) (&& (>= net461) (>= netcoreapp2.0)) (&& (>= net461) (>= netcoreapp2.1)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarinios)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarinmac)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarintvos)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarinwatchos)) (&& (>= netcoreapp2.0) (>= uap10.1)) (&& (< netcoreapp2.0) (>= netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (&& (>= netcoreapp2.1) (>= uap10.1)) Microsoft.NETCore.Targets (5.0) - restriction: || (&& (< monoandroid) (< net45) (< netcoreapp3.1) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) Microsoft.VisualStudio.Setup.Configuration.Interop (3.1.2196) - restriction: >= net472 Microsoft.Win32.Registry (5.0) - restriction: || (&& (< net45) (>= netstandard2.0)) (&& (< net472) (>= netstandard2.0)) (>= net6.0) @@ -184,7 +193,7 @@ NUGET NuGet.Protocol (6.1) - restriction: >= netstandard2.0 NuGet.Packaging (>= 6.1) - restriction: >= netstandard2.0 NuGet.Versioning (6.1) - restriction: >= netstandard2.0 - System.Buffers (4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard1.1) (>= netstandard2.0)) (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.0)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (&& (>= net5.0) (< netstandard2.1)) (&& (>= net6.0) (< netcoreapp3.1)) (&& (< net6.0) (>= netstandard2.0)) (&& (< net6.0) (>= netstandard2.1)) (&& (< netstandard1.1) (>= netstandard2.0) (>= win8)) (&& (>= netstandard2.0) (< netstandard2.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) + System.Buffers (4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard1.1) (>= netstandard2.0)) (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.0)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (&& (>= net5.0) (< netstandard2.1)) (&& (< net6.0) (>= netstandard2.0)) (&& (< net6.0) (>= netstandard2.1)) (&& (< netstandard1.1) (>= netstandard2.0) (>= win8)) (&& (>= netstandard2.0) (< netstandard2.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) System.CodeDom (6.0) - restriction: && (< net472) (>= netstandard2.0) System.Collections.Immutable (6.0) System.Memory (>= 4.5.4) - restriction: || (>= net461) (&& (< net6.0) (>= netstandard2.0)) @@ -209,7 +218,7 @@ NUGET System.Reactive (5.0) - restriction: >= netstandard2.0 System.Runtime.InteropServices.WindowsRuntime (>= 4.3) - restriction: && (< net472) (< netcoreapp3.1) (>= netstandard2.0) System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (>= net472) (&& (< netcoreapp3.1) (>= netstandard2.0)) (>= uap10.1) - System.Reflection.Metadata (6.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net6.0) + System.Reflection.Metadata (6.0.1) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net6.0) System.Collections.Immutable (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) System.Resources.Extensions (6.0) - restriction: >= netstandard2.0 System.Memory (>= 4.5.4) - restriction: || (>= net461) (&& (< net6.0) (>= netstandard2.0)) diff --git a/Build/setup.fsx.lock b/Build/setup.fsx.lock index eeb4b256a..0e317adfd 100644 --- a/Build/setup.fsx.lock +++ b/Build/setup.fsx.lock @@ -92,8 +92,8 @@ NUGET FSharp.Core (>= 4.7.2) System.Reactive (>= 5.0) FSharp.Core (6.0.3) - Microsoft.Build (17.0) - Microsoft.Build.Framework (>= 17.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) + Microsoft.Build (17.1) + Microsoft.Build.Framework (>= 17.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) Microsoft.NET.StringTools (>= 1.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) Microsoft.Win32.Registry (>= 4.3) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) System.Collections.Immutable (>= 5.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) @@ -101,13 +101,14 @@ NUGET System.Reflection.Metadata (>= 1.6) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) System.Security.Principal.Windows (>= 4.7) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) System.Text.Encoding.CodePages (>= 4.0.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - System.Text.Json (>= 5.0.2) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) - System.Threading.Tasks.Dataflow (>= 4.9) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) - Microsoft.Build.Framework (17.0) + System.Text.Json (>= 6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) + System.Threading.Tasks.Dataflow (>= 6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) + Microsoft.Build.Framework (17.1) + Microsoft.Win32.Registry (>= 4.3) System.Security.Permissions (>= 4.7) - Microsoft.Build.Tasks.Core (17.0) - Microsoft.Build.Framework (>= 17.0) - Microsoft.Build.Utilities.Core (>= 17.0) + Microsoft.Build.Tasks.Core (17.1) + Microsoft.Build.Framework (>= 17.1) + Microsoft.Build.Utilities.Core (>= 17.1) Microsoft.NET.StringTools (>= 1.0) Microsoft.Win32.Registry (>= 4.3) System.CodeDom (>= 4.4) @@ -117,9 +118,9 @@ NUGET System.Security.Cryptography.Pkcs (>= 4.7) System.Security.Cryptography.Xml (>= 4.7) System.Security.Permissions (>= 4.7) - System.Threading.Tasks.Dataflow (>= 4.9) - Microsoft.Build.Utilities.Core (17.0) - Microsoft.Build.Framework (>= 17.0) + System.Threading.Tasks.Dataflow (>= 6.0) + Microsoft.Build.Utilities.Core (17.1) + Microsoft.Build.Framework (>= 17.1) Microsoft.NET.StringTools (>= 1.0) Microsoft.Win32.Registry (>= 4.3) System.Collections.Immutable (>= 5.0) @@ -129,7 +130,7 @@ NUGET Microsoft.NET.StringTools (1.0) System.Memory (>= 4.5.4) System.Runtime.CompilerServices.Unsafe (>= 5.0) - Microsoft.NETCore.Platforms (6.0.1) - restriction: || (&& (== net6.0) (< netcoreapp3.1)) (&& (== net6.0) (< netstandard1.2)) (&& (== net6.0) (< netstandard1.3)) (&& (== net6.0) (< netstandard1.5)) (== netstandard2.0) + Microsoft.NETCore.Platforms (6.0.2) - restriction: || (&& (== net6.0) (< netcoreapp3.1)) (&& (== net6.0) (< netstandard1.2)) (&& (== net6.0) (< netstandard1.3)) (&& (== net6.0) (< netstandard1.5)) (== netstandard2.0) Microsoft.NETCore.Targets (5.0) - restriction: || (&& (== net6.0) (< netcoreapp3.1)) (&& (== net6.0) (< netstandard1.2)) (&& (== net6.0) (< netstandard1.3)) (&& (== net6.0) (< netstandard1.5)) (== netstandard2.0) Microsoft.Win32.Registry (5.0) System.Buffers (>= 4.5.1) - restriction: || (&& (== net6.0) (>= monoandroid) (< netstandard1.3)) (&& (== net6.0) (>= monotouch)) (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (>= xamarinios)) (&& (== net6.0) (>= xamarinmac)) (&& (== net6.0) (>= xamarintvos)) (&& (== net6.0) (>= xamarinwatchos)) (== netstandard2.0) @@ -180,7 +181,7 @@ NUGET System.Reactive (5.0) System.Runtime.InteropServices.WindowsRuntime (>= 4.3) - restriction: || (&& (== net6.0) (< netcoreapp3.1)) (== netstandard2.0) System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (&& (== net6.0) (>= net472)) (&& (== net6.0) (< netcoreapp3.1)) (&& (== net6.0) (>= uap10.1)) (== netstandard2.0) - System.Reflection.Metadata (6.0) + System.Reflection.Metadata (6.0.1) System.Collections.Immutable (>= 6.0) System.Resources.Extensions (6.0) System.Memory (>= 4.5.4) - restriction: || (&& (== net6.0) (>= net461)) (== netstandard2.0) diff --git a/Samples/Sample13/Sample13.fsproj b/Samples/Sample13/Sample13.fsproj index 7b0b0dc05..736584934 100644 --- a/Samples/Sample13/Sample13.fsproj +++ b/Samples/Sample13/Sample13.fsproj @@ -6,7 +6,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Samples/Sample2/Sample2.fsproj b/Samples/Sample2/Sample2.fsproj index b5c7bc9cf..428893fca 100644 --- a/Samples/Sample2/Sample2.fsproj +++ b/Samples/Sample2/Sample2.fsproj @@ -18,7 +18,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Samples/Sample21/Sample21.csproj b/Samples/Sample21/Sample21.csproj index 585692d58..56eeb5b7a 100644 --- a/Samples/Sample21/Sample21.csproj +++ b/Samples/Sample21/Sample21.csproj @@ -8,7 +8,7 @@ - + diff --git a/Samples/Sample23/Sample23.csproj b/Samples/Sample23/Sample23.csproj index 3d7658387..24e0cfc02 100644 --- a/Samples/Sample23/Sample23.csproj +++ b/Samples/Sample23/Sample23.csproj @@ -10,7 +10,7 @@ - + diff --git a/Samples/Sample24/Sample24.csproj b/Samples/Sample24/Sample24.csproj index 97151bf83..fae5d8035 100644 --- a/Samples/Sample24/Sample24.csproj +++ b/Samples/Sample24/Sample24.csproj @@ -15,7 +15,7 @@ - + diff --git a/Samples/Sample7/Sample7.fsproj b/Samples/Sample7/Sample7.fsproj index bfe731eee..8d3297a35 100644 --- a/Samples/Sample7/Sample7.fsproj +++ b/Samples/Sample7/Sample7.fsproj @@ -13,7 +13,7 @@ - + all diff --git a/appveyor.yml b/appveyor.yml index 4f6cda2a4..e44f9deb5 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -15,7 +15,7 @@ nuget: disable_publish_on_pr: true install: # SDK version fix - - cinst dotnet-sdk --version 6.0.200 + - cinst dotnet-sdk --version 6.0.201 build_script: - ps: >- $ErrorActionPreference = 'Continue' diff --git a/global.json b/global.json index 0add99201..d85a7b62a 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { - "version": "6.0.200", + "version": "6.0.201", "rollForward": "latestMinor" } } \ No newline at end of file From 8ab61709461f721596475768ef2a397b525ad237 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Apr 2022 13:18:59 +0000 Subject: [PATCH 06/81] Bump actions/upload-artifact from 2 to 3 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 2 to 3. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v2...v3) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/main.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 6c3945a55..af9958dc4 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -28,11 +28,11 @@ jobs: env: COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }} run: dotnet fake run ./Build/build.fsx - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v3 with: name: nupkgs path: _Packagin*/*.nupkg - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v3 if: failure() with: name: reports.windows @@ -54,7 +54,7 @@ jobs: run: dotnet fake run ./Build/setup.fsx - name: Build run: dotnet fake run ./Build/build.fsx - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v3 if: failure() with: name: reports.linux From 77ef0c7981bc4aaa24d8a077d43c4ed599c10c62 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Apr 2022 13:38:25 +0000 Subject: [PATCH 07/81] Bump Pester from 5.3.1 to 5.3.2 in /Build Bumps [Pester](https://github.com/Pester/Pester) from 5.3.1 to 5.3.2. - [Release notes](https://github.com/Pester/Pester/releases) - [Changelog](https://github.com/pester/Pester/blob/main/docs/CHANGELOG.md) - [Commits](https://github.com/Pester/Pester/compare/5.3.1...5.3.2) --- updated-dependencies: - dependency-name: Pester dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Build/NuGet.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Build/NuGet.csproj b/Build/NuGet.csproj index 7fde07e86..80294ce02 100644 --- a/Build/NuGet.csproj +++ b/Build/NuGet.csproj @@ -24,7 +24,7 @@ - + From 8e6d76e4890f38c1a2a9c62a6e340219e8f5b7c8 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Mon, 25 Apr 2022 16:24:41 +0100 Subject: [PATCH 08/81] Bump Pester from 5.3.1 to 5.3.2 --- Build/pester.ps1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Build/pester.ps1 b/Build/pester.ps1 index 84bc3b8cd..5e12396d9 100644 --- a/Build/pester.ps1 +++ b/Build/pester.ps1 @@ -3,10 +3,10 @@ param([string]$ACV="0.0.0.0", [string]$ReportName="!:!", [string]$FolderName="!: Import-Module (Join-Path $($FolderName) "AltCover.PowerShell.dll") Invoke-Altcover -? -Import-Module "./packages/pester/5.3.1/tools/Pester.psm1" +Import-Module "./packages/pester/5.3.2/tools/Pester.psm1" $configuration = [PesterConfiguration]::Default $configuration.Run.Path = '.\Build' $configuration.Run.Exit = $true $configuration.TestResult.Enabled = $true $configuration.TestResult.OutputPath = "./_Reports/$($ReportName).xml" -Invoke-Pester -Configuration $configuration \ No newline at end of file +Invoke-Pester -Configuration $configuration From 78940f11201ae228e7dcd6d2fb626adf9feb6db2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 29 Apr 2022 13:33:40 +0000 Subject: [PATCH 09/81] Bump Pester from 5.3.2 to 5.3.3 in /Build Bumps [Pester](https://github.com/Pester/Pester) from 5.3.2 to 5.3.3. - [Release notes](https://github.com/Pester/Pester/releases) - [Changelog](https://github.com/pester/Pester/blob/main/docs/CHANGELOG.md) - [Commits](https://github.com/Pester/Pester/compare/5.3.2...5.3.3) --- updated-dependencies: - dependency-name: Pester dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Build/NuGet.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Build/NuGet.csproj b/Build/NuGet.csproj index 80294ce02..3ae14aa62 100644 --- a/Build/NuGet.csproj +++ b/Build/NuGet.csproj @@ -24,7 +24,7 @@ - + From fdbad83081110da969d831dfa4df37272c8971dc Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Fri, 29 Apr 2022 14:42:04 +0100 Subject: [PATCH 10/81] Bump Pester from 5.3.2 to 5.3.3 --- Build/pester.ps1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Build/pester.ps1 b/Build/pester.ps1 index 5e12396d9..fa5fccbc5 100644 --- a/Build/pester.ps1 +++ b/Build/pester.ps1 @@ -3,10 +3,10 @@ param([string]$ACV="0.0.0.0", [string]$ReportName="!:!", [string]$FolderName="!: Import-Module (Join-Path $($FolderName) "AltCover.PowerShell.dll") Invoke-Altcover -? -Import-Module "./packages/pester/5.3.2/tools/Pester.psm1" +Import-Module "./packages/pester/5.3.3/tools/Pester.psm1" $configuration = [PesterConfiguration]::Default $configuration.Run.Path = '.\Build' $configuration.Run.Exit = $true $configuration.TestResult.Enabled = $true $configuration.TestResult.OutputPath = "./_Reports/$($ReportName).xml" -Invoke-Pester -Configuration $configuration +Invoke-Pester -Configuration $configuration \ No newline at end of file From a7d46b25b27a6fb93557c3ebb39c51fe64f06aaa Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Thu, 28 Apr 2022 18:08:45 +0100 Subject: [PATCH 11/81] Fix documentation to reflect long-ago reorganization to an Engine assembly --- AltCover.Engine/Tasks.fsi | 4 ++-- docs/AltCover.Engine/Tasks-fsapidoc.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/AltCover.Engine/Tasks.fsi b/AltCover.Engine/Tasks.fsi index 925579ddb..1a255ef26 100644 --- a/AltCover.Engine/Tasks.fsi +++ b/AltCover.Engine/Tasks.fsi @@ -1,8 +1,8 @@ -// Both the .net framework/mono and .net core releases publish MSBuild tasks from the main assembly (AltCover.exe or AltCover.dll, respectively) that wrap the command-line functionality (as documented here under [Usage](https://github.com/SteveGilham/altcover/wiki/Usage)). +// Both the .net framework/mono and .net core releases publish MSBuild tasks from the engine assembly (AltCover.Engine.dll) that wrap the command-line functionality (as documented here under [Usage](https:github.com/SteveGilham/altcover/wiki/Usage)). // // # namespace `AltCover` // -// For the C# programmer, attributes have the extran angle-brackets, while `member [Name] : [type] with get, set` is a `[type]` valued property called `[Name]`; and `string array` is just `string[]` spelled out longhand. +// For the C# programmer, attributes have the extra angle-brackets, while `member [Name] : [type] with get, set` is a `[type]` valued property called `[Name]`; and `string array` is just `string[]` spelled out longhand. // // // For `AltCover.Prepare` and `AltCover.Collect`, the task parameters match the command line arguments in name and function, except that `SymbolDirectories` is pluralised, `SingleVisit` represents the `--single` option, `ExposeReturnCode` is the converse of the command line option `dropReturnCode`, and `CommandLine` is everything after a `--` . If `AltCover.Collect`'s `Executable` parameter is set, that switches the virtual `--collect` flag off. diff --git a/docs/AltCover.Engine/Tasks-fsapidoc.md b/docs/AltCover.Engine/Tasks-fsapidoc.md index a1f357fcc..8596dd0f1 100644 --- a/docs/AltCover.Engine/Tasks-fsapidoc.md +++ b/docs/AltCover.Engine/Tasks-fsapidoc.md @@ -1,10 +1,10 @@ -Both the .net framework/mono and .net core releases publish MSBuild tasks from the main assembly (AltCover.exe or AltCover.dll, respectively) that wrap the command-line functionality (as documented here under [Usage](https:github.com/SteveGilham/altcover/wiki/Usage)). +Both the .net framework/mono and .net core releases publish MSBuild tasks from the engine assembly (AltCover.Engine.dll) that wrap the command-line functionality (as documented here under [Usage](https:github.com/SteveGilham/altcover/wiki/Usage)). # namespace `AltCover` -For the C# programmer, attributes have the extran angle-brackets, while `member [Name] : [type] with get, set` is a `[type]` valued property called `[Name]`; and `string array` is just `string[]` spelled out longhand. +For the C# programmer, attributes have the extra angle-brackets, while `member [Name] : [type] with get, set` is a `[type]` valued property called `[Name]`; and `string array` is just `string[]` spelled out longhand. For `AltCover.Prepare` and `AltCover.Collect`, the task parameters match the command line arguments in name and function, except that `SymbolDirectories` is pluralised, `SingleVisit` represents the `--single` option, `ExposeReturnCode` is the converse of the command line option `dropReturnCode`, and `CommandLine` is everything after a `--` . If `AltCover.Collect`'s `Executable` parameter is set, that switches the virtual `--collect` flag off. From 0a43c5a2b837c83a9726a8631babff2dba8ae67c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 May 2022 13:31:31 +0000 Subject: [PATCH 12/81] Bump altcode.gendarme from 2022.2.17.8350 to 2022.5.15.11273 in /Build Bumps [altcode.gendarme](https://github.com/SteveGilham/Gendarme) from 2022.2.17.8350 to 2022.5.15.11273. - [Release notes](https://github.com/SteveGilham/Gendarme/releases) - [Changelog](https://github.com/SteveGilham/Gendarme/blob/trunk/ReleaseNotes%20-%20Previously.md) - [Commits](https://github.com/SteveGilham/Gendarme/commits) --- updated-dependencies: - dependency-name: altcode.gendarme dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Build/NuGet.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Build/NuGet.csproj b/Build/NuGet.csproj index 3ae14aa62..1f3d33c4b 100644 --- a/Build/NuGet.csproj +++ b/Build/NuGet.csproj @@ -26,7 +26,7 @@ - + From 3ec4cd13bbbe64984cc8cc6a1a80bddc4eba32c8 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Mon, 16 May 2022 20:29:59 +0100 Subject: [PATCH 13/81] SDK updates alongside v6.0.300 --- .github/workflows/main.yml | 4 +- AltCover.Api.Tests/AltCover.Api.Tests.fsproj | 4 +- AltCover.Avalonia/AltCover.Avalonia.fsproj | 6 +- AltCover.DotNet/AltCover.DotNet.fsproj | 2 +- AltCover.Engine/AltCover.Engine.fsproj | 2 +- .../AltCover.Expecto.Tests.fsproj | 4 +- ...tCover.Fake.DotNet.Testing.AltCover.fsproj | 2 +- AltCover.Fake/AltCover.Fake.fsproj | 2 +- .../AltCover.Monitor.Tests.fsproj | 4 +- .../AltCover.PowerShell.fsproj | 2 +- .../AltCover.Recorder.Tests.fsproj | 16 +++- .../AltCover.Recorder2.Tests.fsproj | 4 +- AltCover.Tests/AltCover.Tests.fsproj | 4 +- AltCover.Toolkit/AltCover.Toolkit.fsproj | 2 +- AltCover.UICommon/AltCover.UICommon.fsproj | 2 +- .../AltCover.ValidateGendarmeEmulation.fsproj | 4 +- .../AltCover.Visualizer.Tests.fsproj | 4 +- .../AltCover.Visualizer.fsproj | 25 +++-- AltCover/AltCover.fsproj | 2 +- Build/actions.fsx | 3 +- Build/build.fsx.lock | 58 +++++------ Build/paket.lock | 95 ++++++++----------- Build/setup.fsx.lock | 56 +++++------ Build/targets.fsx | 19 ++-- MCS/MCS.fsproj | 2 +- Samples/Sample1/Sample1.csproj | 2 +- Samples/Sample10/Sample10.csproj | 6 +- Samples/Sample12/Sample12.csproj | 2 +- Samples/Sample13/Sample13.fsproj | 4 +- Samples/Sample17/Sample17.fsproj | 4 +- Samples/Sample18/Sample18.fsproj | 6 +- Samples/Sample2/Sample2.fsproj | 4 +- Samples/Sample21/Sample21.csproj | 2 +- Samples/Sample23/Sample23.csproj | 2 +- Samples/Sample24/Sample24.csproj | 2 +- Samples/Sample27/Sample27.fsproj | 6 +- Samples/Sample30/Sample30.fsproj | 6 +- Samples/Sample4/Sample4.fsproj | 8 +- Samples/Sample4/Sample4LongForm.fsproj | 2 +- Samples/Sample6/Sample6.fsproj | 12 ++- Samples/Sample7/Sample7.fsproj | 6 +- appveyor.yml | 2 +- global.json | 2 +- 43 files changed, 207 insertions(+), 199 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index af9958dc4..4e5458687 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -19,7 +19,7 @@ jobs: fetch-depth: 2 - uses: actions/setup-dotnet@v2 with: - dotnet-version: '6.0.201' + dotnet-version: '6.0.300' - name: Tools run: dotnet tool restore - name: Setup @@ -47,7 +47,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-dotnet@v2 with: - dotnet-version: '6.0.201' + dotnet-version: '6.0.300' - name: Tools run: dotnet tool restore - name: Setup diff --git a/AltCover.Api.Tests/AltCover.Api.Tests.fsproj b/AltCover.Api.Tests/AltCover.Api.Tests.fsproj index 72eddb6a8..7f93e8ad3 100644 --- a/AltCover.Api.Tests/AltCover.Api.Tests.fsproj +++ b/AltCover.Api.Tests/AltCover.Api.Tests.fsproj @@ -65,7 +65,7 @@ all runtime; build; native; contentfiles; analyzers - + @@ -87,7 +87,7 @@ - + contentfiles diff --git a/AltCover.Avalonia/AltCover.Avalonia.fsproj b/AltCover.Avalonia/AltCover.Avalonia.fsproj index 1da0f09a0..1744d38c9 100644 --- a/AltCover.Avalonia/AltCover.Avalonia.fsproj +++ b/AltCover.Avalonia/AltCover.Avalonia.fsproj @@ -41,8 +41,8 @@ - - + + all runtime; build; native; contentfiles; analyzers @@ -58,7 +58,7 @@ - + contentfiles diff --git a/AltCover.DotNet/AltCover.DotNet.fsproj b/AltCover.DotNet/AltCover.DotNet.fsproj index 9be285706..a37e713f2 100644 --- a/AltCover.DotNet/AltCover.DotNet.fsproj +++ b/AltCover.DotNet/AltCover.DotNet.fsproj @@ -35,7 +35,7 @@ - + contentfiles diff --git a/AltCover.Engine/AltCover.Engine.fsproj b/AltCover.Engine/AltCover.Engine.fsproj index 1faefbe99..1c3744c85 100644 --- a/AltCover.Engine/AltCover.Engine.fsproj +++ b/AltCover.Engine/AltCover.Engine.fsproj @@ -102,7 +102,7 @@ - + contentfiles diff --git a/AltCover.Expecto.Tests/AltCover.Expecto.Tests.fsproj b/AltCover.Expecto.Tests/AltCover.Expecto.Tests.fsproj index 326aed766..610bd7390 100644 --- a/AltCover.Expecto.Tests/AltCover.Expecto.Tests.fsproj +++ b/AltCover.Expecto.Tests/AltCover.Expecto.Tests.fsproj @@ -23,7 +23,7 @@ - + @@ -32,7 +32,7 @@ - + contentfiles diff --git a/AltCover.Fake.DotNet.Testing.AltCover/AltCover.Fake.DotNet.Testing.AltCover.fsproj b/AltCover.Fake.DotNet.Testing.AltCover/AltCover.Fake.DotNet.Testing.AltCover.fsproj index 2dd453be4..2c58e0bf3 100644 --- a/AltCover.Fake.DotNet.Testing.AltCover/AltCover.Fake.DotNet.Testing.AltCover.fsproj +++ b/AltCover.Fake.DotNet.Testing.AltCover/AltCover.Fake.DotNet.Testing.AltCover.fsproj @@ -53,7 +53,7 @@ - + contentfiles diff --git a/AltCover.Fake/AltCover.Fake.fsproj b/AltCover.Fake/AltCover.Fake.fsproj index bc049ea8b..d51f94139 100644 --- a/AltCover.Fake/AltCover.Fake.fsproj +++ b/AltCover.Fake/AltCover.Fake.fsproj @@ -38,7 +38,7 @@ - + contentfiles diff --git a/AltCover.Monitor.Tests/AltCover.Monitor.Tests.fsproj b/AltCover.Monitor.Tests/AltCover.Monitor.Tests.fsproj index 78594ae29..bd75e3b9b 100644 --- a/AltCover.Monitor.Tests/AltCover.Monitor.Tests.fsproj +++ b/AltCover.Monitor.Tests/AltCover.Monitor.Tests.fsproj @@ -19,7 +19,7 @@ - + ..\ThirdParty\Unquote.dll @@ -50,7 +50,7 @@ - + contentfiles diff --git a/AltCover.PowerShell/AltCover.PowerShell.fsproj b/AltCover.PowerShell/AltCover.PowerShell.fsproj index bdec7287e..e15acc6e1 100644 --- a/AltCover.PowerShell/AltCover.PowerShell.fsproj +++ b/AltCover.PowerShell/AltCover.PowerShell.fsproj @@ -41,7 +41,7 @@ - + contentfiles diff --git a/AltCover.Recorder.Tests/AltCover.Recorder.Tests.fsproj b/AltCover.Recorder.Tests/AltCover.Recorder.Tests.fsproj index 58397cc4e..fa3cc6d86 100644 --- a/AltCover.Recorder.Tests/AltCover.Recorder.Tests.fsproj +++ b/AltCover.Recorder.Tests/AltCover.Recorder.Tests.fsproj @@ -41,16 +41,22 @@ all runtime; build; native; contentfiles; analyzers - - - - + all runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + @@ -69,7 +75,7 @@ - + contentfiles diff --git a/AltCover.Recorder2.Tests/AltCover.Recorder2.Tests.fsproj b/AltCover.Recorder2.Tests/AltCover.Recorder2.Tests.fsproj index 5581ace9f..df19a3f5f 100644 --- a/AltCover.Recorder2.Tests/AltCover.Recorder2.Tests.fsproj +++ b/AltCover.Recorder2.Tests/AltCover.Recorder2.Tests.fsproj @@ -35,7 +35,7 @@ all runtime; build; native; contentfiles; analyzers - + all @@ -46,7 +46,7 @@ - + contentfiles diff --git a/AltCover.Tests/AltCover.Tests.fsproj b/AltCover.Tests/AltCover.Tests.fsproj index f5cfb1cc7..0a38c8608 100644 --- a/AltCover.Tests/AltCover.Tests.fsproj +++ b/AltCover.Tests/AltCover.Tests.fsproj @@ -124,7 +124,7 @@ - + ..\ThirdParty\Unquote.dll @@ -146,7 +146,7 @@ - + contentfiles diff --git a/AltCover.Toolkit/AltCover.Toolkit.fsproj b/AltCover.Toolkit/AltCover.Toolkit.fsproj index 9751c7b0f..2bb9ada4a 100644 --- a/AltCover.Toolkit/AltCover.Toolkit.fsproj +++ b/AltCover.Toolkit/AltCover.Toolkit.fsproj @@ -54,7 +54,7 @@ - + contentfiles diff --git a/AltCover.UICommon/AltCover.UICommon.fsproj b/AltCover.UICommon/AltCover.UICommon.fsproj index 887daf9ad..58f273a39 100644 --- a/AltCover.UICommon/AltCover.UICommon.fsproj +++ b/AltCover.UICommon/AltCover.UICommon.fsproj @@ -102,7 +102,7 @@ - + contentfiles diff --git a/AltCover.ValidateGendarmeEmulation/AltCover.ValidateGendarmeEmulation.fsproj b/AltCover.ValidateGendarmeEmulation/AltCover.ValidateGendarmeEmulation.fsproj index 766d05e6c..91d3ef7ee 100644 --- a/AltCover.ValidateGendarmeEmulation/AltCover.ValidateGendarmeEmulation.fsproj +++ b/AltCover.ValidateGendarmeEmulation/AltCover.ValidateGendarmeEmulation.fsproj @@ -60,7 +60,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - + all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -70,7 +70,7 @@ - + contentfiles diff --git a/AltCover.Visualizer.Tests/AltCover.Visualizer.Tests.fsproj b/AltCover.Visualizer.Tests/AltCover.Visualizer.Tests.fsproj index 4b317bccf..4ff677eb6 100644 --- a/AltCover.Visualizer.Tests/AltCover.Visualizer.Tests.fsproj +++ b/AltCover.Visualizer.Tests/AltCover.Visualizer.Tests.fsproj @@ -30,7 +30,7 @@ all runtime; build; native; contentfiles; analyzers - + @@ -60,7 +60,7 @@ - + contentfiles diff --git a/AltCover.Visualizer/AltCover.Visualizer.fsproj b/AltCover.Visualizer/AltCover.Visualizer.fsproj index 33373aaa6..3a972f739 100644 --- a/AltCover.Visualizer/AltCover.Visualizer.fsproj +++ b/AltCover.Visualizer/AltCover.Visualizer.fsproj @@ -38,19 +38,15 @@ - - - - all - runtime; build; native; contentfiles; analyzers - - - - ..\ThirdParty\Mono.Options.dll - + + + + + ..\ThirdParty\Mono.Options.dll + ..\ThirdParty\gtk-sharp2\gdk-sharp.dll false @@ -72,9 +68,6 @@ false - - - all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -86,8 +79,12 @@ + + all + runtime; build; native; contentfiles; analyzers + - + contentfiles diff --git a/AltCover/AltCover.fsproj b/AltCover/AltCover.fsproj index dd453d8df..5083de175 100644 --- a/AltCover/AltCover.fsproj +++ b/AltCover/AltCover.fsproj @@ -54,7 +54,7 @@ - + contentfiles diff --git a/Build/actions.fsx b/Build/actions.fsx index 03adb0221..8b470fa75 100644 --- a/Build/actions.fsx +++ b/Build/actions.fsx @@ -585,7 +585,8 @@ a:hover {color: #ecc;} |> Seq.map (fun x -> x.Attribute(XName.Get("vc")).Value) |> Seq.toList - let expected = "0 1 1 1 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 2 1 0 1 0 1" + let expected = "0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 2 1 1 1" + //"0 1 1 1 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 2 1 0 1 0 1" // "0 1 1 1 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 2 1 0 1 0 1" //"0 1 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 2 1 0 1 0 1" Assert.That(String.Join(" ", recorded), expected |> Is.EqualTo, sprintf "Bad visit list %A in %s" recorded path) diff --git a/Build/build.fsx.lock b/Build/build.fsx.lock index 23fbae1c5..704785823 100644 --- a/Build/build.fsx.lock +++ b/Build/build.fsx.lock @@ -149,10 +149,10 @@ NUGET FSharp.Core (>= 6.0) FParsec (1.1.1) FSharp.Core (>= 4.3.4) - FSharp.Control.Reactive (5.0.2) + FSharp.Control.Reactive (5.0.5) FSharp.Core (>= 4.7.2) - System.Reactive (>= 5.0) - FSharp.Core (6.0.3) + System.Reactive (>= 5.0 < 6.0) + FSharp.Core (6.0.4) Fuchu (1.1) FSharp.Core (>= 4.3.4) Manatee.Json (13.0.5) @@ -160,10 +160,10 @@ NUGET System.Net.Http (>= 4.3.3) System.Reflection.Emit (>= 4.3) System.ValueTuple (>= 4.5) - Markdig (0.28.1) + Markdig (0.30.2) System.Memory (>= 4.5.4) - restriction: || (&& (== net6.0) (>= net452)) (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) - Microsoft.Build (17.1) - Microsoft.Build.Framework (>= 17.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) + Microsoft.Build (17.2) + Microsoft.Build.Framework (>= 17.2) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) Microsoft.NET.StringTools (>= 1.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) Microsoft.Win32.Registry (>= 4.3) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) System.Collections.Immutable (>= 5.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) @@ -173,12 +173,12 @@ NUGET System.Text.Encoding.CodePages (>= 4.0.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) System.Text.Json (>= 6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) System.Threading.Tasks.Dataflow (>= 6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) - Microsoft.Build.Framework (17.1) + Microsoft.Build.Framework (17.2) Microsoft.Win32.Registry (>= 4.3) System.Security.Permissions (>= 4.7) - Microsoft.Build.Tasks.Core (17.1) - Microsoft.Build.Framework (>= 17.1) - Microsoft.Build.Utilities.Core (>= 17.1) + Microsoft.Build.Tasks.Core (17.2) + Microsoft.Build.Framework (>= 17.2) + Microsoft.Build.Utilities.Core (>= 17.2) Microsoft.NET.StringTools (>= 1.0) Microsoft.Win32.Registry (>= 4.3) System.CodeDom (>= 4.4) @@ -189,25 +189,25 @@ NUGET System.Security.Cryptography.Xml (>= 4.7) System.Security.Permissions (>= 4.7) System.Threading.Tasks.Dataflow (>= 6.0) - Microsoft.Build.Utilities.Core (17.1) - Microsoft.Build.Framework (>= 17.1) + Microsoft.Build.Utilities.Core (17.2) + Microsoft.Build.Framework (>= 17.2) Microsoft.NET.StringTools (>= 1.0) Microsoft.Win32.Registry (>= 4.3) System.Collections.Immutable (>= 5.0) System.Configuration.ConfigurationManager (>= 4.7) - System.Security.Permissions (>= 4.7) - System.Text.Encoding.CodePages (>= 4.0.1) + System.Security.Permissions (>= 4.7) - restriction: == netstandard2.0 + System.Text.Encoding.CodePages (>= 4.0.1) - restriction: == netstandard2.0 Microsoft.NET.StringTools (1.0) System.Memory (>= 4.5.4) System.Runtime.CompilerServices.Unsafe (>= 5.0) - Microsoft.NETCore.Platforms (6.0.2) + Microsoft.NETCore.Platforms (6.0.3) Microsoft.NETCore.Targets (5.0) Microsoft.Win32.Registry (5.0) System.Buffers (>= 4.5.1) - restriction: || (&& (== net6.0) (>= monoandroid) (< netstandard1.3)) (&& (== net6.0) (>= monotouch)) (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (>= xamarinios)) (&& (== net6.0) (>= xamarinmac)) (&& (== net6.0) (>= xamarintvos)) (&& (== net6.0) (>= xamarinwatchos)) (== netstandard2.0) System.Memory (>= 4.5.4) - restriction: || (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (< netcoreapp2.1)) (&& (== net6.0) (>= uap10.1)) (== netstandard2.0) System.Security.AccessControl (>= 5.0) System.Security.Principal.Windows (>= 5.0) - Microsoft.Win32.SystemEvents (6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= netcoreapp3.1)) + Microsoft.Win32.SystemEvents (6.0.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= netcoreapp3.1)) Mono.Posix.NETStandard (1.0) MSBuild.StructuredLogger (2.1.630) Microsoft.Build (>= 16.10) @@ -217,21 +217,21 @@ NUGET NETStandard.Library (2.0.3) Microsoft.NETCore.Platforms (>= 1.1) Newtonsoft.Json (13.0.1) - NuGet.Common (6.1) - NuGet.Frameworks (>= 6.1) - NuGet.Configuration (6.1) - NuGet.Common (>= 6.1) + NuGet.Common (6.2) + NuGet.Frameworks (>= 6.2) + NuGet.Configuration (6.2) + NuGet.Common (>= 6.2) System.Security.Cryptography.ProtectedData (>= 4.4) - NuGet.Frameworks (6.1) - NuGet.Packaging (6.1) + NuGet.Frameworks (6.2) + NuGet.Packaging (6.2) Newtonsoft.Json (>= 13.0.1) - NuGet.Configuration (>= 6.1) - NuGet.Versioning (>= 6.1) + NuGet.Configuration (>= 6.2) + NuGet.Versioning (>= 6.2) System.Security.Cryptography.Cng (>= 5.0) System.Security.Cryptography.Pkcs (>= 5.0) - NuGet.Protocol (6.1) - NuGet.Packaging (>= 6.1) - NuGet.Versioning (6.1) + NuGet.Protocol (6.2) + NuGet.Packaging (>= 6.2) + NuGet.Versioning (6.2) NUnit (3.13.3) NETStandard.Library (>= 2.0) runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) @@ -488,7 +488,7 @@ NUGET System.Text.Encoding (>= 4.3) System.Security.Cryptography.OpenSsl (5.0) System.Formats.Asn1 (>= 5.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= netcoreapp3.0)) - System.Security.Cryptography.Pkcs (6.0) + System.Security.Cryptography.Pkcs (6.0.1) System.Buffers (>= 4.5.1) - restriction: || (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) System.Formats.Asn1 (>= 6.0) System.Memory (>= 4.5.4) - restriction: || (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) @@ -545,7 +545,7 @@ NUGET System.Runtime.CompilerServices.Unsafe (>= 6.0) System.Text.Encodings.Web (6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) System.Runtime.CompilerServices.Unsafe (>= 6.0) - System.Text.Json (6.0.2) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) + System.Text.Json (6.0.4) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) System.Runtime.CompilerServices.Unsafe (>= 6.0) System.Text.Encodings.Web (>= 6.0) System.Threading (4.3) diff --git a/Build/paket.lock b/Build/paket.lock index 260780486..c5209aeb6 100644 --- a/Build/paket.lock +++ b/Build/paket.lock @@ -11,7 +11,7 @@ NUGET Fake.Core.Environment (>= 5.21) Fake.Core.Process (>= 5.21) Fake.DotNet.Cli (>= 5.21) - FSharp.Core (>= 6.0.1) + FSharp.Core (>= 6.0.4) System.Collections.Immutable (>= 1.7.1) remote: https://api.nuget.org/v3/index.json BlackFox.CommandLine (1.0) @@ -105,17 +105,16 @@ NUGET FParsec (1.1.1) - restriction: >= netstandard2.0 FSharp.Core (>= 4.3.4) - restriction: || (>= net45) (>= netstandard2.0) System.ValueTuple (>= 4.4) - restriction: >= net45 - FSharp.Control.Reactive (5.0.2) - restriction: >= netstandard2.0 + FSharp.Control.Reactive (5.0.5) - restriction: >= netstandard2.0 FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - System.Reactive (>= 5.0) - restriction: >= netstandard2.0 - FSharp.Core (6.0.1) + System.Reactive (>= 5.0 < 6.0) - restriction: >= netstandard2.0 + FSharp.Core (6.0.4) Microsoft.Bcl.AsyncInterfaces (6.0) - restriction: || (&& (>= net461) (>= net6.0)) (>= net472) (&& (>= net6.0) (< netcoreapp3.1)) System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (>= net461) (&& (>= netstandard2.0) (< netstandard2.1)) - Microsoft.Build (17.1) - restriction: >= netstandard2.0 - Microsoft.Build.Framework (>= 17.1) - restriction: || (>= net472) (>= net6.0) + Microsoft.Build (17.2) - restriction: >= netstandard2.0 + Microsoft.Build.Framework (>= 17.2) - restriction: || (>= net472) (>= net6.0) Microsoft.IO.Redist (>= 6.0) - restriction: >= net472 Microsoft.NET.StringTools (>= 1.0) - restriction: || (>= net472) (>= net6.0) - Microsoft.VisualStudio.Setup.Configuration.Interop (>= 3.0.4492) - restriction: >= net472 Microsoft.Win32.Registry (>= 4.3) - restriction: >= net6.0 System.Collections.Immutable (>= 5.0) - restriction: || (>= net472) (>= net6.0) System.Configuration.ConfigurationManager (>= 4.7) - restriction: || (>= net472) (>= net6.0) @@ -125,52 +124,47 @@ NUGET System.Text.Encoding.CodePages (>= 4.0.1) - restriction: >= net6.0 System.Text.Json (>= 6.0) - restriction: || (>= net472) (>= net6.0) System.Threading.Tasks.Dataflow (>= 6.0) - restriction: || (>= net472) (>= net6.0) - Microsoft.Build.Framework (17.1) - restriction: >= netstandard2.0 - Microsoft.VisualStudio.Setup.Configuration.Interop (>= 3.0.4492) - restriction: >= net472 - Microsoft.Win32.Registry (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) + Microsoft.Build.Framework (17.2) - restriction: >= netstandard2.0 + Microsoft.Win32.Registry (>= 4.3) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net6.0) System.Runtime.CompilerServices.Unsafe (>= 6.0) - restriction: >= net472 - System.Security.Permissions (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) - Microsoft.Build.Tasks.Core (17.1) - restriction: >= netstandard2.0 - Microsoft.Build.Framework (>= 17.1) - restriction: >= netstandard2.0 - Microsoft.Build.Utilities.Core (>= 17.1) - restriction: >= netstandard2.0 + System.Security.Permissions (>= 4.7) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net6.0) + Microsoft.Build.Tasks.Core (17.2) - restriction: >= netstandard2.0 + Microsoft.Build.Framework (>= 17.2) - restriction: >= netstandard2.0 + Microsoft.Build.Utilities.Core (>= 17.2) - restriction: >= netstandard2.0 Microsoft.IO.Redist (>= 6.0) - restriction: >= net472 Microsoft.NET.StringTools (>= 1.0) - restriction: >= netstandard2.0 - Microsoft.VisualStudio.Setup.Configuration.Interop (>= 3.0.4492) - restriction: >= net472 - Microsoft.Win32.Registry (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) - System.CodeDom (>= 4.4) - restriction: && (< net472) (>= netstandard2.0) + Microsoft.Win32.Registry (>= 4.3) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net6.0) + System.CodeDom (>= 4.4) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net6.0) System.Collections.Immutable (>= 5.0) - restriction: >= netstandard2.0 - System.Net.Http (>= 4.3.4) - restriction: >= net472 - System.Reflection.Metadata (>= 1.6) - restriction: && (< net472) (>= netstandard2.0) + System.Reflection.Metadata (>= 1.6) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net6.0) System.Resources.Extensions (>= 4.6) - restriction: >= netstandard2.0 - System.Security.Cryptography.Pkcs (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) - System.Security.Cryptography.Xml (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) - System.Security.Permissions (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) + System.Security.Cryptography.Pkcs (>= 4.7) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net6.0) + System.Security.Cryptography.Xml (>= 4.7) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net6.0) + System.Security.Permissions (>= 4.7) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net6.0) System.Threading.Tasks.Dataflow (>= 6.0) - restriction: >= netstandard2.0 - Microsoft.Build.Utilities.Core (17.1) - restriction: >= netstandard2.0 - Microsoft.Build.Framework (>= 17.1) - restriction: >= netstandard2.0 + Microsoft.Build.Utilities.Core (17.2) - restriction: >= netstandard2.0 + Microsoft.Build.Framework (>= 17.2) - restriction: >= netstandard2.0 Microsoft.IO.Redist (>= 6.0) - restriction: >= net472 Microsoft.NET.StringTools (>= 1.0) - restriction: >= netstandard2.0 - Microsoft.VisualStudio.Setup.Configuration.Interop (>= 3.0.4492) - restriction: >= net472 - Microsoft.Win32.Registry (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) + Microsoft.Win32.Registry (>= 4.3) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net6.0) System.Collections.Immutable (>= 5.0) - restriction: >= netstandard2.0 System.Configuration.ConfigurationManager (>= 4.7) - restriction: >= netstandard2.0 - System.Security.Permissions (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) - System.Text.Encoding.CodePages (>= 4.0.1) - restriction: && (< net472) (>= netstandard2.0) + System.Security.Permissions (>= 4.7) - restriction: && (< net472) (< net6.0) (>= netstandard2.0) + System.Text.Encoding.CodePages (>= 4.0.1) - restriction: && (< net472) (< net6.0) (>= netstandard2.0) Microsoft.IO.Redist (6.0) - restriction: >= net472 System.Buffers (>= 4.5.1) - restriction: >= net472 System.Memory (>= 4.5.4) - restriction: >= net472 Microsoft.NET.StringTools (1.0) - restriction: >= netstandard2.0 System.Memory (>= 4.5.4) - restriction: >= netstandard2.0 System.Runtime.CompilerServices.Unsafe (>= 5.0) - restriction: >= netstandard2.0 - Microsoft.NETCore.Platforms (6.0.2) - restriction: || (&& (>= monoandroid) (>= netcoreapp2.0) (< netstandard1.3)) (&& (>= monoandroid) (>= netcoreapp2.1) (< netstandard1.3)) (&& (< monoandroid) (< net45) (< netcoreapp3.1) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (>= net5.0) (< netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (>= monotouch) (>= netcoreapp2.0)) (&& (>= monotouch) (>= netcoreapp2.1)) (&& (>= net461) (>= netcoreapp2.0)) (&& (>= net461) (>= netcoreapp2.1)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarinios)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarinmac)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarintvos)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarinwatchos)) (&& (>= netcoreapp2.0) (>= uap10.1)) (&& (< netcoreapp2.0) (>= netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (&& (>= netcoreapp2.1) (>= uap10.1)) + Microsoft.NETCore.Platforms (6.0.3) - restriction: || (&& (>= monoandroid) (>= netcoreapp2.0) (< netstandard1.3)) (&& (>= monoandroid) (>= netcoreapp2.1) (< netstandard1.3)) (&& (< monoandroid) (< net45) (< netcoreapp3.1) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (>= net5.0) (< netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (>= monotouch) (>= netcoreapp2.0)) (&& (>= monotouch) (>= netcoreapp2.1)) (&& (>= net461) (>= netcoreapp2.0)) (&& (>= net461) (>= netcoreapp2.1)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarinios)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarinmac)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarintvos)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarinwatchos)) (&& (>= netcoreapp2.0) (>= uap10.1)) (&& (< netcoreapp2.0) (>= netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (&& (>= netcoreapp2.1) (>= uap10.1)) Microsoft.NETCore.Targets (5.0) - restriction: || (&& (< monoandroid) (< net45) (< netcoreapp3.1) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) - Microsoft.VisualStudio.Setup.Configuration.Interop (3.1.2196) - restriction: >= net472 Microsoft.Win32.Registry (5.0) - restriction: || (&& (< net45) (>= netstandard2.0)) (&& (< net472) (>= netstandard2.0)) (>= net6.0) System.Buffers (>= 4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= uap10.1) System.Security.AccessControl (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (&& (< monoandroid) (>= netcoreapp2.0)) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.1) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) System.Security.Principal.Windows (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (&& (< monoandroid) (>= netcoreapp2.0)) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.1) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - Microsoft.Win32.SystemEvents (6.0) - restriction: >= netcoreapp3.1 + Microsoft.Win32.SystemEvents (6.0.1) - restriction: >= netcoreapp3.1 Mono.Posix.NETStandard (1.0) - restriction: >= netstandard2.0 MSBuild.StructuredLogger (2.1.630) - restriction: >= netstandard2.0 Microsoft.Build (>= 16.10) - restriction: >= netstandard2.0 @@ -178,23 +172,23 @@ NUGET Microsoft.Build.Tasks.Core (>= 16.10) - restriction: >= netstandard2.0 Microsoft.Build.Utilities.Core (>= 16.10) - restriction: >= netstandard2.0 Newtonsoft.Json (13.0.1) - restriction: >= netstandard2.0 - NuGet.Common (6.1) - restriction: >= netstandard2.0 - NuGet.Frameworks (>= 6.1) - restriction: || (>= net45) (>= netstandard2.0) - NuGet.Configuration (6.1) - restriction: >= netstandard2.0 - NuGet.Common (>= 6.1) - restriction: || (>= net45) (>= netstandard2.0) + NuGet.Common (6.2) - restriction: >= netstandard2.0 + NuGet.Frameworks (>= 6.2) - restriction: || (>= net45) (>= netstandard2.0) + NuGet.Configuration (6.2) - restriction: >= netstandard2.0 + NuGet.Common (>= 6.2) - restriction: || (>= net45) (>= netstandard2.0) System.Security.Cryptography.ProtectedData (>= 4.4) - restriction: && (< net45) (>= netstandard2.0) - NuGet.Frameworks (6.1) - restriction: >= netstandard2.0 - NuGet.Packaging (6.1) - restriction: >= netstandard2.0 + NuGet.Frameworks (6.2) - restriction: >= netstandard2.0 + NuGet.Packaging (6.2) - restriction: >= netstandard2.0 Newtonsoft.Json (>= 13.0.1) - restriction: >= netstandard2.0 - NuGet.Configuration (>= 6.1) - restriction: >= netstandard2.0 - NuGet.Versioning (>= 6.1) - restriction: >= netstandard2.0 + NuGet.Configuration (>= 6.2) - restriction: >= netstandard2.0 + NuGet.Versioning (>= 6.2) - restriction: >= netstandard2.0 System.Security.Cryptography.Cng (>= 5.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net5.0) System.Security.Cryptography.Pkcs (>= 5.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net5.0) - NuGet.Protocol (6.1) - restriction: >= netstandard2.0 - NuGet.Packaging (>= 6.1) - restriction: >= netstandard2.0 - NuGet.Versioning (6.1) - restriction: >= netstandard2.0 + NuGet.Protocol (6.2) - restriction: >= netstandard2.0 + NuGet.Packaging (>= 6.2) - restriction: >= netstandard2.0 + NuGet.Versioning (6.2) - restriction: >= netstandard2.0 System.Buffers (4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard1.1) (>= netstandard2.0)) (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.0)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (&& (>= net5.0) (< netstandard2.1)) (&& (< net6.0) (>= netstandard2.0)) (&& (< net6.0) (>= netstandard2.1)) (&& (< netstandard1.1) (>= netstandard2.0) (>= win8)) (&& (>= netstandard2.0) (< netstandard2.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) - System.CodeDom (6.0) - restriction: && (< net472) (>= netstandard2.0) + System.CodeDom (6.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net6.0) System.Collections.Immutable (6.0) System.Memory (>= 4.5.4) - restriction: || (>= net461) (&& (< net6.0) (>= netstandard2.0)) System.Runtime.CompilerServices.Unsafe (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) @@ -212,8 +206,6 @@ NUGET System.Numerics.Vectors (>= 4.4) - restriction: && (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Numerics.Vectors (>= 4.5) - restriction: >= net461 System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (>= monoandroid) (< netstandard1.1)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (>= monotouch) (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Net.Http (4.3.4) - restriction: >= net472 - System.Security.Cryptography.X509Certificates (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) System.Numerics.Vectors (4.5) - restriction: || (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) (&& (>= net6.0) (< netcoreapp3.1)) System.Reactive (5.0) - restriction: >= netstandard2.0 System.Runtime.InteropServices.WindowsRuntime (>= 4.3) - restriction: && (< net472) (< netcoreapp3.1) (>= netstandard2.0) @@ -230,7 +222,7 @@ NUGET System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Security.AccessControl (6.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.0)) (&& (< monoandroid) (>= netcoreapp2.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (>= net461) (>= netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (&& (< net472) (>= netstandard2.0)) (>= netcoreapp2.1) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) System.Security.Principal.Windows (>= 5.0) - restriction: || (>= net461) (&& (< net6.0) (>= netstandard2.0)) - System.Security.Cryptography.Algorithms (4.3.1) - restriction: || (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (>= net5.0) (< netstandard1.4)) (&& (< monoandroid) (>= net5.0) (< netstandard1.6)) (&& (< monoandroid) (>= net5.0) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (>= net5.0) (< netstandard1.4)) (&& (>= net46) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net461) (< net462) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net461) (>= net5.0) (< netstandard1.6)) (&& (>= net462) (>= net5.0) (< netstandard1.6)) (&& (>= net462) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net47) (>= net5.0)) (&& (>= net47) (>= netstandard2.0)) (>= net472) + System.Security.Cryptography.Algorithms (4.3.1) - restriction: || (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (>= net5.0) (< netstandard1.4)) (&& (< monoandroid) (>= net5.0) (< netstandard1.6)) (&& (< monoandroid) (>= net5.0) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (>= net5.0) (< netstandard1.4)) (&& (>= net46) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net461) (< net462) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net461) (>= net5.0) (< netstandard1.6)) (&& (>= net462) (>= net5.0) (< netstandard1.6)) (&& (>= net462) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net47) (< net472) (>= netstandard2.0)) (&& (>= net47) (>= net5.0)) System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463) System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463) System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463) @@ -239,18 +231,15 @@ NUGET Microsoft.NETCore.Platforms (>= 5.0) - restriction: && (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos) System.Formats.Asn1 (>= 5.0) - restriction: && (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Security.Cryptography.Algorithms (>= 4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6) (< uap10.1)) (&& (>= net46) (< netstandard1.4)) (&& (>= net461) (< net462) (< netstandard1.6)) (&& (>= net462) (< netstandard1.6)) (>= net47) - System.Security.Cryptography.Encoding (4.3) - restriction: || (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (>= net5.0) (< netstandard1.4)) (&& (< monoandroid) (>= net5.0) (< netstandard1.6)) (&& (< monoandroid) (>= net5.0) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (>= net5.0) (< netstandard1.4)) (&& (< net46) (>= net461) (< netstandard1.6) (>= netstandard2.0)) (&& (< net46) (>= net462) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net461) (>= net5.0) (< netstandard1.6)) (&& (>= net462) (>= net5.0) (< netstandard1.6)) (&& (>= net463) (>= net5.0) (< netstandard1.4)) (&& (>= net463) (>= net5.0) (< netstandard1.6)) (&& (>= net463) (>= net5.0) (< netstandard2.0)) (&& (>= net463) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net463) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net47) (>= net5.0)) (&& (>= net47) (>= netstandard2.0)) (>= net472) - System.Security.Cryptography.Pkcs (6.0) - restriction: || (&& (< net461) (>= netstandard2.0)) (&& (< net472) (>= netstandard2.0)) (>= net5.0) + System.Security.Cryptography.Encoding (4.3) - restriction: || (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (>= net5.0) (< netstandard1.4)) (&& (< monoandroid) (>= net5.0) (< netstandard1.6)) (&& (< monoandroid) (>= net5.0) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (>= net5.0) (< netstandard1.4)) (&& (< net46) (>= net461) (< netstandard1.6) (>= netstandard2.0)) (&& (< net46) (>= net462) (< netstandard1.6) (>= netstandard2.0)) (&& (< net46) (>= net47) (>= netstandard2.0)) (&& (>= net461) (>= net5.0) (< netstandard1.6)) (&& (>= net462) (>= net5.0) (< netstandard1.6)) (&& (>= net463) (>= net5.0) (< netstandard1.4)) (&& (>= net463) (>= net5.0) (< netstandard1.6)) (&& (>= net463) (>= net5.0) (< netstandard2.0)) (&& (>= net463) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net463) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net47) (< net472) (>= netstandard2.0)) (&& (>= net47) (>= net5.0)) + System.Security.Cryptography.Pkcs (6.0.1) - restriction: || (&& (< net461) (>= netstandard2.0)) (&& (< net472) (>= netstandard2.0)) (>= net5.0) System.Buffers (>= 4.5.1) - restriction: && (< net461) (>= netstandard2.0) (< netstandard2.1) System.Formats.Asn1 (>= 6.0) - restriction: || (&& (< net461) (>= netstandard2.0)) (>= netstandard2.1) System.Memory (>= 4.5.4) - restriction: && (< net461) (>= netstandard2.0) (< netstandard2.1) System.Security.Cryptography.Cng (>= 5.0) - restriction: || (&& (< net461) (>= netstandard2.0) (< netstandard2.1)) (&& (< net6.0) (>= netcoreapp3.1)) (&& (< netcoreapp3.1) (>= netstandard2.1)) System.Security.Cryptography.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (>= net5.0) (< netstandard1.4)) (&& (< monoandroid) (>= net5.0) (< netstandard1.6)) (&& (< monoandroid) (>= net5.0) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (>= net5.0) (< netstandard1.4)) (&& (>= net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< net46) (>= net461) (< netstandard1.6) (>= netstandard2.0)) (&& (< net46) (>= net47) (>= netstandard2.0)) (&& (>= net461) (< net462) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net461) (>= net5.0) (< netstandard1.4)) (&& (>= net461) (>= net5.0) (< netstandard1.6)) (&& (>= net461) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net462) (>= net5.0) (< netstandard1.4)) (&& (>= net462) (>= net5.0) (< netstandard1.6)) (&& (>= net462) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net462) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net463) (>= net5.0) (< netstandard1.4)) (&& (>= net463) (>= net5.0) (< netstandard1.6)) (&& (>= net463) (>= net5.0) (< netstandard2.0)) (&& (>= net463) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net463) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net47) (< net472) (>= netstandard2.0)) (&& (>= net47) (>= net5.0)) (&& (>= net47) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net47) (< netstandard1.6) (>= netstandard2.0)) System.Security.Cryptography.ProtectedData (6.0) - restriction: || (&& (< net45) (>= netstandard2.0)) (&& (< net461) (>= net472)) (>= net6.0) - System.Security.Cryptography.X509Certificates (4.3.2) - restriction: >= net472 - System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< netstandard1.4)) (>= net461) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< netstandard1.4)) (>= net461) - System.Security.Cryptography.Xml (6.0) - restriction: && (< net472) (>= netstandard2.0) + System.Security.Cryptography.Xml (6.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net6.0) System.Memory (>= 4.5.4) - restriction: && (< net461) (< net6.0) (>= netstandard2.0) System.Security.AccessControl (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) System.Security.Cryptography.Pkcs (>= 6.0) - restriction: || (&& (< net461) (>= netstandard2.0)) (>= net6.0) @@ -265,7 +254,7 @@ NUGET System.Buffers (>= 4.5.1) - restriction: || (>= net461) (&& (< netcoreapp3.1) (>= netstandard2.0)) System.Memory (>= 4.5.4) - restriction: || (>= net461) (&& (< netcoreapp3.1) (>= netstandard2.0)) System.Runtime.CompilerServices.Unsafe (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - System.Text.Json (6.0.2) - restriction: || (>= net472) (>= net6.0) + System.Text.Json (6.0.4) - restriction: || (>= net472) (>= net6.0) Microsoft.Bcl.AsyncInterfaces (>= 6.0) - restriction: || (>= net461) (&& (< netcoreapp3.1) (>= netstandard2.0)) System.Buffers (>= 4.5.1) - restriction: || (>= net461) (&& (< netcoreapp3.1) (>= netstandard2.0)) System.Memory (>= 4.5.4) - restriction: || (>= net461) (&& (< netcoreapp3.1) (>= netstandard2.0)) diff --git a/Build/setup.fsx.lock b/Build/setup.fsx.lock index 0e317adfd..d225aa4e4 100644 --- a/Build/setup.fsx.lock +++ b/Build/setup.fsx.lock @@ -88,12 +88,12 @@ NUGET FSharp.Core (>= 6.0) FParsec (1.1.1) FSharp.Core (>= 4.3.4) - FSharp.Control.Reactive (5.0.2) + FSharp.Control.Reactive (5.0.5) FSharp.Core (>= 4.7.2) - System.Reactive (>= 5.0) - FSharp.Core (6.0.3) - Microsoft.Build (17.1) - Microsoft.Build.Framework (>= 17.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) + System.Reactive (>= 5.0 < 6.0) + FSharp.Core (6.0.4) + Microsoft.Build (17.2) + Microsoft.Build.Framework (>= 17.2) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) Microsoft.NET.StringTools (>= 1.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) Microsoft.Win32.Registry (>= 4.3) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) System.Collections.Immutable (>= 5.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) @@ -103,12 +103,12 @@ NUGET System.Text.Encoding.CodePages (>= 4.0.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) System.Text.Json (>= 6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) System.Threading.Tasks.Dataflow (>= 6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) - Microsoft.Build.Framework (17.1) + Microsoft.Build.Framework (17.2) Microsoft.Win32.Registry (>= 4.3) System.Security.Permissions (>= 4.7) - Microsoft.Build.Tasks.Core (17.1) - Microsoft.Build.Framework (>= 17.1) - Microsoft.Build.Utilities.Core (>= 17.1) + Microsoft.Build.Tasks.Core (17.2) + Microsoft.Build.Framework (>= 17.2) + Microsoft.Build.Utilities.Core (>= 17.2) Microsoft.NET.StringTools (>= 1.0) Microsoft.Win32.Registry (>= 4.3) System.CodeDom (>= 4.4) @@ -119,25 +119,25 @@ NUGET System.Security.Cryptography.Xml (>= 4.7) System.Security.Permissions (>= 4.7) System.Threading.Tasks.Dataflow (>= 6.0) - Microsoft.Build.Utilities.Core (17.1) - Microsoft.Build.Framework (>= 17.1) + Microsoft.Build.Utilities.Core (17.2) + Microsoft.Build.Framework (>= 17.2) Microsoft.NET.StringTools (>= 1.0) Microsoft.Win32.Registry (>= 4.3) System.Collections.Immutable (>= 5.0) System.Configuration.ConfigurationManager (>= 4.7) - System.Security.Permissions (>= 4.7) - System.Text.Encoding.CodePages (>= 4.0.1) + System.Security.Permissions (>= 4.7) - restriction: == netstandard2.0 + System.Text.Encoding.CodePages (>= 4.0.1) - restriction: == netstandard2.0 Microsoft.NET.StringTools (1.0) System.Memory (>= 4.5.4) System.Runtime.CompilerServices.Unsafe (>= 5.0) - Microsoft.NETCore.Platforms (6.0.2) - restriction: || (&& (== net6.0) (< netcoreapp3.1)) (&& (== net6.0) (< netstandard1.2)) (&& (== net6.0) (< netstandard1.3)) (&& (== net6.0) (< netstandard1.5)) (== netstandard2.0) + Microsoft.NETCore.Platforms (6.0.3) - restriction: || (&& (== net6.0) (< netcoreapp3.1)) (&& (== net6.0) (< netstandard1.2)) (&& (== net6.0) (< netstandard1.3)) (&& (== net6.0) (< netstandard1.5)) (== netstandard2.0) Microsoft.NETCore.Targets (5.0) - restriction: || (&& (== net6.0) (< netcoreapp3.1)) (&& (== net6.0) (< netstandard1.2)) (&& (== net6.0) (< netstandard1.3)) (&& (== net6.0) (< netstandard1.5)) (== netstandard2.0) Microsoft.Win32.Registry (5.0) System.Buffers (>= 4.5.1) - restriction: || (&& (== net6.0) (>= monoandroid) (< netstandard1.3)) (&& (== net6.0) (>= monotouch)) (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (>= xamarinios)) (&& (== net6.0) (>= xamarinmac)) (&& (== net6.0) (>= xamarintvos)) (&& (== net6.0) (>= xamarinwatchos)) (== netstandard2.0) System.Memory (>= 4.5.4) - restriction: || (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (< netcoreapp2.1)) (&& (== net6.0) (>= uap10.1)) (== netstandard2.0) System.Security.AccessControl (>= 5.0) System.Security.Principal.Windows (>= 5.0) - Microsoft.Win32.SystemEvents (6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= netcoreapp3.1)) + Microsoft.Win32.SystemEvents (6.0.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= netcoreapp3.1)) Mono.Posix.NETStandard (1.0) MSBuild.StructuredLogger (2.1.630) Microsoft.Build (>= 16.10) @@ -145,21 +145,21 @@ NUGET Microsoft.Build.Tasks.Core (>= 16.10) Microsoft.Build.Utilities.Core (>= 16.10) Newtonsoft.Json (13.0.1) - NuGet.Common (6.1) - NuGet.Frameworks (>= 6.1) - NuGet.Configuration (6.1) - NuGet.Common (>= 6.1) + NuGet.Common (6.2) + NuGet.Frameworks (>= 6.2) + NuGet.Configuration (6.2) + NuGet.Common (>= 6.2) System.Security.Cryptography.ProtectedData (>= 4.4) - NuGet.Frameworks (6.1) - NuGet.Packaging (6.1) + NuGet.Frameworks (6.2) + NuGet.Packaging (6.2) Newtonsoft.Json (>= 13.0.1) - NuGet.Configuration (>= 6.1) - NuGet.Versioning (>= 6.1) + NuGet.Configuration (>= 6.2) + NuGet.Versioning (>= 6.2) System.Security.Cryptography.Cng (>= 5.0) System.Security.Cryptography.Pkcs (>= 5.0) - NuGet.Protocol (6.1) - NuGet.Packaging (>= 6.1) - NuGet.Versioning (6.1) + NuGet.Protocol (6.2) + NuGet.Packaging (>= 6.2) + NuGet.Versioning (6.2) System.Buffers (4.5.1) - restriction: || (&& (== net6.0) (>= monoandroid) (< netstandard1.3)) (&& (== net6.0) (>= monotouch)) (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (>= xamarinios)) (&& (== net6.0) (>= xamarinmac)) (&& (== net6.0) (>= xamarintvos)) (&& (== net6.0) (>= xamarinwatchos)) (== netstandard2.0) System.CodeDom (6.0) System.Collections.Immutable (6.0) @@ -195,7 +195,7 @@ NUGET System.Security.Principal.Windows (>= 5.0) - restriction: || (&& (== net6.0) (>= net461)) (== netstandard2.0) System.Security.Cryptography.Cng (5.0) System.Formats.Asn1 (>= 5.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= netcoreapp3.0)) - System.Security.Cryptography.Pkcs (6.0) + System.Security.Cryptography.Pkcs (6.0.1) System.Buffers (>= 4.5.1) - restriction: || (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) System.Formats.Asn1 (>= 6.0) System.Memory (>= 4.5.4) - restriction: || (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) @@ -214,7 +214,7 @@ NUGET System.Runtime.CompilerServices.Unsafe (>= 6.0) System.Text.Encodings.Web (6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) System.Runtime.CompilerServices.Unsafe (>= 6.0) - System.Text.Json (6.0.2) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) + System.Text.Json (6.0.4) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) System.Runtime.CompilerServices.Unsafe (>= 6.0) System.Text.Encodings.Web (>= 6.0) System.Threading.Tasks.Dataflow (6.0) diff --git a/Build/targets.fsx b/Build/targets.fsx index 3e42d4860..12b3d4a4b 100644 --- a/Build/targets.fsx +++ b/Build/targets.fsx @@ -30,6 +30,7 @@ open Fake.Tools.Git open NUnit.Framework open Swensen.Unquote +let fsharpCore = "6.0.4" // maybe automate let Copyright = ref String.Empty let Version = ref String.Empty @@ -3770,7 +3771,7 @@ _Target "Packaging" (fun _ -> ("FAKE.Core.Process", "5.21.0") ("FAKE.DotNet.Cli", "5.21.0") ("System.Collections.Immutable", "1.7.1") - ("FSharp.Core", "6.0.1") ], + ("FSharp.Core", fsharpCore) ], "_Packaging.fake", "./_Generated/altcover.fake.nuspec", "altcover.fake") ] @@ -5344,8 +5345,10 @@ _Target "ApiUse" (fun _ -> let targets = fsproj.Descendants(XName.Get("TargetFrameworks")) |> Seq.head + + let netTarget = "net6.0" - targets.SetValue "netcoreapp2.1" + targets.SetValue netTarget let pack = fsproj.Descendants(XName.Get("PackageReference")) @@ -5355,7 +5358,9 @@ _Target "ApiUse" (fun _ -> XElement( XName.Get "PackageReference", XAttribute(XName.Get "Include", "altcover.api"), - XAttribute(XName.Get "Version", Version.Value) + XAttribute(XName.Get "Version", Version.Value), + XElement(XName.Get "PrivateAssets", "all"), + XElement(XName.Get "IncludeAssets", "build") ) pack.AddBeforeSelf inject @@ -5431,6 +5436,7 @@ _Target "DoIt" let p2 = { AltCover.Primitive.PrepareOptions.Create() with + LocalSource = true CallContext = [| "[Fact]"; "0" |] AssemblyFilter = [| "xunit" |] } @@ -5513,7 +5519,7 @@ Target.runOrDefault "DoIt" group NetcoreBuild storage: none source https://api.nuget.org/v3/index.json - nuget FSharp.Core = 6.0.1 + nuget FSharp.Core = {3} nuget Fake.Core.Target >= 5.21.0 nuget Fake.DotNet.Cli >= 5.21.0 source {0} @@ -5527,7 +5533,8 @@ group NetcoreBuild dependencies, Path.getFullName "./_Packaging.api", Version.Value, - Path.getFullName "./_Packaging.fake" + Path.getFullName "./_Packaging.fake", + fsharpCore ) ) @@ -5537,7 +5544,7 @@ group NetcoreBuild "run ./DriveApi.fsx" // "-v run ./DriveApi.fsx" for verbose mode "running fake script returned with a non-zero exit code" - let x = Path.getFullName "./_ApiUse/_DotnetTest/coverage.netcoreapp2.1.xml" + let x = Path.getFullName ("./_ApiUse/_DotnetTest/coverage." + netTarget + ".xml") Actions.CheckSample4 before x finally diff --git a/MCS/MCS.fsproj b/MCS/MCS.fsproj index 88b01ead4..1b529059d 100644 --- a/MCS/MCS.fsproj +++ b/MCS/MCS.fsproj @@ -24,7 +24,7 @@ - + all diff --git a/Samples/Sample1/Sample1.csproj b/Samples/Sample1/Sample1.csproj index 1dc5e7fbf..fa422976d 100644 --- a/Samples/Sample1/Sample1.csproj +++ b/Samples/Sample1/Sample1.csproj @@ -2,7 +2,7 @@ Exe - netcoreapp2.0;net20 + net6.0;net20 Sample1 false diff --git a/Samples/Sample10/Sample10.csproj b/Samples/Sample10/Sample10.csproj index 977c7d458..014f53ea0 100644 --- a/Samples/Sample10/Sample10.csproj +++ b/Samples/Sample10/Sample10.csproj @@ -1,14 +1,14 @@ - netcoreapp2.1 + net6.0 false - + - + all runtime; build; native; contentfiles; analyzers diff --git a/Samples/Sample12/Sample12.csproj b/Samples/Sample12/Sample12.csproj index c4d26e508..d2a4dee95 100644 --- a/Samples/Sample12/Sample12.csproj +++ b/Samples/Sample12/Sample12.csproj @@ -2,7 +2,7 @@ Exe - netcoreapp2.0;net472 + net6.0;net472 Sample12 diff --git a/Samples/Sample13/Sample13.fsproj b/Samples/Sample13/Sample13.fsproj index 736584934..b0c1c2809 100644 --- a/Samples/Sample13/Sample13.fsproj +++ b/Samples/Sample13/Sample13.fsproj @@ -11,7 +11,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - + @@ -20,7 +20,7 @@ - + contentfiles diff --git a/Samples/Sample17/Sample17.fsproj b/Samples/Sample17/Sample17.fsproj index 91db81a53..bb10b4844 100644 --- a/Samples/Sample17/Sample17.fsproj +++ b/Samples/Sample17/Sample17.fsproj @@ -1,7 +1,7 @@  - netcoreapp2.0;net472 + net6.0;net472 Sample17 $(AssetTargetFallback);netcoreapp1.0; @@ -13,7 +13,7 @@ - + contentfiles diff --git a/Samples/Sample18/Sample18.fsproj b/Samples/Sample18/Sample18.fsproj index 33b54c6ec..c7cb362d0 100644 --- a/Samples/Sample18/Sample18.fsproj +++ b/Samples/Sample18/Sample18.fsproj @@ -20,13 +20,13 @@ all runtime; build; native; contentfiles; analyzers - + ..\..\ThirdParty\Unquote.dll - + all runtime; build; native; contentfiles; analyzers @@ -42,7 +42,7 @@ - + contentfiles diff --git a/Samples/Sample2/Sample2.fsproj b/Samples/Sample2/Sample2.fsproj index 428893fca..7183c3682 100644 --- a/Samples/Sample2/Sample2.fsproj +++ b/Samples/Sample2/Sample2.fsproj @@ -17,7 +17,7 @@ - + all @@ -38,7 +38,7 @@ - + contentfiles diff --git a/Samples/Sample21/Sample21.csproj b/Samples/Sample21/Sample21.csproj index 56eeb5b7a..bb686906c 100644 --- a/Samples/Sample21/Sample21.csproj +++ b/Samples/Sample21/Sample21.csproj @@ -10,7 +10,7 @@ - + diff --git a/Samples/Sample23/Sample23.csproj b/Samples/Sample23/Sample23.csproj index 24e0cfc02..e56797305 100644 --- a/Samples/Sample23/Sample23.csproj +++ b/Samples/Sample23/Sample23.csproj @@ -12,7 +12,7 @@ - + diff --git a/Samples/Sample24/Sample24.csproj b/Samples/Sample24/Sample24.csproj index fae5d8035..5c21027a5 100644 --- a/Samples/Sample24/Sample24.csproj +++ b/Samples/Sample24/Sample24.csproj @@ -17,7 +17,7 @@ - + diff --git a/Samples/Sample27/Sample27.fsproj b/Samples/Sample27/Sample27.fsproj index 7a6253b38..a473af314 100644 --- a/Samples/Sample27/Sample27.fsproj +++ b/Samples/Sample27/Sample27.fsproj @@ -12,7 +12,7 @@ - + ..\..\ThirdParty\Unquote.dll @@ -21,7 +21,7 @@ runtime; build; native; contentfiles; analyzers; buildtransitive - + all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -29,7 +29,7 @@ - + contentfiles diff --git a/Samples/Sample30/Sample30.fsproj b/Samples/Sample30/Sample30.fsproj index 7a6253b38..a473af314 100644 --- a/Samples/Sample30/Sample30.fsproj +++ b/Samples/Sample30/Sample30.fsproj @@ -12,7 +12,7 @@ - + ..\..\ThirdParty\Unquote.dll @@ -21,7 +21,7 @@ runtime; build; native; contentfiles; analyzers; buildtransitive - + all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -29,7 +29,7 @@ - + contentfiles diff --git a/Samples/Sample4/Sample4.fsproj b/Samples/Sample4/Sample4.fsproj index 83a347871..961234c8a 100644 --- a/Samples/Sample4/Sample4.fsproj +++ b/Samples/Sample4/Sample4.fsproj @@ -2,7 +2,7 @@ - netcoreapp2.1;net472 + net6.0;net472 false Sample4 false @@ -32,13 +32,13 @@ all runtime; build; native; contentfiles; analyzers - + ..\..\ThirdParty\Unquote.dll - + all runtime; build; native; contentfiles; analyzers @@ -58,7 +58,7 @@ - + contentfiles diff --git a/Samples/Sample4/Sample4LongForm.fsproj b/Samples/Sample4/Sample4LongForm.fsproj index bb4ae396b..437353cb4 100644 --- a/Samples/Sample4/Sample4LongForm.fsproj +++ b/Samples/Sample4/Sample4LongForm.fsproj @@ -40,7 +40,7 @@ - + all diff --git a/Samples/Sample6/Sample6.fsproj b/Samples/Sample6/Sample6.fsproj index a3e7f1df1..fbc2481b9 100644 --- a/Samples/Sample6/Sample6.fsproj +++ b/Samples/Sample6/Sample6.fsproj @@ -1,11 +1,19 @@  - netcoreapp2.0;net472 + net6.0;net472 Sample6 $(AssetTargetFallback);netcoreapp1.0; + + 52;44 + + + + 52;44 + + @@ -21,7 +29,7 @@ - + contentfiles diff --git a/Samples/Sample7/Sample7.fsproj b/Samples/Sample7/Sample7.fsproj index 8d3297a35..31244a3b8 100644 --- a/Samples/Sample7/Sample7.fsproj +++ b/Samples/Sample7/Sample7.fsproj @@ -12,9 +12,9 @@ - + - + all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -23,7 +23,7 @@ - + contentfiles diff --git a/appveyor.yml b/appveyor.yml index e44f9deb5..c4f893c6d 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -15,7 +15,7 @@ nuget: disable_publish_on_pr: true install: # SDK version fix - - cinst dotnet-sdk --version 6.0.201 + - cinst dotnet-sdk --version 6.0.300 build_script: - ps: >- $ErrorActionPreference = 'Continue' diff --git a/global.json b/global.json index d85a7b62a..d7b60c32f 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { - "version": "6.0.201", + "version": "6.0.300", "rollForward": "latestMinor" } } \ No newline at end of file From e4c841ebeb81590b465b76e47a50fa4d54e9ba42 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Mon, 16 May 2022 20:42:57 +0100 Subject: [PATCH 14/81] All remaining consequent updates --- .config/dotnet-tools.json | 6 +- .gitignore | 3 + AltCover.Engine/CommandLine.fs | 10 +- AltCover.Engine/Instrument.fs | 8 +- AltCover.Tests/AltCoverFSharpTypes.n3.xml | 87 ++++++------ .../OpenCoverForPester.coverlet.xml | 94 +++---------- AltCover.Tests/Runner.Tests.fs | 8 +- AltCover.Tests/Sample4.native.json | 100 +++---------- .../Sample4.syntheticvisits.native.json | 132 +++++------------- AltCover.Tests/Tests.fs | 28 ++-- AltCover.Tests/Tests3.fs | 2 +- AltCover.Tests/XTests.fs | 11 +- AltCover.UICommon/CoverageFile.fs | 12 +- .../AltCover.ValidateGendarmeEmulation.fsproj | 2 +- .../AltCover.Visualizer.fsproj | 4 + Build/Pester.Tests.ps1 | 24 ++-- Build/actions.fsx | 5 +- Build/msbuildtest.proj | 11 +- Build/targets.fsx | 73 ++++++---- Samples/Sample4/Sample4LongForm.fsproj | 4 +- ThirdParty/gtk-sharp2/atk-sharp.dll | Bin 0 -> 189440 bytes 21 files changed, 228 insertions(+), 396 deletions(-) create mode 100644 ThirdParty/gtk-sharp2/atk-sharp.dll diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 2e6c65cf2..e434969c1 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -3,7 +3,7 @@ "isRoot": true, "tools": { "dotnet-reportgenerator-globaltool": { - "version": "5.1.4", + "version": "5.1.6", "commands": [ "reportgenerator" ] @@ -21,13 +21,13 @@ ] }, "altcode.gendarme-tool": { - "version": "2022.2.17.8350", + "version": "2022.5.15.11273", "commands": [ "gendarme" ] }, "dotnet-fsharplint": { - "version": "0.21.1", + "version": "0.21.2", "commands": [ "dotnet-fsharplint" ] diff --git a/.gitignore b/.gitignore index f0d542796..a7cd5e344 100644 --- a/.gitignore +++ b/.gitignore @@ -83,3 +83,6 @@ CoverageReport-* Samples/Sample29/Debug/ Samples/Sample29/SimpleMix/Debug/ ThirdParty/*.nupkg +ThirdParty/gtk-sharp2/atk/ +InternalTrace.*.log +nunit-agent_*.log diff --git a/AltCover.Engine/CommandLine.fs b/AltCover.Engine/CommandLine.fs index a97f4542f..e2b2f9214 100644 --- a/AltCover.Engine/CommandLine.fs +++ b/AltCover.Engine/CommandLine.fs @@ -247,12 +247,12 @@ module internal CommandLine = try result <- f () with - | :? ArgumentException as a -> a :> Exception |> (logException store) - | :? NotSupportedException as n -> n :> Exception |> (logException store) - | :? IOException as i -> i :> Exception |> (logException store) + | :? ArgumentException as a -> a |> (logException store) + | :? NotSupportedException as n -> n |> (logException store) + | :? IOException as i -> i |> (logException store) | :? System.Security.SecurityException as s -> - s :> Exception |> (logException store) - | :? UnauthorizedAccessException as u -> u :> Exception |> (logException store) + s |> (logException store) + | :? UnauthorizedAccessException as u -> u |> (logException store) result diff --git a/AltCover.Engine/Instrument.fs b/AltCover.Engine/Instrument.fs index d2209689d..f4a4825ad 100644 --- a/AltCover.Engine/Instrument.fs +++ b/AltCover.Engine/Instrument.fs @@ -190,11 +190,11 @@ module internal Instrument = (recorder: AssemblyDefinition) (assembly: AssemblyEntry) = - let a = - System.Text.Encoding.ASCII.GetBytes(assembly.Identity.Assembly) + let ascii = System.Text.Encoding.ASCII - let c = - System.Text.Encoding.ASCII.GetBytes(assembly.Identity.Configuration) + let a = ascii.GetBytes(assembly.Identity.Assembly) + + let c = ascii.GetBytes(assembly.Identity.Configuration) let blob = [| prelude |> List.toArray diff --git a/AltCover.Tests/AltCoverFSharpTypes.n3.xml b/AltCover.Tests/AltCoverFSharpTypes.n3.xml index 79e0a6d44..b153a32a6 100644 --- a/AltCover.Tests/AltCoverFSharpTypes.n3.xml +++ b/AltCover.Tests/AltCoverFSharpTypes.n3.xml @@ -1,10 +1,10 @@  -

+ - - ./_Binaries/Sample4/Debug+AnyCPU/netcoreapp2.1/Sample4.dll + + ./_Binaries/Sample4/Debug+AnyCPU/net6.0/Sample4.dll 2018-06-13T15:08:24.8840000Z Sample4 @@ -29,7 +29,7 @@ - + Tests.DU @@ -54,21 +54,18 @@ - - + + 100663300 System.Void Tests.DU::testMakeUnion() - - - - - - + + + - + @@ -82,17 +79,17 @@ Tests.DU/MyUnion Tests.DU/MyUnion::as_bar() - - - - - - - - + + + + + + + + - + @@ -100,50 +97,46 @@ Microsoft.FSharp.Core.FSharpFunc`2<Microsoft.FSharp.Core.Unit,Tests.DU/MyUnion> Tests.DU/MyUnion::get_MyBar() - + - + - + Tests.DU/get_MyBar@46 - + 100663340 Tests.DU/MyUnion Tests.DU/get_MyBar@46::Invoke(Microsoft.FSharp.Core.Unit) - - - - + - + - + Tests.DU/MyClass - + 100663341 System.Void Tests.DU/MyClass::.ctor() - - + - + - + Tests.M @@ -152,24 +145,22 @@ Tests.M/Thing Tests.M::makeThing(System.String) - + - + - - + + 100663345 System.Void Tests.M::testMakeThing() - - - - + + - + @@ -183,10 +174,10 @@ System.Byte[] Tests.M/Thing::bytes() - + - + diff --git a/AltCover.Tests/OpenCoverForPester.coverlet.xml b/AltCover.Tests/OpenCoverForPester.coverlet.xml index f2f2f5e2a..564512e8a 100644 --- a/AltCover.Tests/OpenCoverForPester.coverlet.xml +++ b/AltCover.Tests/OpenCoverForPester.coverlet.xml @@ -1,9 +1,9 @@  - + - + Sample18.dll 2020-03-28T12:20:44 Sample18 @@ -130,60 +130,27 @@ System.Tuple`2<System.Double,System.Double> Tests.DU::Multiples(System.Double,System.Double,System.Double) - - - - - - - - + + + + + + + + - - + + - + - + Tests.DU/MyUnion - - - 100663317 - System.Int32 Tests.DU/MyUnion::CompareTo(Tests.DU/MyUnion) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 100663323 @@ -222,7 +189,7 @@ - + Tests.DU/MyClass @@ -236,17 +203,6 @@ - - - 100663345 - System.Void Tests.DU/MyClass::.ctor() - - - - - - - @@ -305,27 +261,9 @@ - + Tests.M/Thing - - - 100663366 - System.Int32 Tests.M/Thing::CompareTo(Tests.M/Thing) - - - - - - - - - - - - - - 100663372 diff --git a/AltCover.Tests/Runner.Tests.fs b/AltCover.Tests/Runner.Tests.fs index e001f2fe8..617270d9f 100644 --- a/AltCover.Tests/Runner.Tests.fs +++ b/AltCover.Tests/Runner.Tests.fs @@ -2346,7 +2346,7 @@ module AltCoverRunnerTests = let path = Path.Combine( SolutionRoot.location, - "_Binaries/Sample12/Debug+AnyCPU/netcoreapp2.0/Sample12.dll" + "_Binaries/Sample12/Debug+AnyCPU/net6.0/Sample12.dll" ) #endif @@ -4803,14 +4803,14 @@ module AltCoverRunnerTests = Runner.threshold <- None //printfn "%s" <| builder.ToString() - // 23.81% coverage > threshold so expect return code coming in + // 25% coverage > threshold so expect return code coming in Assert.That(r, Is.EqualTo(42, 0, String.Empty)) Assert.That( builder.ToString(), Is.EqualTo( - "Visited Classes 4 of 6 (66.67)|Visited Methods 5 of 10 (50)|Visited Points 5 of 21 (23.81)|Visited Branches 5 of 10 (50)|" - + "|##teamcity[buildStatisticValue key='CodeCoverageAbsCTotal' value='6']|##teamcity[buildStatisticValue key='CodeCoverageAbsCCovered' value='4']|##teamcity[buildStatisticValue key='CodeCoverageAbsMTotal' value='10']|##teamcity[buildStatisticValue key='CodeCoverageAbsMCovered' value='5']|##teamcity[buildStatisticValue key='CodeCoverageAbsSTotal' value='21']|##teamcity[buildStatisticValue key='CodeCoverageAbsSCovered' value='5']|##teamcity[buildStatisticValue key='CodeCoverageAbsRTotal' value='10']|##teamcity[buildStatisticValue key='CodeCoverageAbsRCovered' value='5']|" + "Visited Classes 4 of 6 (66.67)|Visited Methods 5 of 10 (50)|Visited Points 5 of 20 (25)|Visited Branches 5 of 10 (50)|" + + "|##teamcity[buildStatisticValue key='CodeCoverageAbsCTotal' value='6']|##teamcity[buildStatisticValue key='CodeCoverageAbsCCovered' value='4']|##teamcity[buildStatisticValue key='CodeCoverageAbsMTotal' value='10']|##teamcity[buildStatisticValue key='CodeCoverageAbsMCovered' value='5']|##teamcity[buildStatisticValue key='CodeCoverageAbsSTotal' value='20']|##teamcity[buildStatisticValue key='CodeCoverageAbsSCovered' value='5']|##teamcity[buildStatisticValue key='CodeCoverageAbsRTotal' value='10']|##teamcity[buildStatisticValue key='CodeCoverageAbsRCovered' value='5']|" ) )) finally diff --git a/AltCover.Tests/Sample4.native.json b/AltCover.Tests/Sample4.native.json index 8c5806aaf..00d3b385a 100644 --- a/AltCover.Tests/Sample4.native.json +++ b/AltCover.Tests/Sample4.native.json @@ -99,15 +99,6 @@ } ], "SeqPnts": [ - { - "VC": 0, - "SL": 58, - "SC": 5, - "EL": 58, - "EC": 45, - "Offset": 738, - "Id": 3 - }, { "VC": 0, "SL": 58, @@ -115,16 +106,7 @@ "EL": 58, "EC": 45, "Offset": 504, - "Id": 4 - }, - { - "VC": 0, - "SL": 57, - "SC": 5, - "EL": 57, - "EC": 39, - "Offset": 500, - "Id": 5 + "Id": 3 }, { "VC": 0, @@ -133,16 +115,7 @@ "EL": 57, "EC": 39, "Offset": 247, - "Id": 6 - }, - { - "VC": 0, - "SL": 56, - "SC": 5, - "EL": 56, - "EC": 37, - "Offset": 243, - "Id": 7 + "Id": 4 }, { "VC": 0, @@ -151,7 +124,7 @@ "EL": 56, "EC": 37, "Offset": 0, - "Id": 8 + "Id": 5 } ], "TId": 1, @@ -217,7 +190,7 @@ "EL": 44, "EC": 24, "Offset": 189, - "Id": 9 + "Id": 6 }, { "VC": 0, @@ -226,7 +199,7 @@ "EL": 43, "EC": 11, "Offset": 182, - "Id": 10 + "Id": 7 }, { "VC": 0, @@ -235,7 +208,7 @@ "EL": 42, "EC": 20, "Offset": 178, - "Id": 11 + "Id": 8 }, { "VC": 0, @@ -244,7 +217,7 @@ "EL": 40, "EC": 33, "Offset": 149, - "Id": 12 + "Id": 9 }, { "VC": 0, @@ -253,7 +226,7 @@ "EL": 39, "EC": 33, "Offset": 103, - "Id": 13 + "Id": 10 }, { "VC": 0, @@ -262,7 +235,7 @@ "EL": 38, "EC": 33, "Offset": 49, - "Id": 14 + "Id": 11 }, { "VC": 0, @@ -271,7 +244,7 @@ "EL": 37, "EC": 24, "Offset": 1, - "Id": 15 + "Id": 12 }, { "VC": 0, @@ -280,7 +253,7 @@ "EL": 36, "EC": 10, "Offset": 0, - "Id": 16 + "Id": 13 } ] }, @@ -297,16 +270,7 @@ "EL": 46, "EC": 36, "Offset": 0, - "Id": 17 - }, - { - "VC": 0, - "SL": 46, - "SC": 25, - "EL": 46, - "EC": 36, - "Offset": 0, - "Id": 18 + "Id": 14 } ] } @@ -314,28 +278,18 @@ "Tests.DU/MyClass": { "System.Void Tests.DU/MyClass::.ctor()": { "Lines": { - "48": 0, "49": 0 }, "Branches": [], "SeqPnts": [ - { - "VC": 0, - "SL": 48, - "SC": 8, - "EL": 48, - "EC": 15, - "Offset": 15, - "Id": 19 - }, { "VC": 0, "SL": 49, "SC": 27, "EL": 49, "EC": 28, - "Offset": 8, - "Id": 20 + "Offset": 9, + "Id": 15 } ] } @@ -354,7 +308,7 @@ "EL": 21, "EC": 34, "Offset": 0, - "Id": 21 + "Id": 16 } ] }, @@ -384,15 +338,6 @@ } ], "SeqPnts": [ - { - "VC": 0, - "SL": 26, - "SC": 5, - "EL": 26, - "EC": 54, - "Offset": 551, - "Id": 22 - }, { "VC": 0, "SL": 26, @@ -400,16 +345,7 @@ "EL": 26, "EC": 54, "Offset": 247, - "Id": 23 - }, - { - "VC": 0, - "SL": 25, - "SC": 5, - "EL": 25, - "EC": 43, - "Offset": 243, - "Id": 24 + "Id": 17 }, { "VC": 0, @@ -418,7 +354,7 @@ "EL": 25, "EC": 43, "Offset": 0, - "Id": 25 + "Id": 18 } ] } @@ -437,7 +373,7 @@ "EL": 19, "EC": 53, "Offset": 0, - "Id": 26 + "Id": 19 } ] } diff --git a/AltCover.Tests/Sample4.syntheticvisits.native.json b/AltCover.Tests/Sample4.syntheticvisits.native.json index d4e46d477..0d428379f 100644 --- a/AltCover.Tests/Sample4.syntheticvisits.native.json +++ b/AltCover.Tests/Sample4.syntheticvisits.native.json @@ -62,9 +62,9 @@ }, "System.Void Tests.DU::testMakeUnion()": { "Lines": { - "56": 9, - "57": 7, - "58": 5 + "56": 0, + "57": 5, + "58": 0 }, "Branches": [ { @@ -126,44 +126,17 @@ "SC": 5, "EL": 58, "EC": 45, - "Offset": 738, + "Offset": 504, "Id": 3 }, { "VC": 5, - "SL": 58, - "SC": 5, - "EL": 58, - "EC": 45, - "Offset": 504, - "Id": 4 - }, - { - "VC": 0, - "SL": 57, - "SC": 5, - "EL": 57, - "EC": 39, - "Offset": 500, - "Id": 5 - }, - { - "VC": 7, "SL": 57, "SC": 5, "EL": 57, "EC": 39, "Offset": 247, - "Id": 6, - "Times": [ - "AAAAAAAAAAA=", - "AAAAAAAAAAA=", - "AAAAAAAAAAA=", - "AAAAAAAAAAA=", - "AAAAAAAAAAA=", - "AAAAAAAAAAA=", - "AAAAAAAAAAA=" - ] + "Id": 4 }, { "VC": 0, @@ -171,17 +144,8 @@ "SC": 5, "EL": 56, "EC": 37, - "Offset": 243, - "Id": 7 - }, - { - "VC": 9, - "SL": 56, - "SC": 5, - "EL": 56, - "EC": 37, "Offset": 0, - "Id": 8 + "Id": 5 } ], "TId": 1, @@ -203,9 +167,9 @@ "38": 0, "39": 0, "40": 0, - "42": 0, + "42": 9, "43": 0, - "44": 0 + "44": 7 }, "Branches": [ { @@ -275,13 +239,22 @@ ], "SeqPnts": [ { - "VC": 0, + "VC": 7, "SL": 44, "SC": 14, "EL": 44, "EC": 24, "Offset": 189, - "Id": 9 + "Id": 6, + "Times": [ + "AAAAAAAAAAA=", + "AAAAAAAAAAA=", + "AAAAAAAAAAA=", + "AAAAAAAAAAA=", + "AAAAAAAAAAA=", + "AAAAAAAAAAA=", + "AAAAAAAAAAA=" + ] }, { "VC": 0, @@ -290,16 +263,16 @@ "EL": 43, "EC": 11, "Offset": 182, - "Id": 10 + "Id": 7 }, { - "VC": 0, + "VC": 9, "SL": 42, "SC": 16, "EL": 42, "EC": 20, "Offset": 178, - "Id": 11 + "Id": 8 }, { "VC": 0, @@ -308,7 +281,7 @@ "EL": 40, "EC": 33, "Offset": 149, - "Id": 12 + "Id": 9 }, { "VC": 0, @@ -317,7 +290,7 @@ "EL": 39, "EC": 33, "Offset": 103, - "Id": 13 + "Id": 10 }, { "VC": 0, @@ -326,7 +299,7 @@ "EL": 38, "EC": 33, "Offset": 49, - "Id": 14 + "Id": 11 }, { "VC": 0, @@ -335,7 +308,7 @@ "EL": 37, "EC": 24, "Offset": 1, - "Id": 15 + "Id": 12 }, { "VC": 0, @@ -344,7 +317,7 @@ "EL": 36, "EC": 10, "Offset": 0, - "Id": 16 + "Id": 13 } ] }, @@ -361,16 +334,7 @@ "EL": 46, "EC": 36, "Offset": 0, - "Id": 17 - }, - { - "VC": 0, - "SL": 46, - "SC": 25, - "EL": 46, - "EC": 36, - "Offset": 0, - "Id": 18 + "Id": 14 } ] } @@ -378,28 +342,18 @@ "Tests.DU/MyClass": { "System.Void Tests.DU/MyClass::.ctor()": { "Lines": { - "48": 0, "49": 0 }, "Branches": [], "SeqPnts": [ - { - "VC": 0, - "SL": 48, - "SC": 8, - "EL": 48, - "EC": 15, - "Offset": 15, - "Id": 19 - }, { "VC": 0, "SL": 49, "SC": 27, "EL": 49, "EC": 28, - "Offset": 8, - "Id": 20 + "Offset": 9, + "Id": 15 } ] } @@ -418,7 +372,7 @@ "EL": 21, "EC": 34, "Offset": 0, - "Id": 21 + "Id": 16 } ] }, @@ -460,15 +414,6 @@ } ], "SeqPnts": [ - { - "VC": 0, - "SL": 26, - "SC": 5, - "EL": 26, - "EC": 54, - "Offset": 551, - "Id": 22 - }, { "VC": 0, "SL": 26, @@ -476,16 +421,7 @@ "EL": 26, "EC": 54, "Offset": 247, - "Id": 23 - }, - { - "VC": 0, - "SL": 25, - "SC": 5, - "EL": 25, - "EC": 43, - "Offset": 243, - "Id": 24 + "Id": 17 }, { "VC": 0, @@ -494,7 +430,7 @@ "EL": 25, "EC": 43, "Offset": 0, - "Id": 25 + "Id": 18 } ] } @@ -513,7 +449,7 @@ "EL": 19, "EC": 53, "Offset": 0, - "Id": 26 + "Id": 19 } ] } diff --git a/AltCover.Tests/Tests.fs b/AltCover.Tests/Tests.fs index c7fa3fe8d..9c83e945f 100644 --- a/AltCover.Tests/Tests.fs +++ b/AltCover.Tests/Tests.fs @@ -84,13 +84,13 @@ module AltCoverTests = let sample1path = Path.Combine( SolutionDir(), - "_Binaries/Sample1/Debug+AnyCPU/netcoreapp2.0/Sample1.dll" + "_Binaries/Sample1/Debug+AnyCPU/net6.0/Sample1.dll" ) let sample4path = Path.Combine( SolutionDir(), - "_Binaries/Sample4/Debug+AnyCPU/netcoreapp2.1/Sample4.dll" + "_Binaries/Sample4/Debug+AnyCPU/net6.0/Sample4.dll" ) let sample8path = @@ -145,15 +145,21 @@ module AltCoverTests = Exemption.None ] @> // ProgramDatabase.fs + let isAssemblyType (file : string) = +#if !NET472 + [".dll"] +#else + [".dll"; ".exe"] +#endif + |> Seq.exists(fun x -> file.EndsWith(x, StringComparison.OrdinalIgnoreCase)) + [] let ShouldGetPdbFromImage () = let files = [ Directory.GetFiles(dir, "AltCover*") Directory.GetFiles(dir, "Sample*") ] |> Seq.concat - |> Seq.filter (fun x -> - x.EndsWith(".dll", StringComparison.OrdinalIgnoreCase) - || x.EndsWith(".exe", StringComparison.OrdinalIgnoreCase)) + |> Seq.filter isAssemblyType |> Seq.filter (fun f -> f |> Path.GetFileName <> "AltCover.Tests.exe") |> Seq.filter (fun f -> f |> Path.GetFileName <> "AltCover.Recorder.g.dll") |> Seq.map (fun x -> (x, Mono.Cecil.AssemblyDefinition.ReadAssembly x)) @@ -229,9 +235,7 @@ module AltCoverTests = [] let ShouldGetPdbWithFallback () = Directory.GetFiles(dir) - |> Seq.filter (fun x -> - x.EndsWith(".dll", StringComparison.OrdinalIgnoreCase) - || x.EndsWith(".exe", StringComparison.OrdinalIgnoreCase)) + |> Seq.filter isAssemblyType |> Seq.filter (fun x -> (x + ".mdb") |> File.Exists |> not) |> Seq.filter (fun f -> f |> Path.GetFileNameWithoutExtension @@ -378,9 +382,7 @@ module AltCoverTests = [] let ShouldGetSymbolsFromPdb () = Directory.GetFiles(dir) - |> Seq.filter (fun x -> - x.EndsWith(".dll", StringComparison.OrdinalIgnoreCase) - || x.EndsWith(".exe", StringComparison.OrdinalIgnoreCase)) + |> Seq.filter isAssemblyType |> Seq.filter (fun f -> f |> Path.GetFileNameWithoutExtension <> "testhost") @@ -3540,7 +3542,7 @@ module AltCoverTests = let path = Path.Combine( SolutionDir(), - "_Binaries/Sample4/Debug+AnyCPU/netcoreapp2.1/Sample4.dll" + "_Binaries/Sample4/Debug+AnyCPU/net6.0/Sample4.dll" ) "Main" @@ -3792,7 +3794,7 @@ module AltCoverTests = sample4path .Replace("4", "5") .Replace("572", "472") - .Replace("netcoreapp2.1", "netstandard2.0") + .Replace("net6.0", "netstandard2.0") let path6 = sample4path diff --git a/AltCover.Tests/Tests3.fs b/AltCover.Tests/Tests3.fs index 284515e87..ee8669324 100644 --- a/AltCover.Tests/Tests3.fs +++ b/AltCover.Tests/Tests3.fs @@ -4665,7 +4665,7 @@ module AltCoverTests3 = Path.Combine( SolutionRoot.location, #if !NET472 - "_Binaries/Sample4/Debug+AnyCPU/netcoreapp2.1" + "_Binaries/Sample4/Debug+AnyCPU/net6.0" ) #else "_Binaries/Sample4/Debug+AnyCPU/net472" diff --git a/AltCover.Tests/XTests.fs b/AltCover.Tests/XTests.fs index f966c9cc9..b91b3e64c 100644 --- a/AltCover.Tests/XTests.fs +++ b/AltCover.Tests/XTests.fs @@ -668,7 +668,7 @@ module AltCoverXTests = let here = SolutionDir() let path = - Path.Combine(here, "_Binaries/Sample4/Debug+AnyCPU/netcoreapp2.1") + Path.Combine(here, "_Binaries/Sample4/Debug+AnyCPU/net6.0") let key0 = Path.Combine(here, "Build/SelfTest.snk") @@ -732,6 +732,7 @@ module AltCoverXTests = "-s=nunit" "-e=Sample" "-c=[Test]" + "--localSource" "--save" |] let result = Main.I.doInstrumentation args @@ -786,12 +787,18 @@ module AltCoverXTests = let expected = [ "AltCover.Recorder.g.dll" + "FSharp.Core.dll" + "Newtonsoft.Json.dll" + "NuGet.Frameworks.dll" "Sample4.deps.json" "Sample4.dll" - "Sample4.runtimeconfig.dev.json" "Sample4.runtimeconfig.json" "Sample4.pdb" "Unquote.dll" + "xunit.abstractions.dll" + "xunit.assert.dll" + "xunit.core.dll" + "xunit.execution.dotnet.dll" "xunit.runner.reporters.netcoreapp10.dll" "xunit.runner.utility.netcoreapp10.dll" "xunit.runner.visualstudio.dotnetcore.testadapter.dll" ] diff --git a/AltCover.UICommon/CoverageFile.fs b/AltCover.UICommon/CoverageFile.fs index 163b8344e..dc57a579f 100644 --- a/AltCover.UICommon/CoverageFile.fs +++ b/AltCover.UICommon/CoverageFile.fs @@ -244,12 +244,12 @@ module Transformer = document.Validate(schemas, null) Right document with - | :? ArgumentNullException as x -> Left(x :> Exception) - | :? NullReferenceException as x -> Left(x :> Exception) - | :? IOException as x -> Left(x :> Exception) - | :? XsltException as x -> Left(x :> Exception) - | :? XmlSchemaValidationException as x -> Left(x :> Exception) - | :? ArgumentException as x -> Left(x :> Exception) + | :? ArgumentNullException as x -> Left(x) + | :? NullReferenceException as x -> Left(x) + | :? IOException as x -> Left(x) + | :? XsltException as x -> Left(x) + | :? XmlSchemaValidationException as x -> Left(x) + | :? ArgumentException as x -> Left(x) let internal firstChar file = use stream = File.OpenRead file diff --git a/AltCover.ValidateGendarmeEmulation/AltCover.ValidateGendarmeEmulation.fsproj b/AltCover.ValidateGendarmeEmulation/AltCover.ValidateGendarmeEmulation.fsproj index 91d3ef7ee..0cf7fc8ff 100644 --- a/AltCover.ValidateGendarmeEmulation/AltCover.ValidateGendarmeEmulation.fsproj +++ b/AltCover.ValidateGendarmeEmulation/AltCover.ValidateGendarmeEmulation.fsproj @@ -3,7 +3,7 @@ net6.0;net472 false - 2022.2.17.8350 + 2022.5.15.11273 ..\packages\altcode.gendarme\$(GendarmeVersion)\tools\ false AltCover.ValidateGendarmeEmulation diff --git a/AltCover.Visualizer/AltCover.Visualizer.fsproj b/AltCover.Visualizer/AltCover.Visualizer.fsproj index 3a972f739..6bce9cfee 100644 --- a/AltCover.Visualizer/AltCover.Visualizer.fsproj +++ b/AltCover.Visualizer/AltCover.Visualizer.fsproj @@ -47,6 +47,10 @@ ..\ThirdParty\Mono.Options.dll + + ..\ThirdParty\gtk-sharp2\atk-sharp.dll + false + ..\ThirdParty\gtk-sharp2\gdk-sharp.dll false diff --git a/Build/Pester.Tests.ps1 b/Build/Pester.Tests.ps1 index e062eb721..460709fd1 100644 --- a/Build/Pester.Tests.ps1 +++ b/Build/Pester.Tests.ps1 @@ -54,26 +54,26 @@ Describe "Invoke-Altcover" { $o | Should -Exist $x | Should -Exist $xm = [xml](Get-Content $x) - [string]::Join(" ", $xm.coverage.module.method.name) | Should -Be "main returnFoo returnBar testMakeUnion as_bar get_MyBar Invoke .ctor makeThing testMakeThing bytes" + [string]::Join(" ", $xm.coverage.module.method.name) | Should -Be "main returnFoo returnBar testMakeUnion as_bar get_MyBar .ctor makeThing testMakeThing bytes" $result = [string]::Join(" ", $xm.coverage.module.method.seqpnt.visitcount) - $result | Should -Be "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0" + $result | Should -Be "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0" $w = "" $format = @([AltCover.Commands.Summary]::O, [AltCover.Commands.Summary]::C) Invoke-AltCover -Runner -RecorderDirectory $o -SummaryFormat $format -WarningVariable w $xm = [xml](Get-Content $x) - [string]::Join(" ", $xm.coverage.module.method.name) | Should -Be "main returnFoo returnBar testMakeUnion as_bar get_MyBar Invoke .ctor makeThing testMakeThing bytes" + [string]::Join(" ", $xm.coverage.module.method.name) | Should -Be "main returnFoo returnBar testMakeUnion as_bar get_MyBar .ctor makeThing testMakeThing bytes" $result = [string]::Join(" ", $xm.coverage.module.method.seqpnt.visitcount) - $result | Should -Be "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0" + $result | Should -Be "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0" $w | Should -Be "A total of 0 visits recorded" $summary = Invoke-AltCover -InformationAction Continue -Runner -RecorderDirectory $o -WorkingDirectory "./Samples/Sample2" -Executable "dotnet" -CommandLine @("test", "--no-build", "--configuration", "Debug", "--framework", "net6.0", "Sample2.fsproj", "/p:AltCoverTag=Invoke-Altcover_") $xm2 = [xml](Get-Content $x) $result = [string]::Join(" ", $xm2.coverage.module.method.seqpnt.visitcount) - $result | Should -Be "0 1 1 1 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 2 1 0 1 0 1" + $result | Should -Be "0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 2 1 1 1" $result = $summary.Replace("`r", [String]::Empty).Replace("`n", "|") - $result | Should -Be "Visited Classes 4 of 7 (57.14)|Visited Methods 7 of 11 (63.64)|Visited Points 12 of 27 (44.44)|" + $result | Should -Be "Visited Classes 4 of 6 (66.67)|Visited Methods 7 of 10 (70)|Visited Points 12 of 20 (60)|" } It "Fails on garbage" { @@ -373,7 +373,7 @@ Describe "ConvertTo-BarChart" { Describe "ConvertFrom-NCover" { It "converts" { $assemblies = @() - $assemblies += "./_Binaries/Sample4/Debug+AnyCPU/netcoreapp2.1/Sample4.dll" + $assemblies += "./_Binaries/Sample4/Debug+AnyCPU/net6.0/Sample4.dll" $xml = ConvertFrom-NCover -InputFile "./_Reports/ReleaseXUnitFSharpTypesDotNetRunner.xml" -Assembly $Assemblies -OutputFile "./_Packaging/AltCoverFSharpTypes.xml" $xml | Should -BeOfType [xdoc] @@ -397,8 +397,8 @@ Describe "ConvertFrom-NCover" { $expected = $expected.Replace("2018-06-13T15:08:24.8840000Z", $time) $expected = $expected.Replace("Sample4|Program.fs", (Join-Path $fullpath "Program.fs")) $expected = $expected.Replace("Sample4|Tests.fs", (Join-Path $fullpath "Tests.fs")) - $expected = $expected.Replace("./_Binaries/Sample4/Debug+AnyCPU/netcoreapp2.1/Sample4.dll", - "" + [System.IO.Path]::GetFullPath("./_Binaries/Sample4/Debug+AnyCPU/netcoreapp2.1/Sample4.dll")) + $expected = $expected.Replace("./_Binaries/Sample4/Debug+AnyCPU/net6.0/Sample4.dll", + "" + [System.IO.Path]::GetFullPath("./_Binaries/Sample4/Debug+AnyCPU/net6.0/Sample4.dll")) $result = $sw.ToString().Replace("`r", "").Replace("utf-16", "utf-8") $result = $result.Replace("rapScore=`"13.12", "rapScore=`"13.13").Replace("rapScore=`"8.12", "rapScore=`"8.13") @@ -410,7 +410,7 @@ Describe "ConvertFrom-NCover" { It "converts from the pipeline" { $assemblies = @() - $assemblies += "./_Binaries/Sample4/Debug+AnyCPU/netcoreapp2.1/Sample4.dll" + $assemblies += "./_Binaries/Sample4/Debug+AnyCPU/net6.0/Sample4.dll" $xml = [xdoc]::Load("./_Reports/ReleaseXUnitFSharpTypesDotNetRunner.xml") | ConvertFrom-NCover -Assembly $Assemblies $xml | Should -BeOfType [xdoc] @@ -434,8 +434,8 @@ Describe "ConvertFrom-NCover" { $expected = $expected.Replace("2018-06-13T15:08:24.8840000Z", $time) $expected = $expected.Replace("Sample4|Program.fs", (Join-Path $fullpath "Program.fs")) $expected = $expected.Replace("Sample4|Tests.fs", (Join-Path $fullpath "Tests.fs")) - $expected = $expected.Replace("./_Binaries/Sample4/Debug+AnyCPU/netcoreapp2.1/Sample4.dll", - "" + [System.IO.Path]::GetFullPath("./_Binaries/Sample4/Debug+AnyCPU/netcoreapp2.1/Sample4.dll")) + $expected = $expected.Replace("./_Binaries/Sample4/Debug+AnyCPU/net6.0/Sample4.dll", + "" + [System.IO.Path]::GetFullPath("./_Binaries/Sample4/Debug+AnyCPU/net6.0/Sample4.dll")) $result = $sw.ToString().Replace("`r", "").Replace("utf-16", "utf-8") $result = $result.Replace("rapScore=`"13.12", "rapScore=`"13.13").Replace("rapScore=`"8.12", "rapScore=`"8.13") diff --git a/Build/actions.fsx b/Build/actions.fsx index 8b470fa75..c91842b60 100644 --- a/Build/actions.fsx +++ b/Build/actions.fsx @@ -256,7 +256,7 @@ using System.Runtime.CompilerServices; |> Seq.toList let expected = - ".ctor Invoke as_bar bytes get_MyBar makeThing returnBar returnFoo testMakeThing testMakeUnion" + ".ctor as_bar bytes get_MyBar makeThing returnBar returnFoo testMakeThing testMakeUnion" Assert.That(recorded, expected.Split() |> Is.EquivalentTo, sprintf "Bad method list %A" recorded) @@ -278,7 +278,8 @@ using System.Runtime.CompilerServices; |> Seq.map (fun x -> x.Attribute(XName.Get("visitcount")).Value) |> Seq.toList - let expected = "0 1 1 1 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 2 1 0 1 0 1" + let expected = "0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 2 1 1 1" + //"0 1 1 1 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 2 1 0 1 0 1" //"0 1 1 1 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 2 1 0 1 0 1" //"0 1 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 2 1 0 1 0 1" Assert.That(String.Join(" ", recorded), expected |> Is.EqualTo, sprintf "Bad visit list %A" recorded) diff --git a/Build/msbuildtest.proj b/Build/msbuildtest.proj index 223be6a29..770d6ce4d 100644 --- a/Build/msbuildtest.proj +++ b/Build/msbuildtest.proj @@ -8,20 +8,21 @@ - - + + - + - + + RecorderDirectory="$(MSBuildThisFileDirectory)../_Binaries/$(AltCoverTag)Sample4/Debug+AnyCPU/net6.0" /> \ No newline at end of file diff --git a/Build/targets.fsx b/Build/targets.fsx index 12b3d4a4b..d1f124524 100644 --- a/Build/targets.fsx +++ b/Build/targets.fsx @@ -2645,7 +2645,7 @@ _Target "FSharpTests" (fun _ -> coverageDocument.Descendants(XName.Get("TrackedMethodRef")) |> Seq.toList - Assert.That(refs |> Seq.length, Is.EqualTo 64, "ref count wrong") + Assert.That(refs |> Seq.length, Is.EqualTo 56, "ref count wrong") refs |> Seq.iter (fun tmr -> @@ -3067,7 +3067,7 @@ _Target "CSharpDotNetWithDotNet" (fun _ -> let o = Path.getFullName "./_Binaries/Sample1/__Instrumented.CSharpDotNetWithDotNet" - let i = Path.getFullName "./_Binaries/Sample1/Debug+AnyCPU/netcoreapp2.0" + let i = Path.getFullName "./_Binaries/Sample1/Debug+AnyCPU/net6.0" let prep = AltCover.PrepareOptions.Primitive( @@ -3100,7 +3100,7 @@ _Target "CSharpDotNetWithFramework" (fun _ -> let binRoot = Path.getFullName "_Binaries/AltCover/Release+AnyCPU/net472" - let sampleRoot = Path.getFullName "_Binaries/Sample1/Debug+AnyCPU/netcoreapp2.0" + let sampleRoot = Path.getFullName "_Binaries/Sample1/Debug+AnyCPU/net6.0" let instrumented = Path.getFullName "_Binaries/Sample1/__Instrumented.CSharpDotNetWithFramework" @@ -4261,7 +4261,7 @@ _Target "ReleaseDotNetWithFramework" (fun _ -> (Path.getFullName "./_Reports") @@ ("ReleaseDotNetWithFramework.xml") - let sampleRoot = Path.getFullName "./_Binaries/Sample1/Debug+AnyCPU/netcoreapp2.0" + let sampleRoot = Path.getFullName "./_Binaries/Sample1/Debug+AnyCPU/net6.0" let instrumented = sampleRoot @@ -4335,7 +4335,7 @@ _Target "ReleaseDotNetWithDotNet" (fun _ -> let o = Path.getFullName "./_Binaries/Sample1/__Instrumented.ReleaseDotNetWithDotNet" - let i = Path.getFullName "./_Binaries/Sample1/Debug+AnyCPU/netcoreapp2.0" + let i = Path.getFullName "./_Binaries/Sample1/Debug+AnyCPU/net6.0" let prep = AltCover.PrepareOptions.Primitive( @@ -4525,9 +4525,9 @@ _Target "ReleaseXUnitFSharpTypesDotNetRunner" (fun _ -> let x = Path.getFullName "./_Reports/ReleaseXUnitFSharpTypesDotNetRunner.xml" let o = - Path.getFullName "./_Binaries/ReleaseXUnitFSharpTypesDotNetRunner_Sample4/Debug+AnyCPU/netcoreapp2.1" + Path.getFullName "./_Binaries/ReleaseXUnitFSharpTypesDotNetRunner_Sample4/Debug+AnyCPU/net6.0" - let i = Path.getFullName "_Binaries/Sample4/Debug+AnyCPU/netcoreapp2.1" + let i = Path.getFullName "_Binaries/Sample4/Debug+AnyCPU/net6.0" Shell.cleanDir o @@ -4540,6 +4540,7 @@ _Target "ReleaseXUnitFSharpTypesDotNetRunner" (fun _ -> InputDirectories = [ i ] AssemblyFilter = [ "xunit" ] InPlace = false + LocalSource = true ReportFormat = "NCover" Save = false } ) @@ -4559,7 +4560,7 @@ _Target "ReleaseXUnitFSharpTypesDotNetRunner" (fun _ -> let runner = Path.getFullName "_Packaging/Unpack/tools/netcoreapp2.0/AltCover.dll" - let (dotnetexe, args) = defaultDotNetTestCommandLine (Some "netcoreapp2.1") sample4 + let (dotnetexe, args) = defaultDotNetTestCommandLine (Some "net6.0") sample4 // Run let collect = @@ -4694,9 +4695,9 @@ _Target "ReleaseXUnitFSharpTypesShowVisualized" (fun _ -> let x3 = Path.getFullName "./_Reports/ShowGeneratedRun.xml" let o = - Path.getFullName "./_Binaries/ReleaseXUnitFSharpTypesShowVisualized_Sample4/Debug+AnyCPU/netcoreapp2.1" + Path.getFullName "./_Binaries/ReleaseXUnitFSharpTypesShowVisualized_Sample4/Debug+AnyCPU/net6.0" - let i = Path.getFullName "_Binaries/Sample4/Debug+AnyCPU/netcoreapp2.1" + let i = Path.getFullName "_Binaries/Sample4/Debug+AnyCPU/net6.0" Shell.cleanDir o @@ -4710,6 +4711,7 @@ _Target "ReleaseXUnitFSharpTypesShowVisualized" (fun _ -> AssemblyFilter = [ "xunit" ] InPlace = false ReportFormat = "NCover" + LocalSource = true Save = false ShowStatic = "+" } ) @@ -4737,7 +4739,9 @@ _Target "ReleaseXUnitFSharpTypesShowVisualized" (fun _ -> printfn "%A" vcs printfn "%A" (vcs |> List.map (snd >> Seq.length)) Assert.That(vcs |> List.map fst, Is.EqualTo [ -3; 0 ], "-3 or 0 only") - Assert.That(vcs |> List.map (snd >> Seq.length), Is.EqualTo [ 18; 27 ], "10 and 28") + let expected = [ 2; 20 ] + let actual = vcs |> List.map (snd >> Seq.length) + Assert.That(actual, Is.EqualTo expected, sprintf "1) Expected %A but got %A" expected actual) let prep = AltCover.PrepareOptions.Primitive( @@ -4747,6 +4751,7 @@ _Target "ReleaseXUnitFSharpTypesShowVisualized" (fun _ -> InputDirectories = [ i ] AssemblyFilter = [ "xunit" ] InPlace = false + LocalSource = true ReportFormat = "NCover" Save = false ShowStatic = "++" } @@ -4775,7 +4780,7 @@ _Target "ReleaseXUnitFSharpTypesShowVisualized" (fun _ -> printfn "%A" vcs printfn "%A" (vcs |> List.map (snd >> Seq.length)) Assert.That(vcs |> List.map fst, Is.EqualTo [ 0 ]) - Assert.That(vcs |> List.map (snd >> Seq.length), Is.EqualTo [ 45 ]) + Assert.That(vcs |> List.map (snd >> Seq.length), Is.EqualTo [ 22 ]) let prep = AltCover.PrepareOptions.Primitive( @@ -4785,6 +4790,7 @@ _Target "ReleaseXUnitFSharpTypesShowVisualized" (fun _ -> InputDirectories = [ i ] AssemblyFilter = [ "xunit" ] InPlace = false + LocalSource = true ReportFormat = "NCover" Save = false ShowGenerated = true } @@ -4813,7 +4819,7 @@ _Target "ReleaseXUnitFSharpTypesShowVisualized" (fun _ -> printfn "%A" vcs printfn "%A" (vcs |> List.map (snd >> Seq.length)) Assert.That(vcs |> List.map fst, Is.EqualTo [ -2; 0 ], "Expect -2, 0") - Assert.That(vcs |> List.map (snd >> Seq.length), Is.EqualTo [ 6; 21 ], "Expect 6, 21") + Assert.That(vcs |> List.map (snd >> Seq.length), Is.EqualTo [3; 17], "Expect [3; 17]") let prep = AltCover.PrepareOptions.Primitive( @@ -4823,6 +4829,7 @@ _Target "ReleaseXUnitFSharpTypesShowVisualized" (fun _ -> InputDirectories = [ i ] AssemblyFilter = [ "xunit" ] InPlace = false + LocalSource = true ReportFormat = "NCover" Save = false ShowGenerated = true } @@ -4841,7 +4848,7 @@ _Target "ReleaseXUnitFSharpTypesShowVisualized" (fun _ -> let runner = Path.getFullName "_Packaging/Unpack/tools/netcoreapp2.0/AltCover.dll" - let (dotnetexe, args) = defaultDotNetTestCommandLine (Some "netcoreapp2.1") sample4 + let (dotnetexe, args) = defaultDotNetTestCommandLine (Some "net6.0") sample4 // Run let collect = @@ -4875,8 +4882,8 @@ _Target "ReleaseXUnitFSharpTypesShowVisualized" (fun _ -> printfn "%A" vcs printfn "%A" (vcs |> List.map (snd >> Seq.length)) - Assert.That(vcs |> List.map fst, Is.EqualTo [ -2; 0; 1; 2 ], "expect [ -2; 0; 1; 2]") - Assert.That(vcs |> List.map (snd >> Seq.length), Is.EqualTo [ 3; 12; 11; 1 ], "expect [3 ; 12; 11; 1]")) + Assert.That(vcs |> List.map fst, Is.EqualTo [ 0; 1; 2 ], "expect [ 0; 1; 2 ]") + Assert.That(vcs |> List.map (snd >> Seq.length), Is.EqualTo [ 8; 11; 1 ], "expect [ 8; 11; 1 ]")) _Target "ReleaseXUnitFSharpTypesDotNetFullRunner" (fun _ -> Directory.ensure "./_Reports" @@ -4886,9 +4893,9 @@ _Target "ReleaseXUnitFSharpTypesDotNetFullRunner" (fun _ -> let x = Path.getFullName "./_Reports/ReleaseXUnitFSharpTypesDotNetFullRunner.xml" let o = - Path.getFullName "./_Binaries/ReleaseXUnitFSharpTypesDotNetFullRunner_Sample4/Debug+AnyCPU/netcoreapp2.1" + Path.getFullName "./_Binaries/ReleaseXUnitFSharpTypesDotNetFullRunner_Sample4/Debug+AnyCPU/net6.0" - let i = Path.getFullName "_Binaries/Sample4/Debug+AnyCPU/netcoreapp2.1" + let i = Path.getFullName "_Binaries/Sample4/Debug+AnyCPU/net6.0" Shell.cleanDir o let before = Actions.ticksNow () @@ -4901,6 +4908,7 @@ _Target "ReleaseXUnitFSharpTypesDotNetFullRunner" (fun _ -> InputDirectories = [ i ] CallContext = [ "0"; "[Fact]" ] AssemblyFilter = [ "xunit" ] + LocalSource = true InPlace = false Save = false } ) @@ -4920,7 +4928,7 @@ _Target "ReleaseXUnitFSharpTypesDotNetFullRunner" (fun _ -> let runner = Path.getFullName "_Packaging/Unpack/tools/netcoreapp2.0/AltCover.dll" - let (dotnetexe, args) = defaultDotNetTestCommandLine (Some "netcoreapp2.1") sample4 + let (dotnetexe, args) = defaultDotNetTestCommandLine (Some "net6.0") sample4 // Run let collect = @@ -4949,9 +4957,9 @@ _Target "JsonReporting" (fun _ -> let x = Path.getFullName "./_Reports/JsonReporting.json" let o = - Path.getFullName "./_Binaries/JsonReporting_Sample4/Debug+AnyCPU/netcoreapp2.1" + Path.getFullName "./_Binaries/JsonReporting_Sample4/Debug+AnyCPU/net6.0" - let i = Path.getFullName "_Binaries/Sample4/Debug+AnyCPU/netcoreapp2.1" + let i = Path.getFullName "_Binaries/Sample4/Debug+AnyCPU/net6.0" // Test data gathering only //let x = Path.getFullName "./AltCover.Tests/Sample5.native.json" @@ -4971,6 +4979,7 @@ _Target "JsonReporting" (fun _ -> InputDirectories = [ i ] CallContext = [ "0"; "[Fact]" ] AssemblyFilter = [ "xunit" ] + LocalSource = true InPlace = false Save = false } ) @@ -5024,7 +5033,7 @@ _Target "JsonReporting" (fun _ -> let runner = Path.getFullName "_Packaging/Unpack/tools/net472/AltCover.exe" - let (dotnetexe, args) = defaultDotNetTestCommandLine (Some "netcoreapp2.1") sample4 + let (dotnetexe, args) = defaultDotNetTestCommandLine (Some "net6.0") sample4 // Run let collect = @@ -5056,7 +5065,8 @@ _Target "JsonReporting" (fun _ -> |> Seq.map (fun s -> s.VC) |> Seq.toList - let expected = "0 1 1 0 1 0 1 0 1 0 0 0 0 0 1 1 1 0 0 0 0 2 0 1 0 1 1" + let expected = "0 1 1 1 1 1 0 0 0 0 0 1 1 1 0 0 2 1 1 1" + //"0 1 1 0 1 0 1 0 1 0 0 0 0 0 1 1 1 0 0 0 0 2 0 1 0 1 1" //"0 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 2 0 1 0 1 1" Assert.That(String.Join(" ", recorded), expected |> Is.EqualTo, sprintf "Bad visit list %A" recorded) @@ -5824,7 +5834,8 @@ _Target "DotnetTestIntegration" (fun _ -> |> Seq.map (fun x -> x.Attribute(XName.Get("vc")).Value) |> Seq.toList - Assert.That(String.Join(";", recorded), Is.EqualTo "1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;1;1;1;1;1;0", xx) + Assert.That(String.Join(";", recorded), Is.EqualTo "1;1;1;1;1;1;1;1;1;1;1;1;0;1;1;1;1;1;0", xx) + //"1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;1;1;1;1;1;0" try DotNet.test @@ -5857,7 +5868,8 @@ _Target "DotnetTestIntegration" (fun _ -> |> Seq.map (fun x -> x.Attribute(XName.Get("vc")).Value) |> Seq.toList - Assert.That(String.Join(";", recorded), Is.EqualTo "1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;1;1;1;1;1;1;0", xxa) + Assert.That(String.Join(";", recorded), Is.EqualTo "1;1;1;1;1;1;1;1;1;1;0;0;1;1;1;1;1;1;0", xxa) + //"1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;1;1;1;1;1;1;0" printfn "optest failing test fast ------------------------------------------------" @@ -5906,7 +5918,7 @@ _Target "DotnetTestIntegration" (fun _ -> |> Seq.map (fun x -> x.Attribute(XName.Get("vc")).Value) |> Seq.toList - Assert.That(String.Join(";", recorded), Is.EqualTo "0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0", xx) + Assert.That(String.Join(";", recorded), Is.EqualTo "0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0", xx) try DotNet.test @@ -5940,7 +5952,7 @@ _Target "DotnetTestIntegration" (fun _ -> |> Seq.map (fun x -> x.Attribute(XName.Get("vc")).Value) |> Seq.toList - Assert.That(String.Join(";", recorded), Is.EqualTo "0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0", xxa) + Assert.That(String.Join(";", recorded), Is.EqualTo "0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0", xxa) printfn "optest line cover ------------------------------------------------" @@ -6650,7 +6662,7 @@ _Target "DotnetGlobalIntegration" (fun _ -> fsproj.Descendants(XName.Get("TargetFrameworks")) |> Seq.head - targets.SetValue "netcoreapp2.1" + targets.SetValue "net6.0" targets.AddAfterSelf(XElement(XName.Get "DocumentationFile")) fsproj.Descendants(XName.Get("HintPath")) @@ -6686,7 +6698,7 @@ _Target "DotnetGlobalIntegration" (fun _ -> let x = Path.getFullName "./_Reports/DotnetGlobalIntegration.xml" - let o = Path.getFullName "./_Binaries/_DotnetGlobalTest/Debug+AnyCPU/netcoreapp2.1" + let o = Path.getFullName "./_Binaries/_DotnetGlobalTest/Debug+AnyCPU/net6.0" [ AltCoverCommand.ArgumentType.ImportModule AltCoverCommand.ArgumentType.GetVersion ] @@ -6706,6 +6718,7 @@ _Target "DotnetGlobalIntegration" (fun _ -> InputDirectories = [ o ] CallContext = [ "0"; "[Fact]" ] AssemblyFilter = [| "xunit" |] + LocalSource = true InPlace = true Save = false } ) @@ -6719,7 +6732,7 @@ _Target "DotnetGlobalIntegration" (fun _ -> printfn "Execute the instrumented tests" let (dotnetexe, args) = - defaultDotNetTestCommandLine (Some "netcoreapp2.1") String.Empty + defaultDotNetTestCommandLine (Some "net6.0") String.Empty let collect = AltCover.CollectOptions.Primitive diff --git a/Samples/Sample4/Sample4LongForm.fsproj b/Samples/Sample4/Sample4LongForm.fsproj index 437353cb4..d4c6fed31 100644 --- a/Samples/Sample4/Sample4LongForm.fsproj +++ b/Samples/Sample4/Sample4LongForm.fsproj @@ -66,8 +66,8 @@ - - + + diff --git a/ThirdParty/gtk-sharp2/atk-sharp.dll b/ThirdParty/gtk-sharp2/atk-sharp.dll new file mode 100644 index 0000000000000000000000000000000000000000..cea93804707dc42b152f889ac511d817ddfdf462 GIT binary patch literal 189440 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 ltlV2Y4z8Y0T(I Date: Tue, 17 May 2022 06:49:45 +0100 Subject: [PATCH 15/81] Work around Gendarme issue --- AltCover.Engine/CommandLine.fs | 1 + 1 file changed, 1 insertion(+) diff --git a/AltCover.Engine/CommandLine.fs b/AltCover.Engine/CommandLine.fs index e2b2f9214..360b1e504 100644 --- a/AltCover.Engine/CommandLine.fs +++ b/AltCover.Engine/CommandLine.fs @@ -333,6 +333,7 @@ module internal CommandLine = try f () with + | :? CryptographicUnexpectedOperationException as c -> raise ((c.Message, c) |> SecurityException) | :? CryptographicException as c -> raise ((c.Message, c) |> SecurityException) [ Date: Tue, 17 May 2022 09:43:26 +0100 Subject: [PATCH 16/81] Bump altcode.gendarme from 2022.5.15.11273 to 2022.5.17.8260 in /Build --- .config/dotnet-tools.json | 2 +- AltCover.Engine/CommandLine.fs | 1 - .../AltCover.ValidateGendarmeEmulation.fsproj | 2 +- Build/NuGet.csproj | 2 +- 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index e434969c1..0528d26b8 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -21,7 +21,7 @@ ] }, "altcode.gendarme-tool": { - "version": "2022.5.15.11273", + "version": "2022.5.17.8260", "commands": [ "gendarme" ] diff --git a/AltCover.Engine/CommandLine.fs b/AltCover.Engine/CommandLine.fs index 360b1e504..e2b2f9214 100644 --- a/AltCover.Engine/CommandLine.fs +++ b/AltCover.Engine/CommandLine.fs @@ -333,7 +333,6 @@ module internal CommandLine = try f () with - | :? CryptographicUnexpectedOperationException as c -> raise ((c.Message, c) |> SecurityException) | :? CryptographicException as c -> raise ((c.Message, c) |> SecurityException) [ net6.0;net472 false - 2022.5.15.11273 + 2022.5.17.8260 ..\packages\altcode.gendarme\$(GendarmeVersion)\tools\ false AltCover.ValidateGendarmeEmulation diff --git a/Build/NuGet.csproj b/Build/NuGet.csproj index 1f3d33c4b..f7098cc9c 100644 --- a/Build/NuGet.csproj +++ b/Build/NuGet.csproj @@ -26,7 +26,7 @@ - + From 426c56bdb0bc1573ab60bbe2515ce976d37f0177 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Tue, 17 May 2022 14:17:40 +0100 Subject: [PATCH 17/81] Allow for fewer code-points --- AltCover.Monitor.Tests/MonitorTest.fs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/AltCover.Monitor.Tests/MonitorTest.fs b/AltCover.Monitor.Tests/MonitorTest.fs index 861013926..0f1f09c83 100644 --- a/AltCover.Monitor.Tests/MonitorTest.fs +++ b/AltCover.Monitor.Tests/MonitorTest.fs @@ -18,7 +18,7 @@ module MonitorTests = AltCover.SolutionRoot.location, "_Reports/MonitorTestWithAltCoverCoreRunner.net6.0.xml" ), - [ (240, 37); (240, 36) ] ] + [ (235, 37); (235, 36) ] ] |> List.filter (fst >> File.Exists) |> List.sortBy (fst >> File.GetCreationTimeUtc) |> List.last @@ -81,5 +81,7 @@ module MonitorTests = let xml, expect = coverageXml () let text = xml |> File.ReadAllText + let result = (code, branch) + let t2 = sprintf "%A" result - test' <@ List.exists (fun x -> x = (code, branch)) expect @> text \ No newline at end of file + test' <@ List.exists (fun x -> x = result) expect @> (t2 + text) \ No newline at end of file From 5cc497b3fc6d8dde24e00ed5204a22220c00214d Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Tue, 17 May 2022 20:13:14 +0100 Subject: [PATCH 18/81] Remove redundant uncovered code revealed by the v6.0.300 compiler --- AltCover.Tests/Tests3.fs | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/AltCover.Tests/Tests3.fs b/AltCover.Tests/Tests3.fs index ee8669324..0bff0fea9 100644 --- a/AltCover.Tests/Tests3.fs +++ b/AltCover.Tests/Tests3.fs @@ -407,8 +407,7 @@ module AltCoverTests3 = CoverageParameters.nameFilters |> Seq.forall (fun x -> match x.Scope with - | FilterScope.Attribute -> true - | _ -> false) + | FilterScope.Attribute -> true) ) Assert.That( @@ -507,8 +506,7 @@ module AltCoverTests3 = CoverageParameters.nameFilters |> Seq.forall (fun x -> match x.Scope with - | FilterScope.Method -> true - | _ -> false) + | FilterScope.Method -> true) ) Assert.That( @@ -568,8 +566,7 @@ module AltCoverTests3 = CoverageParameters.nameFilters |> Seq.forall (fun x -> match x.Scope with - | FilterScope.Type -> true - | _ -> false) + | FilterScope.Type -> true) ) Assert.That( @@ -630,8 +627,7 @@ module AltCoverTests3 = CoverageParameters.nameFilters |> Seq.forall (fun x -> match x.Scope with - | FilterScope.Assembly -> true - | _ -> false) + | FilterScope.Assembly -> true) ) Assert.That( @@ -692,8 +688,7 @@ module AltCoverTests3 = CoverageParameters.nameFilters |> Seq.forall (fun x -> match x.Scope with - | FilterScope.Assembly -> true - | _ -> false) + | FilterScope.Assembly -> true) ) Assert.That( @@ -752,8 +747,7 @@ module AltCoverTests3 = CoverageParameters.nameFilters |> Seq.forall (fun x -> match x.Scope with - | FilterScope.Module -> true - | _ -> false) + | FilterScope.Module -> true) ) Assert.That( @@ -813,8 +807,7 @@ module AltCoverTests3 = CoverageParameters.nameFilters |> Seq.forall (fun x -> match x.Scope with - | FilterScope.File -> true - | _ -> false) + | FilterScope.File -> true) ) Assert.That( @@ -874,8 +867,7 @@ module AltCoverTests3 = CoverageParameters.nameFilters |> Seq.forall (fun x -> match x.Scope with - | FilterScope.Path -> true - | _ -> false) + | FilterScope.Path -> true) ) Assert.That( From f5fd2fe7b9046c423a9815da4651e921cd5eeb34 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 May 2022 13:43:12 +0000 Subject: [PATCH 19/81] Bump NuGet.CommandLine from 6.1.0 to 6.2.0 in /Build Bumps [NuGet.CommandLine](https://github.com/NuGet/NuGet.Client) from 6.1.0 to 6.2.0. - [Release notes](https://github.com/NuGet/NuGet.Client/releases) - [Commits](https://github.com/NuGet/NuGet.Client/commits) --- updated-dependencies: - dependency-name: NuGet.CommandLine dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Build/NuGet.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Build/NuGet.csproj b/Build/NuGet.csproj index f7098cc9c..d4f15ba81 100644 --- a/Build/NuGet.csproj +++ b/Build/NuGet.csproj @@ -8,7 +8,7 @@ - + all runtime; build; native; contentfiles; analyzers From 60020f4c31fcae0067dfa5b5925930a02e4b9917 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Thu, 5 May 2022 12:59:16 +0100 Subject: [PATCH 20/81] `packagesourcemapper generate nuget.config` is overkill - but points out a redundancy - Pester is now on NuGet.org --- NuGet.config | 1 - 1 file changed, 1 deletion(-) diff --git a/NuGet.config b/NuGet.config index ba783cb9d..18aee5e9d 100644 --- a/NuGet.config +++ b/NuGet.config @@ -2,6 +2,5 @@ - \ No newline at end of file From 7c92f3bbd683c57768c7ded4b9e6cd191f1e7635 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Mon, 30 May 2022 19:25:33 +0100 Subject: [PATCH 21/81] Avoid vulnerable runtimes --- AltCover/AltCover.fsproj | 1 + 1 file changed, 1 insertion(+) diff --git a/AltCover/AltCover.fsproj b/AltCover/AltCover.fsproj index 5083de175..3828f528d 100644 --- a/AltCover/AltCover.fsproj +++ b/AltCover/AltCover.fsproj @@ -11,6 +11,7 @@ AltCover.ico True $(ProjectDir)Resource.res + true From cc9fb1d17b0179f45fe4b1dbdf60ec41d903582e Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Fri, 8 Apr 2022 18:23:40 +0100 Subject: [PATCH 22/81] Adjust exception throwing style --- AltCover.Engine/CommandLine.fs | 9 +++++++- AltCover.Engine/Runner.fs | 11 ++++++++- AltCover.Recorder/Base.fs | 9 +++++++- AltCover.Recorder/Recorder.fs | 12 +++++++--- AltCover.UICommon/AltCover.UICommon.fsproj | 1 + AltCover.UICommon/Icons.fs | 4 ++-- AltCover.UICommon/Lcov.fs | 26 +++++++++++++--------- Build/targets.fsx | 4 ++++ 8 files changed, 58 insertions(+), 18 deletions(-) diff --git a/AltCover.Engine/CommandLine.fs b/AltCover.Engine/CommandLine.fs index e2b2f9214..a900369d3 100644 --- a/AltCover.Engine/CommandLine.fs +++ b/AltCover.Engine/CommandLine.fs @@ -319,6 +319,13 @@ module internal CommandLine = let internal validateFile file x = validateFileSystemEntity File.Exists fnf file x + type SecurityException with + [] + static member Throw<'T>(e : exn) : 'T = + (e.Message, e) |> SecurityException |> raise + let internal findAssemblyName f = try (AssemblyName.GetAssemblyName f).ToString() @@ -333,7 +340,7 @@ module internal CommandLine = try f () with - | :? CryptographicException as c -> raise ((c.Message, c) |> SecurityException) + | :? CryptographicException as c -> c |> SecurityException.Throw [] +module internal ThrowHelper = + type FormatException with + [] + static member Throw<'T>(message: string) : 'T = + message |> FormatException |> raise + [] type internal SummaryFormat = | Default @@ -61,7 +70,7 @@ type internal SummaryFormat = | ('R', _) -> Many(R :: (SummaryFormat.ToList state)) | ('O', _) -> Many(O :: (SummaryFormat.ToList state)) | ('C', _) -> Many(C :: (SummaryFormat.ToList state)) - | _ -> raise (s |> FormatException)) + | _ -> s |> FormatException.Throw) (Many []) with | :? FormatException -> Default diff --git a/AltCover.Recorder/Base.fs b/AltCover.Recorder/Base.fs index 40d587027..600367183 100644 --- a/AltCover.Recorder/Base.fs +++ b/AltCover.Recorder/Base.fs @@ -78,6 +78,13 @@ and [] internal PointVisit = [] module internal Counter = + type System.NotSupportedException with + [] + static member Throw<'T>(message : string) : 'T = + message |> NotSupportedException |> raise + // "Public" "fields" // // @@ -171,7 +178,7 @@ module internal Counter = | ReportFormat.OpenCoverWithTracking | ReportFormat.OpenCover -> openCoverXml | ReportFormat.NCover -> nCoverXml - | _ -> raise (format |> (sprintf "%A") |> NotSupportedException) + | _ -> format |> (sprintf "%A") |> NotSupportedException.Throw let internal minTime (t1: DateTime) (t2: DateTime) = if t1 < t2 then t1 else t2 diff --git a/AltCover.Recorder/Recorder.fs b/AltCover.Recorder/Recorder.fs index 9300d36bc..43aebd1c9 100644 --- a/AltCover.Recorder/Recorder.fs +++ b/AltCover.Recorder/Recorder.fs @@ -346,6 +346,13 @@ module Instance = let internal addVisit moduleId hitPointId context = curriedIssue71Wrapper visits moduleId hitPointId context Counter.addSingleVisit + type InvalidDataException with + [] + static member Throw<'T>(message : obj) : 'T = + message.ToString() |> InvalidDataException |> raise + let internal takeSample strategy moduleId hitPointId (context: Track) = match strategy with | Sampling.All -> true @@ -363,9 +370,8 @@ module Instance = TimeVisit(hitPointId, b.Time) CallVisit(hitPointId, b.Call) ] | _ -> - context.ToString() - |> InvalidDataException - |> raise) + context + |> InvalidDataException.Throw) |> Seq.map (fun hit -> if samples.ContainsKey(moduleId) then let next = samples.[moduleId] diff --git a/AltCover.UICommon/AltCover.UICommon.fsproj b/AltCover.UICommon/AltCover.UICommon.fsproj index 58f273a39..9da495e49 100644 --- a/AltCover.UICommon/AltCover.UICommon.fsproj +++ b/AltCover.UICommon/AltCover.UICommon.fsproj @@ -87,6 +87,7 @@ + all diff --git a/AltCover.UICommon/Icons.fs b/AltCover.UICommon/Icons.fs index 070a2754d..6191ec119 100644 --- a/AltCover.UICommon/Icons.fs +++ b/AltCover.UICommon/Icons.fs @@ -19,8 +19,8 @@ type Icons<'TIcon>(toIcon: System.IO.Stream -> 'TIcon) = .GetExecutingAssembly() .GetManifestResourceStream("AltCover.UICommon." + name + ".png") )) - //with - //| x -> System.InvalidOperationException(name, x) |> raise + //with + //| x -> CommunityToolkit.Diagnostics.ThrowHelper.ThrowInvalidOperationException<'TIcon>(name, x) member self.Report = makeIcon "RawCodeCoverageDataFile" diff --git a/AltCover.UICommon/Lcov.fs b/AltCover.UICommon/Lcov.fs index e224fd60c..639c3d670 100644 --- a/AltCover.UICommon/Lcov.fs +++ b/AltCover.UICommon/Lcov.fs @@ -1,11 +1,12 @@ namespace AltCover -open System.Diagnostics.CodeAnalysis - open System +open System.Diagnostics.CodeAnalysis open System.IO open System.Xml.Linq +open CommunityToolkit.Diagnostics + module internal Lcov = [] type LcovParseException(e: exn) = inherit exn(e.Message, e) + [] + static member Throw<'T>(e: exn) : 'T = + raise <| LcovParseException(e) type LRecord = //SF: @@ -59,13 +65,13 @@ module internal Lcov = | FN _ | DA _ | BRDA _ -> true - | _ -> raise (r |> sprintf "%A" |> InvalidDataException)) + | _ -> r |> sprintf "%A" |> ThrowHelper.ThrowInvalidDataException) |> Seq.sortBy (fun r -> match r with | FN (a, _) -> 4 * a | DA (a, _) -> (4 * a) + 1 | BRDA (a, _, _, _) -> (4 * a) + 2 - | _ -> raise (r |> sprintf "%A" |> InvalidDataException)) + | _ -> r |> sprintf "%A" |> ThrowHelper.ThrowInvalidDataException) |> Seq.fold (fun x r -> // match r with @@ -137,7 +143,7 @@ module internal Lcov = x.Add br x - | _ -> raise (r |> sprintf "%A" |> InvalidDataException)) + | _ -> r |> sprintf "%A" |> ThrowHelper.ThrowInvalidDataException) null |> ignore @@ -149,7 +155,7 @@ module internal Lcov = let ofLines (lines: string array) = try lines - |> Seq.map (fun line -> + |> Seq.map (fun line -> // <-- here match line with | l when l.StartsWith("SF:", StringComparison.Ordinal) -> SF(l.Substring 3) | l when l.StartsWith("FN:", StringComparison.Ordinal) -> @@ -161,7 +167,7 @@ module internal Lcov = | l when l.StartsWith("DA:", StringComparison.Ordinal) -> match (l.Substring 3).Split(',') |> Array.toList with | n :: v :: _ -> DA(n |> Int32.TryParse |> snd, v |> Int32.TryParse |> snd) - | _ -> raise (line |> sprintf "%A" |> InvalidDataException) + | _ -> line |> sprintf "%A" |> ThrowHelper.ThrowInvalidDataException | l when l.StartsWith("BRDA:", StringComparison.Ordinal) -> match (l.Substring 5).Split(',') |> Array.toList with | n :: v :: x :: y :: _ -> @@ -171,7 +177,7 @@ module internal Lcov = x |> Int32.TryParse |> snd, y |> Int32.TryParse |> snd ) - | _ -> raise (line |> sprintf "%A" |> InvalidDataException) + | _ -> line |> sprintf "%A" |> ThrowHelper.ThrowInvalidDataException | _ -> Other) |> Seq.fold (fun (i, l) r -> @@ -187,7 +193,7 @@ module internal Lcov = |> Seq.map (fun (_, l) -> buildModule l) |> Seq.toArray with - | x -> raise <| LcovParseException(x) + | x -> x |> LcovParseException.Throw let toXml file = let root = @@ -207,6 +213,6 @@ module internal Lcov = [] () \ No newline at end of file diff --git a/Build/targets.fsx b/Build/targets.fsx index d1f124524..e174ab917 100644 --- a/Build/targets.fsx +++ b/Build/targets.fsx @@ -1284,6 +1284,10 @@ _Target "FxCop" (fun _ -> + (dd.Item "cake.core") + "/lib/netstandard2.0" nugetCache + @@ "communitytoolkit.diagnostics/" + + (dd.Item "communitytoolkit.diagnostics") + + "/lib/netstandard2.0" + nugetCache @@ "fake.core.environment/" + (dd.Item "fake.core.environment") + "/lib/netstandard2.0" From f41d63ffdb4cbbaaf71a20d0a029a86e7aaf4a8d Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Sun, 13 Mar 2022 16:25:10 +0000 Subject: [PATCH 23/81] Fix off-by-one at end of file --- AltCover.Visualizer/Visualizer.fs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AltCover.Visualizer/Visualizer.fs b/AltCover.Visualizer/Visualizer.fs index 2c7b6cb20..dc4b5c30a 100644 --- a/AltCover.Visualizer/Visualizer.fs +++ b/AltCover.Visualizer/Visualizer.fs @@ -486,13 +486,13 @@ module private Gui = if n.LineOnly then endchars else - n.EndColumn + n.EndColumn - 1 let until = if endchars = 0 then endline else - buff.GetIterAtLineOffset(n.EndLine - 1, Math.Min(ec, endchars) - 1) + buff.GetIterAtLineOffset(n.EndLine - 1, Math.Min(ec, endchars)) let tag = match n.Style with From 9ecfa7ef2d3d20165118623e850d027c7fa02f7c Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Sun, 13 Mar 2022 16:24:49 +0000 Subject: [PATCH 24/81] Linting, suddenly --- AltCover.Visualizer/Persistence.fs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/AltCover.Visualizer/Persistence.fs b/AltCover.Visualizer/Persistence.fs index f2b5dde0a..d28da42b1 100644 --- a/AltCover.Visualizer/Persistence.fs +++ b/AltCover.Visualizer/Persistence.fs @@ -180,14 +180,14 @@ module internal Persistence = let names = fileKey.GetValueNames() |> Array.filter (fun (s: string) -> s.Length = 1 && Char.IsDigit(s.Chars(0))) - |> Array.sortBy (fun s -> Int32.TryParse(s) |> snd) + |> Array.sortBy (Int32.TryParse >> snd) let files = names |> Array.map (keyToValue fileKey) |> Seq.cast - |> Seq.filter (fun n -> not (String.IsNullOrWhiteSpace(n))) - |> Seq.filter (fun n -> File.Exists(n)) + |> Seq.filter (String.IsNullOrWhiteSpace >> not) + |> Seq.filter File.Exists |> Seq.toList handler.CoverageFiles <- files From 49fcec034f22c996e38e780ef3e3e46bbccfb21a Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Thu, 9 Jun 2022 11:14:12 +0100 Subject: [PATCH 25/81] Command line verbose option --- AltCover.Engine/Main.fs | 1 + AltCover.Engine/Runner.fs | 1 + AltCover.Engine/Strings.eo.resx | 7 ++- AltCover.Engine/Strings.resx | 7 ++- AltCover.Tests/AltCover.Runner.Usage.txt | 3 + AltCover.Tests/AltCover.Usage.txt | 3 + AltCover.Tests/Expecto.fs | 4 ++ AltCover.Tests/Runner.Tests.fs | 64 +++++++++++++++---- AltCover.Tests/Tests3.fs | 78 +++++++++++++++++++----- appveyor.yml | 2 +- 10 files changed, 137 insertions(+), 33 deletions(-) diff --git a/AltCover.Engine/Main.fs b/AltCover.Engine/Main.fs index e5a240d02..bfd3e74aa 100644 --- a/AltCover.Engine/Main.fs +++ b/AltCover.Engine/Main.fs @@ -317,6 +317,7 @@ module internal Main = :: CommandLine.error)) (CommandLine.ddFlag "showGenerated" CoverageParameters.showGenerated) ("q", (fun _ -> CommandLine.verbosity <- CommandLine.verbosity + 1)) + ("verbose", (fun _ -> CommandLine.verbosity <- CommandLine.verbosity - 1)) ("?|help|h", (fun x -> CommandLine.help <- x.IsNotNull)) ("<>", diff --git a/AltCover.Engine/Runner.fs b/AltCover.Engine/Runner.fs index 8d464d7a4..23e962f15 100644 --- a/AltCover.Engine/Runner.fs +++ b/AltCover.Engine/Runner.fs @@ -853,6 +853,7 @@ module internal Runner = CommandLine.Format.Local("MultiplesNotAllowed", "--summary") :: CommandLine.error)) ("q", (fun _ -> CommandLine.verbosity <- CommandLine.verbosity + 1)) + ("verbose", (fun _ -> CommandLine.verbosity <- CommandLine.verbosity - 1)) ("?|help|h", (fun x -> CommandLine.help <- not (isNull x))) ("<>", diff --git a/AltCover.Engine/Strings.eo.resx b/AltCover.Engine/Strings.eo.resx index 97af745bf..68a5a5676 100644 --- a/AltCover.Engine/Strings.eo.resx +++ b/AltCover.Engine/Strings.eo.resx @@ -155,9 +155,9 @@ Vidu ankaŭ '--inplace' Krei dosierujon {0} - AltCover [/i[nputDirectory]=VALO] [/o[utputDirectory]=VALO] [/y|symbolDirectory=VALO] [/d[ependency]=VALO] [/k[ey]=VALO] [/sn|strongNameKey=VALO] [/r[eport]=VALO] [/f[ileFilter]=VALO] [/p[athFilter]=VALO] [/s|assemblyFilter=VALO] [/e|assemblyExcludeFilter=VALO] [/t[ypeFilter]=VALO] [/m[ethodFilter]=VALO] [/a[ttributeFilter]=VALO] [/attributetoplevel=VALO] [/typetoplevel=VALO] [/methodtoplevel=VALO] [--l[ocalSource]] [/c[allContext]=VALO] [/reportFormat=VALO] [--inplace] [--save] [--zipfile] [--methodpoint] [--single] [--linecover] [--branchcover] [--dropReturnCode] [--sourcelink] [--defer] [--v[isibleBranches]] [/showstatic[=VALO]] [--showGenerated] [--?|help|h] [-- ] [...] + AltCover [/i[nputDirectory]=VALO] [/o[utputDirectory]=VALO] [/y|symbolDirectory=VALO] [/d[ependency]=VALO] [/k[ey]=VALO] [/sn|strongNameKey=VALO] [/r[eport]=VALO] [/f[ileFilter]=VALO] [/p[athFilter]=VALO] [/s|assemblyFilter=VALO] [/e|assemblyExcludeFilter=VALO] [/t[ypeFilter]=VALO] [/m[ethodFilter]=VALO] [/a[ttributeFilter]=VALO] [/attributetoplevel=VALO] [/typetoplevel=VALO] [/methodtoplevel=VALO] [--l[ocalSource]] [/c[allContext]=VALO] [/reportFormat=VALO] [--inplace] [--save] [--zipfile] [--methodpoint] [--single] [--linecover] [--branchcover] [--dropReturnCode] [--sourcelink] [--defer] [--v[isibleBranches]] [/showstatic[=VALO]] [--showGenerated] [-q] [--verbose] [--?|help|h] [-- ] [...] aŭ -AltCover Runner [/r[ecorderDirectory]=VALO] [/w[orkingDirectory]=VALO] [/x|executable=VALO] [--collect] [/l[covReport]=VALO] [/t[hreshold]=VALO] [/c[obertura]=VALO] [/o[utputFile]=VALO] [--dropReturnCode] [/summary|teamcity[=VALO]] [--?|help|h] [-- ] [...] +AltCover Runner [/r[ecorderDirectory]=VALO] [/w[orkingDirectory]=VALO] [/x|executable=VALO] [--collect] [/l[covReport]=VALO] [/t[hreshold]=VALO] [/c[obertura]=VALO] [/o[utputFile]=VALO] [--dropReturnCode] [/summary|teamcity[=VALO]] [-q] [--verbose] [--?|help|h] [-- ] [...] aŭ AltCover ImportModule aŭ @@ -456,4 +456,7 @@ Se la opcio ne ĉeestas, tiam la defaŭlta estas 'OC'. Preterpasi {0} ĉar ĝi jam estis instrumentita. + + Laŭvola, multobla: Vorta reĝimo -- unufoje por ŝalti detalajn mesaĝojn (aŭ malfari unu nivelon de -q se iu estas agordita) + \ No newline at end of file diff --git a/AltCover.Engine/Strings.resx b/AltCover.Engine/Strings.resx index 3da973d32..3116763cc 100644 --- a/AltCover.Engine/Strings.resx +++ b/AltCover.Engine/Strings.resx @@ -155,9 +155,9 @@ See also '--inplace' Creating folder {0} - AltCover [/i[nputDirectory]=VALUE] [/o[utputDirectory]=VALUE] [/y|symbolDirectory=VALUE] [/d[ependency]=VALUE] [/k[ey]=VALUE] [/sn|strongNameKey=VALUE] [/r[eport]=VALUE] [/f[ileFilter]=VALUE] [/p[athFilter]=VALUE] [/s|assemblyFilter=VALUE] [/e|assemblyExcludeFilter=VALUE] [/t[ypeFilter]=VALUE] [/m[ethodFilter]=VALUE] [/a[ttributeFilter]=VALUE] [/attributetoplevel=VALUE] [/typetoplevel=VALUE] [/methodtoplevel=VALUE] [--l[ocalSource]] [/c[allContext]=VALUE] [/reportFormat=VALUE] [--inplace] [--save] [--zipfile] [--methodpoint] [--single] [--linecover] [--branchcover] [--dropReturnCode] [--sourcelink] [--defer] [--v[isibleBranches]] [/showstatic[=VALUE]] [--showGenerated] [--?|help|h] [-- ] [...] + AltCover [/i[nputDirectory]=VALUE] [/o[utputDirectory]=VALUE] [/y|symbolDirectory=VALUE] [/d[ependency]=VALUE] [/k[ey]=VALUE] [/sn|strongNameKey=VALUE] [/r[eport]=VALUE] [/f[ileFilter]=VALUE] [/p[athFilter]=VALUE] [/s|assemblyFilter=VALUE] [/e|assemblyExcludeFilter=VALUE] [/t[ypeFilter]=VALUE] [/m[ethodFilter]=VALUE] [/a[ttributeFilter]=VALUE] [/attributetoplevel=VALUE] [/typetoplevel=VALUE] [/methodtoplevel=VALUE] [--l[ocalSource]] [/c[allContext]=VALUE] [/reportFormat=VALUE] [--inplace] [--save] [--zipfile] [--methodpoint] [--single] [--linecover] [--branchcover] [--dropReturnCode] [--sourcelink] [--defer] [--v[isibleBranches]] [/showstatic[=VALUE]] [--showGenerated] [-q] [--verbose] [--?|help|h] [-- ] [...] or -AltCover Runner [/r[ecorderDirectory]=VALUE] [/w[orkingDirectory]=VALUE] [/x|executable=VALUE] [--collect] [/l[covReport]=VALUE] [/t[hreshold]=VALUE] [/c[obertura]=VALUE] [/o[utputFile]=VALUE] [--dropReturnCode] [/summary|teamcity[=VALUE]] [--?|help|h] [-- ] [...] +AltCover Runner [/r[ecorderDirectory]=VALUE] [/w[orkingDirectory]=VALUE] [/x|executable=VALUE] [--collect] [/l[covReport]=VALUE] [/t[hreshold]=VALUE] [/c[obertura]=VALUE] [/o[utputFile]=VALUE] [--dropReturnCode] [/summary|teamcity[=VALUE]] [-q] [--verbose] [--?|help|h] [-- ] [...] or AltCover ImportModule or @@ -460,4 +460,7 @@ If the option is not present, then the default is 'OC'. Skipping {0} as it has already been instrumented. + + Optional, multiple: Verbose mode -- once to switch on detailed messages (or undo one level of -q if any have been set) + \ No newline at end of file diff --git a/AltCover.Tests/AltCover.Runner.Usage.txt b/AltCover.Tests/AltCover.Runner.Usage.txt index 8b23f766f..f64ca3e0d 100644 --- a/AltCover.Tests/AltCover.Runner.Usage.txt +++ b/AltCover.Tests/AltCover.Runner.Usage.txt @@ -56,4 +56,7 @@ off informational messages, twice to switch off warnings as well, three (or more) times to switch off all messages. + --verbose Optional, multiple: Verbose mode -- once to switch + on detailed messages (or undo one level of -q if + any have been set) -?, --help, -h Prints out the options. \ No newline at end of file diff --git a/AltCover.Tests/AltCover.Usage.txt b/AltCover.Tests/AltCover.Usage.txt index c6dd5d96a..92720558e 100644 --- a/AltCover.Tests/AltCover.Usage.txt +++ b/AltCover.Tests/AltCover.Usage.txt @@ -113,4 +113,7 @@ off informational messages, twice to switch off warnings as well, three (or more) times to switch off all messages. + --verbose Optional, multiple: Verbose mode -- once to switch + on detailed messages (or undo one level of -q if + any have been set) -?, --help, -h Prints out the options. \ No newline at end of file diff --git a/AltCover.Tests/Expecto.fs b/AltCover.Tests/Expecto.fs index c7e87dfcf..2ea25dba0 100644 --- a/AltCover.Tests/Expecto.fs +++ b/AltCover.Tests/Expecto.fs @@ -139,6 +139,8 @@ module ExpectoTestManifest = Tests.AltCoverRunnerTests.ParsingMultiQuietWorks, "Runner.ParsingMultiQuietWorks" Tests.AltCoverRunnerTests.ParsingBatchMultiQuietWorks, "Runner.ParsingBatchMultiQuietWorks" + Tests.AltCoverRunnerTests.ParsingVerboseWorks, "Runner.ParsingVerboseWorks" + Tests.AltCoverRunnerTests.ParsingMixedQuietWorks, "Runner.ParsingMixedQuietWorks" Tests.AltCoverRunnerTests.ShouldRequireExe, "Runner.ShouldRequireExe" Tests.AltCoverRunnerTests.ShouldAcceptExe, "Runner.ShouldAcceptExe" Tests.AltCoverRunnerTests.ShouldRequireCollectIfNotExe, @@ -788,6 +790,8 @@ module ExpectoTestManifest = Tests.AltCoverTests3.ParsingMultiQuietWorks, "Tests3.ParsingMultiQuietWorks" Tests.AltCoverTests3.ParsingBatchMultiQuietWorks, "Tests3.ParsingBatchMultiQuietWorks" + Tests.AltCoverTests3.ParsingVerboseWorks, "Tests3.ParsingVerboseWorks" + Tests.AltCoverTests3.ParsingMixedQuietWorks, "Tests3.ParsingMixedQuietWorks" Tests.AltCoverTests3.OutputLeftPassesThrough, "Tests3.OutputLeftPassesThrough" Tests.AltCoverTests3.OutputInPlaceFails, "Tests3.OutputInPlaceFails" Tests.AltCoverTests3.ScreeningFilesShouldRejectTheInstrumentedOnes, diff --git a/AltCover.Tests/Runner.Tests.fs b/AltCover.Tests/Runner.Tests.fs index 617270d9f..ecef681fb 100644 --- a/AltCover.Tests/Runner.Tests.fs +++ b/AltCover.Tests/Runner.Tests.fs @@ -781,7 +781,7 @@ module AltCoverRunnerTests = let ShouldHaveExpectedOptions () = Runner.init () let options = Runner.declareOptions () - let optionCount = 11 + let optionCount = 12 let optionNames = options @@ -816,11 +816,11 @@ module AltCoverRunnerTests = // swap "collect" and "commandline" Assert.That( primitiveNames |> List.length, - Is.EqualTo optionCount, + Is.EqualTo (optionCount - 1), // drop -q/--verbose => verbosity "expected " + String.Join("; ", optionNames) + Environment.NewLine - + "but got " + + "but got primitives " + String.Join("; ", primitiveNames) ) @@ -833,11 +833,11 @@ module AltCoverRunnerTests = Assert.That( typesafeNames |> List.length, - Is.EqualTo optionCount, + Is.EqualTo (optionCount - 1), // drop -q/--verbose => verbosity "expected " + String.Join("; ", optionNames) + Environment.NewLine - + "but got " + + "but got typesafe " + String.Join("; ", typesafeNames) ) @@ -862,22 +862,22 @@ module AltCoverRunnerTests = // adds Runner and the trailing command line arguments Assert.That( commandFragments |> List.length, - Is.EqualTo(optionCount + 2), + Is.EqualTo(optionCount + 1), // drop -q/--verbose => verbosity "expected " + String.Join("; ", optionNames) + Environment.NewLine - + "but got " + + "but got fragments " + String.Join("; ", typesafeNames) ) // todo // Adds "Tag", "IsPrimitive", "IsTypeSafe" Assert.That( fsapiNames |> Seq.length, - Is.EqualTo(optionCount + fsapiCases + 1), + Is.EqualTo(optionCount + fsapiCases), // drop -q/--verbose => verbosity "expected " + String.Join("; ", primitiveNames) + Environment.NewLine - + "but got " + + "but got apinames " + String.Join("; ", fsapiNames) ) @@ -893,11 +893,11 @@ module AltCoverRunnerTests = // gains summary (output) Assert.That( taskNames |> Seq.length, - Is.EqualTo(optionCount + 1), + Is.EqualTo(optionCount), // drop -q/--verbose => verbosity "expected " + String.Join("; ", primitiveNames) + Environment.NewLine - + "but got " + + "but got tasks " + String.Join("; ", taskNames) ) @@ -929,7 +929,7 @@ module AltCoverRunnerTests = // N/A, N/A, N/A, fixed, N/A Assert.That( attributeNames |> Seq.length, - Is.EqualTo(optionCount - 5), + Is.EqualTo(optionCount - 6), // drop -q/--verbose => verbosity "expected " + String.Join("; ", primitiveNames) + Environment.NewLine @@ -2095,6 +2095,26 @@ module AltCoverRunnerTests = finally CommandLine.verbosity <- 0 + [] + let ParsingVerboseWorks () = + Runner.init () + + try + let options = Runner.declareOptions () + let input = [| "--verbose" |] + + let parse = + CommandLine.parseCommandLine input options + + match parse with + | Right (x, y) -> + Assert.That(y, Is.SameAs options) + Assert.That(x, Is.Empty) + + Assert.That(CommandLine.verbosity, Is.EqualTo -1) + finally + CommandLine.verbosity <- 0 + [] let ParsingMultiQuietWorks () = Runner.init () @@ -2115,6 +2135,26 @@ module AltCoverRunnerTests = finally CommandLine.verbosity <- 0 + [] + let ParsingMixedQuietWorks () = + Runner.init () + + try + let options = Runner.declareOptions () + let input = [| "-qqq"; "--verbose"; "-q" |] + + let parse = + CommandLine.parseCommandLine input options + + match parse with + | Right (x, y) -> + Assert.That(y, Is.SameAs options) + Assert.That(x, Is.Empty) + + Assert.That(CommandLine.verbosity, Is.EqualTo 3) + finally + CommandLine.verbosity <- 0 + [] let ParsingBatchMultiQuietWorks () = Runner.init () diff --git a/AltCover.Tests/Tests3.fs b/AltCover.Tests/Tests3.fs index 0bff0fea9..f6f05f0bb 100644 --- a/AltCover.Tests/Tests3.fs +++ b/AltCover.Tests/Tests3.fs @@ -95,7 +95,7 @@ module AltCoverTests3 = let ShouldHaveExpectedOptions () = Main.init () let options = Main.I.declareOptions () - let optionCount = 34 + let optionCount = 35 let optionNames = options @@ -130,11 +130,11 @@ module AltCoverTests3 = // add "commandline" Assert.That( primitiveNames |> List.length, - Is.EqualTo(optionCount + 1), + Is.EqualTo(optionCount), // drop -q/--verbose => verbosity "expected " + String.Join("; ", optionNames) + Environment.NewLine - + "but got " + + "but got primitive " + String.Join("; ", primitiveNames) ) @@ -147,11 +147,11 @@ module AltCoverTests3 = Assert.That( typesafeNames |> List.length, - Is.EqualTo(optionCount + 1), + Is.EqualTo(optionCount), // drop -q/--verbose => verbosity "expected " + String.Join("; ", optionNames) + Environment.NewLine - + "but got " + + "but got typesafe " + String.Join("; ", typesafeNames) ) @@ -183,22 +183,22 @@ module AltCoverTests3 = Assert.That( commandFragments |> List.length, - Is.EqualTo optionCount, + Is.EqualTo (optionCount - 1), // drop -q/--verbose => verbosity "expected " + String.Join("; ", optionNames) + Environment.NewLine - + "but got " + + "but got fragments " + String.Join("; ", commandFragments) ) // Adds "Tag", "IsPrimitive", "IsTypeSafe" Assert.That( fsapiNames |> Seq.length, - Is.EqualTo(optionCount + 1 + fsapiCases + 1), + Is.EqualTo(optionCount + fsapiCases + 1), // drop -q/--verbose => verbosity "expected " + String.Join("; ", primitiveNames) + Environment.NewLine - + "but got " + + "but got fsapi " + String.Join("; ", fsapiNames) ) @@ -213,11 +213,11 @@ module AltCoverTests3 = Assert.That( taskNames |> Seq.length, - Is.EqualTo(optionCount + 1), + Is.EqualTo(optionCount), // drop -q/--verbose => verbosity "expected " + String.Join("; ", primitiveNames) + Environment.NewLine - + "but got " + + "but got tasks " + String.Join("; ", taskNames) ) @@ -250,11 +250,11 @@ module AltCoverTests3 = // inplace is explicitly hard-coded Assert.That( attributeNames |> Seq.length, - Is.EqualTo(optionCount - 3), + Is.EqualTo(optionCount - 4), // drop -q/--verbose => verbosity "expected " + String.Join("; ", primitiveNames) + Environment.NewLine - + "but got " + + "but got targets " + String.Join("; ", attributeNames) ) @@ -2764,6 +2764,26 @@ module AltCoverTests3 = finally CommandLine.verbosity <- 0 + [] + let ParsingVerboseWorks () = + Main.init () + + try + let options = Main.I.declareOptions () + let input = [| "--verbose" |] + + let parse = + CommandLine.parseCommandLine input options + + match parse with + | Right (x, y) -> + Assert.That(y, Is.SameAs options) + Assert.That(x, Is.Empty) + + Assert.That(CommandLine.verbosity, Is.EqualTo -1) + finally + CommandLine.verbosity <- 0 + [] let ParsingMultiQuietWorks () = Main.init () @@ -2784,6 +2804,26 @@ module AltCoverTests3 = finally CommandLine.verbosity <- 0 + [] + let ParsingMixedQuietWorks () = + Main.init () + + try + let options = Main.I.declareOptions () + let input = [| "-qq"; "--verbose"; "-qq" |] + + let parse = + CommandLine.parseCommandLine input options + + match parse with + | Right (x, y) -> + Assert.That(y, Is.SameAs options) + Assert.That(x, Is.Empty) + + Assert.That(CommandLine.verbosity, Is.EqualTo 3) + finally + CommandLine.verbosity <- 0 + [] let ParsingBatchMultiQuietWorks () = Main.init () @@ -3700,7 +3740,8 @@ module AltCoverTests3 = .GetString("HelpText") .Replace("\r\n", "\n") - let fixup (s: String) = + let fixupBase (s: String) = + let valued = s.EndsWith("=", StringComparison.Ordinal) @@ -3731,16 +3772,20 @@ module AltCoverTests3 = else "[--" + core + "]" + let fixup (s: String) = + if s.Length < 2 then sprintf "[-%s]" s + else fixupBase s + let mainHelp = Main.I.declareOptions () |> Seq.map (fun o -> o.Prototype) - |> Seq.filter (fun s -> s.Length > 2) + |> Seq.filter (fun s -> s.Length <> 2) |> Seq.map fixup let runnerHelp = Runner.declareOptions () |> Seq.map (fun o -> o.Prototype) - |> Seq.filter (fun s -> s.Length > 2) + |> Seq.filter (fun s -> s.Length <> 2) |> Seq.map fixup let synthetic = @@ -3752,6 +3797,7 @@ module AltCoverTests3 = + "or, for the global tool only\nAltCover TargetsPath\n\n" + "See https://stevegilham.github.io/altcover/Usage for full details.\n" + Assert.That (synthetic, Is.EqualTo helptext) test <@ synthetic = helptext @> #if !MONO // Mono won't play nicely with Esperanto placeholder locale // remove for fantomas diff --git a/appveyor.yml b/appveyor.yml index c4f893c6d..8f3401a86 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,4 +1,4 @@ -version: 8.2.{build}-pre +version: 8.3.{build}-pre branches: only: - /release.*/ From 3e11fb2b9503c1e040154cf60db5531cd9545c6d Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Thu, 9 Jun 2022 16:07:14 +0100 Subject: [PATCH 26/81] Wiring up the rest --- AltCover.DotNet/DotNet.fs | 2 +- AltCover.Engine/AltCover.fsi | 4 ++-- AltCover.Engine/Args.fs | 9 +++++++-- AltCover.Engine/Primitive.fsi | 4 ++-- AltCover.Engine/Tasks.fsi | 4 ++-- AltCover.Engine/TypeSafe.fsi | 4 ++-- AltCover.Tests/Runner.Tests.fs | 4 ++-- AltCover.Tests/Tests3.fs | 6 +++--- AltCover.Tests/XTests.fs | 11 +++++++---- 9 files changed, 28 insertions(+), 20 deletions(-) diff --git a/AltCover.DotNet/DotNet.fs b/AltCover.DotNet/DotNet.fs index cfe2efb8d..443bf365a 100644 --- a/AltCover.DotNet/DotNet.fs +++ b/AltCover.DotNet/DotNet.fs @@ -131,7 +131,7 @@ module DotNet = [ // poss s <> Info fromValue, - "Verbosity", //=`"Levels of output -- Info (default), Warning, Error, or Off" + "Verbosity", //=`"Levels of output -- Verbose, Info (default), Warning, Error, or Off" verbosity :> obj, verbosity <> System.Diagnostics.TraceLevel.Info ] diff --git a/AltCover.Engine/AltCover.fsi b/AltCover.Engine/AltCover.fsi index 39fac9e92..d700f647c 100644 --- a/AltCover.Engine/AltCover.fsi +++ b/AltCover.Engine/AltCover.fsi @@ -116,7 +116,7 @@ namespace AltCoverFake.DotNet.Testing /// member SummaryFormat : System.String /// - /// Corresponds to command line option ` -q` + /// Corresponds to command line options `-q` and `--verbose` /// member Verbosity : System.Diagnostics.TraceLevel // ``` @@ -305,7 +305,7 @@ namespace AltCoverFake.DotNet.Testing /// member ShowGenerated : bool /// - /// Corresponds to command line option ` -q` + /// Corresponds to command line options `-q` and `--verbose` /// member Verbosity : System.Diagnostics.TraceLevel // ``` diff --git a/AltCover.Engine/Args.fs b/AltCover.Engine/Args.fs index e5260bf6a..deb0fd56b 100644 --- a/AltCover.Engine/Args.fs +++ b/AltCover.Engine/Args.fs @@ -96,7 +96,9 @@ module internal Args = |> List.collect (fun (a, b) -> flag a b) let internal countItems (args: Abstract.IPrepareOptions) = - [ ("-q", 2 - (int args.Verbosity)) ] + let v = int args.Verbosity + [ ("-q", 2 - v) + ("--verbose", v - 4)] let internal counts (args: Abstract.IPrepareOptions) = args @@ -135,7 +137,10 @@ module internal Args = let exe = args.Executable - let countItems (args: Abstract.ICollectOptions) = [ ("-q", 2 - (int args.Verbosity)) ] + let countItems (args: Abstract.ICollectOptions) = + let v = int args.Verbosity + [ ("-q", 2 - v) + ("--verbose", v - 4)] let counts (args: Abstract.ICollectOptions) = args diff --git a/AltCover.Engine/Primitive.fsi b/AltCover.Engine/Primitive.fsi index bcdb23a46..60b19ccd0 100644 --- a/AltCover.Engine/Primitive.fsi +++ b/AltCover.Engine/Primitive.fsi @@ -76,7 +76,7 @@ namespace AltCoverFake.DotNet.Testing /// SummaryFormat: System.String /// - /// Corresponds to command line option ` -q` + /// Corresponds to command line options `-q` and `--verbose` /// Verbosity : System.Diagnostics.TraceLevel } @@ -243,7 +243,7 @@ namespace AltCoverFake.DotNet.Testing /// ShowGenerated: bool /// - /// Corresponds to command line option ` -q` + /// Corresponds to command line options `-q` and `--verbose` /// Verbosity : System.Diagnostics.TraceLevel } diff --git a/AltCover.Engine/Tasks.fsi b/AltCover.Engine/Tasks.fsi index 1a255ef26..2d0355a72 100644 --- a/AltCover.Engine/Tasks.fsi +++ b/AltCover.Engine/Tasks.fsi @@ -166,7 +166,7 @@ type Prepare = /// member ShowGenerated : bool with get, set /// - /// Corresponds to command line option ` -q` (expects names of `System.Diagnostics.TraceLevel` values) + /// Corresponds to command line options ` -q` & `--verbose` (expects names of `System.Diagnostics.TraceLevel` values) /// member Verbosity : string with get, set end @@ -236,7 +236,7 @@ type Collect = /// member SummaryFormat : string with get, set /// - /// Corresponds to command line option ` -q` (expects names of `System.Diagnostics.TraceLevel` values) + /// Corresponds to command line options ` -q` & `--verbose` (expects names of `System.Diagnostics.TraceLevel` values) /// member Verbosity : string with get, set end diff --git a/AltCover.Engine/TypeSafe.fsi b/AltCover.Engine/TypeSafe.fsi index 87db513d0..2de05ffa9 100644 --- a/AltCover.Engine/TypeSafe.fsi +++ b/AltCover.Engine/TypeSafe.fsi @@ -502,7 +502,7 @@ namespace AltCoverFake.DotNet.Testing /// SummaryFormat: SummaryFormat /// - /// Corresponds to command line option ` -q` + /// Corresponds to command line options `-q` and `--verbose` /// Verbosity : System.Diagnostics.TraceLevel } @@ -669,7 +669,7 @@ namespace AltCoverFake.DotNet.Testing /// ShowGenerated: Flag /// - /// Corresponds to command line option ` -q` + /// Corresponds to command line options `-q` and `--verbose` /// Verbosity : System.Diagnostics.TraceLevel } diff --git a/AltCover.Tests/Runner.Tests.fs b/AltCover.Tests/Runner.Tests.fs index ecef681fb..1bf64a85b 100644 --- a/AltCover.Tests/Runner.Tests.fs +++ b/AltCover.Tests/Runner.Tests.fs @@ -5710,7 +5710,7 @@ module AltCoverRunnerTests = .Replace("\r", String.Empty) .Replace("\\", "/") .Replace( - """version="3.0.0.0""", + """version="8.2.0.0""", "version=\"" + typeof .Assembly.GetName() @@ -6383,7 +6383,7 @@ module AltCoverRunnerTests = .Replace("\r", String.Empty) .Replace("\\", "/") .Replace( - """version="3.0.0.0""", + """version="8.2.0.0""", "version=\"" + typeof .Assembly.GetName() diff --git a/AltCover.Tests/Tests3.fs b/AltCover.Tests/Tests3.fs index f6f05f0bb..234262d24 100644 --- a/AltCover.Tests/Tests3.fs +++ b/AltCover.Tests/Tests3.fs @@ -183,7 +183,7 @@ module AltCoverTests3 = Assert.That( commandFragments |> List.length, - Is.EqualTo (optionCount - 1), // drop -q/--verbose => verbosity + Is.EqualTo (optionCount), // drop -q/--verbose => verbosity "expected " + String.Join("; ", optionNames) + Environment.NewLine @@ -3959,7 +3959,7 @@ module AltCoverTests3 = try // subject.ACLog <- Some <| FSApi.Logging.Create() [ "Off", [ "-q"; "-q"; "-q" ] - "Verbose", [] + "Verbose", [ "--verbose" ] "NoneOfTheAbove", [] "Info", [] "Warning", [ "-q" ] @@ -4177,7 +4177,7 @@ module AltCoverTests3 = try [ "Off", [ "-q"; "-q"; "-q" ] - "Verbose", [] + "Verbose", [ "--verbose" ] "NoneOfTheAbove", [] "Info", [] "Warning", [ "-q" ] diff --git a/AltCover.Tests/XTests.fs b/AltCover.Tests/XTests.fs index b91b3e64c..0875153d5 100644 --- a/AltCover.Tests/XTests.fs +++ b/AltCover.Tests/XTests.fs @@ -171,6 +171,7 @@ module AltCoverXTests = let subject = { Primitive.CollectOptions.Create() with Threshold = "23" + Verbosity = System.Diagnostics.TraceLevel.Error CommandLine = null } let instance = @@ -179,7 +180,7 @@ module AltCoverXTests = let scan = instance.Validate(false) test <@ scan.Length = 0 @> test <@ (instance.GetHashCode() :> obj).IsNotNull @> - test <@ instance |> Args.collect = [ "Runner"; "-t"; "23"; "--collect" ] @> + test <@ instance |> Args.collect = [ "Runner"; "-t"; "23"; "--collect"; "-q"; "-q" ] @> // hack let rerun = AltCover.CollectOptions.Abstract instance @@ -187,7 +188,7 @@ module AltCoverXTests = let scan = rerun.Validate(false) test <@ scan.Length = 0 @> test <@ (rerun.GetHashCode() :> obj).IsNotNull @> - test <@ rerun |> Args.collect = [ "Runner"; "-t"; "23"; "--collect" ] @> + test <@ rerun |> Args.collect = [ "Runner"; "-t"; "23"; "--collect"; "-q"; "-q" ] @> [] let TypeSafeEmptyThresholdCanBeValidated () = @@ -212,6 +213,7 @@ module AltCoverXTests = { TypeSafe.CollectOptions.Create() with Threshold = TypeSafe.Threshold t SummaryFormat = TypeSafe.BPlus + Verbosity = System.Diagnostics.TraceLevel.Verbose Executable = TypeSafe.Tool "dotnet" } let instance = @@ -228,13 +230,14 @@ module AltCoverXTests = "dotnet" "-t" "S23B16M7C3" - "--summary:BOC" ] @> + "--summary:BOC" + "--verbose" ] @> let validate = instance.WhatIf(false) test <@ (validate.GetHashCode() :> obj).IsNotNull @> test - <@ validate.ToString() = "altcover Runner -x dotnet -t S23B16M7C3 --summary:BOC" @> + <@ validate.ToString() = "altcover Runner -x dotnet -t S23B16M7C3 --summary:BOC --verbose" @> [] let TypeSafeCollectSummaryCanBeValidated () = From 90c195c82590c1f09ffedd55d04787b6ef96eea9 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Thu, 9 Jun 2022 16:45:41 +0100 Subject: [PATCH 27/81] Fantomas --- AltCover.Engine/Args.fs | 6 ++--- AltCover.Engine/CommandLine.fs | 5 ++-- AltCover.Engine/Instrument.fs | 6 +++-- AltCover.Engine/Runner.fs | 5 ++-- AltCover.Tests/Expecto.fs | 4 ++-- AltCover.Tests/Runner.Tests.fs | 4 ++-- AltCover.Tests/Tests.fs | 23 ++++++------------ AltCover.Tests/Tests2.fs | 8 +++---- AltCover.Tests/Tests3.fs | 26 ++++++++++---------- AltCover.Tests/XTests.fs | 44 ++++++++++++++++++++++------------ Build/targets.fsx | 2 +- 11 files changed, 69 insertions(+), 64 deletions(-) diff --git a/AltCover.Engine/Args.fs b/AltCover.Engine/Args.fs index deb0fd56b..768651d57 100644 --- a/AltCover.Engine/Args.fs +++ b/AltCover.Engine/Args.fs @@ -97,8 +97,7 @@ module internal Args = let internal countItems (args: Abstract.IPrepareOptions) = let v = int args.Verbosity - [ ("-q", 2 - v) - ("--verbose", v - 4)] + [ ("-q", 2 - v); ("--verbose", v - 4) ] let internal counts (args: Abstract.IPrepareOptions) = args @@ -139,8 +138,7 @@ module internal Args = let countItems (args: Abstract.ICollectOptions) = let v = int args.Verbosity - [ ("-q", 2 - v) - ("--verbose", v - 4)] + [ ("-q", 2 - v); ("--verbose", v - 4) ] let counts (args: Abstract.ICollectOptions) = args diff --git a/AltCover.Engine/CommandLine.fs b/AltCover.Engine/CommandLine.fs index a900369d3..2dafb9273 100644 --- a/AltCover.Engine/CommandLine.fs +++ b/AltCover.Engine/CommandLine.fs @@ -250,8 +250,7 @@ module internal CommandLine = | :? ArgumentException as a -> a |> (logException store) | :? NotSupportedException as n -> n |> (logException store) | :? IOException as i -> i |> (logException store) - | :? System.Security.SecurityException as s -> - s |> (logException store) + | :? System.Security.SecurityException as s -> s |> (logException store) | :? UnauthorizedAccessException as u -> u |> (logException store) result @@ -323,7 +322,7 @@ module internal CommandLine = [] - static member Throw<'T>(e : exn) : 'T = + static member Throw<'T>(e: exn) : 'T = (e.Message, e) |> SecurityException |> raise let internal findAssemblyName f = diff --git a/AltCover.Engine/Instrument.fs b/AltCover.Engine/Instrument.fs index f4a4825ad..76ed79374 100644 --- a/AltCover.Engine/Instrument.fs +++ b/AltCover.Engine/Instrument.fs @@ -192,9 +192,11 @@ module internal Instrument = = let ascii = System.Text.Encoding.ASCII - let a = ascii.GetBytes(assembly.Identity.Assembly) + let a = + ascii.GetBytes(assembly.Identity.Assembly) - let c = ascii.GetBytes(assembly.Identity.Configuration) + let c = + ascii.GetBytes(assembly.Identity.Configuration) let blob = [| prelude |> List.toArray diff --git a/AltCover.Engine/Runner.fs b/AltCover.Engine/Runner.fs index 23e962f15..caf3893ce 100644 --- a/AltCover.Engine/Runner.fs +++ b/AltCover.Engine/Runner.fs @@ -20,9 +20,8 @@ module internal ThrowHelper = type FormatException with [] - static member Throw<'T>(message: string) : 'T = - message |> FormatException |> raise + Justification = "Matches clause type")>] + static member Throw<'T>(message: string) : 'T = message |> FormatException |> raise [] type internal SummaryFormat = diff --git a/AltCover.Tests/Expecto.fs b/AltCover.Tests/Expecto.fs index 2ea25dba0..da4bb3847 100644 --- a/AltCover.Tests/Expecto.fs +++ b/AltCover.Tests/Expecto.fs @@ -140,7 +140,7 @@ module ExpectoTestManifest = Tests.AltCoverRunnerTests.ParsingBatchMultiQuietWorks, "Runner.ParsingBatchMultiQuietWorks" Tests.AltCoverRunnerTests.ParsingVerboseWorks, "Runner.ParsingVerboseWorks" - Tests.AltCoverRunnerTests.ParsingMixedQuietWorks, "Runner.ParsingMixedQuietWorks" + Tests.AltCoverRunnerTests.ParsingMixedQuietWorks, "Runner.ParsingMixedQuietWorks" Tests.AltCoverRunnerTests.ShouldRequireExe, "Runner.ShouldRequireExe" Tests.AltCoverRunnerTests.ShouldAcceptExe, "Runner.ShouldAcceptExe" Tests.AltCoverRunnerTests.ShouldRequireCollectIfNotExe, @@ -791,7 +791,7 @@ module ExpectoTestManifest = Tests.AltCoverTests3.ParsingBatchMultiQuietWorks, "Tests3.ParsingBatchMultiQuietWorks" Tests.AltCoverTests3.ParsingVerboseWorks, "Tests3.ParsingVerboseWorks" - Tests.AltCoverTests3.ParsingMixedQuietWorks, "Tests3.ParsingMixedQuietWorks" + Tests.AltCoverTests3.ParsingMixedQuietWorks, "Tests3.ParsingMixedQuietWorks" Tests.AltCoverTests3.OutputLeftPassesThrough, "Tests3.OutputLeftPassesThrough" Tests.AltCoverTests3.OutputInPlaceFails, "Tests3.OutputInPlaceFails" Tests.AltCoverTests3.ScreeningFilesShouldRejectTheInstrumentedOnes, diff --git a/AltCover.Tests/Runner.Tests.fs b/AltCover.Tests/Runner.Tests.fs index 1bf64a85b..ce5b5b219 100644 --- a/AltCover.Tests/Runner.Tests.fs +++ b/AltCover.Tests/Runner.Tests.fs @@ -816,7 +816,7 @@ module AltCoverRunnerTests = // swap "collect" and "commandline" Assert.That( primitiveNames |> List.length, - Is.EqualTo (optionCount - 1), // drop -q/--verbose => verbosity + Is.EqualTo(optionCount - 1), // drop -q/--verbose => verbosity "expected " + String.Join("; ", optionNames) + Environment.NewLine @@ -833,7 +833,7 @@ module AltCoverRunnerTests = Assert.That( typesafeNames |> List.length, - Is.EqualTo (optionCount - 1), // drop -q/--verbose => verbosity + Is.EqualTo(optionCount - 1), // drop -q/--verbose => verbosity "expected " + String.Join("; ", optionNames) + Environment.NewLine diff --git a/AltCover.Tests/Tests.fs b/AltCover.Tests/Tests.fs index 9c83e945f..7b4bd7c46 100644 --- a/AltCover.Tests/Tests.fs +++ b/AltCover.Tests/Tests.fs @@ -82,16 +82,10 @@ module AltCoverTests = Path.Combine(SolutionDir(), "_Mono/Sample1/Sample1.exe") #if !NET472 let sample1path = - Path.Combine( - SolutionDir(), - "_Binaries/Sample1/Debug+AnyCPU/net6.0/Sample1.dll" - ) + Path.Combine(SolutionDir(), "_Binaries/Sample1/Debug+AnyCPU/net6.0/Sample1.dll") let sample4path = - Path.Combine( - SolutionDir(), - "_Binaries/Sample4/Debug+AnyCPU/net6.0/Sample4.dll" - ) + Path.Combine(SolutionDir(), "_Binaries/Sample4/Debug+AnyCPU/net6.0/Sample4.dll") let sample8path = Path.Combine( @@ -145,13 +139,13 @@ module AltCoverTests = Exemption.None ] @> // ProgramDatabase.fs - let isAssemblyType (file : string) = + let isAssemblyType (file: string) = #if !NET472 - [".dll"] + [ ".dll" ] #else - [".dll"; ".exe"] + [ ".dll"; ".exe" ] #endif - |> Seq.exists(fun x -> file.EndsWith(x, StringComparison.OrdinalIgnoreCase)) + |> Seq.exists (fun x -> file.EndsWith(x, StringComparison.OrdinalIgnoreCase)) [] let ShouldGetPdbFromImage () = @@ -3540,10 +3534,7 @@ module AltCoverTests = Main.I.selectReportGenerator () let path = - Path.Combine( - SolutionDir(), - "_Binaries/Sample4/Debug+AnyCPU/net6.0/Sample4.dll" - ) + Path.Combine(SolutionDir(), "_Binaries/Sample4/Debug+AnyCPU/net6.0/Sample4.dll") "Main" |> (Regex diff --git a/AltCover.Tests/Tests2.fs b/AltCover.Tests/Tests2.fs index 9e1c36bfd..ed73f3ed4 100644 --- a/AltCover.Tests/Tests2.fs +++ b/AltCover.Tests/Tests2.fs @@ -3560,10 +3560,10 @@ has been prefixed with Ldc_I4_1 (1 byte) else test <@ stderr - .ToString() - .Trim() - .Replace(Environment.NewLine, "|") - .StartsWith(toErr, StringComparison.Ordinal) @> + .ToString() + .Trim() + .Replace(Environment.NewLine, "|") + .StartsWith(toErr, StringComparison.Ordinal) @> ) finally diff --git a/AltCover.Tests/Tests3.fs b/AltCover.Tests/Tests3.fs index 234262d24..857f897c4 100644 --- a/AltCover.Tests/Tests3.fs +++ b/AltCover.Tests/Tests3.fs @@ -183,7 +183,7 @@ module AltCoverTests3 = Assert.That( commandFragments |> List.length, - Is.EqualTo (optionCount), // drop -q/--verbose => verbosity + Is.EqualTo(optionCount), // drop -q/--verbose => verbosity "expected " + String.Join("; ", optionNames) + Environment.NewLine @@ -3672,12 +3672,12 @@ module AltCoverTests3 = test <@ stdout - .ToString() - .Equals( - expected.Replace("\\\\", "\\") - + Environment.NewLine, - StringComparison.Ordinal - ) @> + .ToString() + .Equals( + expected.Replace("\\\\", "\\") + + Environment.NewLine, + StringComparison.Ordinal + ) @> finally Console.SetOut(fst saved) Console.SetError(snd saved) @@ -3773,8 +3773,10 @@ module AltCoverTests3 = "[--" + core + "]" let fixup (s: String) = - if s.Length < 2 then sprintf "[-%s]" s - else fixupBase s + if s.Length < 2 then + sprintf "[-%s]" s + else + fixupBase s let mainHelp = Main.I.declareOptions () @@ -3797,7 +3799,7 @@ module AltCoverTests3 = + "or, for the global tool only\nAltCover TargetsPath\n\n" + "See https://stevegilham.github.io/altcover/Usage for full details.\n" - Assert.That (synthetic, Is.EqualTo helptext) + Assert.That(synthetic, Is.EqualTo helptext) test <@ synthetic = helptext @> #if !MONO // Mono won't play nicely with Esperanto placeholder locale // remove for fantomas @@ -4755,8 +4757,8 @@ module AltCoverTests3 = test <@ builder - .ToString() - .StartsWith(ex.GetType().FullName, StringComparison.Ordinal) @>) + .ToString() + .StartsWith(ex.GetType().FullName, StringComparison.Ordinal) @>) let builder = System.Text.StringBuilder() let monitor (s: string) = s |> builder.Append |> ignore diff --git a/AltCover.Tests/XTests.fs b/AltCover.Tests/XTests.fs index 0875153d5..10ce851d2 100644 --- a/AltCover.Tests/XTests.fs +++ b/AltCover.Tests/XTests.fs @@ -67,9 +67,9 @@ module AltCoverXTests = | "document" -> test' <@ a1 - .Value - .Replace("\\", "/") - .EndsWith(a2.Value.Replace("\\", "/")) @> + .Value + .Replace("\\", "/") + .EndsWith(a2.Value.Replace("\\", "/")) @> (a1.Name.ToString() + " : " + r.ToString() @@ -137,16 +137,16 @@ module AltCoverXTests = | "fullPath" -> test' <@ a1 - .Value - .Replace("\\", "/") - .Replace("altcover", "AltCover") - .Replace("Samples/", String.Empty) - .EndsWith( - a2 - .Value - .Replace("\\", "/") - .Replace("altcover", "AltCover") - ) @> + .Value + .Replace("\\", "/") + .Replace("altcover", "AltCover") + .Replace("Samples/", String.Empty) + .EndsWith( + a2 + .Value + .Replace("\\", "/") + .Replace("altcover", "AltCover") + ) @> (a1.Name.ToString() + " : " + r.ToString() @@ -180,7 +180,14 @@ module AltCoverXTests = let scan = instance.Validate(false) test <@ scan.Length = 0 @> test <@ (instance.GetHashCode() :> obj).IsNotNull @> - test <@ instance |> Args.collect = [ "Runner"; "-t"; "23"; "--collect"; "-q"; "-q" ] @> + + test + <@ instance |> Args.collect = [ "Runner" + "-t" + "23" + "--collect" + "-q" + "-q" ] @> // hack let rerun = AltCover.CollectOptions.Abstract instance @@ -188,7 +195,14 @@ module AltCoverXTests = let scan = rerun.Validate(false) test <@ scan.Length = 0 @> test <@ (rerun.GetHashCode() :> obj).IsNotNull @> - test <@ rerun |> Args.collect = [ "Runner"; "-t"; "23"; "--collect"; "-q"; "-q" ] @> + + test + <@ rerun |> Args.collect = [ "Runner" + "-t" + "23" + "--collect" + "-q" + "-q" ] @> [] let TypeSafeEmptyThresholdCanBeValidated () = diff --git a/Build/targets.fsx b/Build/targets.fsx index e174ab917..68b13df7a 100644 --- a/Build/targets.fsx +++ b/Build/targets.fsx @@ -5359,7 +5359,7 @@ _Target "ApiUse" (fun _ -> let targets = fsproj.Descendants(XName.Get("TargetFrameworks")) |> Seq.head - + let netTarget = "net6.0" targets.SetValue netTarget From f759ad0ab92789a0f49d9da57d5e16949b95c0ab Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Thu, 9 Jun 2022 18:41:58 +0100 Subject: [PATCH 28/81] Implement and eyeball test the trace feature --- AltCover.Engine/Main.fs | 59 +++++++++++++++++++++++++++++++++------ AltCover.Tests/Expecto.fs | 1 + AltCover.Tests/XTests.fs | 27 ++++++++++++++++++ Build/actions.fsx | 1 + Build/targets.fsx | 1 + ReleaseNotes.md | 6 ++++ 6 files changed, 86 insertions(+), 9 deletions(-) diff --git a/AltCover.Engine/Main.fs b/AltCover.Engine/Main.fs index bfd3e74aa..855abdbfe 100644 --- a/AltCover.Engine/Main.fs +++ b/AltCover.Engine/Main.fs @@ -121,6 +121,12 @@ module internal Main = (false, Left None) module internal I = + let internal verbose message = + if CommandLine.verbosity < 0 then + Output.info message + + let internal maybeVerbose p message = if p then verbose message + let internal declareOptions () = let makeRegex (x: String) = x.Replace(char 0, '\\').Replace(char 1, '|') @@ -468,9 +474,15 @@ module internal Main = let files = inputInfo.GetFiles("*", SearchOption.AllDirectories) |> Seq.filter (fun i -> - outputInfos - |> Seq.exists (fun o -> isInDirectory i.FullName o.FullName) - |> not) + let ok = + outputInfos + |> Seq.exists (fun o -> isInDirectory i.FullName o.FullName) + |> not + + sprintf "%s : ** is in output tree **" i.FullName + |> (maybeVerbose (not ok)) + + ok) // mutable bucket let filemap = @@ -511,7 +523,11 @@ module internal Main = // #endif filemap - |> Seq.iter (fun kvp -> File.Copy(kvp.Key, kvp.Value, true))) + |> Seq.iter (fun kvp -> + sprintf "Copying input %s to output %s" kvp.Key kvp.Value + |> verbose + + File.Copy(kvp.Key, kvp.Value, true))) // Track the symbol-bearing assemblies let assemblies = @@ -522,6 +538,10 @@ module internal Main = (fun (accumulator: AssemblyInfo list) info -> let fullName = info.FullName + fullName + |> sprintf "%s : beginning process" + |> verbose + imageLoadResilient (fun () -> use stream = File.OpenRead(fullName) @@ -534,10 +554,26 @@ module internal Main = Some def |> Option.bind (screenAssembly fullName) |> Option.filter (fun def -> - def.MainModule.HasSymbols - && (def.IsIncluded).IsInstrumented - && (def.MainModule.Attributes - &&& ModuleAttributes.ILOnly = ModuleAttributes.ILOnly)) + let symbols = def.MainModule.HasSymbols + + let passesFilter = + (def.IsIncluded).IsInstrumented + + let pureIL = + def.MainModule.Attributes + &&& ModuleAttributes.ILOnly = ModuleAttributes.ILOnly + + let ok = symbols && passesFilter && pureIL + + sprintf + "%s : ** Failed one of : symbols %A/ pass filter %A/ ILOnly %A **" + def.MainModule.FileName + symbols + passesFilter + pureIL + |> (maybeVerbose (not ok)) + + ok) |> Option.map (fun def -> CommandLine.Format.Local("instrumenting", fullName) |> Output.info @@ -556,7 +592,12 @@ module internal Main = |> Seq.toList } :: accumulator) |> Option.defaultValue accumulator) - (fun () -> accumulator)) + (fun () -> + info.FullName + |> sprintf "%s : ** not a valid assembly **" + |> verbose + + accumulator)) []) |> Seq.toList |> Seq.concat diff --git a/AltCover.Tests/Expecto.fs b/AltCover.Tests/Expecto.fs index da4bb3847..200daee43 100644 --- a/AltCover.Tests/Expecto.fs +++ b/AltCover.Tests/Expecto.fs @@ -888,6 +888,7 @@ module ExpectoTestManifest = "XTests.PrepareOptionsCanBeValidatedWithErrors" Tests.AltCoverXTests.NullListsAreEmpty, "XTests.NullListsAreEmpty" Tests.AltCoverXTests.ValidateAssemblyOption, "XTests.ValidateAssemblyOption" + Tests.AltCoverXTests.OutputVerbose, "XTests.OutputVerbose" Tests.AltCoverXTests.ADotNetDryRunLooksAsExpected, "XTests.ADotNetDryRunLooksAsExpected" Tests.AltCoverXTests.ADryRunLooksAsExpected, "XTests.ADryRunLooksAsExpected" diff --git a/AltCover.Tests/XTests.fs b/AltCover.Tests/XTests.fs index 10ce851d2..e389891c3 100644 --- a/AltCover.Tests/XTests.fs +++ b/AltCover.Tests/XTests.fs @@ -677,6 +677,33 @@ module AltCoverXTests = |> Main.I.isMSBuild |> not @> + [] + let OutputVerbose () = + let save1 = Output.info + let save2 = CommandLine.verbosity + + try + let mutable buffer = String.Empty + Output.info <- fun x -> buffer <- x + + Main.I.maybeVerbose false "OutputVerbose" + test <@ buffer |> String.IsNullOrEmpty @> + + Main.I.maybeVerbose true "OutputVerbose" + test <@ buffer |> String.IsNullOrEmpty @> + + CommandLine.verbosity <- -1 + + Main.I.maybeVerbose false "OutputVerbose" + test <@ buffer |> String.IsNullOrEmpty @> + + Main.I.maybeVerbose true "OutputVerbose" + test <@ buffer = "OutputVerbose" @> + + finally + Output.info <- save1 + CommandLine.verbosity <- save2 + [] let ADotNetDryRunLooksAsExpected () = let where = diff --git a/Build/actions.fsx b/Build/actions.fsx index c91842b60..7bbb285b3 100644 --- a/Build/actions.fsx +++ b/Build/actions.fsx @@ -401,6 +401,7 @@ using System.Runtime.CompilerServices; let prep = AltCover.PrepareOptions.Primitive { Primitive.PrepareOptions.Create() with + // Verbosity = System.Diagnostics.TraceLevel.Verbose TypeFilter = [ """System\.""" ] Report = simpleReport OutputDirectories = [| "./" + instrumented |] diff --git a/Build/targets.fsx b/Build/targets.fsx index 68b13df7a..d68b07b04 100644 --- a/Build/targets.fsx +++ b/Build/targets.fsx @@ -2564,6 +2564,7 @@ _Target "FSharpTypes" (fun _ -> let prep = AltCover.PrepareOptions.Primitive( { Primitive.PrepareOptions.Create() with + // Verbosity = System.Diagnostics.TraceLevel.Verbose Report = simpleReport OutputDirectories = [| "./" + instrumented |] AssemblyFilter = [ "Adapter"; "nunit"; "FSharp" ] diff --git a/ReleaseNotes.md b/ReleaseNotes.md index 233cf7f88..921dbcf5b 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -2,6 +2,12 @@ A. Start with the Quick Start guide : https://github.com/SteveGilham/altcover/wiki/QuickStart-Guide +# 8.3.8xx (Habu series release 14) +* [VISUALIZER] Fix off-by-one error in markup for the very last line of the file +* Add a `--verbose`option for AltCover, the converse of `-q`. Away from the command line, adds meaning to the `Verbosity` option value `System.Diagnostics.TraceLevel.Verbose`. Currently `Verbose` output shows more of the selection of files for instrumentation, noting when files are excluded from the process. +* Other minor build process asjustments for SDK 6.0.300/F# 6.0.4 + + # 8.2.837 (Habu series release 13) * [VISUALIZER] Critical bug fixes for GTK and Avalonia : mismatched new icon names causing crashes * [VISUALIZER] Use new coverage data icon for the coverage report file, not a generic report icon From fc9a2833be993ab050d455d7c743f7ab04ed075b Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Thu, 9 Jun 2022 19:22:10 +0100 Subject: [PATCH 29/81] Address ill-formed XML build break. --- AltCover.Engine/Tasks.fsi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AltCover.Engine/Tasks.fsi b/AltCover.Engine/Tasks.fsi index 2d0355a72..eb36e205e 100644 --- a/AltCover.Engine/Tasks.fsi +++ b/AltCover.Engine/Tasks.fsi @@ -166,7 +166,7 @@ type Prepare = /// member ShowGenerated : bool with get, set /// - /// Corresponds to command line options ` -q` & `--verbose` (expects names of `System.Diagnostics.TraceLevel` values) + /// Corresponds to command line options ` -q` and `--verbose` (expects names of `System.Diagnostics.TraceLevel` values) /// member Verbosity : string with get, set end @@ -236,7 +236,7 @@ type Collect = /// member SummaryFormat : string with get, set /// - /// Corresponds to command line options ` -q` & `--verbose` (expects names of `System.Diagnostics.TraceLevel` values) + /// Corresponds to command line options ` -q` and `--verbose` (expects names of `System.Diagnostics.TraceLevel` values) /// member Verbosity : string with get, set end From 5a46dbb740ad73560a7a28f5ccb732160ecbb71b Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Wed, 15 Jun 2022 15:33:44 +0100 Subject: [PATCH 30/81] SDK updates --- .github/workflows/main.yml | 4 ++-- AltCover.Api.Tests/AltCover.Api.Tests.fsproj | 2 +- AltCover.Avalonia/AltCover.Avalonia.fsproj | 6 +++--- AltCover.DotNet/AltCover.DotNet.fsproj | 2 +- AltCover.Engine/AltCover.Engine.fsproj | 2 +- AltCover.Expecto.Tests/AltCover.Expecto.Tests.fsproj | 2 +- .../AltCover.Fake.DotNet.Testing.AltCover.fsproj | 2 +- AltCover.Fake/AltCover.Fake.fsproj | 2 +- AltCover.Monitor.Tests/AltCover.Monitor.Tests.fsproj | 2 +- AltCover.PowerShell/AltCover.PowerShell.fsproj | 2 +- AltCover.Recorder.Tests/AltCover.Recorder.Tests.fsproj | 2 +- AltCover.Recorder2.Tests/AltCover.Recorder2.Tests.fsproj | 2 +- AltCover.Tests/AltCover.Tests.fsproj | 2 +- AltCover.Toolkit/AltCover.Toolkit.fsproj | 2 +- AltCover.UICommon/AltCover.UICommon.fsproj | 2 +- .../AltCover.ValidateGendarmeEmulation.fsproj | 2 +- AltCover.Visualizer.Tests/AltCover.Visualizer.Tests.fsproj | 3 +-- AltCover.Visualizer/AltCover.Visualizer.fsproj | 2 +- AltCover/AltCover.fsproj | 2 +- Build/NuGet.csproj | 2 +- MCS/MCS.fsproj | 2 +- Samples/Sample13/Sample13.fsproj | 2 +- Samples/Sample17/Sample17.fsproj | 2 +- Samples/Sample18/Sample18.fsproj | 2 +- Samples/Sample2/Sample2.fsproj | 2 +- Samples/Sample27/Sample27.fsproj | 2 +- Samples/Sample30/Sample30.fsproj | 2 +- Samples/Sample4/Sample4.fsproj | 2 +- Samples/Sample4/Sample4LongForm.fsproj | 2 +- Samples/Sample6/Sample6.fsproj | 2 +- Samples/Sample7/Sample7.fsproj | 2 +- appveyor.yml | 2 +- global.json | 2 +- 33 files changed, 36 insertions(+), 37 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 4e5458687..e8b5db9f7 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -19,7 +19,7 @@ jobs: fetch-depth: 2 - uses: actions/setup-dotnet@v2 with: - dotnet-version: '6.0.300' + dotnet-version: '6.0.301' - name: Tools run: dotnet tool restore - name: Setup @@ -47,7 +47,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-dotnet@v2 with: - dotnet-version: '6.0.300' + dotnet-version: '6.0.301' - name: Tools run: dotnet tool restore - name: Setup diff --git a/AltCover.Api.Tests/AltCover.Api.Tests.fsproj b/AltCover.Api.Tests/AltCover.Api.Tests.fsproj index 7f93e8ad3..58c177ef6 100644 --- a/AltCover.Api.Tests/AltCover.Api.Tests.fsproj +++ b/AltCover.Api.Tests/AltCover.Api.Tests.fsproj @@ -87,7 +87,7 @@ - + contentfiles diff --git a/AltCover.Avalonia/AltCover.Avalonia.fsproj b/AltCover.Avalonia/AltCover.Avalonia.fsproj index 1744d38c9..ab7736e74 100644 --- a/AltCover.Avalonia/AltCover.Avalonia.fsproj +++ b/AltCover.Avalonia/AltCover.Avalonia.fsproj @@ -41,8 +41,8 @@ - - + + all runtime; build; native; contentfiles; analyzers @@ -58,7 +58,7 @@ - + contentfiles diff --git a/AltCover.DotNet/AltCover.DotNet.fsproj b/AltCover.DotNet/AltCover.DotNet.fsproj index a37e713f2..1b39909f5 100644 --- a/AltCover.DotNet/AltCover.DotNet.fsproj +++ b/AltCover.DotNet/AltCover.DotNet.fsproj @@ -35,7 +35,7 @@ - + contentfiles diff --git a/AltCover.Engine/AltCover.Engine.fsproj b/AltCover.Engine/AltCover.Engine.fsproj index 1c3744c85..bad3a5740 100644 --- a/AltCover.Engine/AltCover.Engine.fsproj +++ b/AltCover.Engine/AltCover.Engine.fsproj @@ -102,7 +102,7 @@ - + contentfiles diff --git a/AltCover.Expecto.Tests/AltCover.Expecto.Tests.fsproj b/AltCover.Expecto.Tests/AltCover.Expecto.Tests.fsproj index 610bd7390..f857ed449 100644 --- a/AltCover.Expecto.Tests/AltCover.Expecto.Tests.fsproj +++ b/AltCover.Expecto.Tests/AltCover.Expecto.Tests.fsproj @@ -32,7 +32,7 @@ - + contentfiles diff --git a/AltCover.Fake.DotNet.Testing.AltCover/AltCover.Fake.DotNet.Testing.AltCover.fsproj b/AltCover.Fake.DotNet.Testing.AltCover/AltCover.Fake.DotNet.Testing.AltCover.fsproj index 2c58e0bf3..4e49b199a 100644 --- a/AltCover.Fake.DotNet.Testing.AltCover/AltCover.Fake.DotNet.Testing.AltCover.fsproj +++ b/AltCover.Fake.DotNet.Testing.AltCover/AltCover.Fake.DotNet.Testing.AltCover.fsproj @@ -53,7 +53,7 @@ - + contentfiles diff --git a/AltCover.Fake/AltCover.Fake.fsproj b/AltCover.Fake/AltCover.Fake.fsproj index d51f94139..9c4c22446 100644 --- a/AltCover.Fake/AltCover.Fake.fsproj +++ b/AltCover.Fake/AltCover.Fake.fsproj @@ -38,7 +38,7 @@ - + contentfiles diff --git a/AltCover.Monitor.Tests/AltCover.Monitor.Tests.fsproj b/AltCover.Monitor.Tests/AltCover.Monitor.Tests.fsproj index bd75e3b9b..94af67b51 100644 --- a/AltCover.Monitor.Tests/AltCover.Monitor.Tests.fsproj +++ b/AltCover.Monitor.Tests/AltCover.Monitor.Tests.fsproj @@ -50,7 +50,7 @@ - + contentfiles diff --git a/AltCover.PowerShell/AltCover.PowerShell.fsproj b/AltCover.PowerShell/AltCover.PowerShell.fsproj index e15acc6e1..73a797263 100644 --- a/AltCover.PowerShell/AltCover.PowerShell.fsproj +++ b/AltCover.PowerShell/AltCover.PowerShell.fsproj @@ -41,7 +41,7 @@ - + contentfiles diff --git a/AltCover.Recorder.Tests/AltCover.Recorder.Tests.fsproj b/AltCover.Recorder.Tests/AltCover.Recorder.Tests.fsproj index fa3cc6d86..5cbcfe23c 100644 --- a/AltCover.Recorder.Tests/AltCover.Recorder.Tests.fsproj +++ b/AltCover.Recorder.Tests/AltCover.Recorder.Tests.fsproj @@ -75,7 +75,7 @@ - + contentfiles diff --git a/AltCover.Recorder2.Tests/AltCover.Recorder2.Tests.fsproj b/AltCover.Recorder2.Tests/AltCover.Recorder2.Tests.fsproj index df19a3f5f..b1291cdd1 100644 --- a/AltCover.Recorder2.Tests/AltCover.Recorder2.Tests.fsproj +++ b/AltCover.Recorder2.Tests/AltCover.Recorder2.Tests.fsproj @@ -46,7 +46,7 @@ - + contentfiles diff --git a/AltCover.Tests/AltCover.Tests.fsproj b/AltCover.Tests/AltCover.Tests.fsproj index 0a38c8608..ef1b2cdb2 100644 --- a/AltCover.Tests/AltCover.Tests.fsproj +++ b/AltCover.Tests/AltCover.Tests.fsproj @@ -146,7 +146,7 @@ - + contentfiles diff --git a/AltCover.Toolkit/AltCover.Toolkit.fsproj b/AltCover.Toolkit/AltCover.Toolkit.fsproj index 2bb9ada4a..ef629b107 100644 --- a/AltCover.Toolkit/AltCover.Toolkit.fsproj +++ b/AltCover.Toolkit/AltCover.Toolkit.fsproj @@ -54,7 +54,7 @@ - + contentfiles diff --git a/AltCover.UICommon/AltCover.UICommon.fsproj b/AltCover.UICommon/AltCover.UICommon.fsproj index 9da495e49..d8e055473 100644 --- a/AltCover.UICommon/AltCover.UICommon.fsproj +++ b/AltCover.UICommon/AltCover.UICommon.fsproj @@ -103,7 +103,7 @@ - + contentfiles diff --git a/AltCover.ValidateGendarmeEmulation/AltCover.ValidateGendarmeEmulation.fsproj b/AltCover.ValidateGendarmeEmulation/AltCover.ValidateGendarmeEmulation.fsproj index f59b8ae12..8ccb2248b 100644 --- a/AltCover.ValidateGendarmeEmulation/AltCover.ValidateGendarmeEmulation.fsproj +++ b/AltCover.ValidateGendarmeEmulation/AltCover.ValidateGendarmeEmulation.fsproj @@ -70,7 +70,7 @@ - + contentfiles diff --git a/AltCover.Visualizer.Tests/AltCover.Visualizer.Tests.fsproj b/AltCover.Visualizer.Tests/AltCover.Visualizer.Tests.fsproj index 4ff677eb6..4d0681d9a 100644 --- a/AltCover.Visualizer.Tests/AltCover.Visualizer.Tests.fsproj +++ b/AltCover.Visualizer.Tests/AltCover.Visualizer.Tests.fsproj @@ -25,7 +25,6 @@ ..\ThirdParty\Unquote.dll - all runtime; build; native; contentfiles; analyzers @@ -60,7 +59,7 @@ - + contentfiles diff --git a/AltCover.Visualizer/AltCover.Visualizer.fsproj b/AltCover.Visualizer/AltCover.Visualizer.fsproj index 6bce9cfee..6fa95c064 100644 --- a/AltCover.Visualizer/AltCover.Visualizer.fsproj +++ b/AltCover.Visualizer/AltCover.Visualizer.fsproj @@ -88,7 +88,7 @@ runtime; build; native; contentfiles; analyzers - + contentfiles diff --git a/AltCover/AltCover.fsproj b/AltCover/AltCover.fsproj index 3828f528d..d8b8db46d 100644 --- a/AltCover/AltCover.fsproj +++ b/AltCover/AltCover.fsproj @@ -55,7 +55,7 @@ - + contentfiles diff --git a/Build/NuGet.csproj b/Build/NuGet.csproj index d4f15ba81..32e2c8e1d 100644 --- a/Build/NuGet.csproj +++ b/Build/NuGet.csproj @@ -8,7 +8,7 @@ - + all runtime; build; native; contentfiles; analyzers diff --git a/MCS/MCS.fsproj b/MCS/MCS.fsproj index 1b529059d..b660314c2 100644 --- a/MCS/MCS.fsproj +++ b/MCS/MCS.fsproj @@ -24,7 +24,7 @@ - + all diff --git a/Samples/Sample13/Sample13.fsproj b/Samples/Sample13/Sample13.fsproj index b0c1c2809..af38a5425 100644 --- a/Samples/Sample13/Sample13.fsproj +++ b/Samples/Sample13/Sample13.fsproj @@ -20,7 +20,7 @@ - + contentfiles diff --git a/Samples/Sample17/Sample17.fsproj b/Samples/Sample17/Sample17.fsproj index bb10b4844..f7246a421 100644 --- a/Samples/Sample17/Sample17.fsproj +++ b/Samples/Sample17/Sample17.fsproj @@ -13,7 +13,7 @@ - + contentfiles diff --git a/Samples/Sample18/Sample18.fsproj b/Samples/Sample18/Sample18.fsproj index c7cb362d0..8788efd8c 100644 --- a/Samples/Sample18/Sample18.fsproj +++ b/Samples/Sample18/Sample18.fsproj @@ -42,7 +42,7 @@ - + contentfiles diff --git a/Samples/Sample2/Sample2.fsproj b/Samples/Sample2/Sample2.fsproj index 7183c3682..716c52d5a 100644 --- a/Samples/Sample2/Sample2.fsproj +++ b/Samples/Sample2/Sample2.fsproj @@ -38,7 +38,7 @@ - + contentfiles diff --git a/Samples/Sample27/Sample27.fsproj b/Samples/Sample27/Sample27.fsproj index a473af314..c23075594 100644 --- a/Samples/Sample27/Sample27.fsproj +++ b/Samples/Sample27/Sample27.fsproj @@ -29,7 +29,7 @@ - + contentfiles diff --git a/Samples/Sample30/Sample30.fsproj b/Samples/Sample30/Sample30.fsproj index a473af314..c23075594 100644 --- a/Samples/Sample30/Sample30.fsproj +++ b/Samples/Sample30/Sample30.fsproj @@ -29,7 +29,7 @@ - + contentfiles diff --git a/Samples/Sample4/Sample4.fsproj b/Samples/Sample4/Sample4.fsproj index 961234c8a..8721402d6 100644 --- a/Samples/Sample4/Sample4.fsproj +++ b/Samples/Sample4/Sample4.fsproj @@ -58,7 +58,7 @@ - + contentfiles diff --git a/Samples/Sample4/Sample4LongForm.fsproj b/Samples/Sample4/Sample4LongForm.fsproj index d4c6fed31..6a111ff3f 100644 --- a/Samples/Sample4/Sample4LongForm.fsproj +++ b/Samples/Sample4/Sample4LongForm.fsproj @@ -40,7 +40,7 @@ - + all diff --git a/Samples/Sample6/Sample6.fsproj b/Samples/Sample6/Sample6.fsproj index fbc2481b9..db47f4674 100644 --- a/Samples/Sample6/Sample6.fsproj +++ b/Samples/Sample6/Sample6.fsproj @@ -29,7 +29,7 @@ - + contentfiles diff --git a/Samples/Sample7/Sample7.fsproj b/Samples/Sample7/Sample7.fsproj index 31244a3b8..815b0fd51 100644 --- a/Samples/Sample7/Sample7.fsproj +++ b/Samples/Sample7/Sample7.fsproj @@ -23,7 +23,7 @@ - + contentfiles diff --git a/appveyor.yml b/appveyor.yml index c4f893c6d..8aae9a3c0 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -15,7 +15,7 @@ nuget: disable_publish_on_pr: true install: # SDK version fix - - cinst dotnet-sdk --version 6.0.300 + - cinst dotnet-sdk --version 6.0.301 build_script: - ps: >- $ErrorActionPreference = 'Continue' diff --git a/global.json b/global.json index d7b60c32f..4f0714fdf 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { - "version": "6.0.300", + "version": "6.0.301", "rollForward": "latestMinor" } } \ No newline at end of file From 69c46a1d1084ff2d4c788d47e8340adb398624cb Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Wed, 15 Jun 2022 15:33:44 +0100 Subject: [PATCH 31/81] SDK updates --- .github/workflows/main.yml | 4 ++-- AltCover.Api.Tests/AltCover.Api.Tests.fsproj | 2 +- AltCover.Avalonia/AltCover.Avalonia.fsproj | 6 +++--- AltCover.DotNet/AltCover.DotNet.fsproj | 2 +- AltCover.Engine/AltCover.Engine.fsproj | 2 +- AltCover.Expecto.Tests/AltCover.Expecto.Tests.fsproj | 2 +- .../AltCover.Fake.DotNet.Testing.AltCover.fsproj | 2 +- AltCover.Fake/AltCover.Fake.fsproj | 2 +- AltCover.Monitor.Tests/AltCover.Monitor.Tests.fsproj | 2 +- AltCover.PowerShell/AltCover.PowerShell.fsproj | 2 +- AltCover.Recorder.Tests/AltCover.Recorder.Tests.fsproj | 2 +- AltCover.Recorder2.Tests/AltCover.Recorder2.Tests.fsproj | 2 +- AltCover.Tests/AltCover.Tests.fsproj | 2 +- AltCover.Toolkit/AltCover.Toolkit.fsproj | 2 +- AltCover.UICommon/AltCover.UICommon.fsproj | 2 +- .../AltCover.ValidateGendarmeEmulation.fsproj | 2 +- AltCover.Visualizer.Tests/AltCover.Visualizer.Tests.fsproj | 3 +-- AltCover.Visualizer/AltCover.Visualizer.fsproj | 2 +- AltCover/AltCover.fsproj | 2 +- Build/NuGet.csproj | 2 +- MCS/MCS.fsproj | 2 +- Samples/Sample13/Sample13.fsproj | 2 +- Samples/Sample17/Sample17.fsproj | 2 +- Samples/Sample18/Sample18.fsproj | 2 +- Samples/Sample2/Sample2.fsproj | 2 +- Samples/Sample27/Sample27.fsproj | 2 +- Samples/Sample30/Sample30.fsproj | 2 +- Samples/Sample4/Sample4.fsproj | 2 +- Samples/Sample4/Sample4LongForm.fsproj | 2 +- Samples/Sample6/Sample6.fsproj | 2 +- Samples/Sample7/Sample7.fsproj | 2 +- appveyor.yml | 2 +- global.json | 2 +- 33 files changed, 36 insertions(+), 37 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 4e5458687..e8b5db9f7 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -19,7 +19,7 @@ jobs: fetch-depth: 2 - uses: actions/setup-dotnet@v2 with: - dotnet-version: '6.0.300' + dotnet-version: '6.0.301' - name: Tools run: dotnet tool restore - name: Setup @@ -47,7 +47,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-dotnet@v2 with: - dotnet-version: '6.0.300' + dotnet-version: '6.0.301' - name: Tools run: dotnet tool restore - name: Setup diff --git a/AltCover.Api.Tests/AltCover.Api.Tests.fsproj b/AltCover.Api.Tests/AltCover.Api.Tests.fsproj index 7f93e8ad3..58c177ef6 100644 --- a/AltCover.Api.Tests/AltCover.Api.Tests.fsproj +++ b/AltCover.Api.Tests/AltCover.Api.Tests.fsproj @@ -87,7 +87,7 @@ - + contentfiles diff --git a/AltCover.Avalonia/AltCover.Avalonia.fsproj b/AltCover.Avalonia/AltCover.Avalonia.fsproj index 1744d38c9..ab7736e74 100644 --- a/AltCover.Avalonia/AltCover.Avalonia.fsproj +++ b/AltCover.Avalonia/AltCover.Avalonia.fsproj @@ -41,8 +41,8 @@ - - + + all runtime; build; native; contentfiles; analyzers @@ -58,7 +58,7 @@ - + contentfiles diff --git a/AltCover.DotNet/AltCover.DotNet.fsproj b/AltCover.DotNet/AltCover.DotNet.fsproj index a37e713f2..1b39909f5 100644 --- a/AltCover.DotNet/AltCover.DotNet.fsproj +++ b/AltCover.DotNet/AltCover.DotNet.fsproj @@ -35,7 +35,7 @@ - + contentfiles diff --git a/AltCover.Engine/AltCover.Engine.fsproj b/AltCover.Engine/AltCover.Engine.fsproj index 1c3744c85..bad3a5740 100644 --- a/AltCover.Engine/AltCover.Engine.fsproj +++ b/AltCover.Engine/AltCover.Engine.fsproj @@ -102,7 +102,7 @@ - + contentfiles diff --git a/AltCover.Expecto.Tests/AltCover.Expecto.Tests.fsproj b/AltCover.Expecto.Tests/AltCover.Expecto.Tests.fsproj index 610bd7390..f857ed449 100644 --- a/AltCover.Expecto.Tests/AltCover.Expecto.Tests.fsproj +++ b/AltCover.Expecto.Tests/AltCover.Expecto.Tests.fsproj @@ -32,7 +32,7 @@ - + contentfiles diff --git a/AltCover.Fake.DotNet.Testing.AltCover/AltCover.Fake.DotNet.Testing.AltCover.fsproj b/AltCover.Fake.DotNet.Testing.AltCover/AltCover.Fake.DotNet.Testing.AltCover.fsproj index 2c58e0bf3..4e49b199a 100644 --- a/AltCover.Fake.DotNet.Testing.AltCover/AltCover.Fake.DotNet.Testing.AltCover.fsproj +++ b/AltCover.Fake.DotNet.Testing.AltCover/AltCover.Fake.DotNet.Testing.AltCover.fsproj @@ -53,7 +53,7 @@ - + contentfiles diff --git a/AltCover.Fake/AltCover.Fake.fsproj b/AltCover.Fake/AltCover.Fake.fsproj index d51f94139..9c4c22446 100644 --- a/AltCover.Fake/AltCover.Fake.fsproj +++ b/AltCover.Fake/AltCover.Fake.fsproj @@ -38,7 +38,7 @@ - + contentfiles diff --git a/AltCover.Monitor.Tests/AltCover.Monitor.Tests.fsproj b/AltCover.Monitor.Tests/AltCover.Monitor.Tests.fsproj index bd75e3b9b..94af67b51 100644 --- a/AltCover.Monitor.Tests/AltCover.Monitor.Tests.fsproj +++ b/AltCover.Monitor.Tests/AltCover.Monitor.Tests.fsproj @@ -50,7 +50,7 @@ - + contentfiles diff --git a/AltCover.PowerShell/AltCover.PowerShell.fsproj b/AltCover.PowerShell/AltCover.PowerShell.fsproj index e15acc6e1..73a797263 100644 --- a/AltCover.PowerShell/AltCover.PowerShell.fsproj +++ b/AltCover.PowerShell/AltCover.PowerShell.fsproj @@ -41,7 +41,7 @@ - + contentfiles diff --git a/AltCover.Recorder.Tests/AltCover.Recorder.Tests.fsproj b/AltCover.Recorder.Tests/AltCover.Recorder.Tests.fsproj index fa3cc6d86..5cbcfe23c 100644 --- a/AltCover.Recorder.Tests/AltCover.Recorder.Tests.fsproj +++ b/AltCover.Recorder.Tests/AltCover.Recorder.Tests.fsproj @@ -75,7 +75,7 @@ - + contentfiles diff --git a/AltCover.Recorder2.Tests/AltCover.Recorder2.Tests.fsproj b/AltCover.Recorder2.Tests/AltCover.Recorder2.Tests.fsproj index df19a3f5f..b1291cdd1 100644 --- a/AltCover.Recorder2.Tests/AltCover.Recorder2.Tests.fsproj +++ b/AltCover.Recorder2.Tests/AltCover.Recorder2.Tests.fsproj @@ -46,7 +46,7 @@ - + contentfiles diff --git a/AltCover.Tests/AltCover.Tests.fsproj b/AltCover.Tests/AltCover.Tests.fsproj index 0a38c8608..ef1b2cdb2 100644 --- a/AltCover.Tests/AltCover.Tests.fsproj +++ b/AltCover.Tests/AltCover.Tests.fsproj @@ -146,7 +146,7 @@ - + contentfiles diff --git a/AltCover.Toolkit/AltCover.Toolkit.fsproj b/AltCover.Toolkit/AltCover.Toolkit.fsproj index 2bb9ada4a..ef629b107 100644 --- a/AltCover.Toolkit/AltCover.Toolkit.fsproj +++ b/AltCover.Toolkit/AltCover.Toolkit.fsproj @@ -54,7 +54,7 @@ - + contentfiles diff --git a/AltCover.UICommon/AltCover.UICommon.fsproj b/AltCover.UICommon/AltCover.UICommon.fsproj index 9da495e49..d8e055473 100644 --- a/AltCover.UICommon/AltCover.UICommon.fsproj +++ b/AltCover.UICommon/AltCover.UICommon.fsproj @@ -103,7 +103,7 @@ - + contentfiles diff --git a/AltCover.ValidateGendarmeEmulation/AltCover.ValidateGendarmeEmulation.fsproj b/AltCover.ValidateGendarmeEmulation/AltCover.ValidateGendarmeEmulation.fsproj index f59b8ae12..8ccb2248b 100644 --- a/AltCover.ValidateGendarmeEmulation/AltCover.ValidateGendarmeEmulation.fsproj +++ b/AltCover.ValidateGendarmeEmulation/AltCover.ValidateGendarmeEmulation.fsproj @@ -70,7 +70,7 @@ - + contentfiles diff --git a/AltCover.Visualizer.Tests/AltCover.Visualizer.Tests.fsproj b/AltCover.Visualizer.Tests/AltCover.Visualizer.Tests.fsproj index 4ff677eb6..4d0681d9a 100644 --- a/AltCover.Visualizer.Tests/AltCover.Visualizer.Tests.fsproj +++ b/AltCover.Visualizer.Tests/AltCover.Visualizer.Tests.fsproj @@ -25,7 +25,6 @@ ..\ThirdParty\Unquote.dll - all runtime; build; native; contentfiles; analyzers @@ -60,7 +59,7 @@ - + contentfiles diff --git a/AltCover.Visualizer/AltCover.Visualizer.fsproj b/AltCover.Visualizer/AltCover.Visualizer.fsproj index 6bce9cfee..6fa95c064 100644 --- a/AltCover.Visualizer/AltCover.Visualizer.fsproj +++ b/AltCover.Visualizer/AltCover.Visualizer.fsproj @@ -88,7 +88,7 @@ runtime; build; native; contentfiles; analyzers - + contentfiles diff --git a/AltCover/AltCover.fsproj b/AltCover/AltCover.fsproj index 3828f528d..d8b8db46d 100644 --- a/AltCover/AltCover.fsproj +++ b/AltCover/AltCover.fsproj @@ -55,7 +55,7 @@ - + contentfiles diff --git a/Build/NuGet.csproj b/Build/NuGet.csproj index d4f15ba81..32e2c8e1d 100644 --- a/Build/NuGet.csproj +++ b/Build/NuGet.csproj @@ -8,7 +8,7 @@ - + all runtime; build; native; contentfiles; analyzers diff --git a/MCS/MCS.fsproj b/MCS/MCS.fsproj index 1b529059d..b660314c2 100644 --- a/MCS/MCS.fsproj +++ b/MCS/MCS.fsproj @@ -24,7 +24,7 @@ - + all diff --git a/Samples/Sample13/Sample13.fsproj b/Samples/Sample13/Sample13.fsproj index b0c1c2809..af38a5425 100644 --- a/Samples/Sample13/Sample13.fsproj +++ b/Samples/Sample13/Sample13.fsproj @@ -20,7 +20,7 @@ - + contentfiles diff --git a/Samples/Sample17/Sample17.fsproj b/Samples/Sample17/Sample17.fsproj index bb10b4844..f7246a421 100644 --- a/Samples/Sample17/Sample17.fsproj +++ b/Samples/Sample17/Sample17.fsproj @@ -13,7 +13,7 @@ - + contentfiles diff --git a/Samples/Sample18/Sample18.fsproj b/Samples/Sample18/Sample18.fsproj index c7cb362d0..8788efd8c 100644 --- a/Samples/Sample18/Sample18.fsproj +++ b/Samples/Sample18/Sample18.fsproj @@ -42,7 +42,7 @@ - + contentfiles diff --git a/Samples/Sample2/Sample2.fsproj b/Samples/Sample2/Sample2.fsproj index 7183c3682..716c52d5a 100644 --- a/Samples/Sample2/Sample2.fsproj +++ b/Samples/Sample2/Sample2.fsproj @@ -38,7 +38,7 @@ - + contentfiles diff --git a/Samples/Sample27/Sample27.fsproj b/Samples/Sample27/Sample27.fsproj index a473af314..c23075594 100644 --- a/Samples/Sample27/Sample27.fsproj +++ b/Samples/Sample27/Sample27.fsproj @@ -29,7 +29,7 @@ - + contentfiles diff --git a/Samples/Sample30/Sample30.fsproj b/Samples/Sample30/Sample30.fsproj index a473af314..c23075594 100644 --- a/Samples/Sample30/Sample30.fsproj +++ b/Samples/Sample30/Sample30.fsproj @@ -29,7 +29,7 @@ - + contentfiles diff --git a/Samples/Sample4/Sample4.fsproj b/Samples/Sample4/Sample4.fsproj index 961234c8a..8721402d6 100644 --- a/Samples/Sample4/Sample4.fsproj +++ b/Samples/Sample4/Sample4.fsproj @@ -58,7 +58,7 @@ - + contentfiles diff --git a/Samples/Sample4/Sample4LongForm.fsproj b/Samples/Sample4/Sample4LongForm.fsproj index d4c6fed31..6a111ff3f 100644 --- a/Samples/Sample4/Sample4LongForm.fsproj +++ b/Samples/Sample4/Sample4LongForm.fsproj @@ -40,7 +40,7 @@ - + all diff --git a/Samples/Sample6/Sample6.fsproj b/Samples/Sample6/Sample6.fsproj index fbc2481b9..db47f4674 100644 --- a/Samples/Sample6/Sample6.fsproj +++ b/Samples/Sample6/Sample6.fsproj @@ -29,7 +29,7 @@ - + contentfiles diff --git a/Samples/Sample7/Sample7.fsproj b/Samples/Sample7/Sample7.fsproj index 31244a3b8..815b0fd51 100644 --- a/Samples/Sample7/Sample7.fsproj +++ b/Samples/Sample7/Sample7.fsproj @@ -23,7 +23,7 @@ - + contentfiles diff --git a/appveyor.yml b/appveyor.yml index 8f3401a86..0b519cde7 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -15,7 +15,7 @@ nuget: disable_publish_on_pr: true install: # SDK version fix - - cinst dotnet-sdk --version 6.0.300 + - cinst dotnet-sdk --version 6.0.301 build_script: - ps: >- $ErrorActionPreference = 'Continue' diff --git a/global.json b/global.json index d7b60c32f..4f0714fdf 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { - "version": "6.0.300", + "version": "6.0.301", "rollForward": "latestMinor" } } \ No newline at end of file From bc1d20c9232eb0ca4536626f2e49c20a1345abc5 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Fri, 17 Jun 2022 09:48:20 +0100 Subject: [PATCH 32/81] Not really a minor version API change --- ReleaseNotes.md | 2 +- appveyor.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ReleaseNotes.md b/ReleaseNotes.md index 921dbcf5b..0096555a5 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -2,7 +2,7 @@ A. Start with the Quick Start guide : https://github.com/SteveGilham/altcover/wiki/QuickStart-Guide -# 8.3.8xx (Habu series release 14) +# 8.2.8xx (Habu series release 14) * [VISUALIZER] Fix off-by-one error in markup for the very last line of the file * Add a `--verbose`option for AltCover, the converse of `-q`. Away from the command line, adds meaning to the `Verbosity` option value `System.Diagnostics.TraceLevel.Verbose`. Currently `Verbose` output shows more of the selection of files for instrumentation, noting when files are excluded from the process. * Other minor build process asjustments for SDK 6.0.300/F# 6.0.4 diff --git a/appveyor.yml b/appveyor.yml index 0b519cde7..8aae9a3c0 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,4 +1,4 @@ -version: 8.3.{build}-pre +version: 8.2.{build}-pre branches: only: - /release.*/ From b50a3ebb64c66cb5ed3a39f8b69dc0d830fdd54b Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Fri, 17 Jun 2022 11:34:59 +0100 Subject: [PATCH 33/81] Refactor and extend -- Now it's an API extension --- AltCover.Cake/Cake.cs | 2 + AltCover.Engine/Abstract.fs | 4 ++ AltCover.Engine/AltCover.Engine.fsproj | 1 + AltCover.Engine/AltCover.fs | 8 +++- AltCover.Engine/AltCover.fsi | 4 ++ AltCover.Engine/CommandLine.fs | 56 ++-------------------- AltCover.Engine/Main.fs | 16 ++----- AltCover.Engine/Output.fs | 64 ++++++++++++++++++++++++++ AltCover.Engine/Primitive.fs | 6 ++- AltCover.Engine/Primitive.fsi | 6 ++- AltCover.Engine/TaskIO.fs | 1 + AltCover.Engine/Tasks.fs | 6 ++- AltCover.Fake/Fake.fs | 3 +- AltCover.PowerShell/Command.fs | 1 + AltCover.Tests/Tests3.fs | 6 +++ AltCover.Tests/XTests.fs | 12 ++--- ReleaseNotes.md | 3 +- appveyor.yml | 2 +- 18 files changed, 123 insertions(+), 78 deletions(-) create mode 100644 AltCover.Engine/Output.fs diff --git a/AltCover.Cake/Cake.cs b/AltCover.Cake/Cake.cs index 3cfbb70cd..83d933f31 100644 --- a/AltCover.Cake/Cake.cs +++ b/AltCover.Cake/Cake.cs @@ -20,6 +20,7 @@ private sealed class LoggingOptions : Abstract.ILoggingOptions public Action Warn { get; set; } public Action Failure { get; set; } public Action Echo { get; set; } + public Action Verbose { get; set; } } private static FSOptions MakeLog(ICakeContext context, Abstract.ILoggingOptions log) @@ -35,6 +36,7 @@ private static FSOptions MakeLog(ICakeContext context, Abstract.ILoggingOptions result.Warn = x => context.Log.Write(Verbosity.Normal, LogLevel.Warning, x); result.Failure = x => context.Log.Write(Verbosity.Normal, LogLevel.Error, x); result.Echo = x => context.Log.Write(Verbosity.Verbose, LogLevel.Information, x); + result.Verbose = x => context.Log.Write(Verbosity.Verbose, LogLevel.Verbose, x); } return FSOptions.Translate(result); diff --git a/AltCover.Engine/Abstract.fs b/AltCover.Engine/Abstract.fs index 1ce9c097a..d83b4f602 100644 --- a/AltCover.Engine/Abstract.fs +++ b/AltCover.Engine/Abstract.fs @@ -294,5 +294,9 @@ module Abstract = /// Sink for command line/usage messages /// abstract member Echo : Action with get + /// + /// Sink for detailed messages + /// + abstract member Verbose : Action with get end #endif \ No newline at end of file diff --git a/AltCover.Engine/AltCover.Engine.fsproj b/AltCover.Engine/AltCover.Engine.fsproj index bad3a5740..57e7b159d 100644 --- a/AltCover.Engine/AltCover.Engine.fsproj +++ b/AltCover.Engine/AltCover.Engine.fsproj @@ -23,6 +23,7 @@ + diff --git a/AltCover.Engine/AltCover.fs b/AltCover.Engine/AltCover.fs index ba649de71..251cfbbd2 100644 --- a/AltCover.Engine/AltCover.fs +++ b/AltCover.Engine/AltCover.fs @@ -617,7 +617,8 @@ module AltCover = Failure = options.Failure |> LoggingOptions.ActionAdapter Warn = options.Warn |> LoggingOptions.ActionAdapter Echo = options.Echo |> LoggingOptions.ActionAdapter - Info = options.Info |> LoggingOptions.ActionAdapter } + Info = options.Info |> LoggingOptions.ActionAdapter + Verbose = options.Info |> LoggingOptions.ActionAdapter } |> Primitive static member ActionAdapter(action: Action) = @@ -644,4 +645,9 @@ module AltCover = match self with | Primitive p -> p.Info | Abstract a -> a.Info |> LoggingOptions.ActionAdapter + + member self.Verbose = + match self with + | Primitive p -> p.Verbose + | Abstract a -> a.Verbose |> LoggingOptions.ActionAdapter #endif \ No newline at end of file diff --git a/AltCover.Engine/AltCover.fsi b/AltCover.Engine/AltCover.fsi index d700f647c..c7c77b8d4 100644 --- a/AltCover.Engine/AltCover.fsi +++ b/AltCover.Engine/AltCover.fsi @@ -364,6 +364,10 @@ namespace AltCoverFake.DotNet.Testing /// /// Sink for command line/usage messages /// + member Verbose : (System.String -> unit) + /// + /// Sink for detailed messages + /// member Echo : (System.String -> unit) /// /// Returns a pure sink (all input ignored) instance diff --git a/AltCover.Engine/CommandLine.fs b/AltCover.Engine/CommandLine.fs index 2dafb9273..e1c323104 100644 --- a/AltCover.Engine/CommandLine.fs +++ b/AltCover.Engine/CommandLine.fs @@ -100,58 +100,6 @@ module internal Zip = type internal StringSink = Action -[] -type internal UsageInfo = - { Intro: String - Options: OptionSet - Options2: OptionSet } - -module internal Output = - let mutable internal info: String -> unit = - ignore - - let mutable internal warn: String -> unit = - ignore - - let mutable internal echo: String -> unit = - ignore - - let mutable internal error: String -> unit = - ignore - - let mutable internal usage: UsageInfo -> unit = - ignore - - let internal warnOn x = if x then warn else info - - let internal logExceptionToFile path e = - Directory.CreateDirectory(path |> Path.GetDirectoryName) - |> ignore - - use stream = - File.Open(path, FileMode.Append, FileAccess.Write) - - use writer = new StreamWriter(stream) - - let rec logException padding ex = - ex.ToString() |> writer.WriteLine - - ex.GetType().GetProperties() - |> Seq.filter (fun p -> - [ "Message"; "StackTrace" ] - |> Seq.exists (fun n -> n == p.Name) - |> not) - |> Seq.iter (fun p -> - (padding + p.Name + " = ") |> writer.WriteLine - - match p.GetValue(ex) with - | :? Exception as exx -> logException (" " + padding) exx - | v -> v |> sprintf "%A" |> writer.WriteLine) - - logException String.Empty e - module internal CommandLine = let mutable internal verbosity = 0 @@ -397,6 +345,9 @@ module internal CommandLine = | fail -> fail let internal applyVerbosity () = + if verbosity >= 0 then + Output.verbose <- ignore + if verbosity >= 1 then Output.info <- ignore Output.echo <- ignore @@ -556,4 +507,5 @@ module internal CommandLine = Output.usage <- usageBase Output.echo <- writeErr Output.info <- writeOut + Output.verbose <- writeOut Output.warn <- writeOut \ No newline at end of file diff --git a/AltCover.Engine/Main.fs b/AltCover.Engine/Main.fs index 855abdbfe..922e06832 100644 --- a/AltCover.Engine/Main.fs +++ b/AltCover.Engine/Main.fs @@ -121,12 +121,6 @@ module internal Main = (false, Left None) module internal I = - let internal verbose message = - if CommandLine.verbosity < 0 then - Output.info message - - let internal maybeVerbose p message = if p then verbose message - let internal declareOptions () = let makeRegex (x: String) = x.Replace(char 0, '\\').Replace(char 1, '|') @@ -480,7 +474,7 @@ module internal Main = |> not sprintf "%s : ** is in output tree **" i.FullName - |> (maybeVerbose (not ok)) + |> (Output.maybeVerbose (not ok)) ok) @@ -525,7 +519,7 @@ module internal Main = filemap |> Seq.iter (fun kvp -> sprintf "Copying input %s to output %s" kvp.Key kvp.Value - |> verbose + |> Output.verbose File.Copy(kvp.Key, kvp.Value, true))) @@ -540,7 +534,7 @@ module internal Main = fullName |> sprintf "%s : beginning process" - |> verbose + |> Output.verbose imageLoadResilient (fun () -> @@ -571,7 +565,7 @@ module internal Main = symbols passesFilter pureIL - |> (maybeVerbose (not ok)) + |> (Output.maybeVerbose (not ok)) ok) |> Option.map (fun def -> @@ -595,7 +589,7 @@ module internal Main = (fun () -> info.FullName |> sprintf "%s : ** not a valid assembly **" - |> verbose + |> Output.verbose accumulator)) []) diff --git a/AltCover.Engine/Output.fs b/AltCover.Engine/Output.fs new file mode 100644 index 000000000..4d9ef0cbb --- /dev/null +++ b/AltCover.Engine/Output.fs @@ -0,0 +1,64 @@ +namespace AltCover + +open System +open System.IO + +open AltCover.Shared +open Mono.Options + +[] +type internal UsageInfo = + { Intro: String + Options: OptionSet + Options2: OptionSet } + +module internal Output = + let mutable internal info: String -> unit = + ignore + + let mutable internal warn: String -> unit = + ignore + + let mutable internal echo: String -> unit = + ignore + + let mutable internal error: String -> unit = + ignore + + let mutable internal usage: UsageInfo -> unit = + ignore + + let mutable internal verbose: String -> unit = + ignore + + let internal maybeVerbose p message = if p then verbose message + + let internal warnOn x = if x then warn else info + + let internal logExceptionToFile path e = + Directory.CreateDirectory(path |> Path.GetDirectoryName) + |> ignore + + use stream = + File.Open(path, FileMode.Append, FileAccess.Write) + + use writer = new StreamWriter(stream) + + let rec logException padding ex = + ex.ToString() |> writer.WriteLine + + ex.GetType().GetProperties() + |> Seq.filter (fun p -> + [ "Message"; "StackTrace" ] + |> Seq.exists (fun n -> n == p.Name) + |> not) + |> Seq.iter (fun p -> + (padding + p.Name + " = ") |> writer.WriteLine + + match p.GetValue(ex) with + | :? Exception as exx -> logException (" " + padding) exx + | v -> v |> sprintf "%A" |> writer.WriteLine) + + logException String.Empty e \ No newline at end of file diff --git a/AltCover.Engine/Primitive.fs b/AltCover.Engine/Primitive.fs index fa44690c3..4c08fad1f 100644 --- a/AltCover.Engine/Primitive.fs +++ b/AltCover.Engine/Primitive.fs @@ -135,13 +135,15 @@ module Primitive = { Info: String -> unit Warn: String -> unit Failure: String -> unit - Echo: String -> unit } + Echo: String -> unit + Verbose: String -> unit } static member Create() : LoggingOptions = { Info = ignore Warn = ignore Failure = ignore - Echo = ignore } + Echo = ignore + Verbose = ignore } #endif #if RUNNER diff --git a/AltCover.Engine/Primitive.fsi b/AltCover.Engine/Primitive.fsi index 60b19ccd0..291205bd4 100644 --- a/AltCover.Engine/Primitive.fsi +++ b/AltCover.Engine/Primitive.fsi @@ -287,7 +287,11 @@ namespace AltCoverFake.DotNet.Testing /// /// Sink for command line/usage messages /// - Echo : System.String -> unit } + Echo : System.String -> unit + /// + /// Sink for detailed messages + /// + Verbose : System.String -> unit } with /// /// Returns an instance that just discards all strings input. diff --git a/AltCover.Engine/TaskIO.fs b/AltCover.Engine/TaskIO.fs index 730310504..43abcd552 100644 --- a/AltCover.Engine/TaskIO.fs +++ b/AltCover.Engine/TaskIO.fs @@ -9,6 +9,7 @@ module internal TaskIO = Output.warn <- self.Warn Output.info <- self.Info Output.echo <- self.Echo + Output.verbose <- self.Verbose let mutable internal store = String.Empty let private writeToStore s = store <- s diff --git a/AltCover.Engine/Tasks.fs b/AltCover.Engine/Tasks.fs index 1367517f4..c24506cbd 100644 --- a/AltCover.Engine/Tasks.fs +++ b/AltCover.Engine/Tasks.fs @@ -147,7 +147,8 @@ type Prepare() = { Primitive.LoggingOptions.Create() with Failure = base.Log.LogError Warn = base.Log.LogWarning - Info = self.Message }) + Info = self.Message + Verbose = self.Message }) self.ACLog let task = @@ -240,7 +241,8 @@ type Collect() = { Primitive.LoggingOptions.Create() with Failure = base.Log.LogError Warn = base.Log.LogWarning - Info = self.Message }) + Info = self.Message + Verbose = self.Message }) self.ACLog let task = diff --git a/AltCover.Fake/Fake.fs b/AltCover.Fake/Fake.fs index 839a28422..f216a6f1c 100644 --- a/AltCover.Fake/Fake.fs +++ b/AltCover.Fake/Fake.fs @@ -17,7 +17,8 @@ module Trace = Info = Trace.trace Warn = Trace.traceImportant Failure = Trace.traceError - Echo = Trace.traceVerbose } + Echo = Trace.traceVerbose + Verbose = Trace.traceVerbose } let internal doDefault (log: AltCover.LoggingOptions option) = match log with diff --git a/AltCover.PowerShell/Command.fs b/AltCover.PowerShell/Command.fs index 53576cf04..dd86e97a3 100644 --- a/AltCover.PowerShell/Command.fs +++ b/AltCover.PowerShell/Command.fs @@ -686,6 +686,7 @@ type InvokeAltCoverCommand() = { Primitive.LoggingOptions.Create() with Failure = (fun s -> self.Fail <- s :: self.Fail) Info = (fun s -> self.WriteInformation(s, [||])) + Verbose = (fun s -> self.WriteVerbose(s)) Warn = (fun s -> self.WriteWarning s) } member private self.Dispatch() = diff --git a/AltCover.Tests/Tests3.fs b/AltCover.Tests/Tests3.fs index 857f897c4..352ea53cc 100644 --- a/AltCover.Tests/Tests3.fs +++ b/AltCover.Tests/Tests3.fs @@ -3846,12 +3846,14 @@ module AltCoverTests3 = member val Warn: Action = null with get, set member val Failure: Action = null with get, set member val Echo: Action = null with get, set + member val Verbose: Action = null with get, set interface Abstract.ILoggingOptions with member self.Info = self.Info member self.Warn = self.Warn member self.Failure = self.Failure member self.Echo = self.Echo + member self.Verbose = self.Verbose [] let LoggingCanBeExercised () = @@ -3872,17 +3874,20 @@ module AltCoverTests3 = AltCover.LoggingOptions.Create().Warn "32" AltCover.LoggingOptions.Create().Error "32" AltCover.LoggingOptions.Create().Echo "32" + AltCover.LoggingOptions.Create().Verbose "32" let o = Logging() o.Info <- null o.Warn <- null o.Failure <- null o.Echo <- null + o.Verbose <- null Assert.That(o.Info, Is.Null) Assert.That(o.Warn, Is.Null) Assert.That(o.Failure, Is.Null) Assert.That(o.Echo, Is.Null) + Assert.That(o.Verbose, Is.Null) let p = AltCover.LoggingOptions.Translate o Assert.That(p.Warn, Is.Not.Null) @@ -3891,6 +3896,7 @@ module AltCoverTests3 = p2.Warn "32" p2.Error "32" p2.Echo "32" + p2.Verbose "32" [] let EmptyInstrumentIsJustTheDefaults () = diff --git a/AltCover.Tests/XTests.fs b/AltCover.Tests/XTests.fs index e389891c3..c304ec672 100644 --- a/AltCover.Tests/XTests.fs +++ b/AltCover.Tests/XTests.fs @@ -684,20 +684,20 @@ module AltCoverXTests = try let mutable buffer = String.Empty - Output.info <- fun x -> buffer <- x + Output.verbose <- ignore - Main.I.maybeVerbose false "OutputVerbose" + Output.maybeVerbose false "OutputVerbose" test <@ buffer |> String.IsNullOrEmpty @> - Main.I.maybeVerbose true "OutputVerbose" + Output.maybeVerbose true "OutputVerbose" test <@ buffer |> String.IsNullOrEmpty @> - CommandLine.verbosity <- -1 + Output.verbose <- fun x -> buffer <- x - Main.I.maybeVerbose false "OutputVerbose" + Output.maybeVerbose false "OutputVerbose" test <@ buffer |> String.IsNullOrEmpty @> - Main.I.maybeVerbose true "OutputVerbose" + Output.maybeVerbose true "OutputVerbose" test <@ buffer = "OutputVerbose" @> finally diff --git a/ReleaseNotes.md b/ReleaseNotes.md index 0096555a5..812bee89f 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -2,9 +2,10 @@ A. Start with the Quick Start guide : https://github.com/SteveGilham/altcover/wiki/QuickStart-Guide -# 8.2.8xx (Habu series release 14) +# 8.3.8xx (Habu series release 14) * [VISUALIZER] Fix off-by-one error in markup for the very last line of the file * Add a `--verbose`option for AltCover, the converse of `-q`. Away from the command line, adds meaning to the `Verbosity` option value `System.Diagnostics.TraceLevel.Verbose`. Currently `Verbose` output shows more of the selection of files for instrumentation, noting when files are excluded from the process. +* Add a matching field, `ILoggingOptions.Verbose`, to the API as a sink to capture verbose output. * Other minor build process asjustments for SDK 6.0.300/F# 6.0.4 diff --git a/appveyor.yml b/appveyor.yml index 8aae9a3c0..0b519cde7 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,4 +1,4 @@ -version: 8.2.{build}-pre +version: 8.3.{build}-pre branches: only: - /release.*/ From 560d992c570580f586b55e1a534f50a43cd68499 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Fri, 17 Jun 2022 11:57:49 +0100 Subject: [PATCH 34/81] Increase logging --- AltCover.Engine/Main.fs | 18 ++++++++++-------- AltCover.Engine/ProgramDatabase.fs | 23 ++++++++++++++++++----- 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/AltCover.Engine/Main.fs b/AltCover.Engine/Main.fs index 922e06832..ccec1455e 100644 --- a/AltCover.Engine/Main.fs +++ b/AltCover.Engine/Main.fs @@ -399,14 +399,17 @@ module internal Main = ) | Left intro -> Left intro - let internal imageLoadResilient (f: unit -> 'a) (tidy: unit -> 'a) = + let internal imageLoadResilient (f: unit -> 'a) (tidy: exn -> 'a) = try f () with - | :? Mono.Cecil.Cil.SymbolsNotMatchingException - | :? BadImageFormatException - | :? ArgumentException - | :? IOException -> tidy () + | x when + (x :? Mono.Cecil.Cil.SymbolsNotMatchingException) + || (x :? BadImageFormatException) + || (x :? ArgumentException) + || (x :? IOException) + -> + tidy (x) let internal matchType = Maybe @@ -586,9 +589,8 @@ module internal Main = |> Seq.toList } :: accumulator) |> Option.defaultValue accumulator) - (fun () -> - info.FullName - |> sprintf "%s : ** not a valid assembly **" + (fun x -> + sprintf "%s : ** not a valid assembly because %A **" info.FullName x |> Output.verbose accumulator)) diff --git a/AltCover.Engine/ProgramDatabase.fs b/AltCover.Engine/ProgramDatabase.fs index fd3e87839..9a84065c7 100644 --- a/AltCover.Engine/ProgramDatabase.fs +++ b/AltCover.Engine/ProgramDatabase.fs @@ -79,11 +79,24 @@ module internal ProgramDatabase = let foldername = Path.GetDirectoryName path let filename = Path.GetFileName path - foldername :: (Seq.toList symbolFolders) - |> Seq.map (I.getSymbolsByFolder filename) - |> Seq.choose id - |> Seq.tryFind (fun _ -> true) - | pdbpath -> pdbpath + let folder = + foldername :: (Seq.toList symbolFolders) + |> Seq.map (I.getSymbolsByFolder filename) + |> Seq.choose id + |> Seq.tryFind (fun _ -> true) + + sprintf + "Assembly %s symbols from folder '%A'" + path + (Option.defaultValue String.Empty folder) + |> Output.verbose + + folder + | pdbpath -> + sprintf "Assembly %s symbols from image '%s'" path pdbpath.Value + |> Output.verbose + + pdbpath // Ensure that we read symbols from the .pdb path we discovered. // Cecil currently only does the Path.ChangeExtension(path, ".pdb") fallback if left to its own devices From 68524aa07fc987291c05ea9ac4c4a16e6393f921 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Fri, 17 Jun 2022 12:41:35 +0100 Subject: [PATCH 35/81] Fix unit tests --- AltCover.Tests/Tests3.fs | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/AltCover.Tests/Tests3.fs b/AltCover.Tests/Tests3.fs index 352ea53cc..ef9491daa 100644 --- a/AltCover.Tests/Tests3.fs +++ b/AltCover.Tests/Tests3.fs @@ -3150,8 +3150,8 @@ module AltCoverTests3 = Main.init () let one = ref false let two = ref false - let set2 () = two.Value <- true - Main.I.imageLoadResilient (fun () -> one.Value <- true) set2 + let set2 _ = two.Value <- true + Main.I.imageLoadResilient (fun _ -> one.Value <- true) set2 Assert.That(one.Value) Assert.That(two.Value, Is.False) set2 () @@ -3167,9 +3167,13 @@ module AltCoverTests3 = f () one.Value <- true - let io () = IOException("fail") |> raise + let io = IOException("fail") + let fio () = io |> raise + + Main.I.imageLoadResilient (set1 fio) (fun x -> + Assert.That(x, Is.SameAs io) + two.Value <- true) - Main.I.imageLoadResilient (set1 io) (fun () -> two.Value <- true) Assert.That(one.Value, Is.False) Assert.That(two.Value) set1 ignore () @@ -3185,10 +3189,13 @@ module AltCoverTests3 = f () one.Value <- true - let bif () = - BadImageFormatException("fail") |> raise + let bif = BadImageFormatException("fail") + let fbif () = bif |> raise + + Main.I.imageLoadResilient (set1 fbif) (fun x -> + Assert.That(x, Is.SameAs bif) + two.Value <- true) - Main.I.imageLoadResilient (set1 bif) (fun () -> two.Value <- true) Assert.That(one.Value, Is.False) Assert.That(two.Value) set1 ignore () @@ -3204,9 +3211,13 @@ module AltCoverTests3 = f () one.Value <- true - let arg () = ArgumentException("fail") |> raise + let arg = ArgumentException("fail") + let farg () = arg |> raise + + Main.I.imageLoadResilient (set1 farg) (fun x -> + Assert.That(x, Is.SameAs arg) + two.Value <- true) - Main.I.imageLoadResilient (set1 arg) (fun () -> two.Value <- true) Assert.That(one.Value, Is.False) Assert.That(two.Value) set1 ignore () From 3dd4bb74f327d9327a9016d18a68cbd26c17b0e2 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Fri, 17 Jun 2022 13:54:17 +0100 Subject: [PATCH 36/81] Gendarme finds a bug --- AltCover.Engine/AltCover.fs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AltCover.Engine/AltCover.fs b/AltCover.Engine/AltCover.fs index 251cfbbd2..c2095adf8 100644 --- a/AltCover.Engine/AltCover.fs +++ b/AltCover.Engine/AltCover.fs @@ -618,7 +618,7 @@ module AltCover = Warn = options.Warn |> LoggingOptions.ActionAdapter Echo = options.Echo |> LoggingOptions.ActionAdapter Info = options.Info |> LoggingOptions.ActionAdapter - Verbose = options.Info |> LoggingOptions.ActionAdapter } + Verbose = options.Verbose |> LoggingOptions.ActionAdapter } |> Primitive static member ActionAdapter(action: Action) = From 85f698f1bf1ea46799286afe7869204deccec5a5 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Fri, 17 Jun 2022 13:54:33 +0100 Subject: [PATCH 37/81] Propagate this idiom --- AltCover.Engine/CommandLine.fs | 35 +++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/AltCover.Engine/CommandLine.fs b/AltCover.Engine/CommandLine.fs index e1c323104..942984fdd 100644 --- a/AltCover.Engine/CommandLine.fs +++ b/AltCover.Engine/CommandLine.fs @@ -195,11 +195,14 @@ module internal CommandLine = try result <- f () with - | :? ArgumentException as a -> a |> (logException store) - | :? NotSupportedException as n -> n |> (logException store) - | :? IOException as i -> i |> (logException store) - | :? System.Security.SecurityException as s -> s |> (logException store) - | :? UnauthorizedAccessException as u -> u |> (logException store) + | x when + (x :? ArgumentException) + || (x :? NotSupportedException) + || (x :? IOException) + || (x :? System.Security.SecurityException) + || (x :? UnauthorizedAccessException) + -> + x |> (logException store) result @@ -210,18 +213,16 @@ module internal CommandLine = try action f with - | x -> - match x with - | :? IOException - | :? System.Security.SecurityException - | :? UnauthorizedAccessException -> - if depth < limit then - Threading.Thread.Sleep(rest) - doRetry action log limit rest (depth + 1) f - else - x.ToString() |> log - - | _ -> reraise () + | x when + (x :? IOException) + || (x :? System.Security.SecurityException) + || (x :? UnauthorizedAccessException) + -> + if depth < limit then + Threading.Thread.Sleep(rest) + doRetry action log limit rest (depth + 1) f + else + x.ToString() |> log let logExceptionsToFile name extend = let path = From 9d4959556ea600aa21c6260afa7ecffed811c920 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Fri, 17 Jun 2022 19:25:13 +0100 Subject: [PATCH 38/81] Supplied test data --- RegressionTesting/issue156/Class1.cs | 24 +++++++++++++++++++ RegressionTesting/issue156/Tests.csproj | 24 +++++++++++++++++++ RegressionTesting/issue156/Tests.sln | 31 +++++++++++++++++++++++++ 3 files changed, 79 insertions(+) create mode 100644 RegressionTesting/issue156/Class1.cs create mode 100644 RegressionTesting/issue156/Tests.csproj create mode 100644 RegressionTesting/issue156/Tests.sln diff --git a/RegressionTesting/issue156/Class1.cs b/RegressionTesting/issue156/Class1.cs new file mode 100644 index 000000000..ca7f8860a --- /dev/null +++ b/RegressionTesting/issue156/Class1.cs @@ -0,0 +1,24 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using System; +using projectNamespace; + +namespace Tests +{ + [TestClass] + public class ConfigurationProviderTest + { + + [TestInitialize] + public void TestInitialize() + { + + } + + + [TestMethod] + public void UpdateConfiguration_ConfigurationChangedIsRun() + { + Assert.AreEqual(1, 1); + } + } +} diff --git a/RegressionTesting/issue156/Tests.csproj b/RegressionTesting/issue156/Tests.csproj new file mode 100644 index 000000000..228d48e85 --- /dev/null +++ b/RegressionTesting/issue156/Tests.csproj @@ -0,0 +1,24 @@ + + + + net48 + true + false + false + + + UnitTest + + + + + + + + + + + + + + \ No newline at end of file diff --git a/RegressionTesting/issue156/Tests.sln b/RegressionTesting/issue156/Tests.sln new file mode 100644 index 000000000..70b24f31a --- /dev/null +++ b/RegressionTesting/issue156/Tests.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.31205.134 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests", "Tests.csproj", "{FBC3A8F8-39B4-4C3E-A7EC-C5D83F83AFBE}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassLibrary1", "..\ClassLibrary1\ClassLibrary1.csproj", "{830E0F7A-6740-46B0-B288-541DE57B060A}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {FBC3A8F8-39B4-4C3E-A7EC-C5D83F83AFBE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FBC3A8F8-39B4-4C3E-A7EC-C5D83F83AFBE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FBC3A8F8-39B4-4C3E-A7EC-C5D83F83AFBE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FBC3A8F8-39B4-4C3E-A7EC-C5D83F83AFBE}.Release|Any CPU.Build.0 = Release|Any CPU + {830E0F7A-6740-46B0-B288-541DE57B060A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {830E0F7A-6740-46B0-B288-541DE57B060A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {830E0F7A-6740-46B0-B288-541DE57B060A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {830E0F7A-6740-46B0-B288-541DE57B060A}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {1A08953D-D88E-472F-BAA5-6078CCFD28F3} + EndGlobalSection +EndGlobal From 1dda6913ba0d3881a219b92f7c7350c3887545a9 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Fri, 17 Jun 2022 19:59:13 +0100 Subject: [PATCH 39/81] Wire it into the build as a regression test. -- alas, the issue does not reproduce as supplied --- Build/targets.fsx | 72 +++++++++++++++++++++++++ RegressionTesting/issue156/Tests.csproj | 7 +-- 2 files changed, 74 insertions(+), 5 deletions(-) diff --git a/Build/targets.fsx b/Build/targets.fsx index e174ab917..e1f683448 100644 --- a/Build/targets.fsx +++ b/Build/targets.fsx @@ -6841,6 +6841,76 @@ _Target "Issue114" (fun _ -> Shell.mkdir folder Actions.CleanDir folder) +_Target "Issue156" (fun _ -> + try + Directory.ensure "./_Issue156" + Shell.cleanDir ("./_Issue156") + + let config = XDocument.Load "./Build/NuGet.config.dotnettest" + + let repo = config.Descendants(XName.Get("add")) |> Seq.head + + repo.SetAttributeValue(XName.Get "value", Path.getFullName "./_Packaging") + config.Save "./_Issue156/NuGet.config" + + let csproj = XDocument.Load "./RegressionTesting\issue156/Tests.csproj" + + let pack = + csproj.Descendants(XName.Get("PackageReference")) + |> Seq.head + + let inject = + XElement( + XName.Get "PackageReference", + XAttribute(XName.Get "Include", "altcover"), + XAttribute(XName.Get "Version", Version.Value) + ) + + pack.AddBeforeSelf inject + csproj.Save "./_Issue156/Tests.fsproj" + Shell.copy "./_Issue156" (!! "./Samples/Sample26/*.cs") + + DotNet.restore + (fun o -> + let tmp = o.WithCommon(withWorkingDirectoryVM "_Issue156") + + let mparams = { tmp.MSBuildParams with Properties = tmp.MSBuildParams.Properties } + + { tmp with MSBuildParams = mparams }) + "" + + let p0 = + { Primitive.PrepareOptions.Create() with + AssemblyFilter = + [| "nunit" + "Adapter" + "FSharp" + "AltCover" |] } + + let pp0 = AltCover.PrepareOptions.Primitive p0 + let c0 = Primitive.CollectOptions.Create() + let cc0 = AltCover.CollectOptions.Primitive c0 + + DotNet.test + (fun p -> + (({ p.WithCommon(withWorkingDirectoryVM "_Issue156") with + Configuration = DotNet.BuildConfiguration.Debug + NoBuild = false }) + .WithAltCoverOptions + pp0 + cc0 + ForceTrue) + .WithAltCoverImportModule() + .WithAltCoverGetVersion() + |> testWithCLIArguments) + "" + finally + let folder = (nugetCache @@ "altcover") @@ Version.Value + + Shell.mkdir folder + Actions.CleanDir folder) + + // AOB _Target "MakeDocumentation" (fun _ -> @@ -7347,6 +7417,8 @@ Target.activateFinal "ResetConsoleColours" "Unpack" ==> "Issue114" ==> "Deployment" +"Unpack" ==> "Issue156" + "Unpack" ==> "DotnetGlobalIntegration" ==> "Deployment" diff --git a/RegressionTesting/issue156/Tests.csproj b/RegressionTesting/issue156/Tests.csproj index 228d48e85..ec096d554 100644 --- a/RegressionTesting/issue156/Tests.csproj +++ b/RegressionTesting/issue156/Tests.csproj @@ -10,12 +10,9 @@ UnitTest - - - - - + + From de80c8e8dbc1628feb5bc2d3a19440ef43492d37 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Fri, 17 Jun 2022 20:47:48 +0100 Subject: [PATCH 40/81] Now it repros --- Build/targets.fsx | 13 ++++++----- .../issue156/ClassLibrary1/Class1.cs | 22 +++++++++++++++++++ .../ClassLibrary1/ClassLibrary1.csproj | 22 +++++++++++++++++++ .../issue156/{ => Tests}/Class1.cs | 10 ++++++++- .../issue156/{ => Tests}/Tests.csproj | 4 ++++ .../issue156/{ => Tests}/Tests.sln | 0 6 files changed, 65 insertions(+), 6 deletions(-) create mode 100644 RegressionTesting/issue156/ClassLibrary1/Class1.cs create mode 100644 RegressionTesting/issue156/ClassLibrary1/ClassLibrary1.csproj rename RegressionTesting/issue156/{ => Tests}/Class1.cs (68%) rename RegressionTesting/issue156/{ => Tests}/Tests.csproj (79%) rename RegressionTesting/issue156/{ => Tests}/Tests.sln (100%) diff --git a/Build/targets.fsx b/Build/targets.fsx index e1f683448..785692cda 100644 --- a/Build/targets.fsx +++ b/Build/targets.fsx @@ -6845,6 +6845,8 @@ _Target "Issue156" (fun _ -> try Directory.ensure "./_Issue156" Shell.cleanDir ("./_Issue156") + Directory.ensure "./_Issue156/Tests" + Directory.ensure "./_Issue156/ClassLibrary1" let config = XDocument.Load "./Build/NuGet.config.dotnettest" @@ -6853,7 +6855,7 @@ _Target "Issue156" (fun _ -> repo.SetAttributeValue(XName.Get "value", Path.getFullName "./_Packaging") config.Save "./_Issue156/NuGet.config" - let csproj = XDocument.Load "./RegressionTesting\issue156/Tests.csproj" + let csproj = XDocument.Load "./RegressionTesting/issue156/Tests/Tests.csproj" let pack = csproj.Descendants(XName.Get("PackageReference")) @@ -6867,12 +6869,13 @@ _Target "Issue156" (fun _ -> ) pack.AddBeforeSelf inject - csproj.Save "./_Issue156/Tests.fsproj" - Shell.copy "./_Issue156" (!! "./Samples/Sample26/*.cs") + csproj.Save "./_Issue156/Tests/Tests.csproj" + Shell.copy "./_Issue156/Tests" (!! "./RegressionTesting/issue156/Tests/*.cs") + Shell.copy "./_Issue156/ClassLibrary1" (!! "./RegressionTesting/issue156/ClassLibrary1/*.cs*") DotNet.restore (fun o -> - let tmp = o.WithCommon(withWorkingDirectoryVM "_Issue156") + let tmp = o.WithCommon(withWorkingDirectoryVM "_Issue156/Tests") let mparams = { tmp.MSBuildParams with Properties = tmp.MSBuildParams.Properties } @@ -6893,7 +6896,7 @@ _Target "Issue156" (fun _ -> DotNet.test (fun p -> - (({ p.WithCommon(withWorkingDirectoryVM "_Issue156") with + (({ p.WithCommon(withWorkingDirectoryVM "_Issue156/Tests") with Configuration = DotNet.BuildConfiguration.Debug NoBuild = false }) .WithAltCoverOptions diff --git a/RegressionTesting/issue156/ClassLibrary1/Class1.cs b/RegressionTesting/issue156/ClassLibrary1/Class1.cs new file mode 100644 index 000000000..2a5185f1e --- /dev/null +++ b/RegressionTesting/issue156/ClassLibrary1/Class1.cs @@ -0,0 +1,22 @@ +using System; +using System.Linq; +using System.Windows.Threading; + +namespace projectNamespace +{ + /// + /// Invoke the callback in the SynchronizationContext with given priority. + /// + public interface IUiSynchronizationContext + { + /// + /// Asynchronously invoke the callback in the SynchronizationContext with given priority. + /// + void Post(Action action, DispatcherPriority priority = DispatcherPriority.Normal); + + /// + /// Synchronously invoke the callback in the SynchronizationContext with given priority. + /// + void Send(Action action, DispatcherPriority priority = DispatcherPriority.Normal); + } +} diff --git a/RegressionTesting/issue156/ClassLibrary1/ClassLibrary1.csproj b/RegressionTesting/issue156/ClassLibrary1/ClassLibrary1.csproj new file mode 100644 index 000000000..c205b0d2f --- /dev/null +++ b/RegressionTesting/issue156/ClassLibrary1/ClassLibrary1.csproj @@ -0,0 +1,22 @@ + + + + net48 + + + + + + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + \ No newline at end of file diff --git a/RegressionTesting/issue156/Class1.cs b/RegressionTesting/issue156/Tests/Class1.cs similarity index 68% rename from RegressionTesting/issue156/Class1.cs rename to RegressionTesting/issue156/Tests/Class1.cs index ca7f8860a..46a916b61 100644 --- a/RegressionTesting/issue156/Class1.cs +++ b/RegressionTesting/issue156/Tests/Class1.cs @@ -4,17 +4,25 @@ namespace Tests { + /// + /// Test fixrure + /// [TestClass] public class ConfigurationProviderTest { + /// + /// Test setup + /// [TestInitialize] public void TestInitialize() { } - + /// + /// Test. + /// [TestMethod] public void UpdateConfiguration_ConfigurationChangedIsRun() { diff --git a/RegressionTesting/issue156/Tests.csproj b/RegressionTesting/issue156/Tests/Tests.csproj similarity index 79% rename from RegressionTesting/issue156/Tests.csproj rename to RegressionTesting/issue156/Tests/Tests.csproj index ec096d554..18cd4ec06 100644 --- a/RegressionTesting/issue156/Tests.csproj +++ b/RegressionTesting/issue156/Tests/Tests.csproj @@ -13,6 +13,10 @@ + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/RegressionTesting/issue156/Tests.sln b/RegressionTesting/issue156/Tests/Tests.sln similarity index 100% rename from RegressionTesting/issue156/Tests.sln rename to RegressionTesting/issue156/Tests/Tests.sln From 528cc2f5551bde5b6518e5ab824e0002f95c8b5c Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Fri, 17 Jun 2022 21:23:51 +0100 Subject: [PATCH 41/81] With broken workround --- Build/targets.fsx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Build/targets.fsx b/Build/targets.fsx index 785692cda..8c5479719 100644 --- a/Build/targets.fsx +++ b/Build/targets.fsx @@ -6884,6 +6884,7 @@ _Target "Issue156" (fun _ -> let p0 = { Primitive.PrepareOptions.Create() with + Dependencies = ["C:/WINDOWS/Microsoft.NET/assembly/GAC_MSIL/WindowsBase/v4.0_4.0.0.0__31bf3856ad364e35/WindowsBase.dll"] AssemblyFilter = [| "nunit" "Adapter" @@ -6902,9 +6903,7 @@ _Target "Issue156" (fun _ -> .WithAltCoverOptions pp0 cc0 - ForceTrue) - .WithAltCoverImportModule() - .WithAltCoverGetVersion() + ForceTrueOnly) |> testWithCLIArguments) "" finally From 37479d25f8257c6f6824ea1433b99e68d5ca77ef Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Sat, 18 Jun 2022 10:17:36 +0100 Subject: [PATCH 42/81] Fix one incidental bug --- AltCover.DotNet/DotNet.fs | 8 ++++---- ReleaseNotes.md | 3 +++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/AltCover.DotNet/DotNet.fs b/AltCover.DotNet/DotNet.fs index cfe2efb8d..b0d42a4af 100644 --- a/AltCover.DotNet/DotNet.fs +++ b/AltCover.DotNet/DotNet.fs @@ -108,12 +108,12 @@ module DotNet = fromArg, "ShowStatic", prepare.ShowStatic ] //=-|+|++` to mark simple code like auto-properties in the coverage file let internal toPrepareArgArgumentList (prepare: Abstract.IPrepareOptions) = - [ (arg, "ZipFile", "false", prepare.ZipFile) //="true|false"` - set "true" to store the coverage report in a `.zip` archive - (arg, "MethodPoint", "false", prepare.MethodPoint) //="true|false"` - set "true" to record only the first point of each method - (arg, "Single", "false", prepare.SingleVisit) //="true|false"` - set "true" to record only the first visit to each point + [ (arg, "ZipFile", "true", prepare.ZipFile) //="true|false"` - set "true" to store the coverage report in a `.zip` archive + (arg, "MethodPoint", "true", prepare.MethodPoint) //="true|false"` - set "true" to record only the first point of each method + (arg, "Single", "true", prepare.SingleVisit) //="true|false"` - set "true" to record only the first visit to each point (arg, "LineCover", "true", prepare.LineCover) //="true|false"` - set "true" to record only line coverage in OpenCover format (arg, "BranchCover", "true", prepare.BranchCover) //="true|false"` - set "true" to record only branch coverage in OpenCover format - (arg, "SourceLink", "false", prepare.SourceLink) //=true|false` to opt for SourceLink document URLs for tracked files + (arg, "SourceLink", "true", prepare.SourceLink) //=true|false` to opt for SourceLink document URLs for tracked files (arg, "LocalSource", "true", prepare.LocalSource) //=true|false` to ignore assemblies with `.pdb`s that don't refer to local source (arg, "VisibleBranches", "true", prepare.VisibleBranches) //=true|false` to ignore compiler generated internal `switch`/`match` branches (arg, "ShowGenerated", "true", prepare.ShowGenerated) //=true|false` to mark generated code in the coverage file diff --git a/ReleaseNotes.md b/ReleaseNotes.md index 233cf7f88..e54282202 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -2,6 +2,9 @@ A. Start with the Quick Start guide : https://github.com/SteveGilham/altcover/wiki/QuickStart-Guide +# 8.2.xxx (Habu series release 14) +* [BUGFIX] -- Fake API fix for ZipFile, MethodPoint, SingleVisit, SourceLink to enable their activation + # 8.2.837 (Habu series release 13) * [VISUALIZER] Critical bug fixes for GTK and Avalonia : mismatched new icon names causing crashes * [VISUALIZER] Use new coverage data icon for the coverage report file, not a generic report icon From 7e4df7725be06fb5887209b6f36a5261ab8cd3c0 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Sat, 18 Jun 2022 16:33:41 +0100 Subject: [PATCH 43/81] Work around the behaviour of `dotnet test` with an argument ending `.dll` or `.exe` --- AltCover.DotNet/DotNet.fs | 7 ++++++- Build/targets.fsx | 14 +++++++++++--- ReleaseNotes.md | 1 + nupkg/build/netstandard2.0/AltCover.targets | 2 +- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/AltCover.DotNet/DotNet.fs b/AltCover.DotNet/DotNet.fs index b0d42a4af..bbd0901c1 100644 --- a/AltCover.DotNet/DotNet.fs +++ b/AltCover.DotNet/DotNet.fs @@ -86,8 +86,13 @@ module DotNet = "AvoidMethodWithUnusedGenericTypeRule", Justification = "Compiler Generated")>] let internal toPrepareListArgumentList (prepare: Abstract.IPrepareOptions) = + let dependencies = prepare.Dependencies + let d2 = if dependencies |> Seq.isEmpty + then dependencies + else Seq.concat [ dependencies; seq { String.Empty } ] + [ fromList, "SymbolDirectories", prepare.SymbolDirectories //=`"pipe `'|'` separated list of paths" - fromList, "DependencyList", prepare.Dependencies //=`"pipe `'|'` separated list of paths" + fromList, "DependencyList", d2 //=`"pipe `'|'` separated *AND TERMINATED* list of paths" fromList, "Keys", prepare.Keys //=`"pipe `'|'` separated list of paths to strong-name keys for re-signing assemblies" fromList, "FileFilter", prepare.FileFilter //=`"pipe `'|'` separated list of file name regexes" fromList, "AssemblyFilter", prepare.AssemblyFilter //=`"pipe `'|'` separated list of names" diff --git a/Build/targets.fsx b/Build/targets.fsx index 8c5479719..3e9ffac96 100644 --- a/Build/targets.fsx +++ b/Build/targets.fsx @@ -304,6 +304,11 @@ let withWorkingDirectoryVN dir o = WorkingDirectory = Path.getFullName dir Verbosity = Some DotNet.Verbosity.Normal } +let withWorkingDirectoryVDet dir o = + { dotnetOptions o with + WorkingDirectory = Path.getFullName dir + Verbosity = Some DotNet.Verbosity.Detailed } + let withWorkingDirectoryOnly dir o = { dotnetOptions o with WorkingDirectory = Path.getFullName dir } @@ -6869,7 +6874,7 @@ _Target "Issue156" (fun _ -> ) pack.AddBeforeSelf inject - csproj.Save "./_Issue156/Tests/Tests.csproj" + csproj.Save "./_Issue156/Tests/Issue156.csproj" Shell.copy "./_Issue156/Tests" (!! "./RegressionTesting/issue156/Tests/*.cs") Shell.copy "./_Issue156/ClassLibrary1" (!! "./RegressionTesting/issue156/ClassLibrary1/*.cs*") @@ -6884,12 +6889,15 @@ _Target "Issue156" (fun _ -> let p0 = { Primitive.PrepareOptions.Create() with - Dependencies = ["C:/WINDOWS/Microsoft.NET/assembly/GAC_MSIL/WindowsBase/v4.0_4.0.0.0__31bf3856ad364e35/WindowsBase.dll"] + Dependencies = ["C:\\WINDOWS\\Microsoft.NET\\assembly\\GAC_MSIL\\WindowsBase\\v4.0_4.0.0.0__31bf3856ad364e35\\WindowsBase.dll" ] + //Dependencies = ["WindowsBase.dll"] AssemblyFilter = [| "nunit" "Adapter" "FSharp" - "AltCover" |] } + "AltCover" |] + SingleVisit = true + } let pp0 = AltCover.PrepareOptions.Primitive p0 let c0 = Primitive.CollectOptions.Create() diff --git a/ReleaseNotes.md b/ReleaseNotes.md index e54282202..78a489cd5 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -4,6 +4,7 @@ A. Start with the Quick Start guide : https://github.com/SteveGilham/altcover/wi # 8.2.xxx (Habu series release 14) * [BUGFIX] -- Fake API fix for ZipFile, MethodPoint, SingleVisit, SourceLink to enable their activation +* [BUGFIX] -- work around the behaviour of `dotnet test` with an argument ending `.dll` or `.exe`, directly through API and in docs for direct use. # 8.2.837 (Habu series release 13) * [VISUALIZER] Critical bug fixes for GTK and Avalonia : mismatched new icon names causing crashes diff --git a/nupkg/build/netstandard2.0/AltCover.targets b/nupkg/build/netstandard2.0/AltCover.targets index ec8ee9137..3ecddba23 100644 --- a/nupkg/build/netstandard2.0/AltCover.targets +++ b/nupkg/build/netstandard2.0/AltCover.targets @@ -85,7 +85,7 @@ OutputDirectories="@(AltCoverOutputDirectory)" InPlace="$(AltCoverInPlace)" SymbolDirectories="$(AltCoverSymbolDirectories.Split('|'))" - Dependencies="$(AltCoverDependencyList.Split('|'))" + Dependencies="$(AltCoverDependencyList.Trim('|').Split('|'))" Keys="$(AltCoverKeys.Split('|'))" StrongNameKey="$(AltCoverStrongNameKey)" Report="$(AltCoverReport2)" From 1bc0434bb7468fd399e2fb444e3bcb2a13f3ee1d Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Sat, 18 Jun 2022 16:50:42 +0100 Subject: [PATCH 44/81] Start to refactor --- AltCover.Engine/CecilEx.fs | 92 ++++++++++++++++++++++++++++++++++- AltCover.Engine/Instrument.fs | 92 ++--------------------------------- AltCover.Engine/Main.fs | 5 +- AltCover.Tests/Tests2.fs | 17 ++++--- AltCover.Tests/Tests3.fs | 12 ++--- 5 files changed, 113 insertions(+), 105 deletions(-) diff --git a/AltCover.Engine/CecilEx.fs b/AltCover.Engine/CecilEx.fs index 8a676c7e0..a4f950c2e 100644 --- a/AltCover.Engine/CecilEx.fs +++ b/AltCover.Engine/CecilEx.fs @@ -6,6 +6,10 @@ namespace AltCover open System +open System.Collections.Generic +open System.Diagnostics.CodeAnalysis +open System.IO + open Mono.Cecil open Mono.Cecil.Cil @@ -287,4 +291,90 @@ module internal CecilExtension = |> Seq.filter (fun i -> i.OpCode = OpCodes.Tail) |> Seq.iter (fun i -> i.OpCode <- OpCodes.Nop - i.Operand <- null) \ No newline at end of file + i.Operand <- null) + + let internal resolutionTable = + Dictionary() + + let private nugetCache = + Path.Combine( + Path.Combine( + Environment.GetFolderPath Environment.SpecialFolder.UserProfile, + ".nuget" + ), + "packages" + ) + + [] + let internal resolveFromNugetCache _ (y: AssemblyNameReference) = + let name = y.ToString() + + if resolutionTable.ContainsKey name then + resolutionTable.[name] + else + // Placate Gendarme here + let share = + "|usr|share" + .Replace('|', Path.DirectorySeparatorChar) + + let shared = + "dotnet|shared" + .Replace('|', Path.DirectorySeparatorChar) + + let sources = + [ Environment.GetEnvironmentVariable "NUGET_PACKAGES" + Path.Combine( + Environment.GetEnvironmentVariable "ProgramFiles" + |> Option.ofObj + |> (Option.defaultValue share), + shared + ) + Path.Combine(share, shared) + nugetCache ] + + let candidate source = + source + |> List.filter (String.IsNullOrWhiteSpace >> not) + |> List.filter Directory.Exists + |> Seq.distinct + |> Seq.collect (fun dir -> + Directory.GetFiles(dir, y.Name + ".*", SearchOption.AllDirectories)) + |> Seq.sortDescending + |> Seq.filter (fun f -> + let x = Path.GetExtension f + + x.Equals(".exe", StringComparison.OrdinalIgnoreCase) + || x.Equals(".dll", StringComparison.OrdinalIgnoreCase)) + |> Seq.filter (fun f -> + y + .ToString() + .Equals(CommandLine.findAssemblyName f, StringComparison.Ordinal)) + |> Seq.tryHead + + match candidate sources with + | None -> null + | Some x -> + String.Format( + System.Globalization.CultureInfo.CurrentCulture, + CommandLine.resources.GetString "resolved", + y.ToString(), + x + ) + |> (Output.warnOn true) + + let a = AssemblyDefinition.ReadAssembly x + resolutionTable.[name] <- a + a + + let internal hookResolveHandler = + new AssemblyResolveEventHandler(resolveFromNugetCache) + + let internal hookResolver (resolver: IAssemblyResolver) = + if resolver.IsNotNull then + let hook = + resolver.GetType().GetMethod("add_ResolveFailure") + + hook.Invoke(resolver, [| hookResolveHandler :> obj |]) + |> ignore \ No newline at end of file diff --git a/AltCover.Engine/Instrument.fs b/AltCover.Engine/Instrument.fs index f4a4825ad..f77c490e7 100644 --- a/AltCover.Engine/Instrument.fs +++ b/AltCover.Engine/Instrument.fs @@ -144,9 +144,6 @@ module internal Instrument = let version = recorderVersion () - let internal resolutionTable = - Dictionary() - let internal modules = List() module internal I = @@ -192,9 +189,11 @@ module internal Instrument = = let ascii = System.Text.Encoding.ASCII - let a = ascii.GetBytes(assembly.Identity.Assembly) + let a = + ascii.GetBytes(assembly.Identity.Assembly) - let c = ascii.GetBytes(assembly.Identity.Configuration) + let c = + ascii.GetBytes(assembly.Identity.Configuration) let blob = [| prelude |> List.toArray @@ -397,89 +396,6 @@ module internal Instrument = prepareAssemblyDefinition definition - let private nugetCache = - Path.Combine( - Path.Combine( - Environment.GetFolderPath Environment.SpecialFolder.UserProfile, - ".nuget" - ), - "packages" - ) - - [] - let internal resolveFromNugetCache _ (y: AssemblyNameReference) = - let name = y.ToString() - - if resolutionTable.ContainsKey name then - resolutionTable.[name] - else - // Placate Gendarme here - let share = - "|usr|share" - .Replace('|', Path.DirectorySeparatorChar) - - let shared = - "dotnet|shared" - .Replace('|', Path.DirectorySeparatorChar) - - let sources = - [ Environment.GetEnvironmentVariable "NUGET_PACKAGES" - Path.Combine( - Environment.GetEnvironmentVariable "ProgramFiles" - |> Option.ofObj - |> (Option.defaultValue share), - shared - ) - Path.Combine(share, shared) - nugetCache ] - - let candidate source = - source - |> List.filter (String.IsNullOrWhiteSpace >> not) - |> List.filter Directory.Exists - |> Seq.distinct - |> Seq.collect (fun dir -> - Directory.GetFiles(dir, y.Name + ".*", SearchOption.AllDirectories)) - |> Seq.sortDescending - |> Seq.filter (fun f -> - let x = Path.GetExtension f - - x.Equals(".exe", StringComparison.OrdinalIgnoreCase) - || x.Equals(".dll", StringComparison.OrdinalIgnoreCase)) - |> Seq.filter (fun f -> - y - .ToString() - .Equals(CommandLine.findAssemblyName f, StringComparison.Ordinal)) - |> Seq.tryHead - - match candidate sources with - | None -> null - | Some x -> - String.Format( - System.Globalization.CultureInfo.CurrentCulture, - CommandLine.resources.GetString "resolved", - y.ToString(), - x - ) - |> (Output.warnOn true) - - let a = AssemblyDefinition.ReadAssembly x - resolutionTable.[name] <- a - a - - let internal hookResolveHandler = - new AssemblyResolveEventHandler(resolveFromNugetCache) - - let internal hookResolver (resolver: IAssemblyResolver) = - if resolver.IsNotNull then - let hook = - resolver.GetType().GetMethod("add_ResolveFailure") - - hook.Invoke(resolver, [| hookResolveHandler :> obj |]) - |> ignore - // #if IDEMPOTENT_INSTRUMENT // let internal safeWait (mutex: System.Threading.WaitHandle) = // try diff --git a/AltCover.Engine/Main.fs b/AltCover.Engine/Main.fs index e5a240d02..ca437b6b3 100644 --- a/AltCover.Engine/Main.fs +++ b/AltCover.Engine/Main.fs @@ -39,7 +39,7 @@ module internal Main = CoverageParameters.theOutputDirectories.Clear() CoverageParameters.configurationHash <- None ProgramDatabase.symbolFolders.Clear() - Instrument.resolutionTable.Clear() + CecilExtension.resolutionTable.Clear() Instrument.modules.Clear() CoverageParameters.keys.Clear() @@ -184,7 +184,8 @@ module internal Main = CommandLine.validateAssembly "--dependency" path if ok then - Instrument.resolutionTable.[name] <- AssemblyDefinition.ReadAssembly path) + CecilExtension.resolutionTable.[name] <- + AssemblyDefinition.ReadAssembly path) () false)) diff --git a/AltCover.Tests/Tests2.fs b/AltCover.Tests/Tests2.fs index 9e1c36bfd..1fd794178 100644 --- a/AltCover.Tests/Tests2.fs +++ b/AltCover.Tests/Tests2.fs @@ -451,7 +451,7 @@ module AltCoverTests2 = use raw = Mono.Cecil.AssemblyDefinition.ReadAssembly where - Instrument.resolutionTable.Clear() + CecilExtension.resolutionTable.Clear() try raw.MainModule.AssemblyReferences @@ -460,7 +460,7 @@ module AltCoverTests2 = >= 0) |> Seq.iter (fun f -> let resolved = - Instrument.I.hookResolveHandler.Invoke(null, f) + CecilExtension.hookResolveHandler.Invoke(null, f) test' <@ resolved.IsNotNull @> <| f.ToString()) @@ -472,22 +472,23 @@ module AltCoverTests2 = f.Version <- System.Version("666.666.666.666") let resolved = - Instrument.I.hookResolveHandler.Invoke(null, f) + CecilExtension.hookResolveHandler.Invoke(null, f) test' <@ resolved |> isNull @> <| f.ToString()) let found = - Instrument.resolutionTable.Keys |> Seq.toList + CecilExtension.resolutionTable.Keys |> Seq.toList found |> Seq.iter (fun k -> - let matched = Instrument.resolutionTable.[k] + let matched = + CecilExtension.resolutionTable.[k] let k2 = AssemblyNameReference.Parse(k.ToString()) k2.Version <- System.Version("666.666.666.666") - Instrument.resolutionTable.[k2.ToString()] <- matched) + CecilExtension.resolutionTable.[k2.ToString()] <- matched) raw.MainModule.AssemblyReferences |> Seq.filter (fun f -> @@ -497,11 +498,11 @@ module AltCoverTests2 = f.Version <- System.Version("666.666.666.666") let resolved = - Instrument.I.hookResolveHandler.Invoke(null, f) + CecilExtension.hookResolveHandler.Invoke(null, f) test' <@ resolved.IsNotNull @> <| f.ToString()) finally - Instrument.resolutionTable.Clear() + CecilExtension.resolutionTable.Clear() [] let ShouldBeAbleToPrepareTheAssembly () = diff --git a/AltCover.Tests/Tests3.fs b/AltCover.Tests/Tests3.fs index 0bff0fea9..350866166 100644 --- a/AltCover.Tests/Tests3.fs +++ b/AltCover.Tests/Tests3.fs @@ -1403,7 +1403,7 @@ module AltCoverTests3 = Main.init () try - Instrument.resolutionTable.Clear() + CecilExtension.resolutionTable.Clear() let options = Main.I.declareOptions () let here = @@ -1423,8 +1423,8 @@ module AltCoverTests3 = Assert.That(x, Is.Empty) let expected = - Instrument.resolutionTable.Keys - |> Seq.map (fun a -> Instrument.resolutionTable.[a].Name.Name) + CecilExtension.resolutionTable.Keys + |> Seq.map (fun a -> CecilExtension.resolutionTable.[a].Name.Name) |> Seq.sort Assert.That( @@ -1432,7 +1432,7 @@ module AltCoverTests3 = Is.EqualTo("AltCover.Engine AltCover.Tests") ) finally - Instrument.resolutionTable.Clear() + CecilExtension.resolutionTable.Clear() //let ParsingNoDependencyGivesFailure() = // Main.init() @@ -1453,7 +1453,7 @@ module AltCoverTests3 = Main.init () try - Instrument.resolutionTable.Clear() + CecilExtension.resolutionTable.Clear() let options = Main.I.declareOptions () let unique = @@ -1469,7 +1469,7 @@ module AltCoverTests3 = Assert.That(y, Is.SameAs options) Assert.That(x, Is.EqualTo "UsageError") finally - Instrument.resolutionTable.Clear() + CecilExtension.resolutionTable.Clear() [] let ParsingNonDependencyGivesFailure () = From 223cd0f7f9cca717cb172c833ba6db95282b92c3 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Sat, 18 Jun 2022 18:24:53 +0100 Subject: [PATCH 45/81] Refactor for Gendarme --- AltCover.DotNet/DotNet.fs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/AltCover.DotNet/DotNet.fs b/AltCover.DotNet/DotNet.fs index bbd0901c1..d0219f978 100644 --- a/AltCover.DotNet/DotNet.fs +++ b/AltCover.DotNet/DotNet.fs @@ -87,9 +87,11 @@ module DotNet = Justification = "Compiler Generated")>] let internal toPrepareListArgumentList (prepare: Abstract.IPrepareOptions) = let dependencies = prepare.Dependencies - let d2 = if dependencies |> Seq.isEmpty - then dependencies - else Seq.concat [ dependencies; seq { String.Empty } ] + let extra = if dependencies |> Seq.isEmpty then 0 else 1 + let suffix = String.Empty + |> Seq.replicate extra + let d2 = dependencies + |> Seq.append suffix [ fromList, "SymbolDirectories", prepare.SymbolDirectories //=`"pipe `'|'` separated list of paths" fromList, "DependencyList", d2 //=`"pipe `'|'` separated *AND TERMINATED* list of paths" From 0e39fff5d3838f0178c745f19002378cbb570a2c Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Sat, 18 Jun 2022 20:35:55 +0100 Subject: [PATCH 46/81] Rough refactoring - 2 tests broken --- AltCover.Engine/AltCover.Engine.fsproj | 3 +- AltCover.Engine/AltCover.fs | 2 +- AltCover.Engine/CecilEx.fs | 177 ++++++++++++++----------- AltCover.Engine/CommandLine.fs | 92 ++----------- AltCover.Engine/Instrument.fs | 14 +- AltCover.Engine/Json.fs | 2 +- AltCover.Engine/Main.fs | 12 +- AltCover.Engine/Output.fs | 69 ++++++++++ AltCover.Engine/Runner.fs | 10 +- AltCover.Engine/Visitor.fs | 2 +- AltCover.Tests/Tests2.fs | 16 +-- AltCover.Tests/Tests3.fs | 14 +- 12 files changed, 220 insertions(+), 193 deletions(-) create mode 100644 AltCover.Engine/Output.fs diff --git a/AltCover.Engine/AltCover.Engine.fsproj b/AltCover.Engine/AltCover.Engine.fsproj index bad3a5740..fcca89139 100644 --- a/AltCover.Engine/AltCover.Engine.fsproj +++ b/AltCover.Engine/AltCover.Engine.fsproj @@ -23,12 +23,14 @@ + + @@ -36,7 +38,6 @@ - diff --git a/AltCover.Engine/AltCover.fs b/AltCover.Engine/AltCover.fs index ba649de71..65eed29d5 100644 --- a/AltCover.Engine/AltCover.fs +++ b/AltCover.Engine/AltCover.fs @@ -526,7 +526,7 @@ module AltCover = CommandLine.error <- String.Format( System.Globalization.CultureInfo.CurrentCulture, - CommandLine.resources.GetString "Incompatible", + Output.resources.GetString "Incompatible", "--branchcover", "--linecover" ) diff --git a/AltCover.Engine/CecilEx.fs b/AltCover.Engine/CecilEx.fs index a4f950c2e..c3d2a9696 100644 --- a/AltCover.Engine/CecilEx.fs +++ b/AltCover.Engine/CecilEx.fs @@ -9,10 +9,110 @@ open System open System.Collections.Generic open System.Diagnostics.CodeAnalysis open System.IO +open System.Reflection open Mono.Cecil open Mono.Cecil.Cil +type AssemblyResolver () as self = + inherit DefaultAssemblyResolver() + do self.add_ResolveFailure <| new AssemblyResolveEventHandler(AssemblyResolver.resolveFromNugetCache) + + static member nugetCache = + Path.Combine( + Path.Combine( + Environment.GetFolderPath Environment.SpecialFolder.UserProfile, + ".nuget" + ), + "packages" + ) + + static member internal resolutionTable = + Dictionary() + + static member findAssemblyName f = + try + (AssemblyName.GetAssemblyName f).ToString() + with + | :? ArgumentException + | :? FileNotFoundException + | :? System.Security.SecurityException + | :? BadImageFormatException + | :? FileLoadException -> String.Empty + + static member ReadAssembly (path: String) = + let reader = ReaderParameters() + reader.AssemblyResolver <- new AssemblyResolver () + AssemblyDefinition.ReadAssembly(path, reader) + + static member ReadAssembly (file: Stream) = + let reader = ReaderParameters() + reader.AssemblyResolver <- new AssemblyResolver () + AssemblyDefinition.ReadAssembly(file, reader) + + [] + static member resolveFromNugetCache _ (y: AssemblyNameReference) = + let name = y.ToString() + + if AssemblyResolver.resolutionTable.ContainsKey name then + AssemblyResolver.resolutionTable.[name] + else + // Placate Gendarme here + let share = + "|usr|share" + .Replace('|', Path.DirectorySeparatorChar) + + let shared = + "dotnet|shared" + .Replace('|', Path.DirectorySeparatorChar) + + let sources = + [ Environment.GetEnvironmentVariable "NUGET_PACKAGES" + Path.Combine( + Environment.GetEnvironmentVariable "ProgramFiles" + |> Option.ofObj + |> (Option.defaultValue share), + shared + ) + Path.Combine(share, shared) + AssemblyResolver.nugetCache ] + + let candidate source = + source + |> List.filter (String.IsNullOrWhiteSpace >> not) + |> List.filter Directory.Exists + |> Seq.distinct + |> Seq.collect (fun dir -> + Directory.GetFiles(dir, y.Name + ".*", SearchOption.AllDirectories)) + |> Seq.sortDescending + |> Seq.filter (fun f -> + let x = Path.GetExtension f + + x.Equals(".exe", StringComparison.OrdinalIgnoreCase) + || x.Equals(".dll", StringComparison.OrdinalIgnoreCase)) + |> Seq.filter (fun f -> + y + .ToString() + .Equals(AssemblyResolver.findAssemblyName f, StringComparison.Ordinal)) + |> Seq.tryHead + + match candidate sources with + | None -> null + | Some x -> + String.Format( + System.Globalization.CultureInfo.CurrentCulture, + Output.resources.GetString "resolved", + y.ToString(), + x + ) + |> (Output.warnOn true) + + let a = AssemblyResolver.ReadAssembly x // recursive + AssemblyResolver.resolutionTable.[name] <- a + a + [] module internal CecilExtension = let internal scopesSeen = @@ -293,83 +393,8 @@ module internal CecilExtension = i.OpCode <- OpCodes.Nop i.Operand <- null) - let internal resolutionTable = - Dictionary() - - let private nugetCache = - Path.Combine( - Path.Combine( - Environment.GetFolderPath Environment.SpecialFolder.UserProfile, - ".nuget" - ), - "packages" - ) - - [] - let internal resolveFromNugetCache _ (y: AssemblyNameReference) = - let name = y.ToString() - - if resolutionTable.ContainsKey name then - resolutionTable.[name] - else - // Placate Gendarme here - let share = - "|usr|share" - .Replace('|', Path.DirectorySeparatorChar) - - let shared = - "dotnet|shared" - .Replace('|', Path.DirectorySeparatorChar) - - let sources = - [ Environment.GetEnvironmentVariable "NUGET_PACKAGES" - Path.Combine( - Environment.GetEnvironmentVariable "ProgramFiles" - |> Option.ofObj - |> (Option.defaultValue share), - shared - ) - Path.Combine(share, shared) - nugetCache ] - - let candidate source = - source - |> List.filter (String.IsNullOrWhiteSpace >> not) - |> List.filter Directory.Exists - |> Seq.distinct - |> Seq.collect (fun dir -> - Directory.GetFiles(dir, y.Name + ".*", SearchOption.AllDirectories)) - |> Seq.sortDescending - |> Seq.filter (fun f -> - let x = Path.GetExtension f - - x.Equals(".exe", StringComparison.OrdinalIgnoreCase) - || x.Equals(".dll", StringComparison.OrdinalIgnoreCase)) - |> Seq.filter (fun f -> - y - .ToString() - .Equals(CommandLine.findAssemblyName f, StringComparison.Ordinal)) - |> Seq.tryHead - - match candidate sources with - | None -> null - | Some x -> - String.Format( - System.Globalization.CultureInfo.CurrentCulture, - CommandLine.resources.GetString "resolved", - y.ToString(), - x - ) - |> (Output.warnOn true) - - let a = AssemblyDefinition.ReadAssembly x - resolutionTable.[name] <- a - a - let internal hookResolveHandler = - new AssemblyResolveEventHandler(resolveFromNugetCache) + new AssemblyResolveEventHandler(AssemblyResolver.resolveFromNugetCache) let internal hookResolver (resolver: IAssemblyResolver) = if resolver.IsNotNull then diff --git a/AltCover.Engine/CommandLine.fs b/AltCover.Engine/CommandLine.fs index a900369d3..f8ae4f6d3 100644 --- a/AltCover.Engine/CommandLine.fs +++ b/AltCover.Engine/CommandLine.fs @@ -100,58 +100,6 @@ module internal Zip = type internal StringSink = Action -[] -type internal UsageInfo = - { Intro: String - Options: OptionSet - Options2: OptionSet } - -module internal Output = - let mutable internal info: String -> unit = - ignore - - let mutable internal warn: String -> unit = - ignore - - let mutable internal echo: String -> unit = - ignore - - let mutable internal error: String -> unit = - ignore - - let mutable internal usage: UsageInfo -> unit = - ignore - - let internal warnOn x = if x then warn else info - - let internal logExceptionToFile path e = - Directory.CreateDirectory(path |> Path.GetDirectoryName) - |> ignore - - use stream = - File.Open(path, FileMode.Append, FileAccess.Write) - - use writer = new StreamWriter(stream) - - let rec logException padding ex = - ex.ToString() |> writer.WriteLine - - ex.GetType().GetProperties() - |> Seq.filter (fun p -> - [ "Message"; "StackTrace" ] - |> Seq.exists (fun n -> n == p.Name) - |> not) - |> Seq.iter (fun p -> - (padding + p.Name + " = ") |> writer.WriteLine - - match p.GetValue(ex) with - | :? Exception as exx -> logException (" " + padding) exx - | v -> v |> sprintf "%A" |> writer.WriteLine) - - logException String.Empty e - module internal CommandLine = let mutable internal verbosity = 0 @@ -163,9 +111,6 @@ module internal CommandLine = let internal dropReturnCode = ref false // ddFlag - let internal resources = - ResourceManager("AltCover.Strings", Assembly.GetExecutingAssembly()) - [] @@ -173,7 +118,7 @@ module internal CommandLine = [] // ~ Static class for methods with params array arguments type internal Format private () = static member Local(resource, [] args) = - String.Format(CultureInfo.CurrentCulture, resources.GetString resource, args) + String.Format(CultureInfo.CurrentCulture, Output.resources.GetString resource, args) module internal I = let internal conditionalOutput condition output = if condition () then output () @@ -326,16 +271,6 @@ module internal CommandLine = static member Throw<'T>(e : exn) : 'T = (e.Message, e) |> SecurityException |> raise - let internal findAssemblyName f = - try - (AssemblyName.GetAssemblyName f).ToString() - with - | :? ArgumentException - | :? FileNotFoundException - | :? System.Security.SecurityException - | :? BadImageFormatException - | :? FileLoadException -> String.Empty - let internal transformCryptographicException f = try f () @@ -414,7 +349,7 @@ module internal CommandLine = (fun () -> tag |> String.IsNullOrWhiteSpace |> not && error |> List.isEmpty |> not) - (fun () -> tag |> resources.GetString |> Output.error) + (fun () -> tag |> Output.resources.GetString |> Output.error) error |> List.iter Output.error @@ -461,7 +396,7 @@ module internal CommandLine = let internal validateAssembly assembly x = if I.validateFile assembly x then - let name = I.findAssemblyName x + let name = AssemblyResolver.findAssemblyName x if String.IsNullOrWhiteSpace name then error <- @@ -496,9 +431,6 @@ module internal CommandLine = let internal doPathOperation = I.doPathOperation - let internal findAssemblyName = - I.findAssemblyName - let internal validateDirectory dir x = I.validateFileSystemEntity Directory.Exists I.dnf dir x @@ -524,25 +456,25 @@ module internal CommandLine = let internal usageBase u = I.writeColoured Console.Error ConsoleColor.Yellow (fun w -> - w.WriteLine(resources.GetString u.Intro) + w.WriteLine(Output.resources.GetString u.Intro) u.Options.WriteOptionDescriptions(w) if u.Options.Any() && u.Options2.Any() then - w.WriteLine(resources.GetString "orbinder") + w.WriteLine(Output.resources.GetString "orbinder") if u.Options2.Any() then w.WriteLine(" Runner") u.Options2.WriteOptionDescriptions(w) - w.WriteLine(resources.GetString "orbinder") - w.WriteLine(resources.GetString "ImportModule") - w.WriteLine(resources.GetString "orbinder") - w.WriteLine(resources.GetString "Version") - w.WriteLine(resources.GetString "orglobal") - w.WriteLine(resources.GetString "TargetsPath")) + w.WriteLine(Output.resources.GetString "orbinder") + w.WriteLine(Output.resources.GetString "ImportModule") + w.WriteLine(Output.resources.GetString "orbinder") + w.WriteLine(Output.resources.GetString "Version") + w.WriteLine(Output.resources.GetString "orglobal") + w.WriteLine(Output.resources.GetString "TargetsPath")) let internal writeResource = - resources.GetString >> Output.info + Output.resources.GetString >> Output.info let internal writeResourceWithFormatItems s x warn = Format.Local(s, x) |> (Output.warnOn warn) diff --git a/AltCover.Engine/Instrument.fs b/AltCover.Engine/Instrument.fs index f77c490e7..039cb2a38 100644 --- a/AltCover.Engine/Instrument.fs +++ b/AltCover.Engine/Instrument.fs @@ -75,7 +75,7 @@ type internal AsyncSupport = typeof .Assembly .Location - |> AssemblyDefinition.ReadAssembly + |> AssemblyResolver.ReadAssembly let task = def.MainModule.GetType("System.Threading.Tasks.Task") @@ -90,7 +90,7 @@ type internal AsyncSupport = typeof .Assembly .Location - |> AssemblyDefinition.ReadAssembly + |> AssemblyResolver.ReadAssembly let fsasync = def2.MainModule.GetType("Microsoft.FSharp.Control.FSharpAsync") @@ -138,7 +138,7 @@ module internal Instrument = .GetManifestResourceStream("AltCover.AltCover.Recorder.net20.dll") use def = - AssemblyDefinition.ReadAssembly stream + AssemblyResolver.ReadAssembly stream def.Name.Version.ToString() @@ -392,7 +392,7 @@ module internal Instrument = Justification = "Return confusing Gendarme -- TODO")>] let internal prepareAssembly (assembly: Stream) = let definition = - AssemblyDefinition.ReadAssembly(assembly) + AssemblyResolver.ReadAssembly(assembly) prepareAssemblyDefinition definition @@ -817,7 +817,7 @@ module internal Instrument = String.Format( System.Globalization.CultureInfo.CurrentCulture, - CommandLine.resources.GetString "instrumented", + Output.resources.GetString "instrumented", definition, first ) @@ -832,7 +832,7 @@ module internal Instrument = String.Format( System.Globalization.CultureInfo.CurrentCulture, - CommandLine.resources.GetString "instrumented", + Output.resources.GetString "instrumented", definition, pathn ) @@ -1159,7 +1159,7 @@ module internal Instrument = .GetManifestResourceStream("AltCover.AltCover.Async.net46.dll") use delta = - AssemblyDefinition.ReadAssembly(stream) + AssemblyResolver.ReadAssembly(stream) // get a handle on the property let readCallTrackType (m: ModuleDefinition) = diff --git a/AltCover.Engine/Json.fs b/AltCover.Engine/Json.fs index d87466d1f..cef61dc68 100644 --- a/AltCover.Engine/Json.fs +++ b/AltCover.Engine/Json.fs @@ -99,7 +99,7 @@ module internal Json = Some path |> Option.filter File.Exists |> Option.map (fun p -> - let def = AssemblyDefinition.ReadAssembly p + let def = AssemblyResolver.ReadAssembly p ProgramDatabase.readSymbols def def) diff --git a/AltCover.Engine/Main.fs b/AltCover.Engine/Main.fs index ca437b6b3..f5e910f48 100644 --- a/AltCover.Engine/Main.fs +++ b/AltCover.Engine/Main.fs @@ -39,7 +39,7 @@ module internal Main = CoverageParameters.theOutputDirectories.Clear() CoverageParameters.configurationHash <- None ProgramDatabase.symbolFolders.Clear() - CecilExtension.resolutionTable.Clear() + AssemblyResolver.resolutionTable.Clear() Instrument.modules.Clear() CoverageParameters.keys.Clear() @@ -112,7 +112,7 @@ module internal Main = CommandLine.error <- String.Format( CultureInfo.CurrentCulture, - CommandLine.resources.GetString "InvalidValue", + Output.resources.GetString "InvalidValue", "--callContext", x ) @@ -184,8 +184,8 @@ module internal Main = CommandLine.validateAssembly "--dependency" path if ok then - CecilExtension.resolutionTable.[name] <- - AssemblyDefinition.ReadAssembly path) + AssemblyResolver.resolutionTable.[name] <- + AssemblyResolver.ReadAssembly path) () false)) @@ -327,7 +327,7 @@ module internal Main = :: CommandLine.error)) ] // default end stop |> List.fold (fun (o: OptionSet) (p, a) -> - o.Add(p, CommandLine.resources.GetString(p), new System.Action(a))) + o.Add(p, Output.resources.GetString(p), new System.Action(a))) (OptionSet()) let private echoDirectories (outputDirectory: string, inputDirectory: string) = @@ -527,7 +527,7 @@ module internal Main = use stream = File.OpenRead(fullName) use def = - AssemblyDefinition.ReadAssembly(stream) + AssemblyResolver.ReadAssembly(stream) ProgramDatabase.readSymbols def diff --git a/AltCover.Engine/Output.fs b/AltCover.Engine/Output.fs new file mode 100644 index 000000000..4f7976119 --- /dev/null +++ b/AltCover.Engine/Output.fs @@ -0,0 +1,69 @@ +namespace AltCover + +open System +open System.IO +open System.Reflection +open System.Resources + +open AltCover.Shared +open Mono.Options + +[] +type internal UsageInfo = + { Intro: String + Options: OptionSet + Options2: OptionSet } + +module internal Output = + let internal resources = + ResourceManager("AltCover.Strings", Assembly.GetExecutingAssembly()) + + let mutable internal info: String -> unit = + ignore + + let mutable internal warn: String -> unit = + ignore + + let mutable internal echo: String -> unit = + ignore + + let mutable internal error: String -> unit = + ignore + + let mutable internal usage: UsageInfo -> unit = + ignore + + let mutable internal verbose: String -> unit = + ignore + + let internal maybeVerbose p message = if p then verbose message + + let internal warnOn x = if x then warn else info + + let internal logExceptionToFile path e = + Directory.CreateDirectory(path |> Path.GetDirectoryName) + |> ignore + + use stream = + File.Open(path, FileMode.Append, FileAccess.Write) + + use writer = new StreamWriter(stream) + + let rec logException padding ex = + ex.ToString() |> writer.WriteLine + + ex.GetType().GetProperties() + |> Seq.filter (fun p -> + [ "Message"; "StackTrace" ] + |> Seq.exists (fun n -> n == p.Name) + |> not) + |> Seq.iter (fun p -> + (padding + p.Name + " = ") |> writer.WriteLine + + match p.GetValue(ex) with + | :? Exception as exx -> logException (" " + padding) exx + | v -> v |> sprintf "%A" |> writer.WriteLine) + + logException String.Empty e \ No newline at end of file diff --git a/AltCover.Engine/Runner.fs b/AltCover.Engine/Runner.fs index 8d464d7a4..743095dfb 100644 --- a/AltCover.Engine/Runner.fs +++ b/AltCover.Engine/Runner.fs @@ -341,7 +341,7 @@ module internal Runner = Justification = "AvoidSpeculativeGenerality too")>] let internal altSummary go extra (report: XDocument) = "Alternative" - |> CommandLine.resources.GetString + |> Output.resources.GetString |> if go || extra then write else ignore let classes = @@ -862,14 +862,14 @@ module internal Runner = :: CommandLine.error)) ] // default end stop |> List.fold (fun (o: OptionSet) (p, a) -> - o.Add(p, CommandLine.resources.GetString(p), new System.Action(a))) + o.Add(p, Output.resources.GetString(p), new System.Action(a))) (OptionSet()) let internal requireRecorderTest recordingDirectory success fail = match recordingDirectory with | None -> CommandLine.error <- - (CommandLine.resources.GetString "recorderRequired") + (Output.resources.GetString "recorderRequired") :: CommandLine.error fail @@ -901,7 +901,7 @@ module internal Runner = | (None, false) | (Some _, true) -> CommandLine.error <- - (CommandLine.resources.GetString "executableRequired") + (Output.resources.GetString "executableRequired") :: CommandLine.error Left("UsageError", options) @@ -944,7 +944,7 @@ module internal Runner = Path.Combine(Option.get recordingDirectory, recorderName) let definition = - AssemblyDefinition.ReadAssembly recorderPath + AssemblyResolver.ReadAssembly recorderPath (definition, definition.MainModule.GetType("AltCover.Recorder.Instance")) diff --git a/AltCover.Engine/Visitor.fs b/AltCover.Engine/Visitor.fs index ab2a7071b..9d0fb1bc4 100644 --- a/AltCover.Engine/Visitor.fs +++ b/AltCover.Engine/Visitor.fs @@ -692,7 +692,7 @@ module internal Visitor = Identity = path.Identity } path.AssemblyPath - |> (AssemblyDefinition.ReadAssembly + |> (AssemblyResolver.ReadAssembly >> makeInspection >> buildSequence)) diff --git a/AltCover.Tests/Tests2.fs b/AltCover.Tests/Tests2.fs index 1fd794178..3b3ceb366 100644 --- a/AltCover.Tests/Tests2.fs +++ b/AltCover.Tests/Tests2.fs @@ -382,7 +382,7 @@ module AltCoverTests2 = pdb |> Seq.iter (fun p -> - let a = CommandLine.findAssemblyName p + let a = AssemblyResolver.findAssemblyName p Assert.That(String.IsNullOrWhiteSpace a, p)) let dll = Directory.GetFiles(here, "*.dll") @@ -390,7 +390,7 @@ module AltCoverTests2 = dll |> Seq.iter (fun d -> - let a = CommandLine.findAssemblyName d + let a = AssemblyResolver.findAssemblyName d Assert.That(a |> String.IsNullOrWhiteSpace |> not, d)) [] @@ -445,13 +445,13 @@ module AltCoverTests2 = json |> Seq.iter (fun j -> - let a = CommandLine.findAssemblyName j + let a = AssemblyResolver.findAssemblyName j test' <@ String.IsNullOrWhiteSpace a @> j) #endif use raw = Mono.Cecil.AssemblyDefinition.ReadAssembly where - CecilExtension.resolutionTable.Clear() + AssemblyResolver.resolutionTable.Clear() try raw.MainModule.AssemblyReferences @@ -477,18 +477,18 @@ module AltCoverTests2 = test' <@ resolved |> isNull @> <| f.ToString()) let found = - CecilExtension.resolutionTable.Keys |> Seq.toList + AssemblyResolver.resolutionTable.Keys |> Seq.toList found |> Seq.iter (fun k -> let matched = - CecilExtension.resolutionTable.[k] + AssemblyResolver.resolutionTable.[k] let k2 = AssemblyNameReference.Parse(k.ToString()) k2.Version <- System.Version("666.666.666.666") - CecilExtension.resolutionTable.[k2.ToString()] <- matched) + AssemblyResolver.resolutionTable.[k2.ToString()] <- matched) raw.MainModule.AssemblyReferences |> Seq.filter (fun f -> @@ -502,7 +502,7 @@ module AltCoverTests2 = test' <@ resolved.IsNotNull @> <| f.ToString()) finally - CecilExtension.resolutionTable.Clear() + AssemblyResolver.resolutionTable.Clear() [] let ShouldBeAbleToPrepareTheAssembly () = diff --git a/AltCover.Tests/Tests3.fs b/AltCover.Tests/Tests3.fs index 350866166..51b68047d 100644 --- a/AltCover.Tests/Tests3.fs +++ b/AltCover.Tests/Tests3.fs @@ -1403,7 +1403,7 @@ module AltCoverTests3 = Main.init () try - CecilExtension.resolutionTable.Clear() + AssemblyResolver.resolutionTable.Clear() let options = Main.I.declareOptions () let here = @@ -1423,8 +1423,8 @@ module AltCoverTests3 = Assert.That(x, Is.Empty) let expected = - CecilExtension.resolutionTable.Keys - |> Seq.map (fun a -> CecilExtension.resolutionTable.[a].Name.Name) + AssemblyResolver.resolutionTable.Keys + |> Seq.map (fun a -> AssemblyResolver.resolutionTable.[a].Name.Name) |> Seq.sort Assert.That( @@ -1432,7 +1432,7 @@ module AltCoverTests3 = Is.EqualTo("AltCover.Engine AltCover.Tests") ) finally - CecilExtension.resolutionTable.Clear() + AssemblyResolver.resolutionTable.Clear() //let ParsingNoDependencyGivesFailure() = // Main.init() @@ -1453,7 +1453,7 @@ module AltCoverTests3 = Main.init () try - CecilExtension.resolutionTable.Clear() + AssemblyResolver.resolutionTable.Clear() let options = Main.I.declareOptions () let unique = @@ -1469,7 +1469,7 @@ module AltCoverTests3 = Assert.That(y, Is.SameAs options) Assert.That(x, Is.EqualTo "UsageError") finally - CecilExtension.resolutionTable.Clear() + AssemblyResolver.resolutionTable.Clear() [] let ParsingNonDependencyGivesFailure () = @@ -3695,7 +3695,7 @@ module AltCoverTests3 = ) let helptext = - CommandLine + Output .resources .GetString("HelpText") .Replace("\r\n", "\n") From b1672c7676d840843cf8222fd03767eada1d87b7 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Sat, 18 Jun 2022 21:31:47 +0100 Subject: [PATCH 47/81] Fix/refactor --- AltCover.Engine/CecilEx.fs | 26 +++++++++++++++++--------- AltCover.Engine/Main.fs | 5 +++-- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/AltCover.Engine/CecilEx.fs b/AltCover.Engine/CecilEx.fs index c3d2a9696..28ad60dce 100644 --- a/AltCover.Engine/CecilEx.fs +++ b/AltCover.Engine/CecilEx.fs @@ -14,11 +14,8 @@ open System.Reflection open Mono.Cecil open Mono.Cecil.Cil -type AssemblyResolver () as self = - inherit DefaultAssemblyResolver() - do self.add_ResolveFailure <| new AssemblyResolveEventHandler(AssemblyResolver.resolveFromNugetCache) - - static member nugetCache = +module AssemblyConstants = + let internal nugetCache = Path.Combine( Path.Combine( Environment.GetFolderPath Environment.SpecialFolder.UserProfile, @@ -27,9 +24,17 @@ type AssemblyResolver () as self = "packages" ) - static member internal resolutionTable = + let internal resolutionTable = Dictionary() +type AssemblyResolver () as self = + inherit DefaultAssemblyResolver() + do self.add_ResolveFailure <| new AssemblyResolveEventHandler(AssemblyResolver.resolveFromNugetCache) + + static member nugetCache = AssemblyConstants.nugetCache + + static member internal resolutionTable = AssemblyConstants.resolutionTable + static member findAssemblyName f = try (AssemblyName.GetAssemblyName f).ToString() @@ -40,6 +45,11 @@ type AssemblyResolver () as self = | :? BadImageFormatException | :? FileLoadException -> String.Empty + static member Register (name:string) (path:string) = + let def = AssemblyResolver.ReadAssembly path // recursive + AssemblyResolver.resolutionTable.[name] <- def + def + static member ReadAssembly (path: String) = let reader = ReaderParameters() reader.AssemblyResolver <- new AssemblyResolver () @@ -109,9 +119,7 @@ type AssemblyResolver () as self = ) |> (Output.warnOn true) - let a = AssemblyResolver.ReadAssembly x // recursive - AssemblyResolver.resolutionTable.[name] <- a - a + AssemblyResolver.Register name x [] module internal CecilExtension = diff --git a/AltCover.Engine/Main.fs b/AltCover.Engine/Main.fs index f5e910f48..2684b28c8 100644 --- a/AltCover.Engine/Main.fs +++ b/AltCover.Engine/Main.fs @@ -184,8 +184,9 @@ module internal Main = CommandLine.validateAssembly "--dependency" path if ok then - AssemblyResolver.resolutionTable.[name] <- - AssemblyResolver.ReadAssembly path) + AssemblyResolver.Register name path + |> ignore) + () false)) From 681de67d06d2c246d74f3c354bfc4aa33d42d5af Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Sat, 18 Jun 2022 22:49:49 +0100 Subject: [PATCH 48/81] Fix for Gendarme --- AltCover.Engine/CecilEx.fs | 42 +++++++++++++++++++--------------- AltCover.Engine/CommandLine.fs | 2 +- AltCover.Engine/Main.fs | 2 +- AltCover.Engine/Output.fs | 5 ---- AltCover.Tests/Tests2.fs | 16 ++++++------- AltCover.Tests/Tests3.fs | 12 +++++----- 6 files changed, 40 insertions(+), 39 deletions(-) diff --git a/AltCover.Engine/CecilEx.fs b/AltCover.Engine/CecilEx.fs index 28ad60dce..89b2f49e4 100644 --- a/AltCover.Engine/CecilEx.fs +++ b/AltCover.Engine/CecilEx.fs @@ -27,15 +27,7 @@ module AssemblyConstants = let internal resolutionTable = Dictionary() -type AssemblyResolver () as self = - inherit DefaultAssemblyResolver() - do self.add_ResolveFailure <| new AssemblyResolveEventHandler(AssemblyResolver.resolveFromNugetCache) - - static member nugetCache = AssemblyConstants.nugetCache - - static member internal resolutionTable = AssemblyConstants.resolutionTable - - static member findAssemblyName f = + let internal findAssemblyName f = try (AssemblyName.GetAssemblyName f).ToString() with @@ -45,11 +37,25 @@ type AssemblyResolver () as self = | :? BadImageFormatException | :? FileLoadException -> String.Empty - static member Register (name:string) (path:string) = +[] +type AssemblyResolver () as self = + inherit DefaultAssemblyResolver() + do self.add_ResolveFailure <| new AssemblyResolveEventHandler(AssemblyResolver.ResolveFromNugetCache) + + static member private AssemblyRegister (name:string) (path:string) = let def = AssemblyResolver.ReadAssembly path // recursive - AssemblyResolver.resolutionTable.[name] <- def + AssemblyConstants.resolutionTable.[name] <- def def + [] + static member Register (name:string) (path:string) = + AssemblyResolver.AssemblyRegister name path + |> ignore + static member ReadAssembly (path: String) = let reader = ReaderParameters() reader.AssemblyResolver <- new AssemblyResolver () @@ -63,11 +69,11 @@ type AssemblyResolver () as self = [] - static member resolveFromNugetCache _ (y: AssemblyNameReference) = + static member ResolveFromNugetCache _ (y: AssemblyNameReference) = let name = y.ToString() - if AssemblyResolver.resolutionTable.ContainsKey name then - AssemblyResolver.resolutionTable.[name] + if AssemblyConstants.resolutionTable.ContainsKey name then + AssemblyConstants.resolutionTable.[name] else // Placate Gendarme here let share = @@ -87,7 +93,7 @@ type AssemblyResolver () as self = shared ) Path.Combine(share, shared) - AssemblyResolver.nugetCache ] + AssemblyConstants.nugetCache ] let candidate source = source @@ -105,7 +111,7 @@ type AssemblyResolver () as self = |> Seq.filter (fun f -> y .ToString() - .Equals(AssemblyResolver.findAssemblyName f, StringComparison.Ordinal)) + .Equals(AssemblyConstants.findAssemblyName f, StringComparison.Ordinal)) |> Seq.tryHead match candidate sources with @@ -119,7 +125,7 @@ type AssemblyResolver () as self = ) |> (Output.warnOn true) - AssemblyResolver.Register name x + AssemblyResolver.AssemblyRegister name x [] module internal CecilExtension = @@ -402,7 +408,7 @@ module internal CecilExtension = i.Operand <- null) let internal hookResolveHandler = - new AssemblyResolveEventHandler(AssemblyResolver.resolveFromNugetCache) + new AssemblyResolveEventHandler(AssemblyResolver.ResolveFromNugetCache) let internal hookResolver (resolver: IAssemblyResolver) = if resolver.IsNotNull then diff --git a/AltCover.Engine/CommandLine.fs b/AltCover.Engine/CommandLine.fs index f8ae4f6d3..a7b41839f 100644 --- a/AltCover.Engine/CommandLine.fs +++ b/AltCover.Engine/CommandLine.fs @@ -396,7 +396,7 @@ module internal CommandLine = let internal validateAssembly assembly x = if I.validateFile assembly x then - let name = AssemblyResolver.findAssemblyName x + let name = AssemblyConstants.findAssemblyName x if String.IsNullOrWhiteSpace name then error <- diff --git a/AltCover.Engine/Main.fs b/AltCover.Engine/Main.fs index 2684b28c8..d56534ccd 100644 --- a/AltCover.Engine/Main.fs +++ b/AltCover.Engine/Main.fs @@ -39,7 +39,7 @@ module internal Main = CoverageParameters.theOutputDirectories.Clear() CoverageParameters.configurationHash <- None ProgramDatabase.symbolFolders.Clear() - AssemblyResolver.resolutionTable.Clear() + AssemblyConstants.resolutionTable.Clear() Instrument.modules.Clear() CoverageParameters.keys.Clear() diff --git a/AltCover.Engine/Output.fs b/AltCover.Engine/Output.fs index 4f7976119..f7f3ee5d2 100644 --- a/AltCover.Engine/Output.fs +++ b/AltCover.Engine/Output.fs @@ -35,11 +35,6 @@ module internal Output = let mutable internal usage: UsageInfo -> unit = ignore - let mutable internal verbose: String -> unit = - ignore - - let internal maybeVerbose p message = if p then verbose message - let internal warnOn x = if x then warn else info let internal logExceptionToFile path e = diff --git a/AltCover.Tests/Tests2.fs b/AltCover.Tests/Tests2.fs index 3b3ceb366..4f9231560 100644 --- a/AltCover.Tests/Tests2.fs +++ b/AltCover.Tests/Tests2.fs @@ -382,7 +382,7 @@ module AltCoverTests2 = pdb |> Seq.iter (fun p -> - let a = AssemblyResolver.findAssemblyName p + let a = AssemblyConstants.findAssemblyName p Assert.That(String.IsNullOrWhiteSpace a, p)) let dll = Directory.GetFiles(here, "*.dll") @@ -390,7 +390,7 @@ module AltCoverTests2 = dll |> Seq.iter (fun d -> - let a = AssemblyResolver.findAssemblyName d + let a = AssemblyConstants.findAssemblyName d Assert.That(a |> String.IsNullOrWhiteSpace |> not, d)) [] @@ -445,13 +445,13 @@ module AltCoverTests2 = json |> Seq.iter (fun j -> - let a = AssemblyResolver.findAssemblyName j + let a = AssemblyConstants.findAssemblyName j test' <@ String.IsNullOrWhiteSpace a @> j) #endif use raw = Mono.Cecil.AssemblyDefinition.ReadAssembly where - AssemblyResolver.resolutionTable.Clear() + AssemblyConstants.resolutionTable.Clear() try raw.MainModule.AssemblyReferences @@ -477,18 +477,18 @@ module AltCoverTests2 = test' <@ resolved |> isNull @> <| f.ToString()) let found = - AssemblyResolver.resolutionTable.Keys |> Seq.toList + AssemblyConstants.resolutionTable.Keys |> Seq.toList found |> Seq.iter (fun k -> let matched = - AssemblyResolver.resolutionTable.[k] + AssemblyConstants.resolutionTable.[k] let k2 = AssemblyNameReference.Parse(k.ToString()) k2.Version <- System.Version("666.666.666.666") - AssemblyResolver.resolutionTable.[k2.ToString()] <- matched) + AssemblyConstants.resolutionTable.[k2.ToString()] <- matched) raw.MainModule.AssemblyReferences |> Seq.filter (fun f -> @@ -502,7 +502,7 @@ module AltCoverTests2 = test' <@ resolved.IsNotNull @> <| f.ToString()) finally - AssemblyResolver.resolutionTable.Clear() + AssemblyConstants.resolutionTable.Clear() [] let ShouldBeAbleToPrepareTheAssembly () = diff --git a/AltCover.Tests/Tests3.fs b/AltCover.Tests/Tests3.fs index 51b68047d..afa5ae73e 100644 --- a/AltCover.Tests/Tests3.fs +++ b/AltCover.Tests/Tests3.fs @@ -1403,7 +1403,7 @@ module AltCoverTests3 = Main.init () try - AssemblyResolver.resolutionTable.Clear() + AssemblyConstants.resolutionTable.Clear() let options = Main.I.declareOptions () let here = @@ -1423,8 +1423,8 @@ module AltCoverTests3 = Assert.That(x, Is.Empty) let expected = - AssemblyResolver.resolutionTable.Keys - |> Seq.map (fun a -> AssemblyResolver.resolutionTable.[a].Name.Name) + AssemblyConstants.resolutionTable.Keys + |> Seq.map (fun a -> AssemblyConstants.resolutionTable.[a].Name.Name) |> Seq.sort Assert.That( @@ -1432,7 +1432,7 @@ module AltCoverTests3 = Is.EqualTo("AltCover.Engine AltCover.Tests") ) finally - AssemblyResolver.resolutionTable.Clear() + AssemblyConstants.resolutionTable.Clear() //let ParsingNoDependencyGivesFailure() = // Main.init() @@ -1453,7 +1453,7 @@ module AltCoverTests3 = Main.init () try - AssemblyResolver.resolutionTable.Clear() + AssemblyConstants.resolutionTable.Clear() let options = Main.I.declareOptions () let unique = @@ -1469,7 +1469,7 @@ module AltCoverTests3 = Assert.That(y, Is.SameAs options) Assert.That(x, Is.EqualTo "UsageError") finally - AssemblyResolver.resolutionTable.Clear() + AssemblyConstants.resolutionTable.Clear() [] let ParsingNonDependencyGivesFailure () = From b69d9935d19f1e821aa3a8ff545af07cc2f2dbcb Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Sat, 18 Jun 2022 23:01:18 +0100 Subject: [PATCH 49/81] Append in the correct order. DependencyList now recognised, but it doesn't fix the issue. --- AltCover.DotNet/DotNet.fs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AltCover.DotNet/DotNet.fs b/AltCover.DotNet/DotNet.fs index d0219f978..7fcd454e8 100644 --- a/AltCover.DotNet/DotNet.fs +++ b/AltCover.DotNet/DotNet.fs @@ -90,8 +90,8 @@ module DotNet = let extra = if dependencies |> Seq.isEmpty then 0 else 1 let suffix = String.Empty |> Seq.replicate extra - let d2 = dependencies - |> Seq.append suffix + let d2 = suffix + |> Seq.append dependencies [ fromList, "SymbolDirectories", prepare.SymbolDirectories //=`"pipe `'|'` separated list of paths" fromList, "DependencyList", d2 //=`"pipe `'|'` separated *AND TERMINATED* list of paths" From 92117e12f377a61eaa2552ebcc7c7d0397476a35 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Sat, 18 Jun 2022 23:27:20 +0100 Subject: [PATCH 50/81] Fantomas --- AltCover.DotNet/DotNet.fs | 16 +++++++++++----- AltCover.Engine/CecilEx.fs | 21 ++++++++++++--------- AltCover.Engine/CommandLine.fs | 8 ++++---- AltCover.Engine/Main.fs | 3 +-- AltCover.Engine/Runner.fs | 5 ++--- AltCover.Tests/Tests.fs | 8 ++++---- AltCover.Tests/Tests2.fs | 3 ++- AltCover.Tests/XTests.fs | 26 +++++++++++++------------- Build/targets.fsx | 2 +- 9 files changed, 50 insertions(+), 42 deletions(-) diff --git a/AltCover.DotNet/DotNet.fs b/AltCover.DotNet/DotNet.fs index 7fcd454e8..8c51e9087 100644 --- a/AltCover.DotNet/DotNet.fs +++ b/AltCover.DotNet/DotNet.fs @@ -87,11 +87,17 @@ module DotNet = Justification = "Compiler Generated")>] let internal toPrepareListArgumentList (prepare: Abstract.IPrepareOptions) = let dependencies = prepare.Dependencies - let extra = if dependencies |> Seq.isEmpty then 0 else 1 - let suffix = String.Empty - |> Seq.replicate extra - let d2 = suffix - |> Seq.append dependencies + + let extra = + if dependencies |> Seq.isEmpty then + 0 + else + 1 + + let suffix = + String.Empty |> Seq.replicate extra + + let d2 = suffix |> Seq.append dependencies [ fromList, "SymbolDirectories", prepare.SymbolDirectories //=`"pipe `'|'` separated list of paths" fromList, "DependencyList", d2 //=`"pipe `'|'` separated *AND TERMINATED* list of paths" diff --git a/AltCover.Engine/CecilEx.fs b/AltCover.Engine/CecilEx.fs index 89b2f49e4..4bdf3147e 100644 --- a/AltCover.Engine/CecilEx.fs +++ b/AltCover.Engine/CecilEx.fs @@ -39,12 +39,15 @@ module AssemblyConstants = [] -type AssemblyResolver () as self = + Justification = "minimum size overloads")>] +type AssemblyResolver() as self = inherit DefaultAssemblyResolver() - do self.add_ResolveFailure <| new AssemblyResolveEventHandler(AssemblyResolver.ResolveFromNugetCache) - static member private AssemblyRegister (name:string) (path:string) = + do + self.add_ResolveFailure + <| new AssemblyResolveEventHandler(AssemblyResolver.ResolveFromNugetCache) + + static member private AssemblyRegister (name: string) (path: string) = let def = AssemblyResolver.ReadAssembly path // recursive AssemblyConstants.resolutionTable.[name] <- def def @@ -52,18 +55,18 @@ type AssemblyResolver () as self = [] - static member Register (name:string) (path:string) = + static member Register (name: string) (path: string) = AssemblyResolver.AssemblyRegister name path |> ignore - static member ReadAssembly (path: String) = + static member ReadAssembly(path: String) = let reader = ReaderParameters() - reader.AssemblyResolver <- new AssemblyResolver () + reader.AssemblyResolver <- new AssemblyResolver() AssemblyDefinition.ReadAssembly(path, reader) - static member ReadAssembly (file: Stream) = + static member ReadAssembly(file: Stream) = let reader = ReaderParameters() - reader.AssemblyResolver <- new AssemblyResolver () + reader.AssemblyResolver <- new AssemblyResolver() AssemblyDefinition.ReadAssembly(file, reader) [ a |> (logException store) | :? NotSupportedException as n -> n |> (logException store) | :? IOException as i -> i |> (logException store) - | :? System.Security.SecurityException as s -> - s |> (logException store) + | :? System.Security.SecurityException as s -> s |> (logException store) | :? UnauthorizedAccessException as u -> u |> (logException store) result @@ -268,7 +267,7 @@ module internal CommandLine = [] - static member Throw<'T>(e : exn) : 'T = + static member Throw<'T>(e: exn) : 'T = (e.Message, e) |> SecurityException |> raise let internal transformCryptographicException f = @@ -396,7 +395,8 @@ module internal CommandLine = let internal validateAssembly assembly x = if I.validateFile assembly x then - let name = AssemblyConstants.findAssemblyName x + let name = + AssemblyConstants.findAssemblyName x if String.IsNullOrWhiteSpace name then error <- diff --git a/AltCover.Engine/Main.fs b/AltCover.Engine/Main.fs index d56534ccd..8dcf7e875 100644 --- a/AltCover.Engine/Main.fs +++ b/AltCover.Engine/Main.fs @@ -184,8 +184,7 @@ module internal Main = CommandLine.validateAssembly "--dependency" path if ok then - AssemblyResolver.Register name path - |> ignore) + AssemblyResolver.Register name path) () false)) diff --git a/AltCover.Engine/Runner.fs b/AltCover.Engine/Runner.fs index 743095dfb..6cabbd4e3 100644 --- a/AltCover.Engine/Runner.fs +++ b/AltCover.Engine/Runner.fs @@ -20,9 +20,8 @@ module internal ThrowHelper = type FormatException with [] - static member Throw<'T>(message: string) : 'T = - message |> FormatException |> raise + Justification = "Matches clause type")>] + static member Throw<'T>(message: string) : 'T = message |> FormatException |> raise [] type internal SummaryFormat = diff --git a/AltCover.Tests/Tests.fs b/AltCover.Tests/Tests.fs index 9c83e945f..f9859a703 100644 --- a/AltCover.Tests/Tests.fs +++ b/AltCover.Tests/Tests.fs @@ -145,13 +145,13 @@ module AltCoverTests = Exemption.None ] @> // ProgramDatabase.fs - let isAssemblyType (file : string) = + let isAssemblyType (file: string) = #if !NET472 - [".dll"] + [ ".dll" ] #else - [".dll"; ".exe"] + [ ".dll"; ".exe" ] #endif - |> Seq.exists(fun x -> file.EndsWith(x, StringComparison.OrdinalIgnoreCase)) + |> Seq.exists (fun x -> file.EndsWith(x, StringComparison.OrdinalIgnoreCase)) [] let ShouldGetPdbFromImage () = diff --git a/AltCover.Tests/Tests2.fs b/AltCover.Tests/Tests2.fs index 4f9231560..e4b0ada89 100644 --- a/AltCover.Tests/Tests2.fs +++ b/AltCover.Tests/Tests2.fs @@ -477,7 +477,8 @@ module AltCoverTests2 = test' <@ resolved |> isNull @> <| f.ToString()) let found = - AssemblyConstants.resolutionTable.Keys |> Seq.toList + AssemblyConstants.resolutionTable.Keys + |> Seq.toList found |> Seq.iter (fun k -> diff --git a/AltCover.Tests/XTests.fs b/AltCover.Tests/XTests.fs index b91b3e64c..bc3ea140e 100644 --- a/AltCover.Tests/XTests.fs +++ b/AltCover.Tests/XTests.fs @@ -67,9 +67,9 @@ module AltCoverXTests = | "document" -> test' <@ a1 - .Value - .Replace("\\", "/") - .EndsWith(a2.Value.Replace("\\", "/")) @> + .Value + .Replace("\\", "/") + .EndsWith(a2.Value.Replace("\\", "/")) @> (a1.Name.ToString() + " : " + r.ToString() @@ -137,16 +137,16 @@ module AltCoverXTests = | "fullPath" -> test' <@ a1 - .Value - .Replace("\\", "/") - .Replace("altcover", "AltCover") - .Replace("Samples/", String.Empty) - .EndsWith( - a2 - .Value - .Replace("\\", "/") - .Replace("altcover", "AltCover") - ) @> + .Value + .Replace("\\", "/") + .Replace("altcover", "AltCover") + .Replace("Samples/", String.Empty) + .EndsWith( + a2 + .Value + .Replace("\\", "/") + .Replace("altcover", "AltCover") + ) @> (a1.Name.ToString() + " : " + r.ToString() diff --git a/Build/targets.fsx b/Build/targets.fsx index 3e9ffac96..809978715 100644 --- a/Build/targets.fsx +++ b/Build/targets.fsx @@ -5364,7 +5364,7 @@ _Target "ApiUse" (fun _ -> let targets = fsproj.Descendants(XName.Get("TargetFrameworks")) |> Seq.head - + let netTarget = "net6.0" targets.SetValue netTarget From 0081e385a05d6f5faefb8c218d1fcad88e851bd1 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Sat, 18 Jun 2022 23:46:14 +0100 Subject: [PATCH 51/81] Be more modest with the new type --- AltCover.Engine/CecilEx.fs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AltCover.Engine/CecilEx.fs b/AltCover.Engine/CecilEx.fs index 4bdf3147e..ec92de8d7 100644 --- a/AltCover.Engine/CecilEx.fs +++ b/AltCover.Engine/CecilEx.fs @@ -40,7 +40,7 @@ module AssemblyConstants = [] -type AssemblyResolver() as self = +type internal AssemblyResolver() as self = inherit DefaultAssemblyResolver() do @@ -72,7 +72,7 @@ type AssemblyResolver() as self = [] - static member ResolveFromNugetCache _ (y: AssemblyNameReference) = + static member internal ResolveFromNugetCache _ (y: AssemblyNameReference) = let name = y.ToString() if AssemblyConstants.resolutionTable.ContainsKey name then From fc56e0979f1ee05c4b196966a661de30650e3f3b Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Sun, 19 Jun 2022 00:27:01 +0100 Subject: [PATCH 52/81] Seal for Gendarme (and another quirk) --- AltCover.Engine/CecilEx.fs | 1 + AltCover.Engine/PostProcess.fs | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/AltCover.Engine/CecilEx.fs b/AltCover.Engine/CecilEx.fs index ec92de8d7..cc2754a0d 100644 --- a/AltCover.Engine/CecilEx.fs +++ b/AltCover.Engine/CecilEx.fs @@ -40,6 +40,7 @@ module AssemblyConstants = [] +[] type internal AssemblyResolver() as self = inherit DefaultAssemblyResolver() diff --git a/AltCover.Engine/PostProcess.fs b/AltCover.Engine/PostProcess.fs index 12c16c965..8e98fef03 100644 --- a/AltCover.Engine/PostProcess.fs +++ b/AltCover.Engine/PostProcess.fs @@ -511,6 +511,6 @@ module internal PostProcess = [] () \ No newline at end of file From 4b67a580f2bde2c6ef703597c763405e53a0333c Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Sun, 19 Jun 2022 09:23:10 +0100 Subject: [PATCH 53/81] Add test for the dependencies fix --- AltCover.Api.Tests/FSApiTests.fs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/AltCover.Api.Tests/FSApiTests.fs b/AltCover.Api.Tests/FSApiTests.fs index c5602887a..e662b8002 100644 --- a/AltCover.Api.Tests/FSApiTests.fs +++ b/AltCover.Api.Tests/FSApiTests.fs @@ -1301,11 +1301,13 @@ module FSApiTests = |> AltCover.AltCover.CollectOptions.Primitive let prep2 = - { pprep with Verbosity = TraceLevel.Error } + { pprep with + Verbosity = TraceLevel.Error + Dependencies = [ "nonesuch.dll" ] } |> AltCover.AltCover.PrepareOptions.Primitive test - <@ DotNet.ToTestArguments prep2 coll2 combined = "/p:AltCover=\"true\" /p:AltCoverReportFormat=\"OpenCover\" /p:AltCoverShowStatic=\"-\" /p:AltCoverVerbosity=\"Error\" /p:AltCoverShowSummary=\"R\" /p:AltCoverForce=\"true\" /p:AltCoverFailFast=\"true\"" @> + <@ DotNet.ToTestArguments prep2 coll2 combined = "/p:AltCover=\"true\" /p:AltCoverDependencyList=\"nonesuch.dll|\" /p:AltCoverReportFormat=\"OpenCover\" /p:AltCoverShowStatic=\"-\" /p:AltCoverVerbosity=\"Error\" /p:AltCoverShowSummary=\"R\" /p:AltCoverForce=\"true\" /p:AltCoverFailFast=\"true\"" @> [] let MergeRejectsNonCoverage () = From 1f6113e77932153d09526e8b5ee321a170613d08 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Sun, 19 Jun 2022 13:50:44 +0100 Subject: [PATCH 54/81] Tentative step -- incomplete --- AltCover.Engine/ProgramDatabase.fs | 56 +++++++++++++++++++++++++++--- AltCover.Tests/Tests.fs | 16 ++++++--- AltCover.Tests/Tests3.fs | 1 + 3 files changed, 63 insertions(+), 10 deletions(-) diff --git a/AltCover.Engine/ProgramDatabase.fs b/AltCover.Engine/ProgramDatabase.fs index 9a84065c7..b8d3c5bdc 100644 --- a/AltCover.Engine/ProgramDatabase.fs +++ b/AltCover.Engine/ProgramDatabase.fs @@ -18,7 +18,7 @@ module internal ProgramDatabase = let internal symbolFolders = List() // Implementation details - module private I = + module internal I = // We no longer have to violate Cecil encapsulation to get the PDB path // but we do to get the embedded PDB info @@ -49,8 +49,54 @@ module internal ProgramDatabase = else None + let lead (bytes : byte array) = + (int bytes[0]) ||| ((int bytes[1]) <<< 8) ||| ((int bytes[2]) <<< 16) ||| ((int bytes[3]) <<< 24) + + let getAssemblyTokens (assembly: AssemblyDefinition) = + let m = assembly.MainModule + let t = + m.GetDebugHeader().Entries + |> Seq.filter (fun e -> e.Data.Length > 0x18 && + e.Directory.Type = ImageDebugType.CodeView) + |> Seq.map (fun x -> x.Data) + |> Seq.filter (fun x -> lead x = 1396986706) + |> Seq.map (fun x -> x |> Array.skip 4 |> Array.take 16 |> System.Guid) + |> Seq.toList + (m.Mvid, t) + + let symbolMatch tokens (path : String) = + use s = if (Path.GetExtension path) <> ".pdb" + then path + ".mdb" + else path + |> File.OpenRead + let buffer = Array.create 16 0uy + + let (ok, guids) = + if (Path.GetExtension path) <> ".pdb" + then + use b = new BinaryReader(s, System.Text.Encoding.UTF8, true) + let magic = b.ReadInt64 () + let major = b.ReadInt32 () + let minor = b.ReadInt32 () + (magic = 5037318119232611860L && + major = 50 && + minor = 0, [fst tokens]) + else + // TODO -- find the guid offset + (true, snd tokens) + + let got = s.Read(buffer, 0, 16)// don't complicate things yet + let g = Guid buffer + sprintf "Symbol file %s GUID = %A" path g + |> Output.verbose + + ok && got = 16 && + guids |> Seq.exists(fun t -> t = g) + // "Public" API let internal getPdbFromImage (assembly: AssemblyDefinition) = + let tokens = I.getAssemblyTokens assembly + (tokens, Some assembly.MainModule |> Option.filter (fun x -> x.HasDebugHeader) |> Option.map (fun x -> x.GetDebugHeader()) @@ -69,13 +115,13 @@ module internal ProgramDatabase = File.Exists s || (s == (assembly.Name.Name + ".pdb") && (assembly |> I.getEmbeddedPortablePdbEntry) - .IsNotNull)) + .IsNotNull))) let internal getPdbWithFallback (assembly: AssemblyDefinition) = let path = assembly.MainModule.FileName match getPdbFromImage assembly with - | None when path |> String.IsNullOrWhiteSpace |> not -> // i.e. assemblies read from disk only + | (_, None) when path |> String.IsNullOrWhiteSpace |> not -> // i.e. assemblies read from disk only let foldername = Path.GetDirectoryName path let filename = Path.GetFileName path @@ -92,8 +138,8 @@ module internal ProgramDatabase = |> Output.verbose folder - | pdbpath -> - sprintf "Assembly %s symbols from image '%s'" path pdbpath.Value + | (_, pdbpath) -> + sprintf "Assembly %s symbols from image '%s'" path (Option.defaultValue String.Empty pdbpath) |> Output.verbose pdbpath diff --git a/AltCover.Tests/Tests.fs b/AltCover.Tests/Tests.fs index 7b4bd7c46..0e7299ed3 100644 --- a/AltCover.Tests/Tests.fs +++ b/AltCover.Tests/Tests.fs @@ -169,11 +169,17 @@ module AltCoverTests = pdbs |> Seq.iter (fun x -> let f = fst x + let tokens, pdb = snd x - match snd x with + match pdb with // Case of true //| None -> Assert.That(f |> Path.GetFileName, Is.EqualTo "Sample2.dll", f) | Some name -> + printfn "%s => %s %s" f name (name |> Path.GetDirectoryName) + + if name |> Path.GetDirectoryName |> String.IsNullOrEmpty |> not + then + Assert.That (AltCover.ProgramDatabase.I.symbolMatch tokens name, f |> Path.GetFileName) //Assert.That(f |> Path.GetFileName, Is.Not.EqualTo "Sample2.dll", f) let probe = Path.ChangeExtension(f, ".pdb") let file = FileInfo(probe) @@ -182,7 +188,7 @@ module AltCoverTests = Assert.That( "/" + name.Replace("\\", "/"), Does.EndWith("/" + filename), - (fst x) + " -> " + name + f + " -> " + name )) [] @@ -193,10 +199,10 @@ module AltCoverTests = use image = Mono.Cecil.AssemblyDefinition.ReadAssembly target - let pdb = + let (tokens, pdb) = AltCover.ProgramDatabase.getPdbFromImage image - match pdb with + match pdb with // embedded pdb | Some name -> Assert.That(name, Is.EqualTo "Sample8.pdb", target + " -> " + name) [] @@ -224,7 +230,7 @@ module AltCoverTests = AltCover.ProgramDatabase.getPdbFromImage (snd x) match pdb with - | None -> Assert.That(File.Exists probe, probe + " not found")) + | (_, None) -> Assert.That(File.Exists probe, probe + " not found")) [] let ShouldGetPdbWithFallback () = diff --git a/AltCover.Tests/Tests3.fs b/AltCover.Tests/Tests3.fs index 46bc95caf..091c40812 100644 --- a/AltCover.Tests/Tests3.fs +++ b/AltCover.Tests/Tests3.fs @@ -3426,6 +3426,7 @@ module AltCoverTests3 = |> Seq.filter ( Mono.Cecil.AssemblyDefinition.ReadAssembly >> ProgramDatabase.getPdbFromImage + >> snd // TODO >> Option.isSome ) |> Seq.sort From 3a6b73645063bfdf549e3175f34e553009b63082 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Thu, 23 Jun 2022 11:34:38 +0100 Subject: [PATCH 55/81] Sample Windows-native format file for test purposes --- AltCover.Tests/native.pdb | Bin 0 -> 19968 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 AltCover.Tests/native.pdb diff --git a/AltCover.Tests/native.pdb b/AltCover.Tests/native.pdb new file mode 100644 index 0000000000000000000000000000000000000000..13f03d7a4b3f27325f34a86d035085667bfcc61f GIT binary patch literal 19968 zcmeHNYit}>6~60iw{cR(*`zg)q|N445<6bczWj(n6KB_^1`KJPRHCdD&+g9JtE_j^ zopDn01Ns9f;w6KSN}(Vj_|b|)AQ6eGO{E}JQHuD1sDxU9L_k#p2$2M}D5zD#_s!h9 zo|sL%sqMs%Irf=z=bm%VJ@?%AnH?--D`m5sw?fH|WLsNkaHv1j71p$-RU1-60?=Up zi;p7t9Nz)k9O6BffCn!4#N}%qEL#tV^c&6I09dx&e{J<|BED{}V{0XX&>Mc6uE5iI zuSIR9_gK^(@cMsIci*gyznXbu-?_VA4^9q=v!D4%!;fF>`{c8Kzxey$yeqzm+pE=nQk`_EVdFo{B2j|RxK5^VHQz~>g+5oho+QEpf@ejR z3&;XNyzE4px_4gM|I#SZUjz05$umF|^dq5U_q|j24rQr}vgEmC@#?`Gdw_lSnAjU^ z2EDtg+b_XzR|!BHfyi$ZJ|I9?ffcE!vZabSCm$ ziOzhivpcV4GkHB8uWIuW3)cg+&j0Ih19ad27OwT4WwZ4_t^U8)>;Kuhb&!qLDl`S7PD(NA8 z>{!t-C5=SV$)awWk#N=&BD*I&?oyJgDj6wQqi!XpRN_!5$ySxrZOD; zSf)79Ygv^-X52DNwx#Z-94WZXs5U5Po1vE`vd6}&X26_$)eJb(Z3diZo1tH42G3>g zGqD;7JX7;LeV5Ak0MtAGe*mW~p&~rzy$xIm*?8o_gv;0oDN$xKVxIkoD0n1^7}HXu-==eKFWKLmMIN z2detqZF*1EL7oEmBk*CoOw|#evo;OO#x$zRK(Vg`wyXL~_I-R-ZF*JK;ry>wfz;bnFEZeE3u2l3y@2J6DJ%A)cb|)_}5|h5VvDVVK6A!`&mOyYwfl^HNB9WJY(Sl=KBrH8_BbHlZSxjc z-&W97;B5n~WwX;yKB4;0tz(DO@gOMIdHj|~>ey6mH_JQy;6qy+ps$q88&RfFY_0AU z9yJV33Kk$qFb{_TI638`0m6@shOnjwhI`zwp8P*N`s(J(xcaw1^${*^lGbrw({Xw}@S?e63R> zU{WjjGgI?IPRZLJ5|n-?U&@1{~Zp?d_rKScG{b><(&hE((U9)*-l!y^kMBynyB`Mn}~Rk%!IkLW## zheTKZfmCla#YMCIrSKJ{SKU|Kb&$vW8}Zl|(~duOahBuW$~|^EkhdME?g?%_dAtLt z^S_(dfSQ^p08gmC*pIiB(g2l5y27@Kw=fp)iKp=-ERd*f-DWsrvv!nQ#m%KloCfkq z2RN|Gm7d}+u+(?M&fI4^l;MirgUpUk6-q}reMHBh!K9uYHAF`VL3C4en3ZhDsG;YK zN~T!O9(6MEm~LiA-GOr_RE`f0_P2oRz5&?!Z&BU+#^D(V;~kv7Dgz0h2XdZm0ImcQ z7>}nM)*Xj+uwW;UYjZc~2m%MB3eF>+`@k@ea-$NtzF1fw ze~S6fJz^8&*iP;ZP$519qzug?^yV_?r{1t=w;D2Yq!fkn0-aDjwVh z4{+RiuzWqhwcd;W%-sL#EO?`ZyI%gxH7ySbuK(O0wgbKR&z((*9zYG&g>Hgn$@$}2=`^PuG*SYKJo4vny=fVq# zKQ_MY-T$xu9o|yC|38PmpNsoH?~+@9y#GG{3;}sA=KY_s5yl)DBVc@lzMOvl--NvT kft!Ke{U1)a4Y2h#)Zta(dBF34=K;?Ho(DV+EG!TF4{H{q(f|Me literal 0 HcmV?d00001 From bf206be63b2e0666599155db43965311cc3ce38b Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Thu, 23 Jun 2022 11:41:23 +0100 Subject: [PATCH 56/81] New test TODO --- AltCover.Tests/Tests.fs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/AltCover.Tests/Tests.fs b/AltCover.Tests/Tests.fs index 0e7299ed3..1ead71bc3 100644 --- a/AltCover.Tests/Tests.fs +++ b/AltCover.Tests/Tests.fs @@ -191,6 +191,11 @@ module AltCoverTests = f + " -> " + name )) + [] + let ShouldGetGUIDfromNativePdb () = + // 36fc1f5a-f829-41d9-b0f5-e0a935db09f4 for native.pdb + Assert.Pass() // TODO + [] let ShouldGetEmbeddedPdbFromImage () = let target = sample8path From d65acceb0ab643731d295268495431c83061cd79 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Thu, 23 Jun 2022 13:21:25 +0100 Subject: [PATCH 57/81] Portable PDB support --- AltCover.Engine/Abstraction.fs | 18 +++- AltCover.Engine/CommandLine.fs | 16 +-- AltCover.Engine/ProgramDatabase.fs | 156 ++++++++++++++++++--------- AltCover.Tests/AltCover.Tests.fsproj | 1 + AltCover.Tests/Tests.fs | 17 ++- AltCover.Tests/Tests2.fs | 4 +- 6 files changed, 144 insertions(+), 68 deletions(-) diff --git a/AltCover.Engine/Abstraction.fs b/AltCover.Engine/Abstraction.fs index 9b5b1c7af..84f8cdedb 100644 --- a/AltCover.Engine/Abstraction.fs +++ b/AltCover.Engine/Abstraction.fs @@ -1,8 +1,24 @@ namespace AltCover +open System +open System.IO + [] module Abstraction = // abstract away selection based on OS dependencies and other environment constants let Maybe predicate (result: 'TResult) (alternate: 'TResult) = - if predicate then result else alternate \ No newline at end of file + if predicate then result else alternate + + let DoPathOperation (f: unit -> 'a) (handle: exn -> 'a) = + try + f () + with + | x when + (x :? ArgumentException) + || (x :? NotSupportedException) + || (x :? IOException) + || (x :? System.Security.SecurityException) + || (x :? UnauthorizedAccessException) + -> + handle (x) \ No newline at end of file diff --git a/AltCover.Engine/CommandLine.fs b/AltCover.Engine/CommandLine.fs index 0cc6878ba..efd414f93 100644 --- a/AltCover.Engine/CommandLine.fs +++ b/AltCover.Engine/CommandLine.fs @@ -187,21 +187,9 @@ module internal CommandLine = exceptions <- e :: exceptions let internal doPathOperation (f: unit -> 'a) (defaultValue: 'a) store = - let mutable result = defaultValue - - try - result <- f () - with - | x when - (x :? ArgumentException) - || (x :? NotSupportedException) - || (x :? IOException) - || (x :? System.Security.SecurityException) - || (x :? UnauthorizedAccessException) - -> + Abstraction.DoPathOperation f (fun x -> x |> (logException store) - - result + defaultValue) [ Seq.filter (fun e -> e.Data.Length > 0x18 && - e.Directory.Type = ImageDebugType.CodeView) + |> Seq.filter (fun e -> + e.Data.Length > 0x18 + && e.Directory.Type = ImageDebugType.CodeView) |> Seq.map (fun x -> x.Data) |> Seq.filter (fun x -> lead x = 1396986706) |> Seq.map (fun x -> x |> Array.skip 4 |> Array.take 16 |> System.Guid) |> Seq.toList - (m.Mvid, t) - let symbolMatch tokens (path : String) = - use s = if (Path.GetExtension path) <> ".pdb" - then path + ".mdb" - else path - |> File.OpenRead - let buffer = Array.create 16 0uy + (m.Mvid, t) - let (ok, guids) = - if (Path.GetExtension path) <> ".pdb" + let checkMdb (b: BinaryReader) = + + let magic = b.ReadInt64() + let major = b.ReadInt32() + let minor = b.ReadInt32() + + magic = 5037318119232611860L + && major = 50 + && minor = 0 + + let checkPdb (b: BinaryReader) = + let start = b.ReadInt32() + if start = 0x424a5342 // portable format + then + let major = b.ReadInt16() + let minor = b.ReadInt16() + let reserved = b.ReadInt32() + let versionSize = b.ReadInt32() + let version = b.ReadBytes(versionSize) + let flags = b.ReadInt16() + let streams = b.ReadInt16() |> int // # of stream headers + let headers = + {1..streams} + |> Seq.map (fun _ -> let offset = b.ReadInt32() + let size = b.ReadInt32() + let name = Seq.initInfinite id + |> Seq.map (fun _ -> b.ReadInt32()) + |> Seq.takeWhile (fun x -> x > 0xffffff) + |> Seq.toArray + (offset, size, name)) + |> Seq.toArray + + // don't expect any other #Pdb??? streams + let guid = headers |> Seq.tryFind (fun (_, _, x) -> x = [| 0x62645023 |] ) + let ok = guid.IsSome + + if ok then - use b = new BinaryReader(s, System.Text.Encoding.UTF8, true) - let magic = b.ReadInt64 () - let major = b.ReadInt32 () - let minor = b.ReadInt32 () - (magic = 5037318119232611860L && - major = 50 && - minor = 0, [fst tokens]) - else - // TODO -- find the guid offset - (true, snd tokens) + let (o, _, _ ) = guid.Value + b.BaseStream.Seek(int64 o, SeekOrigin.Begin) |> ignore - let got = s.Read(buffer, 0, 16)// don't complicate things yet - let g = Guid buffer - sprintf "Symbol file %s GUID = %A" path g - |> Output.verbose + ok && + reserved = 0 && + (int flags) = 0 - ok && got = 16 && - guids |> Seq.exists(fun t -> t = g) + else + // 0x7263694d -> // windows native TBD + false + + let symbolMatch tokens (path: String) = + use s = + (if (Path.GetExtension path) <> ".pdb" then + path + ".mdb" + else + path) + |> File.OpenRead + + Abstraction.DoPathOperation + (fun () -> + use b = + new BinaryReader(s, System.Text.Encoding.UTF8, true) + let (ok, guids) = + if (Path.GetExtension path) <> ".pdb" then + (checkMdb b, [ fst tokens ]) + else + (checkPdb b, snd tokens) + + let buffer = b.ReadBytes(16) + let g = Guid buffer + + sprintf "Symbol file %s GUID = %A" path g + |> Output.verbose + + ok + && guids |> Seq.exists (fun t -> t = g)) + (fun _ -> false) // "Public" API let internal getPdbFromImage (assembly: AssemblyDefinition) = let tokens = I.getAssemblyTokens assembly + (tokens, - Some assembly.MainModule - |> Option.filter (fun x -> x.HasDebugHeader) - |> Option.map (fun x -> x.GetDebugHeader()) - |> Option.filter (fun x -> x.HasEntries) - |> Option.bind (fun x -> x.Entries |> Seq.tryHead) - |> Option.map (fun x -> x.Data) - |> Option.filter (fun x -> x.Length > 0x18) - |> Option.map (fun x -> - x - |> Seq.skip 0x18 // size of the debug header - |> Seq.takeWhile (fun x -> x <> byte 0) - |> Seq.toArray - |> System.Text.Encoding.UTF8.GetString) - |> Option.filter (fun s -> s.Length > 0) - |> Option.filter (fun s -> - File.Exists s - || (s == (assembly.Name.Name + ".pdb") - && (assembly |> I.getEmbeddedPortablePdbEntry) - .IsNotNull))) + Some assembly.MainModule + |> Option.filter (fun x -> x.HasDebugHeader) + |> Option.map (fun x -> x.GetDebugHeader()) + |> Option.filter (fun x -> x.HasEntries) + |> Option.bind (fun x -> x.Entries |> Seq.tryHead) + |> Option.map (fun x -> x.Data) + |> Option.filter (fun x -> x.Length > 0x18) + |> Option.map (fun x -> + x + |> Seq.skip 0x18 // size of the debug header + |> Seq.takeWhile (fun x -> x <> byte 0) + |> Seq.toArray + |> System.Text.Encoding.UTF8.GetString) + |> Option.filter (fun s -> s.Length > 0) + |> Option.filter (fun s -> + File.Exists s + || (s == (assembly.Name.Name + ".pdb") + && (assembly |> I.getEmbeddedPortablePdbEntry) + .IsNotNull))) let internal getPdbWithFallback (assembly: AssemblyDefinition) = let path = assembly.MainModule.FileName @@ -139,7 +194,10 @@ module internal ProgramDatabase = folder | (_, pdbpath) -> - sprintf "Assembly %s symbols from image '%s'" path (Option.defaultValue String.Empty pdbpath) + sprintf + "Assembly %s symbols from image '%s'" + path + (Option.defaultValue String.Empty pdbpath) |> Output.verbose pdbpath diff --git a/AltCover.Tests/AltCover.Tests.fsproj b/AltCover.Tests/AltCover.Tests.fsproj index ef1b2cdb2..694e631c4 100644 --- a/AltCover.Tests/AltCover.Tests.fsproj +++ b/AltCover.Tests/AltCover.Tests.fsproj @@ -14,6 +14,7 @@ + Never diff --git a/AltCover.Tests/Tests.fs b/AltCover.Tests/Tests.fs index 1ead71bc3..e085bfec9 100644 --- a/AltCover.Tests/Tests.fs +++ b/AltCover.Tests/Tests.fs @@ -193,8 +193,21 @@ module AltCoverTests = [] let ShouldGetGUIDfromNativePdb () = - // 36fc1f5a-f829-41d9-b0f5-e0a935db09f4 for native.pdb - Assert.Pass() // TODO + let here = + System.Reflection.Assembly.GetExecutingAssembly() + let nativeName = + here.GetManifestResourceNames() + |> Seq.find (fun n -> n.EndsWith("native.pdb", StringComparison.Ordinal)) + let native = + here.GetManifestResourceStream(nativeName) + + use b = new BinaryReader(native) + let checkFormat = ProgramDatabase.I.checkPdb b + Assert.That (checkFormat, Is.True, "bad format") + + let buffer = b.ReadBytes(16) + let g = Guid buffer + test <@ g = Guid("36fc1f5a-f829-41d9-b0f5-e0a935db09f4") @> //for native.pdb [] let ShouldGetEmbeddedPdbFromImage () = diff --git a/AltCover.Tests/Tests2.fs b/AltCover.Tests/Tests2.fs index 0a441887e..bdb3e3bb3 100644 --- a/AltCover.Tests/Tests2.fs +++ b/AltCover.Tests/Tests2.fs @@ -3825,7 +3825,7 @@ has been prefixed with Ldc_I4_1 (1 byte) lines.[3] .Trim() .Replace("Line+I.doPath", "Line.I.doPath"), - Does.StartWith("at AltCover.CommandLine.I.doPathOperation") + Does.StartWith("at AltCover.Abstraction.DoPathOperation") ) Assert.That(lines |> List.skip 4, Is.Not.Empty) @@ -3946,7 +3946,7 @@ has been prefixed with Ldc_I4_1 (1 byte) lines.[3] .Trim() .Replace("Line+I.doPath", "Line.I.doPath"), - Does.StartWith("at AltCover.CommandLine.I.doPathOperation") + Does.StartWith("at AltCover.Abstraction.DoPathOperation") ) Assert.That(lines |> List.skip 4, Is.Not.Empty) From e469e77d90caa2bea80eec4ae09ff094351d6382 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Thu, 23 Jun 2022 14:52:56 +0100 Subject: [PATCH 58/81] Apply the symbol match - breaks a lot of native pdbs being touched --- AltCover.Engine/ProgramDatabase.fs | 40 ++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/AltCover.Engine/ProgramDatabase.fs b/AltCover.Engine/ProgramDatabase.fs index 242a236b3..563d0f2d6 100644 --- a/AltCover.Engine/ProgramDatabase.fs +++ b/AltCover.Engine/ProgramDatabase.fs @@ -156,27 +156,41 @@ module internal ProgramDatabase = |> Option.filter (fun x -> x.HasDebugHeader) |> Option.map (fun x -> x.GetDebugHeader()) |> Option.filter (fun x -> x.HasEntries) - |> Option.bind (fun x -> x.Entries |> Seq.tryHead) - |> Option.map (fun x -> x.Data) - |> Option.filter (fun x -> x.Length > 0x18) - |> Option.map (fun x -> - x + |> Option.bind (fun x -> + x.Entries + |> Seq.filter (fun e -> e.Data.Length > 0x18 && + e.Directory.Type = ImageDebugType.CodeView) + |> Seq.map (fun x -> x.Data) + //|> Seq.filter (fun x -> x.Length > 0x18) + |> Seq.map (fun x -> + let g = x |> Array.skip 4 |> Array.take 16 |> System.Guid + sprintf "Assembly symbol GUID = %A mvid = %A" g assembly.MainModule.Mvid + |> Output.verbose + let s = x |> Seq.skip 0x18 // size of the debug header |> Seq.takeWhile (fun x -> x <> byte 0) |> Seq.toArray - |> System.Text.Encoding.UTF8.GetString) - |> Option.filter (fun s -> s.Length > 0) - |> Option.filter (fun s -> - File.Exists s + |> System.Text.Encoding.UTF8.GetString + s, g) + |> Seq.filter (fun (s, g) -> s.Length > 0) + |> Seq.filter (fun (s, g) -> + // printfn "Path to check %A for %A" s assembly + ([ + Path.IsPathRooted + File.Exists + I.symbolMatch tokens + ] + |> List.forall(fun f -> f s)) || (s == (assembly.Name.Name + ".pdb") && (assembly |> I.getEmbeddedPortablePdbEntry) - .IsNotNull))) - + .IsNotNull)) + |> Seq.map fst + |> Seq.tryHead)) let internal getPdbWithFallback (assembly: AssemblyDefinition) = let path = assembly.MainModule.FileName match getPdbFromImage assembly with - | (_, None) when path |> String.IsNullOrWhiteSpace |> not -> // i.e. assemblies read from disk only + | (tokens, None) when path |> String.IsNullOrWhiteSpace |> not -> // i.e. assemblies read from disk only let foldername = Path.GetDirectoryName path let filename = Path.GetFileName path @@ -184,7 +198,7 @@ module internal ProgramDatabase = foldername :: (Seq.toList symbolFolders) |> Seq.map (I.getSymbolsByFolder filename) |> Seq.choose id - |> Seq.tryFind (fun _ -> true) + |> Seq.tryFind (I.symbolMatch tokens) sprintf "Assembly %s symbols from folder '%A'" From 60192bd6e2cf5c486473ef15c45e0ffcae374c9d Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Thu, 23 Jun 2022 19:17:52 +0100 Subject: [PATCH 59/81] [Incomplete] native pdb reader --- AltCover.Engine/ProgramDatabase.fs | 73 +++++++++++++++++++++++++----- 1 file changed, 62 insertions(+), 11 deletions(-) diff --git a/AltCover.Engine/ProgramDatabase.fs b/AltCover.Engine/ProgramDatabase.fs index 563d0f2d6..ee992a9bb 100644 --- a/AltCover.Engine/ProgramDatabase.fs +++ b/AltCover.Engine/ProgramDatabase.fs @@ -116,8 +116,59 @@ module internal ProgramDatabase = (int flags) = 0 else - // 0x7263694d -> // windows native TBD - false + // windows native + let magic = b.ReadBytes(28) + let pageSize = b.ReadInt32() + let freePageMap = b.ReadInt32() + let pagesUsed = b.ReadInt32() + let directorySize = b.ReadInt32() + let zero = b.ReadInt32() + + let ok = + zero = 0 && + start = 0x7263694d && + magic = [| 111uy; 115uy; 111uy; 102uy; 116uy; 32uy; + 67uy; 47uy; 67uy; 43uy; 43uy; 32uy; 77uy; 83uy; 70uy; 32uy; + 55uy; 46uy; 48uy; 48uy; 13uy; 10uy; 26uy; 68uy; 83uy; 0uy; + 0uy; 0uy |] + + printfn "native ok %A" ok + + let directoryPages = ((directorySize + pageSize - 1) / pageSize * 4 + pageSize - 1) / pageSize + printfn "pageSize %A directorySize %A" pageSize directorySize + let directoryRoot = + {1..directoryPages} + |> Seq.map (fun _ -> b.ReadInt32()) + |> Seq.toArray + + directoryRoot + |> Seq.iter (printfn "directoryRoot %A") + + let pages = (directorySize + pageSize - 1)/pageSize + let pagesPerPage = pageSize / 4 + let mutable pagesToGo = pages + let streamData = + directoryRoot + |> Seq.map (fun page -> b.BaseStream.Seek((int64)(page * pageSize), SeekOrigin.Begin) |> ignore + let pagesInThisPage = Math.Min (pagesToGo, pagesPerPage) + pagesToGo <- pagesToGo - pagesPerPage + {1..pagesInThisPage} + |> Seq.map (fun _ -> b.ReadInt32()) + |> Seq.toArray) + |> Seq.toArray + |> Array.concat + + streamData + |> Seq.iter (printfn "streamData %A") + + // Guid starts 12 bytes into the name index + //MsfDirectory dir = new MsfDirectory(reader, head, bits); + //DbiModuleInfo[] modules = null; + //Dictionary sourceCache = new Dictionary(); + //dir.streams[1].Read(reader, bits); + //Dictionary nameIndex = LoadNameIndex(bits, out pdbInfo.Age, out pdbInfo.Guid); + + ok let symbolMatch tokens (path: String) = use s = @@ -152,10 +203,10 @@ module internal ProgramDatabase = let tokens = I.getAssemblyTokens assembly (tokens, - Some assembly.MainModule - |> Option.filter (fun x -> x.HasDebugHeader) - |> Option.map (fun x -> x.GetDebugHeader()) - |> Option.filter (fun x -> x.HasEntries) + Some assembly.MainModule + |> Option.filter (fun x -> x.HasDebugHeader) + |> Option.map (fun x -> x.GetDebugHeader()) + |> Option.filter (fun x -> x.HasEntries) |> Option.bind (fun x -> x.Entries |> Seq.filter (fun e -> e.Data.Length > 0x18 && @@ -167,9 +218,9 @@ module internal ProgramDatabase = sprintf "Assembly symbol GUID = %A mvid = %A" g assembly.MainModule.Mvid |> Output.verbose let s = x - |> Seq.skip 0x18 // size of the debug header - |> Seq.takeWhile (fun x -> x <> byte 0) - |> Seq.toArray + |> Seq.skip 0x18 // size of the debug header + |> Seq.takeWhile (fun x -> x <> byte 0) + |> Seq.toArray |> System.Text.Encoding.UTF8.GetString s, g) |> Seq.filter (fun (s, g) -> s.Length > 0) @@ -181,8 +232,8 @@ module internal ProgramDatabase = I.symbolMatch tokens ] |> List.forall(fun f -> f s)) - || (s == (assembly.Name.Name + ".pdb") - && (assembly |> I.getEmbeddedPortablePdbEntry) + || (s == (assembly.Name.Name + ".pdb") + && (assembly |> I.getEmbeddedPortablePdbEntry) .IsNotNull)) |> Seq.map fst |> Seq.tryHead)) From 2b442d19c84689990e17de13d80225b6a87fa02b Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Fri, 24 Jun 2022 16:24:12 +0100 Subject: [PATCH 60/81] Read from our cache first --- AltCover.Engine/CecilEx.fs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/AltCover.Engine/CecilEx.fs b/AltCover.Engine/CecilEx.fs index cc2754a0d..db63a2492 100644 --- a/AltCover.Engine/CecilEx.fs +++ b/AltCover.Engine/CecilEx.fs @@ -48,6 +48,13 @@ type internal AssemblyResolver() as self = self.add_ResolveFailure <| new AssemblyResolveEventHandler(AssemblyResolver.ResolveFromNugetCache) + override self.Resolve (name: AssemblyNameReference) = + // Option.orElseWith ifNoneThunk option + let key = name.ToString() + if AssemblyConstants.resolutionTable.ContainsKey key then + AssemblyConstants.resolutionTable.[key] + else base.Resolve name + static member private AssemblyRegister (name: string) (path: string) = let def = AssemblyResolver.ReadAssembly path // recursive AssemblyConstants.resolutionTable.[name] <- def From 7db2bab25efbcd9ee03f595703bb137fc786c690 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Fri, 24 Jun 2022 16:30:42 +0100 Subject: [PATCH 61/81] Fantomas --- AltCover.Engine/CecilEx.fs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/AltCover.Engine/CecilEx.fs b/AltCover.Engine/CecilEx.fs index db63a2492..47fe69e1d 100644 --- a/AltCover.Engine/CecilEx.fs +++ b/AltCover.Engine/CecilEx.fs @@ -48,12 +48,14 @@ type internal AssemblyResolver() as self = self.add_ResolveFailure <| new AssemblyResolveEventHandler(AssemblyResolver.ResolveFromNugetCache) - override self.Resolve (name: AssemblyNameReference) = + override self.Resolve(name: AssemblyNameReference) = // Option.orElseWith ifNoneThunk option let key = name.ToString() + if AssemblyConstants.resolutionTable.ContainsKey key then AssemblyConstants.resolutionTable.[key] - else base.Resolve name + else + base.Resolve name static member private AssemblyRegister (name: string) (path: string) = let def = AssemblyResolver.ReadAssembly path // recursive From cb6c159ef4b31ac279b819191ea712aa61550fe3 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Fri, 24 Jun 2022 17:05:37 +0100 Subject: [PATCH 62/81] Address trivial Gendarme noise --- AltCover.Engine/CecilEx.fs | 3 +++ AltCover.Engine/PostProcess.fs | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/AltCover.Engine/CecilEx.fs b/AltCover.Engine/CecilEx.fs index 47fe69e1d..9f807749c 100644 --- a/AltCover.Engine/CecilEx.fs +++ b/AltCover.Engine/CecilEx.fs @@ -48,6 +48,9 @@ type internal AssemblyResolver() as self = self.add_ResolveFailure <| new AssemblyResolveEventHandler(AssemblyResolver.ResolveFromNugetCache) + [] override self.Resolve(name: AssemblyNameReference) = // Option.orElseWith ifNoneThunk option let key = name.ToString() diff --git a/AltCover.Engine/PostProcess.fs b/AltCover.Engine/PostProcess.fs index 8e98fef03..12c16c965 100644 --- a/AltCover.Engine/PostProcess.fs +++ b/AltCover.Engine/PostProcess.fs @@ -511,6 +511,6 @@ module internal PostProcess = [] () \ No newline at end of file From 1604ee3e512ac1d8e509b31c25b406ada818dd28 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Fri, 24 Jun 2022 22:01:34 +0100 Subject: [PATCH 63/81] Clear obsolete code, and update tests --- AltCover.Engine/CecilEx.fs | 13 +------------ AltCover.Engine/Instrument.fs | 4 ---- AltCover.Tests/Tests2.fs | 16 +++++++++------- 3 files changed, 10 insertions(+), 23 deletions(-) diff --git a/AltCover.Engine/CecilEx.fs b/AltCover.Engine/CecilEx.fs index 9f807749c..6772a8dd1 100644 --- a/AltCover.Engine/CecilEx.fs +++ b/AltCover.Engine/CecilEx.fs @@ -421,15 +421,4 @@ module internal CecilExtension = |> Seq.filter (fun i -> i.OpCode = OpCodes.Tail) |> Seq.iter (fun i -> i.OpCode <- OpCodes.Nop - i.Operand <- null) - - let internal hookResolveHandler = - new AssemblyResolveEventHandler(AssemblyResolver.ResolveFromNugetCache) - - let internal hookResolver (resolver: IAssemblyResolver) = - if resolver.IsNotNull then - let hook = - resolver.GetType().GetMethod("add_ResolveFailure") - - hook.Invoke(resolver, [| hookResolveHandler :> obj |]) - |> ignore \ No newline at end of file + i.Operand <- null) \ No newline at end of file diff --git a/AltCover.Engine/Instrument.fs b/AltCover.Engine/Instrument.fs index 039cb2a38..7942c1f09 100644 --- a/AltCover.Engine/Instrument.fs +++ b/AltCover.Engine/Instrument.fs @@ -462,10 +462,6 @@ module internal Instrument = a.Write(sink, pk) // #endif - let resolver = - assembly.MainModule.AssemblyResolver - - hookResolver resolver write assembly path pkey finally Directory.SetCurrentDirectory(here) diff --git a/AltCover.Tests/Tests2.fs b/AltCover.Tests/Tests2.fs index 0a441887e..37637eb93 100644 --- a/AltCover.Tests/Tests2.fs +++ b/AltCover.Tests/Tests2.fs @@ -449,18 +449,20 @@ module AltCoverTests2 = test' <@ String.IsNullOrWhiteSpace a @> j) #endif use raw = - Mono.Cecil.AssemblyDefinition.ReadAssembly where + AssemblyResolver.ReadAssembly where AssemblyConstants.resolutionTable.Clear() try + Assert.That(raw.MainModule.AssemblyResolver.GetType(), Is.EqualTo typeof) + raw.MainModule.AssemblyReferences |> Seq.filter (fun f -> f.Name.IndexOf("Mono.Cecil", StringComparison.Ordinal) >= 0) |> Seq.iter (fun f -> let resolved = - CecilExtension.hookResolveHandler.Invoke(null, f) + raw.MainModule.AssemblyResolver.Resolve(f) test' <@ resolved.IsNotNull @> <| f.ToString()) @@ -471,9 +473,7 @@ module AltCoverTests2 = |> Seq.iter (fun f -> f.Version <- System.Version("666.666.666.666") - let resolved = - CecilExtension.hookResolveHandler.Invoke(null, f) - + let resolved = AssemblyResolver.ResolveFromNugetCache () f test' <@ resolved |> isNull @> <| f.ToString()) let found = @@ -499,9 +499,11 @@ module AltCoverTests2 = f.Version <- System.Version("666.666.666.666") let resolved = - CecilExtension.hookResolveHandler.Invoke(null, f) + raw.MainModule.AssemblyResolver.Resolve(f) + test' <@ resolved.IsNotNull @> <| f.ToString() - test' <@ resolved.IsNotNull @> <| f.ToString()) + let r2 = AssemblyResolver.ResolveFromNugetCache(f) + test' <@ r2.IsNotNull @> <| f.ToString()) finally AssemblyConstants.resolutionTable.Clear() From 5fc0810affe342e43fe7dcfc224ef1a60188eeba Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Fri, 24 Jun 2022 22:02:01 +0100 Subject: [PATCH 64/81] A coverage TODO --- Build/Pester.Tests.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Build/Pester.Tests.ps1 b/Build/Pester.Tests.ps1 index 460709fd1..9f9a8bd67 100644 --- a/Build/Pester.Tests.ps1 +++ b/Build/Pester.Tests.ps1 @@ -50,7 +50,7 @@ Describe "Invoke-Altcover" { } if (Test-Path $x) { Remove-Item -force $x } - Invoke-AltCover -Report $x -OutputDirectory $o -InputDirectory $i -AssemblyFilter ("Adapter", "FSharp", "nunit") -ReportFormat NCover -InformationAction Continue + Invoke-AltCover -Report $x -OutputDirectory $o -InputDirectory $i -AssemblyFilter ("Adapter", "FSharp", "nunit") -ReportFormat NCover -InformationAction Continue -Verbosity Verbose $o | Should -Exist $x | Should -Exist $xm = [xml](Get-Content $x) From 9eb9dbb8f35d70dcc3fbb83349946f58977103ef Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Fri, 24 Jun 2022 22:25:29 +0100 Subject: [PATCH 65/81] Be pervasive --- AltCover.Tests/Tests.fs | 140 ++++++++++++++++++------------------- AltCover.Tests/Tests2.fs | 144 +++++++++++++++++++-------------------- AltCover.Tests/Tests3.fs | 6 +- AltCover.Tests/XTests.fs | 14 ++-- 4 files changed, 152 insertions(+), 152 deletions(-) diff --git a/AltCover.Tests/Tests.fs b/AltCover.Tests/Tests.fs index 7b4bd7c46..e54b89e87 100644 --- a/AltCover.Tests/Tests.fs +++ b/AltCover.Tests/Tests.fs @@ -156,7 +156,7 @@ module AltCoverTests = |> Seq.filter isAssemblyType |> Seq.filter (fun f -> f |> Path.GetFileName <> "AltCover.Tests.exe") |> Seq.filter (fun f -> f |> Path.GetFileName <> "AltCover.Recorder.g.dll") - |> Seq.map (fun x -> (x, Mono.Cecil.AssemblyDefinition.ReadAssembly x)) + |> Seq.map (fun x -> (x, AssemblyResolver.ReadAssembly x)) |> Seq.filter (fun x -> (fst x) + ".mdb" |> File.Exists |> not) |> Seq.toList @@ -191,7 +191,7 @@ module AltCoverTests = maybeIgnore (fun () -> target |> File.Exists |> not) use image = - Mono.Cecil.AssemblyDefinition.ReadAssembly target + AssemblyResolver.ReadAssembly target let pdb = AltCover.ProgramDatabase.getPdbFromImage image @@ -211,7 +211,7 @@ module AltCoverTests = |> Seq.filter (fun x -> x.EndsWith(".dll", StringComparison.OrdinalIgnoreCase) || x.EndsWith(".exe", StringComparison.OrdinalIgnoreCase)) - |> Seq.map (fun x -> (x, Mono.Cecil.AssemblyDefinition.ReadAssembly x)) + |> Seq.map (fun x -> (x, AssemblyResolver.ReadAssembly x)) |> Seq.toList Assert.That(files, Is.Not.Empty) @@ -237,7 +237,7 @@ module AltCoverTests = |> Seq.filter (fun f -> f |> Path.GetFileName <> "AltCover.Tests.exe") |> Seq.iter (fun x -> use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly x + AssemblyResolver.ReadAssembly x let pdb = AltCover.ProgramDatabase.getPdbWithFallback (def) @@ -275,7 +275,7 @@ module AltCoverTests = try use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly dll + AssemblyResolver.ReadAssembly dll let pdb = AltCover.ProgramDatabase.getPdbWithFallback (def) @@ -323,7 +323,7 @@ module AltCoverTests = try use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly dll + AssemblyResolver.ReadAssembly dll let pdb = AltCover.ProgramDatabase.getPdbWithFallback (def) @@ -355,7 +355,7 @@ module AltCoverTests = || x.EndsWith(".exe", StringComparison.OrdinalIgnoreCase)) |> Seq.iter (fun x -> use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly x + AssemblyResolver.ReadAssembly x let mdb = AltCover.ProgramDatabase.getPdbWithFallback (def) @@ -381,7 +381,7 @@ module AltCoverTests = f |> Path.GetFileNameWithoutExtension <> "testhost") |> Seq.filter (fun f -> f |> Path.GetFileName <> "AltCover.Tests.exe") - |> Seq.map Mono.Cecil.AssemblyDefinition.ReadAssembly + |> Seq.map AssemblyResolver.ReadAssembly |> Seq.filter (fun x -> not <| x.FullName.StartsWith("altcode.", StringComparison.OrdinalIgnoreCase)) @@ -406,7 +406,7 @@ module AltCoverTests = maybeIgnore (fun () -> target |> File.Exists |> not) use image = - Mono.Cecil.AssemblyDefinition.ReadAssembly target + AssemblyResolver.ReadAssembly target AltCover.ProgramDatabase.readSymbols image Assert.That(image.MainModule.HasSymbols, image.MainModule.FileName) @@ -421,7 +421,7 @@ module AltCoverTests = Path .GetFileName(x) .StartsWith("BlackFox", StringComparison.OrdinalIgnoreCase)) - |> Seq.map Mono.Cecil.AssemblyDefinition.ReadAssembly + |> Seq.map AssemblyResolver.ReadAssembly |> Seq.filter (fun x -> not <| x.FullName.EndsWith( @@ -453,7 +453,7 @@ module AltCoverTests = || x.EndsWith(".exe", StringComparison.OrdinalIgnoreCase)) |> Seq.iter (fun x -> use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly x + AssemblyResolver.ReadAssembly x AltCover.ProgramDatabase.readSymbols def Assert.That(def.MainModule.HasSymbols, def.MainModule.FileName)) @@ -600,7 +600,7 @@ module AltCoverTests = [] let AssemblyDoesNotMatchNonAssemblyClass () = use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly(Assembly.GetExecutingAssembly().Location) + AssemblyResolver.ReadAssembly(Assembly.GetExecutingAssembly().Location) Assert.That( Filter.``match`` def (ff (FilterScope.Type, Regex "23", Exclude)), @@ -615,7 +615,7 @@ module AltCoverTests = [] let AssemblyDoesMatchAssemblyClass () = use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly(Assembly.GetExecutingAssembly().Location) + AssemblyResolver.ReadAssembly(Assembly.GetExecutingAssembly().Location) Assert.That( Filter.``match`` def (ff (FilterScope.Assembly, Regex "Cove", Exclude)), @@ -630,7 +630,7 @@ module AltCoverTests = [] let ModuleDoesNotMatchNonModuleClass () = use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly(Assembly.GetExecutingAssembly().Location) + AssemblyResolver.ReadAssembly(Assembly.GetExecutingAssembly().Location) Assert.That( Filter.``match`` def.MainModule (ff (FilterScope.Type, Regex "23", Exclude)), @@ -640,7 +640,7 @@ module AltCoverTests = [] let ModuleDoesMatchModuleClass () = use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly(Assembly.GetExecutingAssembly().Location) + AssemblyResolver.ReadAssembly(Assembly.GetExecutingAssembly().Location) Assert.That( Filter.``match`` def.MainModule (ff (FilterScope.Module, Regex "Cove", Exclude)), @@ -655,7 +655,7 @@ module AltCoverTests = [] let TypeDoesNotMatchNonTypeClass () = use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly(Assembly.GetExecutingAssembly().Location) + AssemblyResolver.ReadAssembly(Assembly.GetExecutingAssembly().Location) def.MainModule.Types |> Seq.iter (fun t -> @@ -668,7 +668,7 @@ module AltCoverTests = [] let TypeDoesMatchTypeClass () = use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly(Assembly.GetExecutingAssembly().Location) + AssemblyResolver.ReadAssembly(Assembly.GetExecutingAssembly().Location) def.MainModule.Types |> Seq.filter (fun t -> t.IsPublic && t.Name.Contains("AltCover")) // exclude the many compiler generted chaff classes @@ -688,7 +688,7 @@ module AltCoverTests = [] let MethodDoesNotMatchNonMethodClass () = use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly(Assembly.GetExecutingAssembly().Location) + AssemblyResolver.ReadAssembly(Assembly.GetExecutingAssembly().Location) def.MainModule.Types |> Seq.filter (fun t -> t.IsPublic) @@ -702,7 +702,7 @@ module AltCoverTests = [] let MethodDoesMatchMethodClass () = use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly(Assembly.GetExecutingAssembly().Location) + AssemblyResolver.ReadAssembly(Assembly.GetExecutingAssembly().Location) Assert.That( def.MainModule.Types @@ -734,7 +734,7 @@ module AltCoverTests = [] let AttributeDoesNotMatchNonAttributeClass () = use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly(Assembly.GetExecutingAssembly().Location) + AssemblyResolver.ReadAssembly(Assembly.GetExecutingAssembly().Location) def.MainModule.Types |> Seq.iter (fun t -> @@ -747,7 +747,7 @@ module AltCoverTests = [] let AttributeDoesMatchAttributeClass () = use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly(Assembly.GetExecutingAssembly().Location) + AssemblyResolver.ReadAssembly(Assembly.GetExecutingAssembly().Location) def.MainModule.Types |> Seq.filter (fun t -> @@ -773,7 +773,7 @@ module AltCoverTests = typeof.Assembly.Location let sourceAssembly = - AssemblyDefinition.ReadAssembly(location) + AssemblyResolver.ReadAssembly(location) let direct = sourceAssembly.MainModule.Types @@ -802,7 +802,7 @@ module AltCoverTests = Path.Combine(dir, "Sample3.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly(sample3) + AssemblyResolver.ReadAssembly(sample3) def.MainModule.Types |> Seq.filter (fun t -> t.Name = "Class1") @@ -816,7 +816,7 @@ module AltCoverTests = Path.Combine(dir, "Sample3.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly(sample3) + AssemblyResolver.ReadAssembly(sample3) def.MainModule.Types |> Seq.filter (fun t -> t.Name = "Class2") @@ -832,7 +832,7 @@ module AltCoverTests = tracer.GetType().Assembly.Location let sourceAssembly = - AssemblyDefinition.ReadAssembly(location) + AssemblyResolver.ReadAssembly(location) let direct = sourceAssembly.MainModule.Types @@ -894,7 +894,7 @@ module AltCoverTests = typeof.Assembly.Location let sourceAssembly = - AssemblyDefinition.ReadAssembly(location) + AssemblyResolver.ReadAssembly(location) let direct = sourceAssembly.MainModule.Types @@ -917,7 +917,7 @@ module AltCoverTests = typeof.Assembly.Location let sourceAssembly = - AssemblyDefinition.ReadAssembly(location) + AssemblyResolver.ReadAssembly(location) let direct = sourceAssembly.MainModule.Types @@ -1008,7 +1008,7 @@ module AltCoverTests = .Location use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly where + AssemblyResolver.ReadAssembly where let cl = def.MainModule.GetType("AltCover.CommandLine") @@ -1028,7 +1028,7 @@ module AltCoverTests = let path = Path.Combine(dir, "Sample4.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path let items = def.MainModule.GetAllTypes() @@ -1114,13 +1114,13 @@ module AltCoverTests = //let pdb3 = Path.Combine(mono, "Mono.Options.pdb") //Assert.That(File.Exists pdb3, Is.True, "Mono.Options.pdb not found") - let a = AssemblyDefinition.ReadAssembly exe + let a = AssemblyResolver.ReadAssembly exe ProgramDatabase.readSymbols a - let m = AssemblyDefinition.ReadAssembly dll + let m = AssemblyResolver.ReadAssembly dll ProgramDatabase.readSymbols m - let f = AssemblyDefinition.ReadAssembly fdll + let f = AssemblyResolver.ReadAssembly fdll ProgramDatabase.readSymbols f // work round the instrumented assemblies having unreliable symbols @@ -1132,7 +1132,7 @@ module AltCoverTests = let localAssembly = Path.Combine(dir, "AltCover.Engine.dll") - |> AssemblyDefinition.ReadAssembly + |> AssemblyResolver.ReadAssembly ProgramDatabase.readSymbols localAssembly @@ -1197,7 +1197,7 @@ module AltCoverTests = Path.Combine(dir, "Sample23.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly(sample23) + AssemblyResolver.ReadAssembly(sample23) let symbols23 = Path.ChangeExtension(sample23, ".pdb") @@ -1301,7 +1301,7 @@ module AltCoverTests = Path.Combine(dir, "Sample24.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly(sample24) + AssemblyResolver.ReadAssembly(sample24) let symbols24 = Path.ChangeExtension(sample24, ".pdb") @@ -1353,7 +1353,7 @@ module AltCoverTests = Path.Combine(dir, "Sample23.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly(sample23) + AssemblyResolver.ReadAssembly(sample23) let symbols23 = Path.ChangeExtension(sample23, ".pdb") @@ -1457,7 +1457,7 @@ module AltCoverTests = .GetManifestResourceStream(res2) use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly stream + AssemblyResolver.ReadAssembly stream let r = Mono.Cecil.Pdb.PdbReaderProvider() @@ -1537,7 +1537,7 @@ module AltCoverTests = .GetManifestResourceStream(res2) use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly stream + AssemblyResolver.ReadAssembly stream let r = Mono.Cecil.Pdb.PdbReaderProvider() @@ -1600,7 +1600,7 @@ module AltCoverTests = Path.Combine(dir, "Sample5.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly(sample3) + AssemblyResolver.ReadAssembly(sample3) // ProgramDatabase.readSymbols def @@ -1805,7 +1805,7 @@ module AltCoverTests = Path.Combine(SolutionRoot.location, "Samples/Sample6/Sample6Classic.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly(sample3) + AssemblyResolver.ReadAssembly(sample3) let methods = def.MainModule.GetAllTypes() @@ -1874,7 +1874,7 @@ module AltCoverTests = Path.Combine(dir, "Sample6.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly(sample3) + AssemblyResolver.ReadAssembly(sample3) let methods = def.MainModule.GetAllTypes() @@ -1951,7 +1951,7 @@ module AltCoverTests = typeof.Assembly.Location use sourceAssembly = - AssemblyDefinition.ReadAssembly(location) + AssemblyResolver.ReadAssembly(location) let i = sourceAssembly.MainModule.GetAllTypes() @@ -2142,7 +2142,7 @@ module AltCoverTests = [] let AfterProcessingYieldsAnExpectedValue () = use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly(Assembly.GetExecutingAssembly().Location) + AssemblyResolver.ReadAssembly(Assembly.GetExecutingAssembly().Location) let inputs = [ Node.Start [] @@ -2219,7 +2219,7 @@ module AltCoverTests = Path.Combine(dir, "Sample3.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly(sample3) + AssemblyResolver.ReadAssembly(sample3) def.MainModule.Types |> Seq.filter (fun t -> t.Name = "Class1") @@ -2233,7 +2233,7 @@ module AltCoverTests = Path.Combine(dir, "Sample3.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly(sample3) + AssemblyResolver.ReadAssembly(sample3) def.MainModule.Types |> Seq.filter (fun t -> t.Name = "Class2") @@ -2244,7 +2244,7 @@ module AltCoverTests = [] let TerminalCasesGoNoDeeper () = use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly(Assembly.GetExecutingAssembly().Location) + AssemblyResolver.ReadAssembly(Assembly.GetExecutingAssembly().Location) let inputs = [ Node.MethodPoint @@ -2285,7 +2285,7 @@ module AltCoverTests = let path = sample1path use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -2345,7 +2345,7 @@ module AltCoverTests = let path = Path.Combine(dir, "Sample16.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -2428,7 +2428,7 @@ module AltCoverTests = let path = Path.Combine(dir, "Sample17.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -2496,7 +2496,7 @@ module AltCoverTests = let path = sample1path use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -2568,7 +2568,7 @@ module AltCoverTests = let path = sample1path use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def let module' = def.MainModule @@ -2626,7 +2626,7 @@ module AltCoverTests = let path = sample1path use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path CoverageParameters.theReportFormat <- Some ReportFormat.NCover @@ -2870,7 +2870,7 @@ module AltCoverTests = let path = Path.Combine(dir, "Sample2.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -2900,7 +2900,7 @@ module AltCoverTests = let path = Path.Combine(dir, "Sample2.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -2933,7 +2933,7 @@ module AltCoverTests = let path = Path.Combine(dir, "Sample2.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -2972,7 +2972,7 @@ module AltCoverTests = let path = Path.Combine(dir, "Sample2.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -3057,7 +3057,7 @@ module AltCoverTests = let path = Path.Combine(dir, "Sample3.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path let names = def.MainModule.GetAllTypes() @@ -3083,7 +3083,7 @@ module AltCoverTests = let path = Path.Combine(dir, "Sample3.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path let names = def.MainModule.GetAllTypes() @@ -3109,7 +3109,7 @@ module AltCoverTests = let path = Path.Combine(dir, "Sample3.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path let names = def.MainModule.GetAllTypes() @@ -3136,7 +3136,7 @@ module AltCoverTests = let path = Path.Combine(dir, "Sample3.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path let names = def.MainModule.GetAllTypes() @@ -3175,7 +3175,7 @@ module AltCoverTests = let path = Path.Combine(dir, "Sample3.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path let names = def.MainModule.GetAllTypes() @@ -3231,7 +3231,7 @@ module AltCoverTests = let path = Path.Combine(dir, "Sample3.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path let names = def.MainModule.GetAllTypes() @@ -3372,7 +3372,7 @@ module AltCoverTests = Destinations = [] }) use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path let xml = TTBaseline @@ -4262,7 +4262,7 @@ module AltCoverTests = Destinations = [] }) use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path let xml = TTBaseline @@ -4313,7 +4313,7 @@ module AltCoverTests = Destinations = [] }) use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path let xml = " @@ -4367,7 +4367,7 @@ module AltCoverTests = Destinations = [] }) use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path let xml = " @@ -4405,7 +4405,7 @@ module AltCoverTests = ) use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path let target = def @@ -4444,7 +4444,7 @@ module AltCoverTests = ) use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path let target = def @@ -4486,7 +4486,7 @@ module AltCoverTests = Path.Combine(Path.GetDirectoryName(where), "Sample2.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -4541,7 +4541,7 @@ module AltCoverTests = Path.Combine(Path.GetDirectoryName(where), "Sample2.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def diff --git a/AltCover.Tests/Tests2.fs b/AltCover.Tests/Tests2.fs index 37637eb93..547a14901 100644 --- a/AltCover.Tests/Tests2.fs +++ b/AltCover.Tests/Tests2.fs @@ -74,7 +74,7 @@ module AltCoverTests2 = use recstream = recorderStream () use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly recstream + AssemblyResolver.ReadAssembly recstream let recorder = AltCover.Instrument.I.recordingMethod def @@ -91,7 +91,7 @@ module AltCoverTests2 = Path.Combine(AltCoverTests.dir, "Sample3.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path Assert.That(def.Name.HasPublicKey) let key0 = def.Name.PublicKey @@ -112,7 +112,7 @@ module AltCoverTests2 = Path.Combine(AltCoverTests.dir, "Sample3.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path let key0 = def.Name.PublicKey let token0 = def.Name.PublicKeyToken @@ -154,7 +154,7 @@ module AltCoverTests2 = Path.Combine(AltCoverTests.dir, "Sample3.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path Assert.That(Option.isNone (Instrument.I.knownKey def.Name)) finally @@ -169,7 +169,7 @@ module AltCoverTests2 = Path.Combine(AltCoverTests.dir, "Sample3.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path provideKeyPair () |> CoverageParameters.add Assert.That(Option.isSome (Instrument.I.knownKey def.Name)) @@ -185,7 +185,7 @@ module AltCoverTests2 = typeof.Assembly.Location use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path provideKeyPair () |> CoverageParameters.add Assert.That(Option.isNone (Instrument.I.knownKey def.Name)) @@ -203,7 +203,7 @@ module AltCoverTests2 = .Location use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path let key = KeyStore.arrayToIndex def.Name.PublicKey @@ -230,7 +230,7 @@ module AltCoverTests2 = Path.Combine(AltCoverTests.dir, "Sample3.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path AltCover.Instrument.I.updateStrongNaming def None provideKeyPair () |> CoverageParameters.add @@ -250,7 +250,7 @@ module AltCoverTests2 = Path.Combine(AltCoverTests.dir, "Sample3.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path Assert.That(Option.isNone (Instrument.I.knownToken def.Name)) finally @@ -268,7 +268,7 @@ module AltCoverTests2 = Path.Combine(AltCoverTests.dir, "Sample3.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path provideKeyPair () |> CoverageParameters.add Assert.That(Option.isSome (Instrument.I.knownToken def.Name)) @@ -287,7 +287,7 @@ module AltCoverTests2 = Path.Combine(AltCoverTests.dir, "Sample3.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path AltCover.Instrument.I.updateStrongNaming def None provideKeyPair () |> CoverageParameters.add @@ -305,7 +305,7 @@ module AltCoverTests2 = typeof.Assembly.Location use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path let key = KeyStore.arrayToIndex def.Name.PublicKey @@ -325,7 +325,7 @@ module AltCoverTests2 = .Location use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path let key = KeyStore.arrayToIndex def.Name.PublicKey @@ -346,7 +346,7 @@ module AltCoverTests2 = Path.Combine(AltCoverTests.dir, "Sample3.dll") use prepared = - AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols prepared @@ -520,7 +520,7 @@ module AltCoverTests2 = Instrument.I.prepareAssembly (File.OpenRead path) use raw = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols raw Assert.That(prepared.Name.Name, Is.EqualTo(raw.Name.Name + ".g")) @@ -729,10 +729,10 @@ module AltCoverTests2 = Maybe ("Mono.Runtime" |> Type.GetType).IsNotNull ".dll.mdb" ".pdb" use raw = - Mono.Cecil.AssemblyDefinition.ReadAssembly outputdll + AssemblyResolver.ReadAssembly outputdll use raw2 = - Mono.Cecil.AssemblyDefinition.ReadAssembly alter + AssemblyResolver.ReadAssembly alter Assert.That( raw.MainModule.Mvid, @@ -825,7 +825,7 @@ module AltCoverTests2 = Path.Combine(SolutionRoot.location, "AltCover.Tests/Sample31.dll") use ``module`` = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols ``module`` @@ -990,7 +990,7 @@ has been prefixed with Ldc_I4_1 (1 byte) Instrument.I.writeAssembly prepared outputdll // TODO -- see Instrument.I.WriteAssembly Assert.That (File.Exists (outputdll + ".mdb")) use raw = - Mono.Cecil.AssemblyDefinition.ReadAssembly outputdll + AssemblyResolver.ReadAssembly outputdll Assert.That raw.Name.HasPublicKey // Assert.That (Option.isSome <| Instrument.I.knownKey raw.Name) <- not needed @@ -1045,7 +1045,7 @@ has been prefixed with Ldc_I4_1 (1 byte) try use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -1076,7 +1076,7 @@ has been prefixed with Ldc_I4_1 (1 byte) Instrument.I.writeAssembly def outputdll use raw = - Mono.Cecil.AssemblyDefinition.ReadAssembly outputdll + AssemblyResolver.ReadAssembly outputdll Assert.That(raw.Name.HasPublicKey, "bad public key") // Assert.That (Option.isSome <| Instrument.I.knownKey raw.Name) <- not needed @@ -1147,7 +1147,7 @@ has been prefixed with Ldc_I4_1 (1 byte) let path = AltCoverTests.sample1path use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -1257,7 +1257,7 @@ has been prefixed with Ldc_I4_1 (1 byte) Path.Combine(AltCoverTests.dir, "Sample2.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def let module' = def.MainModule.GetType("N.DU") @@ -1292,7 +1292,7 @@ has been prefixed with Ldc_I4_1 (1 byte) Path.Combine(AltCoverTests.dir, "Sample2.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def let module' = def.MainModule.GetType("N.DU") @@ -1335,7 +1335,7 @@ has been prefixed with Ldc_I4_1 (1 byte) Path.Combine(AltCoverTests.dir, "Sample2.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def let module' = def.MainModule.GetType("N.DU") @@ -1376,7 +1376,7 @@ has been prefixed with Ldc_I4_1 (1 byte) Path.Combine(AltCoverTests.dir, "Sample2.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def let module' = def.MainModule.GetType("N.DU") @@ -1415,7 +1415,7 @@ has been prefixed with Ldc_I4_1 (1 byte) Path.Combine(AltCoverTests.dir, "Sample2.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def let module' = def.MainModule.GetType("N.DU") @@ -1453,7 +1453,7 @@ has been prefixed with Ldc_I4_1 (1 byte) use recstream = recorderStream () use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly recstream + AssemblyResolver.ReadAssembly recstream let recorder = AltCover.Instrument.I.recordingMethod def @@ -1525,10 +1525,10 @@ has been prefixed with Ldc_I4_1 (1 byte) .GetManifestResourceStream(res) use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly stream + AssemblyResolver.ReadAssembly stream use rdef = - Mono.Cecil.AssemblyDefinition.ReadAssembly recstream + AssemblyResolver.ReadAssembly recstream let recorder = AltCover.Instrument.I.recordingMethod rdef @@ -1601,10 +1601,10 @@ has been prefixed with Ldc_I4_1 (1 byte) ) use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly sample24 + AssemblyResolver.ReadAssembly sample24 use rdef = - Mono.Cecil.AssemblyDefinition.ReadAssembly recstream + AssemblyResolver.ReadAssembly recstream let recorder = AltCover.Instrument.I.recordingMethod rdef @@ -1682,10 +1682,10 @@ has been prefixed with Ldc_I4_1 (1 byte) ) use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly sample24 + AssemblyResolver.ReadAssembly sample24 use rdef = - Mono.Cecil.AssemblyDefinition.ReadAssembly recstream + AssemblyResolver.ReadAssembly recstream let recorder = AltCover.Instrument.I.recordingMethod rdef @@ -1763,10 +1763,10 @@ has been prefixed with Ldc_I4_1 (1 byte) ) use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly sample27 + AssemblyResolver.ReadAssembly sample27 use rdef = - Mono.Cecil.AssemblyDefinition.ReadAssembly recstream + AssemblyResolver.ReadAssembly recstream let recorder = AltCover.Instrument.I.recordingMethod rdef @@ -1839,10 +1839,10 @@ has been prefixed with Ldc_I4_1 (1 byte) ) use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly sample30 + AssemblyResolver.ReadAssembly sample30 use rdef = - Mono.Cecil.AssemblyDefinition.ReadAssembly recstream + AssemblyResolver.ReadAssembly recstream let recorder = AltCover.Instrument.I.recordingMethod rdef @@ -1930,7 +1930,7 @@ has been prefixed with Ldc_I4_1 (1 byte) .GetManifestResourceStream(res2) use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly stream + AssemblyResolver.ReadAssembly stream let r = Mono.Cecil.Pdb.PdbReaderProvider() @@ -1940,7 +1940,7 @@ has been prefixed with Ldc_I4_1 (1 byte) def.MainModule.ReadSymbols(rr) use rdef = - Mono.Cecil.AssemblyDefinition.ReadAssembly recstream + AssemblyResolver.ReadAssembly recstream let recorder = AltCover.Instrument.I.recordingMethod rdef @@ -2041,7 +2041,7 @@ has been prefixed with Ldc_I4_1 (1 byte) use recstream = recorderStream () use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly recstream + AssemblyResolver.ReadAssembly recstream let recorder = AltCover.Instrument.I.recordingMethod def @@ -2077,7 +2077,7 @@ has been prefixed with Ldc_I4_1 (1 byte) Path.Combine(Path.GetDirectoryName(where), "Sample2.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -2175,7 +2175,7 @@ has been prefixed with Ldc_I4_1 (1 byte) Path.Combine(Path.GetDirectoryName(where), "Sample16.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def CoverageParameters.coalesceBranches.Value <- true @@ -2268,7 +2268,7 @@ has been prefixed with Ldc_I4_1 (1 byte) let path = AltCoverTests.sample1path use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -2390,7 +2390,7 @@ has been prefixed with Ldc_I4_1 (1 byte) Path.Combine(AltCoverTests.dir, "Sample2.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def let module' = def.MainModule.GetType("N.DU") @@ -2424,7 +2424,7 @@ has been prefixed with Ldc_I4_1 (1 byte) Path.Combine(AltCoverTests.dir, "Sample2.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def let module' = def.MainModule.GetType("N.DU") @@ -2484,7 +2484,7 @@ has been prefixed with Ldc_I4_1 (1 byte) Path.Combine(AltCoverTests.dir, "Sample2.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def let module' = def.MainModule.GetType("N.DU") @@ -2536,7 +2536,7 @@ has been prefixed with Ldc_I4_1 (1 byte) Path.Combine(AltCoverTests.dir, "Sample2.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def let token0 = def.Name.PublicKeyToken @@ -2572,7 +2572,7 @@ has been prefixed with Ldc_I4_1 (1 byte) Path.Combine(AltCoverTests.dir, Path.GetFileName(here)) use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def let token0 = def.Name.PublicKeyToken @@ -2623,7 +2623,7 @@ has been prefixed with Ldc_I4_1 (1 byte) Path.Combine(AltCoverTests.dir, "Sample2.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def let token0 = def.Name.PublicKeyToken @@ -2660,7 +2660,7 @@ has been prefixed with Ldc_I4_1 (1 byte) maybeIgnore (fun () -> path |> File.Exists |> not) use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -2686,7 +2686,7 @@ has been prefixed with Ldc_I4_1 (1 byte) Path.Combine(AltCoverTests.dir, "Sample2.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def |> ignore @@ -2722,7 +2722,7 @@ has been prefixed with Ldc_I4_1 (1 byte) Path.Combine(AltCoverTests.dir, "Sample2.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def |> ignore @@ -2730,7 +2730,7 @@ has been prefixed with Ldc_I4_1 (1 byte) typeof.Assembly.Location use ndef = - Mono.Cecil.AssemblyDefinition.ReadAssembly npath + AssemblyResolver.ReadAssembly npath let key = KeyStore.arrayToIndex ndef.Name.PublicKey @@ -2775,7 +2775,7 @@ has been prefixed with Ldc_I4_1 (1 byte) Path.Combine(AltCoverTests.dir, "Sample2.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -2792,7 +2792,7 @@ has been prefixed with Ldc_I4_1 (1 byte) Some(StrongNameKeyData.Make(buffer.ToArray())) use fake = - Mono.Cecil.AssemblyDefinition.ReadAssembly(Assembly.GetExecutingAssembly().Location) + AssemblyResolver.ReadAssembly(Assembly.GetExecutingAssembly().Location) let state = InstrumentContext.Build [ "nunit.framework" @@ -2820,7 +2820,7 @@ has been prefixed with Ldc_I4_1 (1 byte) Path.Combine(AltCoverTests.dir, "Sample2.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -2837,7 +2837,7 @@ has been prefixed with Ldc_I4_1 (1 byte) Some(StrongNameKeyData.Make(buffer.ToArray())) use fake = - Mono.Cecil.AssemblyDefinition.ReadAssembly(Assembly.GetExecutingAssembly().Location) + AssemblyResolver.ReadAssembly(Assembly.GetExecutingAssembly().Location) let state = InstrumentContext.Build [ "nunit.framework" @@ -2864,7 +2864,7 @@ has been prefixed with Ldc_I4_1 (1 byte) Path.Combine(AltCoverTests.dir, "Sample2.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -2896,7 +2896,7 @@ has been prefixed with Ldc_I4_1 (1 byte) Path.Combine(AltCoverTests.dir, "Sample2.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -2925,7 +2925,7 @@ has been prefixed with Ldc_I4_1 (1 byte) Path.Combine(AltCoverTests.dir, "Sample2.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -2954,7 +2954,7 @@ has been prefixed with Ldc_I4_1 (1 byte) Path.Combine(AltCoverTests.dir, "Sample2.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -2970,7 +2970,7 @@ has been prefixed with Ldc_I4_1 (1 byte) use recstream = recorderStream () use def' = - Mono.Cecil.AssemblyDefinition.ReadAssembly recstream + AssemblyResolver.ReadAssembly recstream let visit = def'.MainModule.GetAllTypes() @@ -3026,7 +3026,7 @@ has been prefixed with Ldc_I4_1 (1 byte) Path.Combine(AltCoverTests.dir, "Sample2.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -3051,7 +3051,7 @@ has been prefixed with Ldc_I4_1 (1 byte) Path.Combine(AltCoverTests.dir, "Sample2.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def let module' = def.MainModule.GetType("N.DU") @@ -3110,7 +3110,7 @@ has been prefixed with Ldc_I4_1 (1 byte) Path.Combine(AltCoverTests.dir, "Sample2.dll") use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -3126,7 +3126,7 @@ has been prefixed with Ldc_I4_1 (1 byte) use recstream = recorderStream () use def' = - Mono.Cecil.AssemblyDefinition.ReadAssembly recstream + AssemblyResolver.ReadAssembly recstream let visit = def'.MainModule.GetAllTypes() @@ -3135,7 +3135,7 @@ has been prefixed with Ldc_I4_1 (1 byte) |> Seq.head use def'' = - Mono.Cecil.AssemblyDefinition.ReadAssembly where + AssemblyResolver.ReadAssembly where let v = def''.MainModule.ImportReference visit @@ -3332,7 +3332,7 @@ has been prefixed with Ldc_I4_1 (1 byte) use stream = recorderStream () use def = - AssemblyDefinition.ReadAssembly stream + AssemblyResolver.ReadAssembly stream def.Name.Version.ToString() @@ -3361,7 +3361,7 @@ has been prefixed with Ldc_I4_1 (1 byte) Path.Combine(AltCoverTests.dir, "Sample3.dll") use prepared = - AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols prepared @@ -3397,7 +3397,7 @@ has been prefixed with Ldc_I4_1 (1 byte) Path.Combine(AltCoverTests.dir, "Sample3.dll") use prepared = - AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols prepared @@ -3465,7 +3465,7 @@ has been prefixed with Ldc_I4_1 (1 byte) { InstrumentContext.Build [] with RecordingAssembly = null } use prepared = - AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols prepared diff --git a/AltCover.Tests/Tests3.fs b/AltCover.Tests/Tests3.fs index 46bc95caf..b11af47d4 100644 --- a/AltCover.Tests/Tests3.fs +++ b/AltCover.Tests/Tests3.fs @@ -3279,7 +3279,7 @@ module AltCoverTests3 = use stream = File.OpenRead(f) use def = - Mono.Cecil.AssemblyDefinition.ReadAssembly(stream) + AssemblyResolver.ReadAssembly(stream) ProgramDatabase.readSymbols def @@ -3302,7 +3302,7 @@ module AltCoverTests3 = Path.Combine(here, "Sample4.dll") use assembly = - Mono.Cecil.AssemblyDefinition.ReadAssembly second + AssemblyResolver.ReadAssembly second assembly.MainModule.AssemblyReferences.Add(prepared.Name) @@ -3424,7 +3424,7 @@ module AltCoverTests3 = f.EndsWith(".exe", StringComparison.OrdinalIgnoreCase) || f.EndsWith(".dll", StringComparison.OrdinalIgnoreCase)) |> Seq.filter ( - Mono.Cecil.AssemblyDefinition.ReadAssembly + AssemblyResolver.ReadAssembly >> ProgramDatabase.getPdbFromImage >> Option.isSome ) diff --git a/AltCover.Tests/XTests.fs b/AltCover.Tests/XTests.fs index c304ec672..42640d821 100644 --- a/AltCover.Tests/XTests.fs +++ b/AltCover.Tests/XTests.fs @@ -1131,13 +1131,13 @@ module AltCoverXTests = Path.Combine(AltCoverTests.dir, "Sample4.dll") let def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path use recstream = AltCoverTests2.recorderStream () use recdef = - Mono.Cecil.AssemblyDefinition.ReadAssembly recstream + AssemblyResolver.ReadAssembly recstream ProgramDatabase.readSymbols def let unique = Guid.NewGuid().ToString() @@ -1190,13 +1190,13 @@ module AltCoverXTests = maybeIgnore (fun () -> path |> File.Exists |> not) let def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path use recstream = AltCoverTests2.recorderStream () use recdef = - Mono.Cecil.AssemblyDefinition.ReadAssembly recstream + AssemblyResolver.ReadAssembly recstream ProgramDatabase.readSymbols def let unique = Guid.NewGuid().ToString() @@ -1249,7 +1249,7 @@ module AltCoverXTests = Path.Combine(AltCoverTests.dir, "Sample3.dll") let def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def let unique = Guid.NewGuid().ToString() @@ -1290,7 +1290,7 @@ module AltCoverXTests = Path.Combine(AltCoverTests.dir, "Sample4.dll") let def = - Mono.Cecil.AssemblyDefinition.ReadAssembly path + AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -1300,7 +1300,7 @@ module AltCoverXTests = .GetManifestResourceStream("AltCover.Tests.AltCover.Recorder.net20.dll") use recorder = - Mono.Cecil.AssemblyDefinition.ReadAssembly from + AssemblyResolver.ReadAssembly from ProgramDatabase.readSymbols recorder From 58e37434c5d470ac68783a8f49e4936ff353c4ac Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Sat, 25 Jun 2022 06:34:59 +0100 Subject: [PATCH 66/81] And the rest --- AltCover.Tests/Tests.fs | 90 ++++++++--------------- AltCover.Tests/Tests2.fs | 149 ++++++++++++++++----------------------- AltCover.Tests/Tests3.fs | 3 + AltCover.Tests/XTests.fs | 12 ++-- 4 files changed, 98 insertions(+), 156 deletions(-) diff --git a/AltCover.Tests/Tests.fs b/AltCover.Tests/Tests.fs index e54b89e87..1a113221d 100644 --- a/AltCover.Tests/Tests.fs +++ b/AltCover.Tests/Tests.fs @@ -236,8 +236,7 @@ module AltCoverTests = <> "testhost") |> Seq.filter (fun f -> f |> Path.GetFileName <> "AltCover.Tests.exe") |> Seq.iter (fun x -> - use def = - AssemblyResolver.ReadAssembly x + use def = AssemblyResolver.ReadAssembly x let pdb = AltCover.ProgramDatabase.getPdbWithFallback (def) @@ -274,8 +273,7 @@ module AltCoverTests = let dll = Path.ChangeExtension(p, ".dll") try - use def = - AssemblyResolver.ReadAssembly dll + use def = AssemblyResolver.ReadAssembly dll let pdb = AltCover.ProgramDatabase.getPdbWithFallback (def) @@ -322,8 +320,7 @@ module AltCoverTests = |> ProgramDatabase.symbolFolders.Add try - use def = - AssemblyResolver.ReadAssembly dll + use def = AssemblyResolver.ReadAssembly dll let pdb = AltCover.ProgramDatabase.getPdbWithFallback (def) @@ -354,8 +351,7 @@ module AltCoverTests = x.EndsWith(".dll", StringComparison.OrdinalIgnoreCase) || x.EndsWith(".exe", StringComparison.OrdinalIgnoreCase)) |> Seq.iter (fun x -> - use def = - AssemblyResolver.ReadAssembly x + use def = AssemblyResolver.ReadAssembly x let mdb = AltCover.ProgramDatabase.getPdbWithFallback (def) @@ -452,8 +448,7 @@ module AltCoverTests = x.EndsWith(".dll", StringComparison.OrdinalIgnoreCase) || x.EndsWith(".exe", StringComparison.OrdinalIgnoreCase)) |> Seq.iter (fun x -> - use def = - AssemblyResolver.ReadAssembly x + use def = AssemblyResolver.ReadAssembly x AltCover.ProgramDatabase.readSymbols def Assert.That(def.MainModule.HasSymbols, def.MainModule.FileName)) @@ -1027,8 +1022,7 @@ module AltCoverTests = CoverageParameters.showGenerated.Value <- true let path = Path.Combine(dir, "Sample4.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path let items = def.MainModule.GetAllTypes() @@ -2284,8 +2278,7 @@ module AltCoverTests = let path = sample1path - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -2344,8 +2337,7 @@ module AltCoverTests = let BranchPointsAreComputedForSwitch () = let path = Path.Combine(dir, "Sample16.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -2427,8 +2419,7 @@ module AltCoverTests = let BranchPointsAreComputedForMatch () = let path = Path.Combine(dir, "Sample17.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -2495,8 +2486,7 @@ module AltCoverTests = let path = sample1path - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -2567,8 +2557,7 @@ module AltCoverTests = let path = sample1path - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def let module' = def.MainModule @@ -2625,8 +2614,7 @@ module AltCoverTests = let path = sample1path - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path CoverageParameters.theReportFormat <- Some ReportFormat.NCover @@ -2869,8 +2857,7 @@ module AltCoverTests = let TrackingDetectsTests () = let path = Path.Combine(dir, "Sample2.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -2899,8 +2886,7 @@ module AltCoverTests = let TrackingDetectsExpectedTests () = let path = Path.Combine(dir, "Sample2.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -2932,8 +2918,7 @@ module AltCoverTests = let path = Path.Combine(dir, "Sample2.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -2971,8 +2956,7 @@ module AltCoverTests = let path = Path.Combine(dir, "Sample2.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -3056,8 +3040,7 @@ module AltCoverTests = let path = Path.Combine(dir, "Sample3.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path let names = def.MainModule.GetAllTypes() @@ -3082,8 +3065,7 @@ module AltCoverTests = let path = Path.Combine(dir, "Sample3.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path let names = def.MainModule.GetAllTypes() @@ -3108,8 +3090,7 @@ module AltCoverTests = let path = Path.Combine(dir, "Sample3.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path let names = def.MainModule.GetAllTypes() @@ -3135,8 +3116,7 @@ module AltCoverTests = let path = Path.Combine(dir, "Sample3.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path let names = def.MainModule.GetAllTypes() @@ -3174,8 +3154,7 @@ module AltCoverTests = let path = Path.Combine(dir, "Sample3.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path let names = def.MainModule.GetAllTypes() @@ -3230,8 +3209,7 @@ module AltCoverTests = let path = Path.Combine(dir, "Sample3.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path let names = def.MainModule.GetAllTypes() @@ -3371,8 +3349,7 @@ module AltCoverTests = Identity = Hallmark.Build() Destinations = [] }) - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path let xml = TTBaseline @@ -4261,8 +4238,7 @@ module AltCoverTests = Identity = Hallmark.Build() Destinations = [] }) - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path let xml = TTBaseline @@ -4312,8 +4288,7 @@ module AltCoverTests = Identity = Hallmark.Build() Destinations = [] }) - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path let xml = " @@ -4366,8 +4341,7 @@ module AltCoverTests = Identity = Hallmark.Build() Destinations = [] }) - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path let xml = " @@ -4404,8 +4378,7 @@ module AltCoverTests = "_Binaries/Sample3/Debug+AnyCPU/netstandard2.0/Sample3.dll" ) - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path let target = def @@ -4443,8 +4416,7 @@ module AltCoverTests = "_Binaries/Sample3/Debug+AnyCPU/netstandard2.0/Sample3.dll" ) - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path let target = def @@ -4485,8 +4457,7 @@ module AltCoverTests = let path = Path.Combine(Path.GetDirectoryName(where), "Sample2.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -4540,8 +4511,7 @@ module AltCoverTests = let path = Path.Combine(Path.GetDirectoryName(where), "Sample2.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def diff --git a/AltCover.Tests/Tests2.fs b/AltCover.Tests/Tests2.fs index 547a14901..a39e09edf 100644 --- a/AltCover.Tests/Tests2.fs +++ b/AltCover.Tests/Tests2.fs @@ -90,8 +90,7 @@ module AltCoverTests2 = let path = Path.Combine(AltCoverTests.dir, "Sample3.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path Assert.That(def.Name.HasPublicKey) let key0 = def.Name.PublicKey @@ -111,8 +110,7 @@ module AltCoverTests2 = let path = Path.Combine(AltCoverTests.dir, "Sample3.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path let key0 = def.Name.PublicKey let token0 = def.Name.PublicKeyToken @@ -153,8 +151,7 @@ module AltCoverTests2 = let path = Path.Combine(AltCoverTests.dir, "Sample3.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path Assert.That(Option.isNone (Instrument.I.knownKey def.Name)) finally @@ -168,8 +165,7 @@ module AltCoverTests2 = let path = Path.Combine(AltCoverTests.dir, "Sample3.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path provideKeyPair () |> CoverageParameters.add Assert.That(Option.isSome (Instrument.I.knownKey def.Name)) @@ -184,8 +180,7 @@ module AltCoverTests2 = let path = typeof.Assembly.Location - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path provideKeyPair () |> CoverageParameters.add Assert.That(Option.isNone (Instrument.I.knownKey def.Name)) @@ -202,8 +197,7 @@ module AltCoverTests2 = .Assembly .Location - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path let key = KeyStore.arrayToIndex def.Name.PublicKey @@ -229,8 +223,7 @@ module AltCoverTests2 = let path = Path.Combine(AltCoverTests.dir, "Sample3.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path AltCover.Instrument.I.updateStrongNaming def None provideKeyPair () |> CoverageParameters.add @@ -249,8 +242,7 @@ module AltCoverTests2 = let path = Path.Combine(AltCoverTests.dir, "Sample3.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path Assert.That(Option.isNone (Instrument.I.knownToken def.Name)) finally @@ -267,8 +259,7 @@ module AltCoverTests2 = let path = Path.Combine(AltCoverTests.dir, "Sample3.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path provideKeyPair () |> CoverageParameters.add Assert.That(Option.isSome (Instrument.I.knownToken def.Name)) @@ -286,8 +277,7 @@ module AltCoverTests2 = let path = Path.Combine(AltCoverTests.dir, "Sample3.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path AltCover.Instrument.I.updateStrongNaming def None provideKeyPair () |> CoverageParameters.add @@ -304,8 +294,7 @@ module AltCoverTests2 = let path = typeof.Assembly.Location - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path let key = KeyStore.arrayToIndex def.Name.PublicKey @@ -324,8 +313,7 @@ module AltCoverTests2 = .Assembly .Location - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path let key = KeyStore.arrayToIndex def.Name.PublicKey @@ -454,26 +442,34 @@ module AltCoverTests2 = AssemblyConstants.resolutionTable.Clear() try - Assert.That(raw.MainModule.AssemblyResolver.GetType(), Is.EqualTo typeof) + Assert.That( + raw.MainModule.AssemblyResolver.GetType(), + Is.EqualTo typeof + ) raw.MainModule.AssemblyReferences |> Seq.filter (fun f -> - f.Name.IndexOf("Mono.Cecil", StringComparison.Ordinal) + f.Name.IndexOf("Mono.Cecil.Rocks", StringComparison.Ordinal) >= 0) |> Seq.iter (fun f -> let resolved = raw.MainModule.AssemblyResolver.Resolve(f) + printfn "1 %A" AssemblyConstants.resolutionTable.Keys test' <@ resolved.IsNotNull @> <| f.ToString()) raw.MainModule.AssemblyReferences |> Seq.filter (fun f -> - f.Name.IndexOf("Mono.Cecil", StringComparison.Ordinal) + f.Name.IndexOf("Mono.Cecil.Pdb", StringComparison.Ordinal) >= 0) |> Seq.iter (fun f -> f.Version <- System.Version("666.666.666.666") - let resolved = AssemblyResolver.ResolveFromNugetCache () f + printfn "2 %A" AssemblyConstants.resolutionTable.Keys + let resolved = + AssemblyResolver.ResolveFromNugetCache () f + printfn "3 %A" AssemblyConstants.resolutionTable.Keys + test' <@ resolved |> isNull @> <| f.ToString()) let found = @@ -493,16 +489,22 @@ module AltCoverTests2 = raw.MainModule.AssemblyReferences |> Seq.filter (fun f -> - f.Name.IndexOf("Mono.Cecil", StringComparison.Ordinal) + f.Name.IndexOf("Mono.Cecil.Rocks", StringComparison.Ordinal) >= 0) |> Seq.iter (fun f -> f.Version <- System.Version("666.666.666.666") + printfn "4 %A" AssemblyConstants.resolutionTable.Keys let resolved = raw.MainModule.AssemblyResolver.Resolve(f) + printfn "5 %A" AssemblyConstants.resolutionTable.Keys + test' <@ resolved.IsNotNull @> <| f.ToString() - let r2 = AssemblyResolver.ResolveFromNugetCache(f) + let r2 = + AssemblyResolver.ResolveFromNugetCache(f) + printfn "6 %A" AssemblyConstants.resolutionTable.Keys + test' <@ r2.IsNotNull @> <| f.ToString()) finally AssemblyConstants.resolutionTable.Clear() @@ -519,8 +521,7 @@ module AltCoverTests2 = let prepared = Instrument.I.prepareAssembly (File.OpenRead path) - use raw = - AssemblyResolver.ReadAssembly path + use raw = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols raw Assert.That(prepared.Name.Name, Is.EqualTo(raw.Name.Name + ".g")) @@ -1044,8 +1045,7 @@ has been prefixed with Ldc_I4_1 (1 byte) let save = CoverageParameters.theReportPath try - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -1146,8 +1146,7 @@ has been prefixed with Ldc_I4_1 (1 byte) let ShouldUpdateHandlerOK ([] selection) = let path = AltCoverTests.sample1path - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -1256,8 +1255,7 @@ has been prefixed with Ldc_I4_1 (1 byte) let path = Path.Combine(AltCoverTests.dir, "Sample2.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def let module' = def.MainModule.GetType("N.DU") @@ -1291,8 +1289,7 @@ has been prefixed with Ldc_I4_1 (1 byte) let path = Path.Combine(AltCoverTests.dir, "Sample2.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def let module' = def.MainModule.GetType("N.DU") @@ -1334,8 +1331,7 @@ has been prefixed with Ldc_I4_1 (1 byte) let path = Path.Combine(AltCoverTests.dir, "Sample2.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def let module' = def.MainModule.GetType("N.DU") @@ -1375,8 +1371,7 @@ has been prefixed with Ldc_I4_1 (1 byte) let path = Path.Combine(AltCoverTests.dir, "Sample2.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def let module' = def.MainModule.GetType("N.DU") @@ -1414,8 +1409,7 @@ has been prefixed with Ldc_I4_1 (1 byte) let path = Path.Combine(AltCoverTests.dir, "Sample2.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def let module' = def.MainModule.GetType("N.DU") @@ -2076,8 +2070,7 @@ has been prefixed with Ldc_I4_1 (1 byte) let path = Path.Combine(Path.GetDirectoryName(where), "Sample2.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -2174,8 +2167,7 @@ has been prefixed with Ldc_I4_1 (1 byte) let path = Path.Combine(Path.GetDirectoryName(where), "Sample16.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def CoverageParameters.coalesceBranches.Value <- true @@ -2267,8 +2259,7 @@ has been prefixed with Ldc_I4_1 (1 byte) let path = AltCoverTests.sample1path - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -2389,8 +2380,7 @@ has been prefixed with Ldc_I4_1 (1 byte) let path = Path.Combine(AltCoverTests.dir, "Sample2.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def let module' = def.MainModule.GetType("N.DU") @@ -2423,8 +2413,7 @@ has been prefixed with Ldc_I4_1 (1 byte) let path = Path.Combine(AltCoverTests.dir, "Sample2.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def let module' = def.MainModule.GetType("N.DU") @@ -2483,8 +2472,7 @@ has been prefixed with Ldc_I4_1 (1 byte) let path = Path.Combine(AltCoverTests.dir, "Sample2.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def let module' = def.MainModule.GetType("N.DU") @@ -2535,8 +2523,7 @@ has been prefixed with Ldc_I4_1 (1 byte) let path = Path.Combine(AltCoverTests.dir, "Sample2.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def let token0 = def.Name.PublicKeyToken @@ -2571,8 +2558,7 @@ has been prefixed with Ldc_I4_1 (1 byte) let path = Path.Combine(AltCoverTests.dir, Path.GetFileName(here)) - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def let token0 = def.Name.PublicKeyToken @@ -2622,8 +2608,7 @@ has been prefixed with Ldc_I4_1 (1 byte) let path = Path.Combine(AltCoverTests.dir, "Sample2.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def let token0 = def.Name.PublicKeyToken @@ -2659,8 +2644,7 @@ has been prefixed with Ldc_I4_1 (1 byte) maybeIgnore (fun () -> path |> File.Exists |> not) - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -2685,8 +2669,7 @@ has been prefixed with Ldc_I4_1 (1 byte) let path = Path.Combine(AltCoverTests.dir, "Sample2.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def |> ignore @@ -2721,8 +2704,7 @@ has been prefixed with Ldc_I4_1 (1 byte) let path = Path.Combine(AltCoverTests.dir, "Sample2.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def |> ignore @@ -2774,8 +2756,7 @@ has been prefixed with Ldc_I4_1 (1 byte) let path = Path.Combine(AltCoverTests.dir, "Sample2.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -2819,8 +2800,7 @@ has been prefixed with Ldc_I4_1 (1 byte) let path = Path.Combine(AltCoverTests.dir, "Sample2.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -2863,8 +2843,7 @@ has been prefixed with Ldc_I4_1 (1 byte) let path = Path.Combine(AltCoverTests.dir, "Sample2.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -2895,8 +2874,7 @@ has been prefixed with Ldc_I4_1 (1 byte) let path = Path.Combine(AltCoverTests.dir, "Sample2.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -2924,8 +2902,7 @@ has been prefixed with Ldc_I4_1 (1 byte) let path = Path.Combine(AltCoverTests.dir, "Sample2.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -2953,8 +2930,7 @@ has been prefixed with Ldc_I4_1 (1 byte) let path = Path.Combine(AltCoverTests.dir, "Sample2.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -3025,8 +3001,7 @@ has been prefixed with Ldc_I4_1 (1 byte) let path = Path.Combine(AltCoverTests.dir, "Sample2.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def @@ -3050,8 +3025,7 @@ has been prefixed with Ldc_I4_1 (1 byte) let path = Path.Combine(AltCoverTests.dir, "Sample2.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def let module' = def.MainModule.GetType("N.DU") @@ -3109,8 +3083,7 @@ has been prefixed with Ldc_I4_1 (1 byte) let path = Path.Combine(AltCoverTests.dir, "Sample2.dll") - use def = - AssemblyResolver.ReadAssembly path + use def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def diff --git a/AltCover.Tests/Tests3.fs b/AltCover.Tests/Tests3.fs index b11af47d4..5d5a62b6e 100644 --- a/AltCover.Tests/Tests3.fs +++ b/AltCover.Tests/Tests3.fs @@ -4011,6 +4011,7 @@ module AltCoverTests3 = level )) finally + CommandLine.verbosity <- 0 Main.effectiveMain <- save Output.info <- fst saved Output.error <- snd saved @@ -4219,6 +4220,7 @@ module AltCoverTests3 = Assert.That(result, Is.False) Assert.That(args, Is.EquivalentTo([ "Runner"; "--collect" ] @ q), level)) finally + CommandLine.verbosity <- 0 Main.effectiveMain <- save Output.info <- fst saved Output.error <- snd saved @@ -4457,6 +4459,7 @@ module AltCoverTests3 = write.SetValue(subject, Some(fun (s: string) -> ())) Assert.That(subject.Execute(), Is.False) Assert.That(subject.Extended, Is.Empty) + CommandLine.verbosity <- 0 let template = """ diff --git a/AltCover.Tests/XTests.fs b/AltCover.Tests/XTests.fs index 42640d821..056744c28 100644 --- a/AltCover.Tests/XTests.fs +++ b/AltCover.Tests/XTests.fs @@ -1130,8 +1130,7 @@ module AltCoverXTests = let path = Path.Combine(AltCoverTests.dir, "Sample4.dll") - let def = - AssemblyResolver.ReadAssembly path + let def = AssemblyResolver.ReadAssembly path use recstream = AltCoverTests2.recorderStream () @@ -1189,8 +1188,7 @@ module AltCoverXTests = let path = monoSample1path maybeIgnore (fun () -> path |> File.Exists |> not) - let def = - AssemblyResolver.ReadAssembly path + let def = AssemblyResolver.ReadAssembly path use recstream = AltCoverTests2.recorderStream () @@ -1248,8 +1246,7 @@ module AltCoverXTests = let path = Path.Combine(AltCoverTests.dir, "Sample3.dll") - let def = - AssemblyResolver.ReadAssembly path + let def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def let unique = Guid.NewGuid().ToString() @@ -1289,8 +1286,7 @@ module AltCoverXTests = let path = Path.Combine(AltCoverTests.dir, "Sample4.dll") - let def = - AssemblyResolver.ReadAssembly path + let def = AssemblyResolver.ReadAssembly path ProgramDatabase.readSymbols def From 8c176ffc0b0c4086f02135e280813b28d1ace754 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Sat, 25 Jun 2022 10:09:10 +0100 Subject: [PATCH 67/81] Clear verbose output from tests by default --- AltCover.Tests/Runner.Tests.fs | 3 +++ AltCover.Tests/Tests3.fs | 9 +++++++++ AltCover.Tests/XTests.fs | 1 + 3 files changed, 13 insertions(+) diff --git a/AltCover.Tests/Runner.Tests.fs b/AltCover.Tests/Runner.Tests.fs index ce5b5b219..42ae3c08b 100644 --- a/AltCover.Tests/Runner.Tests.fs +++ b/AltCover.Tests/Runner.Tests.fs @@ -776,6 +776,7 @@ module AltCoverRunnerTests = finally Console.SetOut(fst saved) Console.SetError(snd saved) + Output.verbose <- ignore [] let ShouldHaveExpectedOptions () = @@ -2504,6 +2505,7 @@ module AltCoverRunnerTests = finally Console.SetOut(fst saved) Console.SetError(snd saved) + Output.verbose <- ignore [] let ShouldNoOp () = @@ -2723,6 +2725,7 @@ module AltCoverRunnerTests = Console.SetOut(fst saved) Console.SetError(snd saved) Runner.workingDirectory <- None + Output.verbose <- ignore [] let WriteLeavesExpectedTraces () = diff --git a/AltCover.Tests/Tests3.fs b/AltCover.Tests/Tests3.fs index 5d5a62b6e..be88f8ae7 100644 --- a/AltCover.Tests/Tests3.fs +++ b/AltCover.Tests/Tests3.fs @@ -90,6 +90,7 @@ module AltCoverTests3 = finally Console.SetOut(fst saved) Console.SetError(snd saved) + Output.verbose <- ignore [] let ShouldHaveExpectedOptions () = @@ -2962,6 +2963,7 @@ module AltCoverTests3 = finally Console.SetOut(fst saved) Console.SetError(snd saved) + Output.verbose <- ignore [] let OutputToReallyNewPlaceIsOK () = @@ -3025,6 +3027,7 @@ module AltCoverTests3 = finally Console.SetOut(fst saved) Console.SetError(snd saved) + Output.verbose <- ignore [] let InPlaceToExistingPlaceFails () = @@ -3067,6 +3070,7 @@ module AltCoverTests3 = CoverageParameters.inplace.Value <- false Console.SetOut(fst saved) Console.SetError(snd saved) + Output.verbose <- ignore [] let InPlaceOperationIsAsExpected () = @@ -3144,6 +3148,7 @@ module AltCoverTests3 = CoverageParameters.inplace.Value <- false Console.SetOut(fst saved) Console.SetError(snd saved) + Output.verbose <- ignore [] let ImageLoadResilientPassesThrough () = @@ -3512,6 +3517,7 @@ module AltCoverTests3 = finally Console.SetOut(fst saved) Console.SetError(snd saved) + Output.verbose <- ignore [] let StoresAsExpected () = @@ -3568,6 +3574,7 @@ module AltCoverTests3 = //Assert.That(result, Is.EqualTo(expected)) finally Console.SetOut saved + Output.verbose <- ignore [] let VersionIsAsExpected () = @@ -3608,6 +3615,7 @@ module AltCoverTests3 = ) finally Console.SetOut saved + Output.verbose <- ignore [] let UsageIsAsExpected () = @@ -3647,6 +3655,7 @@ module AltCoverTests3 = ) finally Console.SetError saved + Output.verbose <- ignore #if !NET472 [] diff --git a/AltCover.Tests/XTests.fs b/AltCover.Tests/XTests.fs index 056744c28..756b564d5 100644 --- a/AltCover.Tests/XTests.fs +++ b/AltCover.Tests/XTests.fs @@ -703,6 +703,7 @@ module AltCoverXTests = finally Output.info <- save1 CommandLine.verbosity <- save2 + Output.verbose <- ignore [] let ADotNetDryRunLooksAsExpected () = From e4ce61986bae052d23740588772d103fd11d2e90 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Sat, 25 Jun 2022 10:59:03 +0100 Subject: [PATCH 68/81] Tweak for coverage --- AltCover.Tests/Tests2.fs | 71 ++++++++++++++++++++++++---------------- 1 file changed, 42 insertions(+), 29 deletions(-) diff --git a/AltCover.Tests/Tests2.fs b/AltCover.Tests/Tests2.fs index a39e09edf..bdcd205c6 100644 --- a/AltCover.Tests/Tests2.fs +++ b/AltCover.Tests/Tests2.fs @@ -439,14 +439,29 @@ module AltCoverTests2 = use raw = AssemblyResolver.ReadAssembly where - AssemblyConstants.resolutionTable.Clear() - try Assert.That( raw.MainModule.AssemblyResolver.GetType(), Is.EqualTo typeof ) + // Discover by searching + AssemblyConstants.resolutionTable.Clear() + + raw.MainModule.AssemblyReferences + |> Seq.filter (fun f -> + f.Name.IndexOf("Mono.Cecil.Rocks", StringComparison.Ordinal) + >= 0) + |> Seq.iter (fun f -> + let resolved = + AssemblyResolver.ResolveFromNugetCache () f + + test <@ AssemblyConstants.resolutionTable.Count = 1 @> + test' <@ resolved.IsNotNull @> <| f.ToString()) + + // Discover by searching + AssemblyConstants.resolutionTable.Clear() + raw.MainModule.AssemblyReferences |> Seq.filter (fun f -> f.Name.IndexOf("Mono.Cecil.Rocks", StringComparison.Ordinal) @@ -455,37 +470,41 @@ module AltCoverTests2 = let resolved = raw.MainModule.AssemblyResolver.Resolve(f) - printfn "1 %A" AssemblyConstants.resolutionTable.Keys test' <@ resolved.IsNotNull @> <| f.ToString()) + // Resolve failure + AssemblyConstants.resolutionTable.Clear() + raw.MainModule.AssemblyReferences |> Seq.filter (fun f -> - f.Name.IndexOf("Mono.Cecil.Pdb", StringComparison.Ordinal) + f.Name.IndexOf("Mono.Cecil.Rocks", StringComparison.Ordinal) >= 0) |> Seq.iter (fun f -> f.Version <- System.Version("666.666.666.666") - - printfn "2 %A" AssemblyConstants.resolutionTable.Keys let resolved = AssemblyResolver.ResolveFromNugetCache () f - printfn "3 %A" AssemblyConstants.resolutionTable.Keys + test <@ AssemblyConstants.resolutionTable.Count = 0 @> test' <@ resolved |> isNull @> <| f.ToString()) - let found = - AssemblyConstants.resolutionTable.Keys - |> Seq.toList + // Resolve from cache + AssemblyConstants.resolutionTable.Clear() - found - |> Seq.iter (fun k -> - let matched = - AssemblyConstants.resolutionTable.[k] + raw.MainModule.AssemblyReferences + |> Seq.filter (fun f -> + f.Name.IndexOf("Mono.Cecil.Rocks", StringComparison.Ordinal) + >= 0) + |> Seq.iter (fun f -> + f.Version <- System.Version("666.666.666.666") + AssemblyConstants.resolutionTable.[f.ToString()] <- raw + let resolved = + AssemblyResolver.ResolveFromNugetCache () f - let k2 = - AssemblyNameReference.Parse(k.ToString()) + test <@ AssemblyConstants.resolutionTable.Count = 1 @> + test' <@ resolved = raw @> <| f.ToString()) - k2.Version <- System.Version("666.666.666.666") - AssemblyConstants.resolutionTable.[k2.ToString()] <- matched) + // Also resolve from cache + AssemblyConstants.resolutionTable.Clear() raw.MainModule.AssemblyReferences |> Seq.filter (fun f -> @@ -493,19 +512,12 @@ module AltCoverTests2 = >= 0) |> Seq.iter (fun f -> f.Version <- System.Version("666.666.666.666") - printfn "4 %A" AssemblyConstants.resolutionTable.Keys - + AssemblyConstants.resolutionTable.[f.ToString()] <- raw let resolved = - raw.MainModule.AssemblyResolver.Resolve(f) - printfn "5 %A" AssemblyConstants.resolutionTable.Keys - - test' <@ resolved.IsNotNull @> <| f.ToString() - - let r2 = - AssemblyResolver.ResolveFromNugetCache(f) - printfn "6 %A" AssemblyConstants.resolutionTable.Keys + raw.MainModule.AssemblyResolver.Resolve f - test' <@ r2.IsNotNull @> <| f.ToString()) + test <@ AssemblyConstants.resolutionTable.Count = 1 @> + test' <@ resolved = raw @> <| f.ToString()) finally AssemblyConstants.resolutionTable.Clear() @@ -3545,6 +3557,7 @@ has been prefixed with Ldc_I4_1 (1 byte) ) finally CommandLine.toConsole () + Output.verbose <- ignore CommandLine.verbosity <- 0 Console.SetOut(fst saved) Console.SetError(snd saved) From beb6475a2ec852230a438c756ebbba932140ca40 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Sat, 25 Jun 2022 11:31:12 +0100 Subject: [PATCH 69/81] Update release notes --- ReleaseNotes.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ReleaseNotes.md b/ReleaseNotes.md index 22c36b809..c97dfd47b 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -5,7 +5,8 @@ A. Start with the Quick Start guide : https://github.com/SteveGilham/altcover/wi # 8.3.8xx (Habu series release 14) * [VISUALIZER] Fix off-by-one error in markup for the very last line of the file * [BUGFIX] -- Fake API fix for ZipFile, MethodPoint, SingleVisit, SourceLink to enable their activation -* [BUGFIX] -- work around the behaviour of `dotnet test` with an argument ending `.dll` or `.exe`, directly through API and in docs for direct use. +* [BUGFIX] -- `--dependency` and `/p:AltCoverDependencyList` -- work around the behaviour of `dotnet test` with an argument ending `.dll` or `.exe`, directly through API and in docs for direct use. +* Make explicit dependencies through `--dependency` have priority over other assembly resolution; this allows explicit specification of GAC'd assemblies to be found by .net core AltCover builds in place of the .net core stubs (works around Mono.Cecil issue #863). * Add a `--verbose`option for AltCover, the converse of `-q`. Away from the command line, adds meaning to the `Verbosity` option value `System.Diagnostics.TraceLevel.Verbose`. Currently `Verbose` output shows more of the selection of files for instrumentation, noting when files are excluded from the process. * Add a matching field, `ILoggingOptions.Verbose`, to the API as a sink to capture verbose output. * Other minor build process asjustments for SDK 6.0.300/F# 6.0.4 and later From fb42a130098bace5a40a132bcfbf78e42349c3ba Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Sat, 25 Jun 2022 18:22:45 +0100 Subject: [PATCH 70/81] Notes --- AltCover.Engine/ProgramDatabase.fs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/AltCover.Engine/ProgramDatabase.fs b/AltCover.Engine/ProgramDatabase.fs index ee992a9bb..5103808c8 100644 --- a/AltCover.Engine/ProgramDatabase.fs +++ b/AltCover.Engine/ProgramDatabase.fs @@ -117,6 +117,7 @@ module internal ProgramDatabase = else // windows native + // new PdbFileHeader() let magic = b.ReadBytes(28) let pageSize = b.ReadInt32() let freePageMap = b.ReadInt32() @@ -161,12 +162,14 @@ module internal ProgramDatabase = streamData |> Seq.iter (printfn "streamData %A") - // Guid starts 12 bytes into the name index //MsfDirectory dir = new MsfDirectory(reader, head, bits); - //DbiModuleInfo[] modules = null; - //Dictionary sourceCache = new Dictionary(); + // => DataStream type + + ////DbiModuleInfo[] modules = null; + ////Dictionary sourceCache = new Dictionary(); //dir.streams[1].Read(reader, bits); //Dictionary nameIndex = LoadNameIndex(bits, out pdbInfo.Age, out pdbInfo.Guid); + // Guid starts 12 bytes into the name index ok From 1f0308b730ae91c6b5d860773093e1a69df468d9 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Sat, 25 Jun 2022 21:02:10 +0100 Subject: [PATCH 71/81] This works by reimplementing w/reflection the crucial bit of native pdb support --- AltCover.Engine/Abstraction.fs | 15 +----- AltCover.Engine/CommandLine.fs | 2 +- AltCover.Engine/Output.fs | 14 ++++++ AltCover.Engine/ProgramDatabase.fs | 79 +++++++++++------------------- AltCover.Tests/Expecto.fs | 1 + AltCover.Tests/Tests2.fs | 4 +- 6 files changed, 47 insertions(+), 68 deletions(-) diff --git a/AltCover.Engine/Abstraction.fs b/AltCover.Engine/Abstraction.fs index 84f8cdedb..705c17535 100644 --- a/AltCover.Engine/Abstraction.fs +++ b/AltCover.Engine/Abstraction.fs @@ -8,17 +8,4 @@ module Abstraction = // abstract away selection based on OS dependencies and other environment constants let Maybe predicate (result: 'TResult) (alternate: 'TResult) = - if predicate then result else alternate - - let DoPathOperation (f: unit -> 'a) (handle: exn -> 'a) = - try - f () - with - | x when - (x :? ArgumentException) - || (x :? NotSupportedException) - || (x :? IOException) - || (x :? System.Security.SecurityException) - || (x :? UnauthorizedAccessException) - -> - handle (x) \ No newline at end of file + if predicate then result else alternate \ No newline at end of file diff --git a/AltCover.Engine/CommandLine.fs b/AltCover.Engine/CommandLine.fs index efd414f93..c3d39a9ba 100644 --- a/AltCover.Engine/CommandLine.fs +++ b/AltCover.Engine/CommandLine.fs @@ -187,7 +187,7 @@ module internal CommandLine = exceptions <- e :: exceptions let internal doPathOperation (f: unit -> 'a) (defaultValue: 'a) store = - Abstraction.DoPathOperation f (fun x -> + PathOperation.DoPathOperation f (fun x -> x |> (logException store) defaultValue) diff --git a/AltCover.Engine/Output.fs b/AltCover.Engine/Output.fs index 4f7976119..b43e94695 100644 --- a/AltCover.Engine/Output.fs +++ b/AltCover.Engine/Output.fs @@ -8,6 +8,20 @@ open System.Resources open AltCover.Shared open Mono.Options +module PathOperation = + let DoPathOperation (f: unit -> 'a) (handle: exn -> 'a) = + try + f () + with + | x when + (x :? ArgumentException) + || (x :? NotSupportedException) + || (x :? IOException) + || (x :? System.Security.SecurityException) + || (x :? UnauthorizedAccessException) + -> + handle (x) + [] diff --git a/AltCover.Engine/ProgramDatabase.fs b/AltCover.Engine/ProgramDatabase.fs index 5103808c8..cba96735c 100644 --- a/AltCover.Engine/ProgramDatabase.fs +++ b/AltCover.Engine/ProgramDatabase.fs @@ -11,6 +11,7 @@ open Mono.Cecil.Pdb open Mono.Cecil.Rocks open AltCover.Shared +open System.Reflection [] module internal ProgramDatabase = @@ -117,61 +118,37 @@ module internal ProgramDatabase = else // windows native - // new PdbFileHeader() - let magic = b.ReadBytes(28) - let pageSize = b.ReadInt32() - let freePageMap = b.ReadInt32() - let pagesUsed = b.ReadInt32() - let directorySize = b.ReadInt32() - let zero = b.ReadInt32() - - let ok = - zero = 0 && - start = 0x7263694d && - magic = [| 111uy; 115uy; 111uy; 102uy; 116uy; 32uy; - 67uy; 47uy; 67uy; 43uy; 43uy; 32uy; 77uy; 83uy; 70uy; 32uy; - 55uy; 46uy; 48uy; 48uy; 13uy; 10uy; 26uy; 68uy; 83uy; 0uy; - 0uy; 0uy |] - - printfn "native ok %A" ok - - let directoryPages = ((directorySize + pageSize - 1) / pageSize * 4 + pageSize - 1) / pageSize - printfn "pageSize %A directorySize %A" pageSize directorySize - let directoryRoot = - {1..directoryPages} - |> Seq.map (fun _ -> b.ReadInt32()) - |> Seq.toArray + // subset internal static PdbInfo LoadFunctions(Stream read) + let binding = BindingFlags.NonPublic ||| BindingFlags.Instance + b.BaseStream.Seek((int64)0, SeekOrigin.Begin) |> ignore - directoryRoot - |> Seq.iter (printfn "directoryRoot %A") - - let pages = (directorySize + pageSize - 1)/pageSize - let pagesPerPage = pageSize / 4 - let mutable pagesToGo = pages - let streamData = - directoryRoot - |> Seq.map (fun page -> b.BaseStream.Seek((int64)(page * pageSize), SeekOrigin.Begin) |> ignore - let pagesInThisPage = Math.Min (pagesToGo, pagesPerPage) - pagesToGo <- pagesToGo - pagesPerPage - {1..pagesInThisPage} - |> Seq.map (fun _ -> b.ReadInt32()) - |> Seq.toArray) - |> Seq.toArray - |> Array.concat + let nreader = typeof + let bitaccess = nreader.Assembly.GetType("Microsoft.Cci.Pdb.BitAccess") + let makeba = bitaccess.GetConstructor(binding, null, [| typeof |], [||]) + let bits = makeba.Invoke([| 65536 :> obj |]) + + let pdbheader = nreader.Assembly.GetType("Microsoft.Cci.Pdb.PdbFileHeader") + let makeph = pdbheader.GetConstructor(binding, null, [| typeof; bits.GetType() |], [||]) + let head = makeph.Invoke([| b.BaseStream; bits |]) + + let pageSize = pdbheader.GetField("pageSize", binding).GetValue(head) :?> int + + let pdbreader = nreader.Assembly.GetType("Microsoft.Cci.Pdb.PdbReader") + let makereader = pdbreader.GetConstructor(binding, null, [| typeof; typeof |], [||]) + let reader = makereader.Invoke([| b.BaseStream; pageSize|]) - streamData - |> Seq.iter (printfn "streamData %A") + let msfdirectory = nreader.Assembly.GetType("Microsoft.Cci.Pdb.MsfDirectory") + let makedir = msfdirectory.GetConstructor(binding, null, [| reader.GetType(); head.GetType(); bits.GetType() |], [||]) + let dir = makedir.Invoke([| reader; head; bits |]) + let stream = msfdirectory.GetField("streams", binding).GetValue(dir) :?> System.Collections.IEnumerable + |> Seq.cast |> Seq.skip 1 |> Seq.head - //MsfDirectory dir = new MsfDirectory(reader, head, bits); - // => DataStream type + let page0 = stream.GetType().GetField("pages", binding).GetValue(stream) :?> int array |> Seq.head - ////DbiModuleInfo[] modules = null; - ////Dictionary sourceCache = new Dictionary(); - //dir.streams[1].Read(reader, bits); - //Dictionary nameIndex = LoadNameIndex(bits, out pdbInfo.Age, out pdbInfo.Guid); - // Guid starts 12 bytes into the name index + // Position stream 12 bytes into the page + b.BaseStream.Seek((int64)(page0 * pageSize + 12), SeekOrigin.Begin) |> ignore - ok + true // or would have thrown let symbolMatch tokens (path: String) = use s = @@ -181,7 +158,7 @@ module internal ProgramDatabase = path) |> File.OpenRead - Abstraction.DoPathOperation + PathOperation.DoPathOperation (fun () -> use b = new BinaryReader(s, System.Text.Encoding.UTF8, true) diff --git a/AltCover.Tests/Expecto.fs b/AltCover.Tests/Expecto.fs index 200daee43..4743c43dc 100644 --- a/AltCover.Tests/Expecto.fs +++ b/AltCover.Tests/Expecto.fs @@ -280,6 +280,7 @@ module ExpectoTestManifest = "Tests.ShouldGetEmbeddedPdbFromImage" Tests.AltCoverTests.ShouldGetNoMdbFromMonoImage, "Tests.ShouldGetNoMdbFromMonoImage" + Tests.AltCoverTests.ShouldGetGUIDfromNativePdb, "Tests.ShouldGetGUIDfromNativePdb" Tests.AltCoverTests.ShouldGetPdbWithFallback, "Tests.ShouldGetPdbWithFallback" Tests.AltCoverTests.ShouldGetForeignPdbWithFallback, "Tests.ShouldGetForeignPdbWithFallback" diff --git a/AltCover.Tests/Tests2.fs b/AltCover.Tests/Tests2.fs index 8e6c91fc5..3cbaf9ce8 100644 --- a/AltCover.Tests/Tests2.fs +++ b/AltCover.Tests/Tests2.fs @@ -3813,7 +3813,7 @@ has been prefixed with Ldc_I4_1 (1 byte) lines.[3] .Trim() .Replace("Line+I.doPath", "Line.I.doPath"), - Does.StartWith("at AltCover.Abstraction.DoPathOperation") + Does.StartWith("at AltCover.PathOperation.DoPathOperation") ) Assert.That(lines |> List.skip 4, Is.Not.Empty) @@ -3934,7 +3934,7 @@ has been prefixed with Ldc_I4_1 (1 byte) lines.[3] .Trim() .Replace("Line+I.doPath", "Line.I.doPath"), - Does.StartWith("at AltCover.Abstraction.DoPathOperation") + Does.StartWith("at AltCover.PathOperation.DoPathOperation") ) Assert.That(lines |> List.skip 4, Is.Not.Empty) From 50a03ec56d8be8df0fa122de92f44aa122a6a8d4 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Sat, 25 Jun 2022 21:53:28 +0100 Subject: [PATCH 72/81] First pass tidying --- AltCover.Engine/ProgramDatabase.fs | 183 +++++++++++++++++------------ AltCover.Tests/Tests.fs | 22 +++- AltCover.Tests/Tests2.fs | 3 + 3 files changed, 126 insertions(+), 82 deletions(-) diff --git a/AltCover.Engine/ProgramDatabase.fs b/AltCover.Engine/ProgramDatabase.fs index cba96735c..efd1d4a2c 100644 --- a/AltCover.Engine/ProgramDatabase.fs +++ b/AltCover.Engine/ProgramDatabase.fs @@ -82,7 +82,9 @@ module internal ProgramDatabase = && minor = 0 let checkPdb (b: BinaryReader) = + let stream = b.BaseStream let start = b.ReadInt32() + if start = 0x424a5342 // portable format then let major = b.ReadInt16() @@ -92,78 +94,103 @@ module internal ProgramDatabase = let version = b.ReadBytes(versionSize) let flags = b.ReadInt16() let streams = b.ReadInt16() |> int // # of stream headers + let headers = - {1..streams} - |> Seq.map (fun _ -> let offset = b.ReadInt32() - let size = b.ReadInt32() - let name = Seq.initInfinite id - |> Seq.map (fun _ -> b.ReadInt32()) - |> Seq.takeWhile (fun x -> x > 0xffffff) - |> Seq.toArray - (offset, size, name)) + { 1..streams } + |> Seq.map (fun _ -> + let offset = b.ReadInt32() + let size = b.ReadInt32() + + let name = + Seq.initInfinite id + |> Seq.map (fun _ -> b.ReadInt32()) + |> Seq.takeWhile (fun x -> x > 0xffffff) + |> Seq.toArray + + (offset, size, name)) |> Seq.toArray // don't expect any other #Pdb??? streams - let guid = headers |> Seq.tryFind (fun (_, _, x) -> x = [| 0x62645023 |] ) + let guid = + headers + |> Seq.tryFind (fun (_, _, x) -> x = [| 0x62645023 |]) + let ok = guid.IsSome - if ok - then - let (o, _, _ ) = guid.Value - b.BaseStream.Seek(int64 o, SeekOrigin.Begin) |> ignore + if ok then + let (o, _, _) = guid.Value + stream.Seek(int64 o, SeekOrigin.Begin) |> ignore - ok && - reserved = 0 && - (int flags) = 0 + ok && reserved = 0 && (int flags) = 0 else // windows native // subset internal static PdbInfo LoadFunctions(Stream read) - let binding = BindingFlags.NonPublic ||| BindingFlags.Instance - b.BaseStream.Seek((int64)0, SeekOrigin.Begin) |> ignore + let binding = + BindingFlags.NonPublic ||| BindingFlags.Instance + + stream.Seek((int64) 0, SeekOrigin.Begin) |> ignore + + let nreader = + typeof.Assembly + + let construct name parameters = + let classtype = nreader.GetType name + let constructor = classtype.GetConstructor(binding, null, parameters |> Array.map (fun x -> x.GetType()), [||]) + let instance = constructor.Invoke parameters + (classtype, instance) + + let bitaccess = + nreader.GetType() - let nreader = typeof - let bitaccess = nreader.Assembly.GetType("Microsoft.Cci.Pdb.BitAccess") - let makeba = bitaccess.GetConstructor(binding, null, [| typeof |], [||]) - let bits = makeba.Invoke([| 65536 :> obj |]) + let makeba = + bitaccess.GetConstructor(binding, null, [| typeof |], [||]) - let pdbheader = nreader.Assembly.GetType("Microsoft.Cci.Pdb.PdbFileHeader") - let makeph = pdbheader.GetConstructor(binding, null, [| typeof; bits.GetType() |], [||]) - let head = makeph.Invoke([| b.BaseStream; bits |]) + let _, bits = construct "Microsoft.Cci.Pdb.BitAccess" [| 65536 :> obj |] + let pdbheader, head = construct "Microsoft.Cci.Pdb.PdbFileHeader" [| stream; bits |] - let pageSize = pdbheader.GetField("pageSize", binding).GetValue(head) :?> int + let field (t: Type) name instance = + t.GetField(name, binding).GetValue(instance) - let pdbreader = nreader.Assembly.GetType("Microsoft.Cci.Pdb.PdbReader") - let makereader = pdbreader.GetConstructor(binding, null, [| typeof; typeof |], [||]) - let reader = makereader.Invoke([| b.BaseStream; pageSize|]) + let pageSize = (field pdbheader "pageSize" head) :?> int - let msfdirectory = nreader.Assembly.GetType("Microsoft.Cci.Pdb.MsfDirectory") - let makedir = msfdirectory.GetConstructor(binding, null, [| reader.GetType(); head.GetType(); bits.GetType() |], [||]) - let dir = makedir.Invoke([| reader; head; bits |]) - let stream = msfdirectory.GetField("streams", binding).GetValue(dir) :?> System.Collections.IEnumerable - |> Seq.cast |> Seq.skip 1 |> Seq.head + let _, reader = construct "Microsoft.Cci.Pdb.PdbReader" [| stream; pageSize |] - let page0 = stream.GetType().GetField("pages", binding).GetValue(stream) :?> int array |> Seq.head + let msfdirectory, dir = construct "Microsoft.Cci.Pdb.MsfDirectory" [| reader; head; bits |] + + let datastream = + (field msfdirectory "streams" dir) + :?> System.Collections.IEnumerable + |> Seq.cast + |> Seq.skip 1 + |> Seq.head + + let page0 = + (field (datastream.GetType()) "pages" datastream) + :?> int array + |> Seq.head // Position stream 12 bytes into the page - b.BaseStream.Seek((int64)(page0 * pageSize + 12), SeekOrigin.Begin) |> ignore + stream.Seek((int64) (page0 * pageSize + 12), SeekOrigin.Begin) + |> ignore true // or would have thrown let symbolMatch tokens (path: String) = + let isNotPdb = + (Path.GetExtension path) != ".pdb" + use s = - (if (Path.GetExtension path) <> ".pdb" then - path + ".mdb" - else - path) + (if isNotPdb then path + ".mdb" else path) |> File.OpenRead PathOperation.DoPathOperation (fun () -> use b = new BinaryReader(s, System.Text.Encoding.UTF8, true) + let (ok, guids) = - if (Path.GetExtension path) <> ".pdb" then + if isNotPdb then (checkMdb b, [ fst tokens ]) else (checkPdb b, snd tokens) @@ -174,8 +201,7 @@ module internal ProgramDatabase = sprintf "Symbol file %s GUID = %A" path g |> Output.verbose - ok - && guids |> Seq.exists (fun t -> t = g)) + ok && guids |> Seq.exists (fun t -> t = g)) (fun _ -> false) // "Public" API @@ -183,40 +209,45 @@ module internal ProgramDatabase = let tokens = I.getAssemblyTokens assembly (tokens, - Some assembly.MainModule - |> Option.filter (fun x -> x.HasDebugHeader) - |> Option.map (fun x -> x.GetDebugHeader()) - |> Option.filter (fun x -> x.HasEntries) - |> Option.bind (fun x -> - x.Entries - |> Seq.filter (fun e -> e.Data.Length > 0x18 && - e.Directory.Type = ImageDebugType.CodeView) - |> Seq.map (fun x -> x.Data) - //|> Seq.filter (fun x -> x.Length > 0x18) - |> Seq.map (fun x -> - let g = x |> Array.skip 4 |> Array.take 16 |> System.Guid - sprintf "Assembly symbol GUID = %A mvid = %A" g assembly.MainModule.Mvid - |> Output.verbose - let s = x - |> Seq.skip 0x18 // size of the debug header - |> Seq.takeWhile (fun x -> x <> byte 0) - |> Seq.toArray - |> System.Text.Encoding.UTF8.GetString - s, g) - |> Seq.filter (fun (s, g) -> s.Length > 0) - |> Seq.filter (fun (s, g) -> - // printfn "Path to check %A for %A" s assembly - ([ - Path.IsPathRooted + Some assembly.MainModule + |> Option.filter (fun x -> x.HasDebugHeader) + |> Option.map (fun x -> x.GetDebugHeader()) + |> Option.filter (fun x -> x.HasEntries) + |> Option.bind (fun x -> + x.Entries + |> Seq.filter (fun e -> + e.Data.Length > 0x18 + && e.Directory.Type = ImageDebugType.CodeView) + |> Seq.map (fun x -> x.Data) + //|> Seq.filter (fun x -> x.Length > 0x18) + |> Seq.map (fun x -> + let g = + x |> Array.skip 4 |> Array.take 16 |> System.Guid + + sprintf "Assembly symbol GUID = %A mvid = %A" g assembly.MainModule.Mvid + |> Output.verbose + + let s = + x + |> Seq.skip 0x18 // size of the debug header + |> Seq.takeWhile (fun x -> x <> byte 0) + |> Seq.toArray + |> System.Text.Encoding.UTF8.GetString + + s, g) + |> Seq.filter (fun (s, g) -> s.Length > 0) + |> Seq.filter (fun (s, g) -> + // printfn "Path to check %A for %A" s assembly + ([ Path.IsPathRooted File.Exists - I.symbolMatch tokens - ] - |> List.forall(fun f -> f s)) - || (s == (assembly.Name.Name + ".pdb") - && (assembly |> I.getEmbeddedPortablePdbEntry) - .IsNotNull)) - |> Seq.map fst - |> Seq.tryHead)) + I.symbolMatch tokens ] + |> List.forall (fun f -> f s)) + || (s == (assembly.Name.Name + ".pdb") + && (assembly |> I.getEmbeddedPortablePdbEntry) + .IsNotNull)) + |> Seq.map fst + |> Seq.tryHead)) + let internal getPdbWithFallback (assembly: AssemblyDefinition) = let path = assembly.MainModule.FileName diff --git a/AltCover.Tests/Tests.fs b/AltCover.Tests/Tests.fs index c25f03337..e1a7c94b2 100644 --- a/AltCover.Tests/Tests.fs +++ b/AltCover.Tests/Tests.fs @@ -177,9 +177,14 @@ module AltCoverTests = | Some name -> printfn "%s => %s %s" f name (name |> Path.GetDirectoryName) - if name |> Path.GetDirectoryName |> String.IsNullOrEmpty |> not - then - Assert.That (AltCover.ProgramDatabase.I.symbolMatch tokens name, f |> Path.GetFileName) + if name + |> Path.GetDirectoryName + |> String.IsNullOrEmpty + |> not then + Assert.That( + AltCover.ProgramDatabase.I.symbolMatch tokens name, + f |> Path.GetFileName + ) //Assert.That(f |> Path.GetFileName, Is.Not.EqualTo "Sample2.dll", f) let probe = Path.ChangeExtension(f, ".pdb") let file = FileInfo(probe) @@ -195,15 +200,20 @@ module AltCoverTests = let ShouldGetGUIDfromNativePdb () = let here = System.Reflection.Assembly.GetExecutingAssembly() + let nativeName = here.GetManifestResourceNames() |> Seq.find (fun n -> n.EndsWith("native.pdb", StringComparison.Ordinal)) + let native = here.GetManifestResourceStream(nativeName) use b = new BinaryReader(native) - let checkFormat = ProgramDatabase.I.checkPdb b - Assert.That (checkFormat, Is.True, "bad format") + + let checkFormat = + ProgramDatabase.I.checkPdb b + + Assert.That(checkFormat, Is.True, "bad format") let buffer = b.ReadBytes(16) let g = Guid buffer @@ -220,7 +230,7 @@ module AltCoverTests = let (tokens, pdb) = AltCover.ProgramDatabase.getPdbFromImage image - match pdb with // embedded pdb + match pdb with // embedded pdb | Some name -> Assert.That(name, Is.EqualTo "Sample8.pdb", target + " -> " + name) [] diff --git a/AltCover.Tests/Tests2.fs b/AltCover.Tests/Tests2.fs index 3cbaf9ce8..e7a83762b 100644 --- a/AltCover.Tests/Tests2.fs +++ b/AltCover.Tests/Tests2.fs @@ -481,6 +481,7 @@ module AltCoverTests2 = >= 0) |> Seq.iter (fun f -> f.Version <- System.Version("666.666.666.666") + let resolved = AssemblyResolver.ResolveFromNugetCache () f @@ -497,6 +498,7 @@ module AltCoverTests2 = |> Seq.iter (fun f -> f.Version <- System.Version("666.666.666.666") AssemblyConstants.resolutionTable.[f.ToString()] <- raw + let resolved = AssemblyResolver.ResolveFromNugetCache () f @@ -513,6 +515,7 @@ module AltCoverTests2 = |> Seq.iter (fun f -> f.Version <- System.Version("666.666.666.666") AssemblyConstants.resolutionTable.[f.ToString()] <- raw + let resolved = raw.MainModule.AssemblyResolver.Resolve f From 81d98060739ccd8ba9d0953636bbac3664bd647e Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Sat, 25 Jun 2022 22:16:21 +0100 Subject: [PATCH 73/81] Static analysis tidying --- AltCover.Engine/Output.fs | 4 ++-- AltCover.Engine/ProgramDatabase.fs | 14 +++++++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/AltCover.Engine/Output.fs b/AltCover.Engine/Output.fs index b43e94695..1c3256ec4 100644 --- a/AltCover.Engine/Output.fs +++ b/AltCover.Engine/Output.fs @@ -9,9 +9,9 @@ open AltCover.Shared open Mono.Options module PathOperation = - let DoPathOperation (f: unit -> 'a) (handle: exn -> 'a) = + let DoPathOperation (operation: unit -> 'TAny) (handle: exn -> 'TAny) = try - f () + operation () with | x when (x :? ArgumentException) diff --git a/AltCover.Engine/ProgramDatabase.fs b/AltCover.Engine/ProgramDatabase.fs index efd1d4a2c..f13451444 100644 --- a/AltCover.Engine/ProgramDatabase.fs +++ b/AltCover.Engine/ProgramDatabase.fs @@ -303,4 +303,16 @@ module internal ProgramDatabase = |> Seq.collect (fun m -> m.DebugInformation.SequencePoints) |> Seq.map (fun s -> s.Document) |> Seq.distinctBy (fun d -> d.Url) - |> Seq.toList \ No newline at end of file + |> Seq.toList + +[] +[] +() \ No newline at end of file From 2ad8e1c7d451baf5c7cd883d685a045960fd9442 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Sun, 26 Jun 2022 10:51:04 +0100 Subject: [PATCH 74/81] Delint --- AltCover.Engine/ProgramDatabase.fs | 58 ++++++++++++++++++------------ 1 file changed, 35 insertions(+), 23 deletions(-) diff --git a/AltCover.Engine/ProgramDatabase.fs b/AltCover.Engine/ProgramDatabase.fs index f13451444..df370c3bc 100644 --- a/AltCover.Engine/ProgramDatabase.fs +++ b/AltCover.Engine/ProgramDatabase.fs @@ -56,6 +56,9 @@ module internal ProgramDatabase = ||| ((int bytes[2]) <<< 16) ||| ((int bytes[3]) <<< 24) + let extractGuid = + (Array.skip 4) >> (Array.take 16) >> System.Guid + let getAssemblyTokens (assembly: AssemblyDefinition) = let m = assembly.MainModule @@ -66,7 +69,7 @@ module internal ProgramDatabase = && e.Directory.Type = ImageDebugType.CodeView) |> Seq.map (fun x -> x.Data) |> Seq.filter (fun x -> lead x = 1396986706) - |> Seq.map (fun x -> x |> Array.skip 4 |> Array.take 16 |> System.Guid) + |> Seq.map extractGuid |> Seq.toList (m.Mvid, t) @@ -135,39 +138,50 @@ module internal ProgramDatabase = typeof.Assembly let construct name parameters = - let classtype = nreader.GetType name - let constructor = classtype.GetConstructor(binding, null, parameters |> Array.map (fun x -> x.GetType()), [||]) + let classtype = nreader.GetType name // line for static analysis + + let constructor = + classtype.GetConstructor( + binding, + null, + parameters |> Array.map (fun x -> x.GetType()), + [||] + ) + let instance = constructor.Invoke parameters (classtype, instance) - let bitaccess = - nreader.GetType() + let bitaccess = nreader.GetType() let makeba = bitaccess.GetConstructor(binding, null, [| typeof |], [||]) - let _, bits = construct "Microsoft.Cci.Pdb.BitAccess" [| 65536 :> obj |] - let pdbheader, head = construct "Microsoft.Cci.Pdb.PdbFileHeader" [| stream; bits |] + let _, bits = + construct "Microsoft.Cci.Pdb.BitAccess" [| 65536 :> obj |] + + let pdbheader, head = + construct "Microsoft.Cci.Pdb.PdbFileHeader" [| stream; bits |] let field (t: Type) name instance = t.GetField(name, binding).GetValue(instance) - let pageSize = (field pdbheader "pageSize" head) :?> int + let pageSize = + (field pdbheader "pageSize" head) :?> int - let _, reader = construct "Microsoft.Cci.Pdb.PdbReader" [| stream; pageSize |] + let _, reader = + construct "Microsoft.Cci.Pdb.PdbReader" [| stream; pageSize |] - let msfdirectory, dir = construct "Microsoft.Cci.Pdb.MsfDirectory" [| reader; head; bits |] + let msfdirectory, dir = + construct "Microsoft.Cci.Pdb.MsfDirectory" [| reader; head; bits |] let datastream = - (field msfdirectory "streams" dir) - :?> System.Collections.IEnumerable + (field msfdirectory "streams" dir) :?> System.Collections.IEnumerable |> Seq.cast |> Seq.skip 1 |> Seq.head let page0 = - (field (datastream.GetType()) "pages" datastream) - :?> int array + (field (datastream.GetType()) "pages" datastream) :?> int array |> Seq.head // Position stream 12 bytes into the page @@ -218,11 +232,9 @@ module internal ProgramDatabase = |> Seq.filter (fun e -> e.Data.Length > 0x18 && e.Directory.Type = ImageDebugType.CodeView) - |> Seq.map (fun x -> x.Data) - //|> Seq.filter (fun x -> x.Length > 0x18) - |> Seq.map (fun x -> - let g = - x |> Array.skip 4 |> Array.take 16 |> System.Guid + |> Seq.map (fun entry -> + let x = entry.Data + let g = x |> I.extractGuid sprintf "Assembly symbol GUID = %A mvid = %A" g assembly.MainModule.Mvid |> Output.verbose @@ -307,12 +319,12 @@ module internal ProgramDatabase = [] [] () \ No newline at end of file From c37e589355c2de49c6fdd1eb5eddeb055262bf48 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Sun, 26 Jun 2022 12:38:44 +0100 Subject: [PATCH 75/81] Test failure case --- AltCover.Engine/ProgramDatabase.fs | 14 +++++++------- AltCover.Tests/Tests.fs | 10 +++++++--- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/AltCover.Engine/ProgramDatabase.fs b/AltCover.Engine/ProgramDatabase.fs index df370c3bc..608c5e2f2 100644 --- a/AltCover.Engine/ProgramDatabase.fs +++ b/AltCover.Engine/ProgramDatabase.fs @@ -191,15 +191,15 @@ module internal ProgramDatabase = true // or would have thrown let symbolMatch tokens (path: String) = - let isNotPdb = - (Path.GetExtension path) != ".pdb" - - use s = - (if isNotPdb then path + ".mdb" else path) - |> File.OpenRead - PathOperation.DoPathOperation (fun () -> + let isNotPdb = + (Path.GetExtension path) != ".pdb" + + use s = + (if isNotPdb then path + ".mdb" else path) + |> File.OpenRead + use b = new BinaryReader(s, System.Text.Encoding.UTF8, true) diff --git a/AltCover.Tests/Tests.fs b/AltCover.Tests/Tests.fs index e1a7c94b2..c59b119c3 100644 --- a/AltCover.Tests/Tests.fs +++ b/AltCover.Tests/Tests.fs @@ -177,14 +177,18 @@ module AltCoverTests = | Some name -> printfn "%s => %s %s" f name (name |> Path.GetDirectoryName) - if name + let seperatePdb = + name |> Path.GetDirectoryName |> String.IsNullOrEmpty - |> not then - Assert.That( + |> not + + Assert.That( AltCover.ProgramDatabase.I.symbolMatch tokens name, + Is.EqualTo seperatePdb, f |> Path.GetFileName ) + //Assert.That(f |> Path.GetFileName, Is.Not.EqualTo "Sample2.dll", f) let probe = Path.ChangeExtension(f, ".pdb") let file = FileInfo(probe) From 84d2bd9fc5be3c3f5bcfd470ac153079ad09a77e Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Sun, 26 Jun 2022 13:56:21 +0100 Subject: [PATCH 76/81] Tidying up --- AltCover.Engine/ProgramDatabase.fs | 2 +- AltCover.PowerShell/Command.fs | 2 +- AltCover.Tests/Runner.Tests.fs | 1 + Build/targets.fsx | 4 ++-- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/AltCover.Engine/ProgramDatabase.fs b/AltCover.Engine/ProgramDatabase.fs index 608c5e2f2..3239e9c8c 100644 --- a/AltCover.Engine/ProgramDatabase.fs +++ b/AltCover.Engine/ProgramDatabase.fs @@ -137,7 +137,7 @@ module internal ProgramDatabase = let nreader = typeof.Assembly - let construct name parameters = + let construct name parameters = // memoize?? let classtype = nreader.GetType name // line for static analysis let constructor = diff --git a/AltCover.PowerShell/Command.fs b/AltCover.PowerShell/Command.fs index dd86e97a3..9ddce0ce4 100644 --- a/AltCover.PowerShell/Command.fs +++ b/AltCover.PowerShell/Command.fs @@ -594,7 +594,7 @@ type InvokeAltCoverCommand() = member val SummaryFormat: Summary array = [||] with get, set /// - /// Selects output level of the command + /// Selects output level of the command. Each level writes to the matching PowerShell Write-[Level] channel /// [ let baseArgs = [ "--noheader" "--work=." + "--labels=All" "--result=./_Reports/JustUnitTestReport.xml" Path.getFullName "_Binaries/AltCover.Api.Tests/Debug+AnyCPU/net472/AltCover.Api.Tests.dll" Path.getFullName "_Binaries/AltCover.Tests/Debug+AnyCPU/net472/AltCover.Tests.dll" @@ -6921,7 +6922,6 @@ _Target "Issue156" (fun _ -> Shell.mkdir folder Actions.CleanDir folder) - // AOB _Target "MakeDocumentation" (fun _ -> From 2f8d65d4da533a2b0f4dd3e88d8a3a6f4fc60e16 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Sun, 26 Jun 2022 16:26:30 +0100 Subject: [PATCH 77/81] More release notes --- ReleaseNotes.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ReleaseNotes.md b/ReleaseNotes.md index c97dfd47b..57cc31422 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -5,9 +5,10 @@ A. Start with the Quick Start guide : https://github.com/SteveGilham/altcover/wi # 8.3.8xx (Habu series release 14) * [VISUALIZER] Fix off-by-one error in markup for the very last line of the file * [BUGFIX] -- Fake API fix for ZipFile, MethodPoint, SingleVisit, SourceLink to enable their activation -* [BUGFIX] -- `--dependency` and `/p:AltCoverDependencyList` -- work around the behaviour of `dotnet test` with an argument ending `.dll` or `.exe`, directly through API and in docs for direct use. -* Make explicit dependencies through `--dependency` have priority over other assembly resolution; this allows explicit specification of GAC'd assemblies to be found by .net core AltCover builds in place of the .net core stubs (works around Mono.Cecil issue #863). -* Add a `--verbose`option for AltCover, the converse of `-q`. Away from the command line, adds meaning to the `Verbosity` option value `System.Diagnostics.TraceLevel.Verbose`. Currently `Verbose` output shows more of the selection of files for instrumentation, noting when files are excluded from the process. +* [BUGFIX] -- Issue #156: `--dependency` and `/p:AltCoverDependencyList` -- work around the behaviour of `dotnet test` with an argument ending `.dll` or `.exe`, directly through API and in docs for direct use. +* [BUGFIX] -- Issue #156: Make explicit dependencies through `--dependency` have priority over other assembly resolution. This works around a Mono.Cecil misfeature (Mono.Cecil issue #863) where the `netstandard2.0` Cecil binaries do not consider the GAC for Framework system assemblies, but instead will find stubs in `dotnet/shared/Microsoft.NETCore.App` for e.g. WPF related assemblies +* [BUGFIX] -- Improve selection of non-embedded symbol files (between location in assembly debug header, the same directory as the assembly and any `--symbolDirectory` values) to avoid symbol mismatch when there are multiple possible files on offer +* Add a `--verbose`option for AltCover, the converse of `-q`. Away from the command line, adds meaning to the `Verbosity` option value `System.Diagnostics.TraceLevel.Verbose`. Currently `Verbose` output shows more of the selection of files for instrumentation, noting when files are excluded from the process, symbol file selection etc. * Add a matching field, `ILoggingOptions.Verbose`, to the API as a sink to capture verbose output. * Other minor build process asjustments for SDK 6.0.300/F# 6.0.4 and later From 7984b02e44e7dfcc34ae3ddc3336bc0fad359b97 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Mon, 27 Jun 2022 11:09:12 +0100 Subject: [PATCH 78/81] Expand on release notes --- ReleaseNotes.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ReleaseNotes.md b/ReleaseNotes.md index 57cc31422..83cc57d0f 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -4,13 +4,13 @@ A. Start with the Quick Start guide : https://github.com/SteveGilham/altcover/wi # 8.3.8xx (Habu series release 14) * [VISUALIZER] Fix off-by-one error in markup for the very last line of the file -* [BUGFIX] -- Fake API fix for ZipFile, MethodPoint, SingleVisit, SourceLink to enable their activation -* [BUGFIX] -- Issue #156: `--dependency` and `/p:AltCoverDependencyList` -- work around the behaviour of `dotnet test` with an argument ending `.dll` or `.exe`, directly through API and in docs for direct use. -* [BUGFIX] -- Issue #156: Make explicit dependencies through `--dependency` have priority over other assembly resolution. This works around a Mono.Cecil misfeature (Mono.Cecil issue #863) where the `netstandard2.0` Cecil binaries do not consider the GAC for Framework system assemblies, but instead will find stubs in `dotnet/shared/Microsoft.NETCore.App` for e.g. WPF related assemblies +* [BUGFIX] -- Out-of-process APIs generating `dotnet test`: fix to allow activating ZipFile, MethodPoint, SingleVisit and SourceLink +* [BUGFIX] -- Issue #156: Out-of-process APIs generating `dotnet test`: fix `/p:AltCoverDependencyList` to work around the behaviour of `dotnet test` with an argument ending `.dll` or `.exe`. Users rolling their own command lines, note that the assembly list is separated _and terminated_ with `'|'` characters. The `--dependency` command line argument for the tool is not affected. +* [BUGFIX] -- Issue #156: Make explicit dependencies through `--dependency` have priority over other assembly resolution lookup. This works around a Mono.Cecil misfeature (Mono.Cecil issue #863) where the `netstandard2.0` Cecil binaries do not consider the GAC for Framework system assemblies, but instead will find stubs in `dotnet/shared/Microsoft.NETCore.App` for e.g. .net Framework WPF related assemblies * [BUGFIX] -- Improve selection of non-embedded symbol files (between location in assembly debug header, the same directory as the assembly and any `--symbolDirectory` values) to avoid symbol mismatch when there are multiple possible files on offer * Add a `--verbose`option for AltCover, the converse of `-q`. Away from the command line, adds meaning to the `Verbosity` option value `System.Diagnostics.TraceLevel.Verbose`. Currently `Verbose` output shows more of the selection of files for instrumentation, noting when files are excluded from the process, symbol file selection etc. * Add a matching field, `ILoggingOptions.Verbose`, to the API as a sink to capture verbose output. -* Other minor build process asjustments for SDK 6.0.300/F# 6.0.4 and later +* Other minor build process adjustments for SDK 6.0.300/F# 6.0.4, 6.0.5 # 8.2.837 (Habu series release 13) * [VISUALIZER] Critical bug fixes for GTK and Avalonia : mismatched new icon names causing crashes From ee0905091155809e9d4af883f054cf8e1172de7b Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Mon, 27 Jun 2022 11:39:07 +0100 Subject: [PATCH 79/81] Acceptable parts of fantomas --- Build/targets.fsx | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/Build/targets.fsx b/Build/targets.fsx index 40d1af7e1..4ca9ad8f8 100644 --- a/Build/targets.fsx +++ b/Build/targets.fsx @@ -4830,7 +4830,7 @@ _Target "ReleaseXUnitFSharpTypesShowVisualized" (fun _ -> printfn "%A" vcs printfn "%A" (vcs |> List.map (snd >> Seq.length)) Assert.That(vcs |> List.map fst, Is.EqualTo [ -2; 0 ], "Expect -2, 0") - Assert.That(vcs |> List.map (snd >> Seq.length), Is.EqualTo [3; 17], "Expect [3; 17]") + Assert.That(vcs |> List.map (snd >> Seq.length), Is.EqualTo [ 3; 17 ], "Expect [3; 17]") let prep = AltCover.PrepareOptions.Primitive( @@ -4967,8 +4967,7 @@ _Target "JsonReporting" (fun _ -> let x = Path.getFullName "./_Reports/JsonReporting.json" - let o = - Path.getFullName "./_Binaries/JsonReporting_Sample4/Debug+AnyCPU/net6.0" + let o = Path.getFullName "./_Binaries/JsonReporting_Sample4/Debug+AnyCPU/net6.0" let i = Path.getFullName "_Binaries/Sample4/Debug+AnyCPU/net6.0" @@ -5565,7 +5564,12 @@ group NetcoreBuild "run ./DriveApi.fsx" // "-v run ./DriveApi.fsx" for verbose mode "running fake script returned with a non-zero exit code" - let x = Path.getFullName ("./_ApiUse/_DotnetTest/coverage." + netTarget + ".xml") + let x = + Path.getFullName ( + "./_ApiUse/_DotnetTest/coverage." + + netTarget + + ".xml" + ) Actions.CheckSample4 before x finally @@ -6742,8 +6746,7 @@ _Target "DotnetGlobalIntegration" (fun _ -> printfn "Execute the instrumented tests" - let (dotnetexe, args) = - defaultDotNetTestCommandLine (Some "net6.0") String.Empty + let (dotnetexe, args) = defaultDotNetTestCommandLine (Some "net6.0") String.Empty let collect = AltCover.CollectOptions.Primitive @@ -6891,15 +6894,15 @@ _Target "Issue156" (fun _ -> let p0 = { Primitive.PrepareOptions.Create() with - Dependencies = ["C:\\WINDOWS\\Microsoft.NET\\assembly\\GAC_MSIL\\WindowsBase\\v4.0_4.0.0.0__31bf3856ad364e35\\WindowsBase.dll" ] + Dependencies = + [ "C:\\WINDOWS\\Microsoft.NET\\assembly\\GAC_MSIL\\WindowsBase\\v4.0_4.0.0.0__31bf3856ad364e35\\WindowsBase.dll" ] //Dependencies = ["WindowsBase.dll"] AssemblyFilter = [| "nunit" "Adapter" "FSharp" "AltCover" |] - SingleVisit = true - } + SingleVisit = true } let pp0 = AltCover.PrepareOptions.Primitive p0 let c0 = Primitive.CollectOptions.Create() From 0d164e43af6601cab354c99a29d2c413e96d0d33 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Thu, 30 Jun 2022 09:52:53 +0100 Subject: [PATCH 80/81] Updates all round --- .config/dotnet-tools.json | 2 +- Build/NuGet.csproj | 2 +- Build/build.fsx.lock | 32 ++++++++++++++++---------------- Build/paket.lock | 34 +++++++++++++++++----------------- Build/setup.fsx.lock | 32 ++++++++++++++++---------------- 5 files changed, 51 insertions(+), 51 deletions(-) diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 0528d26b8..b55837ec4 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -3,7 +3,7 @@ "isRoot": true, "tools": { "dotnet-reportgenerator-globaltool": { - "version": "5.1.6", + "version": "5.1.9", "commands": [ "reportgenerator" ] diff --git a/Build/NuGet.csproj b/Build/NuGet.csproj index 32e2c8e1d..eaa238da0 100644 --- a/Build/NuGet.csproj +++ b/Build/NuGet.csproj @@ -21,7 +21,7 @@ - + diff --git a/Build/build.fsx.lock b/Build/build.fsx.lock index 704785823..773fd6f4e 100644 --- a/Build/build.fsx.lock +++ b/Build/build.fsx.lock @@ -152,7 +152,7 @@ NUGET FSharp.Control.Reactive (5.0.5) FSharp.Core (>= 4.7.2) System.Reactive (>= 5.0 < 6.0) - FSharp.Core (6.0.4) + FSharp.Core (6.0.5) Fuchu (1.1) FSharp.Core (>= 4.3.4) Manatee.Json (13.0.5) @@ -200,7 +200,7 @@ NUGET Microsoft.NET.StringTools (1.0) System.Memory (>= 4.5.4) System.Runtime.CompilerServices.Unsafe (>= 5.0) - Microsoft.NETCore.Platforms (6.0.3) + Microsoft.NETCore.Platforms (6.0.4) Microsoft.NETCore.Targets (5.0) Microsoft.Win32.Registry (5.0) System.Buffers (>= 4.5.1) - restriction: || (&& (== net6.0) (>= monoandroid) (< netstandard1.3)) (&& (== net6.0) (>= monotouch)) (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (>= xamarinios)) (&& (== net6.0) (>= xamarinmac)) (&& (== net6.0) (>= xamarintvos)) (&& (== net6.0) (>= xamarinwatchos)) (== netstandard2.0) @@ -209,7 +209,7 @@ NUGET System.Security.Principal.Windows (>= 5.0) Microsoft.Win32.SystemEvents (6.0.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= netcoreapp3.1)) Mono.Posix.NETStandard (1.0) - MSBuild.StructuredLogger (2.1.630) + MSBuild.StructuredLogger (2.1.669) Microsoft.Build (>= 16.10) Microsoft.Build.Framework (>= 16.10) Microsoft.Build.Tasks.Core (>= 16.10) @@ -217,21 +217,21 @@ NUGET NETStandard.Library (2.0.3) Microsoft.NETCore.Platforms (>= 1.1) Newtonsoft.Json (13.0.1) - NuGet.Common (6.2) - NuGet.Frameworks (>= 6.2) - NuGet.Configuration (6.2) - NuGet.Common (>= 6.2) + NuGet.Common (6.2.1) + NuGet.Frameworks (>= 6.2.1) + NuGet.Configuration (6.2.1) + NuGet.Common (>= 6.2.1) System.Security.Cryptography.ProtectedData (>= 4.4) - NuGet.Frameworks (6.2) - NuGet.Packaging (6.2) + NuGet.Frameworks (6.2.1) + NuGet.Packaging (6.2.1) Newtonsoft.Json (>= 13.0.1) - NuGet.Configuration (>= 6.2) - NuGet.Versioning (>= 6.2) + NuGet.Configuration (>= 6.2.1) + NuGet.Versioning (>= 6.2.1) System.Security.Cryptography.Cng (>= 5.0) System.Security.Cryptography.Pkcs (>= 5.0) - NuGet.Protocol (6.2) - NuGet.Packaging (>= 6.2) - NuGet.Versioning (6.2) + NuGet.Protocol (6.2.1) + NuGet.Packaging (>= 6.2.1) + NuGet.Versioning (6.2.1) NUnit (3.13.3) NETStandard.Library (>= 2.0) runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) @@ -351,7 +351,7 @@ NUGET System.Resources.ResourceManager (>= 4.3) System.Runtime (>= 4.3) System.Runtime.Extensions (>= 4.3) - System.Memory (4.5.4) + System.Memory (4.5.5) System.Buffers (>= 4.5.1) - restriction: || (&& (== net6.0) (>= monotouch)) (&& (== net6.0) (>= net461)) (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (< netstandard1.1)) (&& (== net6.0) (< netstandard2.0)) (&& (== net6.0) (>= xamarinios)) (&& (== net6.0) (>= xamarinmac)) (&& (== net6.0) (>= xamarintvos)) (&& (== net6.0) (>= xamarinwatchos)) (== netstandard2.0) System.Numerics.Vectors (>= 4.4) - restriction: || (&& (== net6.0) (< netcoreapp2.0)) (== netstandard2.0) System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (== net6.0) (>= monotouch)) (&& (== net6.0) (>= net461)) (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (< netcoreapp2.1)) (&& (== net6.0) (< netstandard1.1)) (&& (== net6.0) (< netstandard2.0)) (&& (== net6.0) (>= uap10.1)) (&& (== net6.0) (>= xamarinios)) (&& (== net6.0) (>= xamarinmac)) (&& (== net6.0) (>= xamarintvos)) (&& (== net6.0) (>= xamarinwatchos)) (== netstandard2.0) @@ -545,7 +545,7 @@ NUGET System.Runtime.CompilerServices.Unsafe (>= 6.0) System.Text.Encodings.Web (6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) System.Runtime.CompilerServices.Unsafe (>= 6.0) - System.Text.Json (6.0.4) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) + System.Text.Json (6.0.5) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) System.Runtime.CompilerServices.Unsafe (>= 6.0) System.Text.Encodings.Web (>= 6.0) System.Threading (4.3) diff --git a/Build/paket.lock b/Build/paket.lock index c5209aeb6..c0c264144 100644 --- a/Build/paket.lock +++ b/Build/paket.lock @@ -11,7 +11,7 @@ NUGET Fake.Core.Environment (>= 5.21) Fake.Core.Process (>= 5.21) Fake.DotNet.Cli (>= 5.21) - FSharp.Core (>= 6.0.4) + FSharp.Core (>= 6.0.5) System.Collections.Immutable (>= 1.7.1) remote: https://api.nuget.org/v3/index.json BlackFox.CommandLine (1.0) @@ -108,7 +108,7 @@ NUGET FSharp.Control.Reactive (5.0.5) - restriction: >= netstandard2.0 FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 System.Reactive (>= 5.0 < 6.0) - restriction: >= netstandard2.0 - FSharp.Core (6.0.4) + FSharp.Core (6.0.5) Microsoft.Bcl.AsyncInterfaces (6.0) - restriction: || (&& (>= net461) (>= net6.0)) (>= net472) (&& (>= net6.0) (< netcoreapp3.1)) System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (>= net461) (&& (>= netstandard2.0) (< netstandard2.1)) Microsoft.Build (17.2) - restriction: >= netstandard2.0 @@ -157,7 +157,7 @@ NUGET Microsoft.NET.StringTools (1.0) - restriction: >= netstandard2.0 System.Memory (>= 4.5.4) - restriction: >= netstandard2.0 System.Runtime.CompilerServices.Unsafe (>= 5.0) - restriction: >= netstandard2.0 - Microsoft.NETCore.Platforms (6.0.3) - restriction: || (&& (>= monoandroid) (>= netcoreapp2.0) (< netstandard1.3)) (&& (>= monoandroid) (>= netcoreapp2.1) (< netstandard1.3)) (&& (< monoandroid) (< net45) (< netcoreapp3.1) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (>= net5.0) (< netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (>= monotouch) (>= netcoreapp2.0)) (&& (>= monotouch) (>= netcoreapp2.1)) (&& (>= net461) (>= netcoreapp2.0)) (&& (>= net461) (>= netcoreapp2.1)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarinios)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarinmac)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarintvos)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarinwatchos)) (&& (>= netcoreapp2.0) (>= uap10.1)) (&& (< netcoreapp2.0) (>= netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (&& (>= netcoreapp2.1) (>= uap10.1)) + Microsoft.NETCore.Platforms (6.0.4) - restriction: || (&& (>= monoandroid) (>= netcoreapp2.0) (< netstandard1.3)) (&& (>= monoandroid) (>= netcoreapp2.1) (< netstandard1.3)) (&& (< monoandroid) (< net45) (< netcoreapp3.1) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (>= net5.0) (< netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (>= monotouch) (>= netcoreapp2.0)) (&& (>= monotouch) (>= netcoreapp2.1)) (&& (>= net461) (>= netcoreapp2.0)) (&& (>= net461) (>= netcoreapp2.1)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarinios)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarinmac)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarintvos)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarinwatchos)) (&& (>= netcoreapp2.0) (>= uap10.1)) (&& (< netcoreapp2.0) (>= netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (&& (>= netcoreapp2.1) (>= uap10.1)) Microsoft.NETCore.Targets (5.0) - restriction: || (&& (< monoandroid) (< net45) (< netcoreapp3.1) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) Microsoft.Win32.Registry (5.0) - restriction: || (&& (< net45) (>= netstandard2.0)) (&& (< net472) (>= netstandard2.0)) (>= net6.0) System.Buffers (>= 4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) @@ -166,27 +166,27 @@ NUGET System.Security.Principal.Windows (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (&& (< monoandroid) (>= netcoreapp2.0)) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.1) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) Microsoft.Win32.SystemEvents (6.0.1) - restriction: >= netcoreapp3.1 Mono.Posix.NETStandard (1.0) - restriction: >= netstandard2.0 - MSBuild.StructuredLogger (2.1.630) - restriction: >= netstandard2.0 + MSBuild.StructuredLogger (2.1.669) - restriction: >= netstandard2.0 Microsoft.Build (>= 16.10) - restriction: >= netstandard2.0 Microsoft.Build.Framework (>= 16.10) - restriction: >= netstandard2.0 Microsoft.Build.Tasks.Core (>= 16.10) - restriction: >= netstandard2.0 Microsoft.Build.Utilities.Core (>= 16.10) - restriction: >= netstandard2.0 Newtonsoft.Json (13.0.1) - restriction: >= netstandard2.0 - NuGet.Common (6.2) - restriction: >= netstandard2.0 - NuGet.Frameworks (>= 6.2) - restriction: || (>= net45) (>= netstandard2.0) - NuGet.Configuration (6.2) - restriction: >= netstandard2.0 - NuGet.Common (>= 6.2) - restriction: || (>= net45) (>= netstandard2.0) + NuGet.Common (6.2.1) - restriction: >= netstandard2.0 + NuGet.Frameworks (>= 6.2.1) - restriction: || (>= net45) (>= netstandard2.0) + NuGet.Configuration (6.2.1) - restriction: >= netstandard2.0 + NuGet.Common (>= 6.2.1) - restriction: || (>= net45) (>= netstandard2.0) System.Security.Cryptography.ProtectedData (>= 4.4) - restriction: && (< net45) (>= netstandard2.0) - NuGet.Frameworks (6.2) - restriction: >= netstandard2.0 - NuGet.Packaging (6.2) - restriction: >= netstandard2.0 + NuGet.Frameworks (6.2.1) - restriction: >= netstandard2.0 + NuGet.Packaging (6.2.1) - restriction: >= netstandard2.0 Newtonsoft.Json (>= 13.0.1) - restriction: >= netstandard2.0 - NuGet.Configuration (>= 6.2) - restriction: >= netstandard2.0 - NuGet.Versioning (>= 6.2) - restriction: >= netstandard2.0 + NuGet.Configuration (>= 6.2.1) - restriction: >= netstandard2.0 + NuGet.Versioning (>= 6.2.1) - restriction: >= netstandard2.0 System.Security.Cryptography.Cng (>= 5.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net5.0) System.Security.Cryptography.Pkcs (>= 5.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net5.0) - NuGet.Protocol (6.2) - restriction: >= netstandard2.0 - NuGet.Packaging (>= 6.2) - restriction: >= netstandard2.0 - NuGet.Versioning (6.2) - restriction: >= netstandard2.0 + NuGet.Protocol (6.2.1) - restriction: >= netstandard2.0 + NuGet.Packaging (>= 6.2.1) - restriction: >= netstandard2.0 + NuGet.Versioning (6.2.1) - restriction: >= netstandard2.0 System.Buffers (4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard1.1) (>= netstandard2.0)) (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.0)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (&& (>= net5.0) (< netstandard2.1)) (&& (< net6.0) (>= netstandard2.0)) (&& (< net6.0) (>= netstandard2.1)) (&& (< netstandard1.1) (>= netstandard2.0) (>= win8)) (&& (>= netstandard2.0) (< netstandard2.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) System.CodeDom (6.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net6.0) System.Collections.Immutable (6.0) @@ -201,7 +201,7 @@ NUGET System.Buffers (>= 4.5.1) - restriction: || (>= net461) (&& (< net6.0) (>= netstandard2.0)) System.Memory (>= 4.5.4) - restriction: || (>= net461) (&& (< net6.0) (>= netstandard2.0)) System.IO (4.3) - restriction: || (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (>= net5.0) (< netstandard1.4)) (&& (< monoandroid) (>= net5.0) (< netstandard1.6)) (&& (< monoandroid) (>= net5.0) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (>= net5.0) (< netstandard1.4)) (&& (< net46) (>= net461) (< netstandard1.4) (>= netstandard2.0)) (&& (< net46) (>= net461) (< netstandard1.6) (>= netstandard2.0)) (&& (< net46) (>= net462) (< netstandard1.4) (>= netstandard2.0)) (&& (< net46) (>= net462) (< netstandard1.6) (>= netstandard2.0)) (&& (< net46) (>= net47) (>= netstandard2.0)) (&& (>= net461) (>= net5.0) (< netstandard1.4)) (&& (>= net461) (>= net5.0) (< netstandard1.6)) (&& (>= net462) (>= net5.0) (< netstandard1.4)) (&& (>= net462) (>= net5.0) (< netstandard1.6)) (&& (>= net463) (>= net5.0) (< netstandard1.4)) (&& (>= net463) (>= net5.0) (< netstandard1.6)) (&& (>= net463) (>= net5.0) (< netstandard2.0)) (&& (>= net463) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net463) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net47) (< net472) (>= netstandard2.0)) (&& (>= net47) (>= net5.0)) - System.Memory (4.5.4) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) (&& (>= net5.0) (< netstandard2.1)) (>= netstandard2.0) + System.Memory (4.5.5) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) (&& (>= net5.0) (< netstandard2.1)) (>= netstandard2.0) System.Buffers (>= 4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard1.1)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (>= monotouch) (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (< uap10.1) (>= wpa81)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) System.Numerics.Vectors (>= 4.4) - restriction: && (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Numerics.Vectors (>= 4.5) - restriction: >= net461 @@ -254,7 +254,7 @@ NUGET System.Buffers (>= 4.5.1) - restriction: || (>= net461) (&& (< netcoreapp3.1) (>= netstandard2.0)) System.Memory (>= 4.5.4) - restriction: || (>= net461) (&& (< netcoreapp3.1) (>= netstandard2.0)) System.Runtime.CompilerServices.Unsafe (>= 6.0) - restriction: || (>= net461) (>= netstandard2.0) - System.Text.Json (6.0.4) - restriction: || (>= net472) (>= net6.0) + System.Text.Json (6.0.5) - restriction: || (>= net472) (>= net6.0) Microsoft.Bcl.AsyncInterfaces (>= 6.0) - restriction: || (>= net461) (&& (< netcoreapp3.1) (>= netstandard2.0)) System.Buffers (>= 4.5.1) - restriction: || (>= net461) (&& (< netcoreapp3.1) (>= netstandard2.0)) System.Memory (>= 4.5.4) - restriction: || (>= net461) (&& (< netcoreapp3.1) (>= netstandard2.0)) diff --git a/Build/setup.fsx.lock b/Build/setup.fsx.lock index d225aa4e4..c66603a1d 100644 --- a/Build/setup.fsx.lock +++ b/Build/setup.fsx.lock @@ -91,7 +91,7 @@ NUGET FSharp.Control.Reactive (5.0.5) FSharp.Core (>= 4.7.2) System.Reactive (>= 5.0 < 6.0) - FSharp.Core (6.0.4) + FSharp.Core (6.0.5) Microsoft.Build (17.2) Microsoft.Build.Framework (>= 17.2) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) Microsoft.NET.StringTools (>= 1.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) @@ -130,7 +130,7 @@ NUGET Microsoft.NET.StringTools (1.0) System.Memory (>= 4.5.4) System.Runtime.CompilerServices.Unsafe (>= 5.0) - Microsoft.NETCore.Platforms (6.0.3) - restriction: || (&& (== net6.0) (< netcoreapp3.1)) (&& (== net6.0) (< netstandard1.2)) (&& (== net6.0) (< netstandard1.3)) (&& (== net6.0) (< netstandard1.5)) (== netstandard2.0) + Microsoft.NETCore.Platforms (6.0.4) - restriction: || (&& (== net6.0) (< netcoreapp3.1)) (&& (== net6.0) (< netstandard1.2)) (&& (== net6.0) (< netstandard1.3)) (&& (== net6.0) (< netstandard1.5)) (== netstandard2.0) Microsoft.NETCore.Targets (5.0) - restriction: || (&& (== net6.0) (< netcoreapp3.1)) (&& (== net6.0) (< netstandard1.2)) (&& (== net6.0) (< netstandard1.3)) (&& (== net6.0) (< netstandard1.5)) (== netstandard2.0) Microsoft.Win32.Registry (5.0) System.Buffers (>= 4.5.1) - restriction: || (&& (== net6.0) (>= monoandroid) (< netstandard1.3)) (&& (== net6.0) (>= monotouch)) (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (>= xamarinios)) (&& (== net6.0) (>= xamarinmac)) (&& (== net6.0) (>= xamarintvos)) (&& (== net6.0) (>= xamarinwatchos)) (== netstandard2.0) @@ -139,27 +139,27 @@ NUGET System.Security.Principal.Windows (>= 5.0) Microsoft.Win32.SystemEvents (6.0.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= netcoreapp3.1)) Mono.Posix.NETStandard (1.0) - MSBuild.StructuredLogger (2.1.630) + MSBuild.StructuredLogger (2.1.669) Microsoft.Build (>= 16.10) Microsoft.Build.Framework (>= 16.10) Microsoft.Build.Tasks.Core (>= 16.10) Microsoft.Build.Utilities.Core (>= 16.10) Newtonsoft.Json (13.0.1) - NuGet.Common (6.2) - NuGet.Frameworks (>= 6.2) - NuGet.Configuration (6.2) - NuGet.Common (>= 6.2) + NuGet.Common (6.2.1) + NuGet.Frameworks (>= 6.2.1) + NuGet.Configuration (6.2.1) + NuGet.Common (>= 6.2.1) System.Security.Cryptography.ProtectedData (>= 4.4) - NuGet.Frameworks (6.2) - NuGet.Packaging (6.2) + NuGet.Frameworks (6.2.1) + NuGet.Packaging (6.2.1) Newtonsoft.Json (>= 13.0.1) - NuGet.Configuration (>= 6.2) - NuGet.Versioning (>= 6.2) + NuGet.Configuration (>= 6.2.1) + NuGet.Versioning (>= 6.2.1) System.Security.Cryptography.Cng (>= 5.0) System.Security.Cryptography.Pkcs (>= 5.0) - NuGet.Protocol (6.2) - NuGet.Packaging (>= 6.2) - NuGet.Versioning (6.2) + NuGet.Protocol (6.2.1) + NuGet.Packaging (>= 6.2.1) + NuGet.Versioning (6.2.1) System.Buffers (4.5.1) - restriction: || (&& (== net6.0) (>= monoandroid) (< netstandard1.3)) (&& (== net6.0) (>= monotouch)) (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (>= xamarinios)) (&& (== net6.0) (>= xamarinmac)) (&& (== net6.0) (>= xamarintvos)) (&& (== net6.0) (>= xamarinwatchos)) (== netstandard2.0) System.CodeDom (6.0) System.Collections.Immutable (6.0) @@ -173,7 +173,7 @@ NUGET System.Formats.Asn1 (6.0) System.Buffers (>= 4.5.1) - restriction: || (&& (== net6.0) (>= net461)) (== netstandard2.0) System.Memory (>= 4.5.4) - restriction: || (&& (== net6.0) (>= net461)) (== netstandard2.0) - System.Memory (4.5.4) + System.Memory (4.5.5) System.Buffers (>= 4.5.1) - restriction: || (&& (== net6.0) (>= monotouch)) (&& (== net6.0) (>= net461)) (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (< netstandard1.1)) (&& (== net6.0) (< netstandard2.0)) (&& (== net6.0) (>= xamarinios)) (&& (== net6.0) (>= xamarinmac)) (&& (== net6.0) (>= xamarintvos)) (&& (== net6.0) (>= xamarinwatchos)) (== netstandard2.0) System.Numerics.Vectors (>= 4.4) - restriction: || (&& (== net6.0) (< netcoreapp2.0)) (== netstandard2.0) System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (== net6.0) (>= monotouch)) (&& (== net6.0) (>= net461)) (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (< netcoreapp2.1)) (&& (== net6.0) (< netstandard1.1)) (&& (== net6.0) (< netstandard2.0)) (&& (== net6.0) (>= uap10.1)) (&& (== net6.0) (>= xamarinios)) (&& (== net6.0) (>= xamarinmac)) (&& (== net6.0) (>= xamarintvos)) (&& (== net6.0) (>= xamarinwatchos)) (== netstandard2.0) @@ -214,7 +214,7 @@ NUGET System.Runtime.CompilerServices.Unsafe (>= 6.0) System.Text.Encodings.Web (6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) System.Runtime.CompilerServices.Unsafe (>= 6.0) - System.Text.Json (6.0.4) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) + System.Text.Json (6.0.5) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) System.Runtime.CompilerServices.Unsafe (>= 6.0) System.Text.Encodings.Web (>= 6.0) System.Threading.Tasks.Dataflow (6.0) From 4175e3c934d0bb264e6ce8ab41636d407bf3326c Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Thu, 30 Jun 2022 10:31:50 +0100 Subject: [PATCH 81/81] Ready for release --- ReleaseNotes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ReleaseNotes.md b/ReleaseNotes.md index 83cc57d0f..81467c630 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -2,7 +2,7 @@ A. Start with the Quick Start guide : https://github.com/SteveGilham/altcover/wiki/QuickStart-Guide -# 8.3.8xx (Habu series release 14) +# 8.3.838 (Habu series release 14) * [VISUALIZER] Fix off-by-one error in markup for the very last line of the file * [BUGFIX] -- Out-of-process APIs generating `dotnet test`: fix to allow activating ZipFile, MethodPoint, SingleVisit and SourceLink * [BUGFIX] -- Issue #156: Out-of-process APIs generating `dotnet test`: fix `/p:AltCoverDependencyList` to work around the behaviour of `dotnet test` with an argument ending `.dll` or `.exe`. Users rolling their own command lines, note that the assembly list is separated _and terminated_ with `'|'` characters. The `--dependency` command line argument for the tool is not affected.