From fef3dc2ebfc80940ab219a3ae6f803b457397a09 Mon Sep 17 00:00:00 2001 From: Steven Hartland Date: Thu, 29 Aug 2024 20:09:38 +0100 Subject: [PATCH] fix: parse error serialisation (#420) Convert parse errors into strings manually to avoid JSON serialisation failure due to circular references. Fixes #406 --- .../main/com/nvuillam/CodeNarcServer.groovy | 2 +- groovy/src/main/com/nvuillam/Request.groovy | 21 ++++++++++++++---- groovy/src/main/com/nvuillam/Response.groovy | 2 +- lib/java/CodeNarcServer.jar | Bin 57156 -> 57456 bytes test/lint-api.test.js | 6 ++--- 5 files changed, 22 insertions(+), 9 deletions(-) diff --git a/groovy/src/main/com/nvuillam/CodeNarcServer.groovy b/groovy/src/main/com/nvuillam/CodeNarcServer.groovy index 8cda130e..19968cd4 100644 --- a/groovy/src/main/com/nvuillam/CodeNarcServer.groovy +++ b/groovy/src/main/com/nvuillam/CodeNarcServer.groovy @@ -194,7 +194,7 @@ class CodeNarcServer { WRITER.writeValue(out, response) } } catch (Exception e) { - LOGGER.error('Write response {}', e) + LOGGER.error('Write response', e) } finally { if (requestKey) { threads.remove(requestKey) diff --git a/groovy/src/main/com/nvuillam/Request.groovy b/groovy/src/main/com/nvuillam/Request.groovy index b69524a5..0c9ef01a 100644 --- a/groovy/src/main/com/nvuillam/Request.groovy +++ b/groovy/src/main/com/nvuillam/Request.groovy @@ -145,8 +145,8 @@ class Request { * @param fileList the list of files to parse * @return the map of files to errors */ - private Map> parseFiles(List fileList) { - Map> parseErrors = [:] + private Map> parseFiles(List fileList) { + Map> parseErrors = [:] LOGGER.debug('parseFiles: parse={}, fileList={}', parse, fileList) if (parse) { fileList.each { file -> @@ -210,8 +210,21 @@ class Request { return files } - // Try to parse file to get compilation errors - private List parseFile(File file) { + // Try to parse file to get compilation errors as strings. + private List parseFile(File file) { + List errors = [] + for (err in parseFileErrors(file)) { + StringWriter out = new StringWriter(); + PrintWriter writer = new PrintWriter(out); + err.write(writer) + errors << out.toString() + } + + return errors + } + + // Try to parse file to get compilation errors. + private List parseFileErrors(File file) { try { // We don't use GroovyShell.parse as it calls InvokerHelper.createScript // which fails for files which contain a class which only have non-zero diff --git a/groovy/src/main/com/nvuillam/Response.groovy b/groovy/src/main/com/nvuillam/Response.groovy index 072b1f07..b66d41f7 100644 --- a/groovy/src/main/com/nvuillam/Response.groovy +++ b/groovy/src/main/com/nvuillam/Response.groovy @@ -23,7 +23,7 @@ class Response { String errorMessage String errorDtl String exceptionType - Map> parseErrors + Map> parseErrors // Lint result. @JsonRawValue diff --git a/lib/java/CodeNarcServer.jar b/lib/java/CodeNarcServer.jar index d54890c3b4fa889c14067509d1fc9a916fd64ec2..15575f5ad186917de599d2924dad3ca7bbbb429e 100644 GIT binary patch delta 12437 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 MIIp7S{u%QB0pH${iU0rr delta 12164 zcmY+Kbyyrv^6(d5B)A24cXxujy9WsF!4qHuEFN@mhXi+bcXxMp3&A10Hbu8RabRSKl4oYWhYE;J4|JU4C-TE_)`!n0Kh;30B`~z_&iG8M_}L+X22C0ZXO{>ZLT4TWaUKFY zm(g@&0rMw|xAR@H)ABbU>BJ{aq)!2+f^D(M#0S3GG{i$L{3-EihX=7*LVd&|dskaH z)Znlnq=QF0Ah(V+jUq8jQ2<9koPk7RQ+tkAc}a&dQ~<+@c#d+%xa0t0nn9x*58W}J1%E<3Mj0Yy)%5^Nr*rG@3Jo|$%1TKp(i zl3|O5X0+I8&CH?BhqG*>HE3WppHYTD0Lbm$wrb=^4YBOrQy?B7pprZxN!-Q%oKa$3fxZ%u#P@ zd39}ldcM?5BhUxk)W&KYUEZebwAOKUQ6i z3I^&@t-6ji=6*_-DKJmr%i04U>-M{N4Lhj(b}d+w->AqY# zQ@m-nDiMumzWAOCia|uex^Tmdx?QR7N7xn!E#MyePfVq=4?Jro`5)cJ!yU77pP?&!(*zXpfMNy58g#s$pq=Ag- z*bKG7(D-uxB$JiHa!Mgum8Nybrq2AXL{p9~GOR#XJ(dx9+)=-3m_iu#7^3}J?MAG^=4V9SKCP~0*oGBO zOu9AySi(0y_u0Q;9Qn>VR9q7SELj4avct<&9kIA6xH!^b%&~Te0nMx0g$8IE!-vgd zqFu?t zggGgHs735F8w7^tlIkfM7fkR(Q9Os=tA7(=U|{j8z%dLd+9pJfHz&vsY~8T@C_sg7 znLD49=YwpK41nE7)^mVw5h*6^VM09FZ$%B9lX*8EL&y&=0TM6h+LwICb5~s@JNxna zv$>*~7_M+6oE{g+KrV}sXaKcL)o*-l*hzdKLh{d=g!SiC=WN$;LJ7Kz>wbD$Cd4E+ z0(*z}I^rH9OkD%qvw|rPB4Wap=-iSjF2iM;%1E_9hwyQc;3ule=$f(2MdiT0+)T4` zMjqYhO?IkE5m0pCjra5;K|y zOB(f?I7O=5;Empnj@qiJ{_xsV*yXX0g3rRfc<|#?4usZ@_D2rw84_u+RXy&Uf>ts7 zu_bql;}sa}y!=tc$p7`IWCvu44`L%C>L)$rTCC}S|8tNF|I|(QJb^c0Lc(%^l7zOi zLHsW1!00eysuGh$IDj=nI*rvG_?18ce#HO~;>%z0*~ATO6xxZt+K&`?#=8586-XQ! z%qRpJ0zD0PZRMGXhxVX5+LdxGZguyWAnNQd5WUya;BS>C30T&}DHpJ)G@n|6|LTC9 zuZOwIqbDq((-J!RrAUWt&$k86wHzQ<800Pj-n6x3yWv4O6$5QZaY?(fcP+BOv??aZ&w(Um=UOQ~8_EI3crB=O+vwMMjs} z5mEJYw2R^w(uyG{q9m)$lF!(*yM27rto=3*BI&WDef$qIe5|6;$iJ=|4}EVpl|bI4 z5u8WO-gCK4YarKw;PZ9EQO7t=v1rt+Ef)<8U-vKAoLG-~1!C zch&}A=n$Y|pM8l!H!H4q$%JSw2JWsJ=(>=9SzUVGe~sUksYTnnN1&_4)3}WGLa_FqrM&@cqQ?S&rNn%7_>Ww=(eZSR`(;fMDrVS^jvGb?xNr5_=?pQbt?;6orPB6_>vK@u_=cVzR(fv-F5!hHuZp zof2rR;ic>1J`i+t_hU2r)1YWp9wRf{OWE9WOx-4gdgVgD8Q?LHgc4nsYa=epW+iitxZ| zAe%ir3Wp+1SX3w%2174;B05>%&n^ZL8dlT8Pc-ALm6}EK^XFw{Wm!57g?SM>tE0BGQW;D9b|qz_c_@>6G8dt zZ%4#VAA3}!0CKue$XAzEF-r5+%Sx%?ilN)EwC6ommu_xxJWF)2?4I7F$@j40OgU>g zy|ug%+&H1`7X;Mt;HcHtmU&+{=MnO7)zx9<;07&OQERyC)vT=QHH=p>ai%$v$?MPa z@bcDSbR{a*x3DA~>sOYQQ_rk9SQ3U#<0vto@US}AfugYX;OLl#(&s*CMp_G0ScE<_ zCMe~%5GHb=`$sA{TqW2U5NCg&n6arRSn8d&_l!!8sbJy!ybm{2TFHSFOg8~3Q>0b* z&9ID`WEG$`of#L(X;>KCR}4r4n&@y?Ak~0H?IIlNnj+{bhV_CI6uI)h8#-DvGfGIt z%fdRAfTog4Ts333ThuMP%CpI#`R}p<8PA_bDBfxnS;U&AQ$LeSxJht zWz=9nArK{dRq;wKL8K-_X65uNKn?o< z8lE!RCYR>pR+phT-esfydMf$4_|^mM7Rxtp5DbC8GcJI`cqPfRWXHT> zks@AIJ9Ah!S{h8yoi&&mycg=@*r;k%kH|YpYNH1=yQL^<>!J7H@QmUK}afMC} z&E`s1h?k;p#~9f6^@<3V<4B9G;rYaKddwZ>+Vg{!(Ygvx5X7YfI54dm?Vth>Lq0Ww zu3-u*LCnY>Ir0Z9kfD=p8<=U2Rj7&WbSj$WWIgla%!&*+^%U?8w`#3*$y>zP9n;ud zq%r0XqIvEB+NO1+j8hz=u8VC1`Y^zyZG9Q9(y}2U_NKh#i`X@ybuM)b$`i99<{yLM zj!#vSqZ@S6JPYpty`^S8S`NxTIhxu*rQV6b4H(zTWmB!$JmEJ^zka~Ht#_|;xYN$; zTd|gAQ;U|2mLJkwY~Hi@i+S~J?E<6OSJxc4YMMULC@CW0sWGu%Xxj6xd}93iMT4MO z>Km2ify~cH`)*v{oy#FE`>(Du47w8X^OF*aqdS_84gL(igXouA9ALaDz@i@y#~bQ?PwD16tD z&Vf)Xysk~=5O7ZF9>KO%f^1S}&eJF?-!uNb6=A-#&LNTmaI2%7^Smg^%+}{1v&hfvb(Vub1$9=0J~swdk2T) zh&u1iU|tb=B?XQ3l9m!}CJ5TvEE7YcnPd3oEZ0rV_l}7sg8_bE5a~#|D2DOy9%n4y zk9+b%uf}In{FzHvv!O*Qo!K+~^D{g@p|Ap=$^6nerNn#=)U?KG6J~oWCthx@a;rbz zb;mnPZXuQX1TlfHRvuoOlIoL{{f7=@>XbI&AtXHmI63@q;maiN6lVAGXL*vir7I*= zoiNvsLZF^;JFwbbLB^USRF-IEmF?;;#y$_{))s#Ya-x4yhKF7&rP{b5Nv(b7v+9u*B^Mq}Z18n?2$ z4aAv%Il@ae zk~Wd=J0h%>7Fb9ay2VEdp@KHBKQc~Uk6ZGNyEoPN=J@5=ZHf^(MN*MO2p+z!WR=WU zTvZGNh(;I1$;U)}zxcxKdANaE27V{6+| zfG(pofn}0!VvG+9F_PSA#xl3G^#P;;^TzQv~rnrI0%HqSSXM z`dM?Bt@HTN(3Kc6>q!YTlUOQpq8AL;h{t6NCLWZDI=%p!ezXlo0z9m|z?H;86f`R* z%?}dkFEmtrt3`tcZf3)W)->&Nig{c-NK!cLu3SL^0R|kw)2E+v(iBGN#FLJ=c2e5y zyJs8K2SM>Tqk?iCl(BLKOWzHDeE9;Q=Uhpa^Q3Nhs*a-6rEF1vMlHvQuk_i+>T;(j z9_CNF$ka$VQ5ftxGdC2V{8dCVPM3Xnq@Xvn9a zRueWHK>swoKW@xvnv$`tYd`#jbk4{FYHKWPnA+1D(=G;EU;ZeKuMDW>FUB>vW}$lV zwy5t0zPtmEoKlaoHV5{z9KoAS(UU8)RKe%w=7p+2WEG~tw?-06j_5JbkMh|_9eL6BY?Ylbu~p15o`DZ=^x)+ zGPJKuFnZU$6B@Mrb|IxJP)=^St7E>Wa@uUk$$U__wDdudbgis>-bSL-rh050cSiQ$ zcs4eRYi4_xAv|1mCnWU4I8*#(?WJ5V{SgRZ!#gY<@+-qxPU${Z0oTM(806B(!_hH3 zU>D|M5H}z7Y22Q><=qI%C6;U$bU9^yI+bt5l?K$kD#P+a?P;28C_QD({m8qf`_t*h z5IWMOqAN~tgJns|@y!)Yx6aP4r%!8NqH7mSC)ja@Aaf`wv43mmd36xi*KM%fg$`u* z%kn{tLYHk|5?QQVcBhie{*plX5Dq92jerwp$QtJ{SNrWWx_n;gxs%$?xyeMZf(7+Y7I zAAYzO?oM(O|40fVqsOip33pQR&=dJH$kUc*@Hs^@%c7jKv`pj=n2z0(#udczh?rYy zM>l?Tb1}4#zML!0bKf!eLel|iDuMhDbq4UE=5(&TW4r#vc5djo$sJQ49R&($~4jsT+8Qvz)YxKeY>CS+4;hamFrl)WG&PNXU@HW znW&zXA|l^(+jw{1@t|y$4NQ@}C`hb7A3nyZ%9-kz7yevpQ!SbNIjx!VZu&vIUA%ce zrXu4eFJ~I6ls~F&x>iJU*{_3XUW+1$-#Ym_{&?q-?l-u_Z>}+*E^$MDR~H!ECaxjN zfLFxc3rWK5-&zM}G*FqPVg#us6~&3AqWts_;8B{T>N#9i#G%6(O8!&UcT z1=^gEt5gbWyP^;i$I6PX`(Ycb(tUK|Xr=4oxStB8Zv?1uZ87WSEQWvhy>eVh-65H# z*@20Vkn}hg=He^}N^~Zdr_MM(bl~Qa@~vmGuwaw=z=y7RB?&Lq zk)(#kduo&RXr=Mo?Fie!=5v3>M@HRFh4OJmOC;?LxuakMeN#D=8uA-0LNvyUAn7WI z-sw->%+#H9$L4MNIPzIEe-_qh+!JlHCMwjS)j%cS?t#3O6}zj&0qE2b$V)_Fh}9~L z%OBoigl>n{O!T-ZJW%BUxC;?Fds2HZE=r=REn2*>VvHq(88Hj{bge<$7uek+;Yjy` zfaofeGxuj3h{j8ZW(3KvZ@-AkDQ^P+5qyp8^z$~B)#uWf*6L=abB54+G3MwsN&)$f?PW~1tN463)Rns$xyJ;*g~ zidlK)K65B}$67!$X!T@&l2UOr7BPaf*e*-MVC?EePz2Mt6zW}9x9_6=K~-R!3;Sn$C764I8@1+AFjKqNDIYOe7btCM;;!J46aNUO8Dwfa_c zxW5==t+LYjh=f(kTvNw7zYm%+g%kBp51Mk3?AcI<$I6Q(WMXtu=U^UX5+f(j4MHWJ z2JJ7QMSn%h*FH(dnhERjAJDszts8G*&$y0vI7u&v*{9zrpMM_}RBQe{6k<_lrfL;Q z0V;~6l#sPGC*J_Z&L+)2N%+aoT<_|{6tb4h>lGyWSTbn}*bj*o&3h-dZPxs#Z~P(Q zQH9u!rHfbrpY-+?S?iXt1D>(UUI8i}g=@P+yw^X$Ig1pee-Ip&cC$_|sFDtpftsb` zTnR<;sv^a5Mi6gAu4^QOKksr}jW}^31v&OYo%X#fM)VvG1m4p}ZB2NE8Vf11M%7@N zSW=Q$v9|Z1ZMHnKwNIp7N?7DN4AXCHCm-?|9}uyR=}y1_yCXf#1SYn`y{;&Q#$B7x zsnf$snnIoY`>(4~ZtTBB<83Ks_FStT$HnwhzKT1KK5aN(l?iRE7nS?PlL0Q(L3J8G z1d{sPj5iDKp!0H&KlL2jhtKha+i8!DnGH=>QRKU7xoaLA>uOplC|Z>Wgq)%+cxSsN z5LC-Aebzj9)E&h7)r@e-E8{D$VjtufdfdvUeRgQ@c>ANHovPUNhtg$z;dqoOtXf9e zr~Qau9;cN}l4DIjjbX%>{bjz%9D{t-GLjbglBC@UC|&A-$`nqyl+N=0szs4I(Z{FN zF7?vxG{osK8@J|*Xm@`1$0Onv(R?I30Qs#xk<*>NVjutf`0v&73Aq=(Uh)YlJN#Ph zoecE+Nv2xTP11EM9)9f4w3TR%?0VYPUQn}MSBPBUp7Xly?fu1A&XHtn8=&vm$GFdLg8 z8}F}N7C_gub6t3Q)8jdlhrVANbMQe})dfK4Z#x4Wdy_5UjaR=*-~Qr=-;}yxL?*R! zA^4gSxWQw|!hAPqvYj4d{T^g^?3{|n-%TvG;BYAg@AcpxxVonPf=?rR0@#?D`W)I) z5`F3G5lU6f6lC{IILU2{D8D?+-w!WQI%p~>ND_4L;p@*GAO#v31GB`ALT3Vj=xH3l zS7_Bov=a^RoGrjD+8r(MO)R7SbT}53Tl(B&9RL2lsw?}I!3#9Y|D|X=8toEN zLMc$8Gw=06zK(7~`XOPQ&|Kh7{<5|&GSN2U3A?LZ;{Hn=*4;@fe>rNIL?gGr;_Xsn zGb>RyH#b9LWnkZxa|z(iP_fSztU5fg7cCyoXbQ*-Y`poly>>-s`;I!h6e_Q^ZZXtO zStQ{3c{4ODn_wq_?g*qQ(cZa|PTm7<-u#op{=6N^{xr2mm+PD=g#drUCizA1f-b*C z>JBfb4dRL8ZzMo)yVja^haG67k8-=7TN&B+@q!U`MHl53P|gg!;^v7l{WPHbB_>4L zh3y533ukB3c`Aq-&tMUz4{zQO6>_C=3&i?>K-h-HsR(cN`lz_3DTNR;BH%7 zJX3KUqJ9jrEgUZr05Ms}9;oD{?@ww8ywte=Q5@!1_AS>4b{CW`orzr5kd;IKcXj8e$D#tt!GOmV5^068;oR!TQy!32kJ~q&gUM^13EJIy0kY0IqR3)vG!Td4zf}ehS zlKu%|8Fe?*LZmYpy|nHu(fDZzqqL9Q2#a9i`vt|BZGr`6PLXrn{p1wxaQ;NH*$P|f zSd7evXn|Wt81bT^Ssz=06e=)r`Bg6Gr#*cCe&D-ue{?y=3CHl2<`g_(Joi9q_Ykb* z)mw^%$i_-45U@=v|3_Wu4r0Kt{Yo`$@{YB)G;nCb)Db;(X^x2zxR+uFCvDAOUEd=u z*&<IT%>q1Z8x~prM$}bg&wT*_mQ0rkK%_J!f&uoPwrTRtc z{`YB24*z&^lQo8!+{pMqjdqmLe7N$e0%{sF0TZJh$YKLlEG6s0{k|97p9P&j2Y=xc zXAYxYiZ)grJo~-c+U$dixKS-AxUyn*&|%CCm-#ETUuw$eJl_blrcm%e4{*B&9JMaA zqoID@d&{>r_2=vNpSfsLY|w`~S3nX6NdOF(tfN%HyM2X9%-RE=v?BEU-1>|Gam_U3 zs>qB7G(sfPN1ns+jaJL;ht~Js*g0x^gM1~2E@cy#xAMtDUe728K}T+%2RW2@tC3K# z;yF`Bn;wR07%;6JdohT#a>5$`QCQdm#O&bcVr!S20w6Q$jya80y%CdhBIWN-+?*pQ zfqTkEgeo!SnbREF`b2R52m?WwJCdI@U}9l@6L zsyZf0AoQwSRWds7evM@$4bzAlAH=9|&>BmdELl~O4`<}$E?Z{xeW4bYD|n#w{#e^b zlUKLM^rxnsg>C)dtfG?Tz6@=FMh}C?mgOETBKgb-Mt1=s+FDZHCZ}m@KT>(ERB)8ncCLzgG8 zxQ9Wak@riqS6JPxyx7BPMZ|4%Q&96X!S^V{gZ^sQBG{G-CGUQjkp_QR`Yy%`7?oLk zUnf|GegAK#OAfYTo<6(|w*~3_F zIh{a5A@j;L0WaZ}_}Zg_!K&Ed^~^#_indv@c7Dy(c3?2pdajcK$$aW{VlZ#ENN8;B z)R|Q@Qsc||tk;w!_`KG@&B{&2gl%!?*W3^}?AmiURavR!sC7L{v9|OxC{!@hv0Br` z!hb0`;AQnRvN%>7c?6{vsM7#zD zD=^^q?`$f#ODljWzcwkhBz2R9U((?ASO(fw3fi`a&WJE9oXUFO%8m=#mP@qYvCCcQ z&f*k_zt9vXA^*{Ii0x5GPCJNlB}yhqh8AUkW96vLVgFD#g*FGY9nX5rHSRS^N&$fD zd~i<}u28+6&CKz@vUJpVG)xN5{o zP^NTA`EKo9ckS|;YEBW>4Pabc3ezb01F1TG|0gL)s}YQhJ{-dYjJDwDukste;@cae zR2&$6y$z0xTC2lAI-a2k`4fLwzf4H<5j8tQu^aaC85d4|Eh@dk6bYFKTn^Zd_Aj`L zPkQpLQqqm>dlISXV@SCNAr44yqWVcG?>ASMs^eH^jd(X~FPM1m#L}xySI) zwY6c(bQ<+7I-rcdyz5G0r8+I)vOD)8A%Cy*SS;C;9CBX14f=odsNBuLyG1x&p^01^d{2N|Ek zews$Bj=JuwpuBr-9(AY?j+<&CCZ2yuH!~csTE&gp~%>55nS^V1# z>wi#%&_9S&;vJ-U5%~@G|ATkM|AmR^|G$O*Y-#`RA#1?@UG)&PCE+&%(Mx|_S!ll< zzvhRWFQL4lr=`C+K!T7hOTX1xJ`$k(yH&k^^T#(uGDz7n?wiQSf&j9<418;EXz?$M z1j({M_;(oOD}QY_*gz(2NdL_?oCuKrV{RQ1yYe?>Z7Y9W+CsKh=-z4_p#Roshp??O z&>;OMr2p*80{{g7w)OU`_veFrTcvn2@MHC_W6o3vc?~`!DGe2JvHEx1I)4yA(ANI; z_j~S}h~a++Lv8JEqnUy?2^XYf?QeD){z0T=Z%7zIu>LnWwCjJh=BnP1K7;^kofugOHR`M1Z{(-6r` L8u*X1e{KIiJ{U7a diff --git a/test/lint-api.test.js b/test/lint-api.test.js index 5e76d043..8f95353c 100644 --- a/test/lint-api.test.js +++ b/test/lint-api.test.js @@ -316,7 +316,7 @@ describe("Lint with API", () => { assert(linter.status === 1, `Linter status is 1 (${linter.status} returned)`); assert(linter.outputString.includes("warning"), "Output string contains warning"); assert(Object.keys(linter.lintResult.files).length === 2, "Files array contains 2 files"); - assert(linter.lintResult.summary.totalFoundErrorNumber === 4, "Error found"); + assert(linter.lintResult.summary.totalFoundErrorNumber === 5, "Error found"); assert(linter.lintResult.summary.totalFoundWarningNumber === 6, "Warnings found"); assert(linter.lintResult.summary.totalFoundInfoNumber === 65, "Infos found"); checkCodeNarcCallsCounter(1); @@ -354,7 +354,7 @@ describe("Lint with API", () => { assert(linter.status === 1, `Linter status is 1 (${linter.status} returned)`); assert(linter.outputString.includes("warning"), "Output string contains warning"); assert(Object.keys(linter.lintResult.files).length === 2, "Files array contains 2 files"); - assert(linter.lintResult.summary.totalFoundErrorNumber === 4, "Error found"); + assert(linter.lintResult.summary.totalFoundErrorNumber === 5, "Error found"); assert(linter.lintResult.summary.totalFoundWarningNumber === 6, "Warnings found"); assert(linter.lintResult.summary.totalFoundInfoNumber === 65, "Infos found"); checkCodeNarcCallsCounter(1); @@ -372,7 +372,7 @@ describe("Lint with API", () => { assert(linter.status === 1, `Linter status is 1 (${linter.status} returned)`); assert(linter.outputString.includes("warning"), "Output string contains warning"); assert(Object.keys(linter.lintResult.files).length === 12, `Expected 2 files got ${Object.keys(linter.lintResult.files).length}`); - assert(linter.lintResult.summary.totalFoundErrorNumber === 12, `Expected 12 errors to ${linter.lintResult.summary.totalFoundErrorNumber}`); + assert(linter.lintResult.summary.totalFoundErrorNumber === 19, `Expected 19 errors to ${linter.lintResult.summary.totalFoundErrorNumber}`); assert(linter.lintResult.summary.totalFoundWarningNumber === 333, `Expected 333 warnings to ${linter.lintResult.summary.totalFoundWarningNumber}`); assert(linter.lintResult.summary.totalFoundInfoNumber === 1649, `Expected 1649 infos to ${linter.lintResult.summary.totalFoundInfoNumber}`); checkCodeNarcCallsCounter(1);