From a89e25680b00d0ec3f0469390e37bde3cdd0e7e6 Mon Sep 17 00:00:00 2001 From: Akash Yadav Date: Fri, 31 Mar 2023 23:34:33 +0530 Subject: [PATCH] tests: fix build issues --- .../assets/data/common/tooling-api-all.jar | Bin 16227410 -> 16227410 bytes .../eventbus/events/editor/DocumentEvents.kt | 2 +- gradle/libs.versions.toml | 1 + .../androidide/lsp/snippets/SnippetParser.kt | 12 +- .../java/partial/PartialReparserImplTest.kt | 1 + .../providers/JavaSelectionProviderTest.kt | 2 +- lsp/testing/build.gradle.kts | 1 + .../com/itsaky/androidide/lsp/api/LSPTest.kt | 26 +++- .../projects/models/ActiveDocumentTest.kt | 129 ------------------ 9 files changed, 35 insertions(+), 139 deletions(-) delete mode 100644 subprojects/projects/src/test/java/com/itsaky/androidide/projects/models/ActiveDocumentTest.kt diff --git a/app/src/main/assets/data/common/tooling-api-all.jar b/app/src/main/assets/data/common/tooling-api-all.jar index 070c0d94dc3ac6c0a6f068f17118356bd128627e..b9834437aa48078285db40cc7d689749e6d60af8 100644 GIT binary patch delta 20368 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 O5FqiJx4Cwa^#1@MyMAN< delta 20406 zcmZWR2V7Lg)7-(q(T{dg?hp_JY+ykVM8Vz#d#q?I(HO--M2(6qX9t72c2Q9idtWS3 z5;ch(Y*CS-=;Q7W9LE_BHI{E?-XWUL-*3I$*_qktyKmpqyV->{ccD4N_p-FIv#^lM zElRA9J4}kU{Px!c87a~6_PslYCU$iKl)XVlbwlb*+4WdPo$mW9Eu|&atnZ>C zWk$b)ji7&W-a#vW_{~^!vj_g%ycusf2}G)Y>xzsz!rc*Kr^_RAC#!&4(bTBtOq_aM zS|&n-@+fO3ARl~hM&qHG))p2q3g)+7reepe1&@=XUtO^#!iI0(SP>fYj6SehW?^y4 zfhocy%}SK`g$*GlZ1EiLMtgDb|ilk_Kb z_=Z?XU$G~2mN<$%Q+LS)Vsfglq!%e+duD*&S|td~%qjq(r_y!&2Bh-lbj(zCwZq!tz~R;;SCq!~Z-i)5UX zs5kF&x;@{`!oo6!eQW{J=C}yne8eHi8aI-${F3ChBlUj0C2u5;<_$3XNI9G4 zERr;4+v|Z)QTHVeEM3syH!iMw{t9q<+E`e0WY2a;8gFzL?3leLh&BF^y?06~?S#K? zq|yYO;C(Em`w4~DSW5-5S8OL;WJR;%oTVyDC%_w=v~+vBoxp#DoJo2}0-4_csSV3j zN&{GY8?77HyGnl%iMJ@FE;1rM;v=1Eg^L}XB5lJGduwHEn4i>v<|g?`Ax2Svc7f8@ zQtGt{mR=HGTSU2*b(j7@lpuX1 zOZQP(u@$||(r@Z5JttxfikEH{DXaQRD@53{!O}BgZ_6;LpE&#L2&u0KD;zC#u_oPS zg}?Bh1SWNnTUc}ub<2&@db7+~QfHnpK{`$($etvvmYU7jom6-`MLJv*eCTwTBUt<_ z>17dLnIbJ0d$J#-mEvs80_g?f0cL2!j&4%fev!H82dl->a;YQQyyt@ridi7n_be`0 z+JsF@)HdY(mPr?gOmmk@<<#4sze*}fQJ5yJvLcn*##@J`Nh~ZFxU4m)#N`{L2P94< z)(Zz)z#o9aANK5z4l0&=K~f>bZYuB}%3 z$cl*D*E@LiroDy5!oZC9M=F%XgZouT_4Y*J@Yw04$vEh#!m(lVmQKm}#2 z=z>%&%90vuIagfweP_$FV()AZOW2q(vO?l5f3YDwGD|As%WW+zG(K3Sn{&lbOB*}F z@g8frN2JS{V0lLD&H2`{jDmK;RLcO$;i;Cm?XuinHcEDLs-+4Cu|0y7XQo-+sE>n1 zoAZ?{g;}{feZDcl#F0pEC0o!l)^@$jh9z#Yv}a#+^mfp6Ota)2)2zDrOJ7(sm#d*l z7O(99ICA#!ij|D>V^$M7<5XOthmvKdSSpzFV8MYWR9pS30614z%MQ1}g)ha(#PZ_Q zUS`hCDIH}c_N4ZM>qpL1g2@cFxS^<+!dqs;Q~S#5i6OLQfDASQ%)DDuw=T1Gwy@9! zSy(h@$K7Q0S>`CgnI9PC;B*(-CVWOG^@LxPOK0$2kaxg_Zo$1nb|4V=a~!KQY<5 zyAlxgze}~YhhGlIlh@=;#NoiH#U`Y`(9On&jqGaUfjG0e+H{p*2cVo7Cik)lMYPOb zHqCGXBFy(0b_`AA!2vk4*0sHoC0#GFVN+A(a^Ak5{O^GXua_kc$KQfC?tv^eM=tv! z@?e6Z>d8xm6VA%{p)C2&zDRJhzIPxyc3EzvS#Vhn&6Y2?Z1>0orwUa8N*3GE+ll6R z>H|9|nT*!R-RB_F94@lshl}i2%tLg^Uavp~U|ZI6VVVPrTsTpLFsDrpw0aRJTVxXSo;qwBX{Av|tb zoKoZ0+l~A6b`PHQ2{Wm{-I34DaUatbKpY$~b^>;wE)48}NT`nH@Gl|4k@|Mp?bMnkgTGsXDWG`OrEyD(~a*O>gm!P>Bz}R|MQe-@>h8B{1sk- zK1c#4yfzm*5I4o1*Z~dZ+9CxygG0DnLonJph=&jN_U($J<_`j)aP9YY;j?#n`_KYF z7sQg3S_d}OW3dCzyX)Q522eLX@oow~JnV`0#}XtBzv$Bte}`W5!Sv-zFZ%R%MZlw6 zpMUWeQbNske(;g=w|PE+as+|W1afA*VP8k8VNZOLQA(ay;&Tu)l_g~qDA~IODkTfI zlzOwIDFIfjtR!IDkI1Dm3OO2#AoRj0^KwF}o{@tw4e?0S^cfwyX`8sUwr zfOt(sczk!QjOTSx<)T%@)rUehL#eGyyX^~oHN<5D`iOj49saj#8@~F|OW->F^ zCM)0ce4I4ULtzaJ0vd`6?*AbJQ|6YMR!X_y1cpi3$#cr;@FS@poo^&sFxk;+ZPh4Ht&YqJ@?0 z=c$$sd{4FNH_G$6^(yPBJ=i8!HO2q~hkyrv)VlDeu4;cu_&Uz98m&DK^Hsl~tbtfo zvuXZnSKirQy@qlGQcKMZE!6YFkQZ$CP^8k;E^PZ)kvq;an3wb1vFe0RW@2C_XO_DK z0t-~$PPQjO66dO2c+AHy#J6*0=DzLPZ|I9Kgz! zNCMsnVt&8*dhtKb`TE8q=o1|~7Es@whuGJD_V`P9dUHQ}-sffgcBu$oXIrRb`87Vy z{MdNE)x-h?VIYVn3%BvN<;iFK-jmF8*ge*ATTcOIP^U<4(^0 z4Jd|fev47__)!0`csBVYlPAlO>g-tiQ1~mRZLoq34b>^QGRl86ZGGqo4nE#SBS_%- zEPSQEBkS>?z=4vJPmJ@w_6>3bx0@$-9`Lu};}7@`X^e2#HI?lC1AmHP3d&J~1I;-R z^w8hQ3XxzZRk9|>__ zxbTrI@-vz@EJUMpMQ zcVLil1Sxly@&2Jkv?L&|gFMb;M9z&ED)dY47K{imM)I8QND79DZ zh{4E~CFRA~v%l^qI`EI*2CWXpNuX)SPi6!iP~(WqoVp)mUUNLCF&z+4W)5ZU<@cWu za%VJ@^OqwV2IYUrKJm8BowQfgR})OwkfI2C6}yVz`F`up2x4 zKGDJH#g`AVvBeF&an^?|yk0~^lV$Cj@zkEdA5b)&ni_2EhD&sP7t)ob-U^npP4E!O zZ~qmXuoe;ghlISGgdO>BA?>2E1DN|Vkp!l?@>bhJ^T`U}!$^ewCz`Tvg*x-ptD)af z!LC!pP!j6!-$1O>2WH(^)W$fH7^9Ct^eGsCy}iFo%`YC?kKgupW2x4S{Mo3yPzSEa z3q42s3`p9H`MuMr+535S9ayT{AS)jHD74W+$1lvq4912&EN57w0L|7Rji5D#)&yEp zXw9I7K?{f099j!#Eupo776Gj_v^IR}kjUhDXog->V`5p-?zS>^;NL=00}R+~qb@1{ zvLivExq2@WT3degUR3=-p9pf=M9VadL!+U!SKbLF<-#X`(|lI1^6$}B8%=4G#9`Vk!*HPozj z6&H5s{!??IUG+BRC#os+-^KKxN(jLefCp|4RZ2b$MZ_}7p^Ua0jNtOW+wVc1d|hGt zezZAZE#|LXI_#o!+uEeV;mJ7PlXd7#^<&eC4tUICf1c>j27b?+>|jkw$h9595e{Ld z35uJH%WLep=#1XNsEL@1S?$+88%~7>*PtAE=?6b(HashPc-~5!9seln7#% zqRYin!^7Hj989}(3cF5|a3M3MzXQKGqGM_TE(4Ezdln-#T;YI)S9NmZ9?d)HegM#q zM>?H3()qhsoW*BJ_E$}3FTO+Hc^}CG&+$q=!m~@s7(|Gh+odD^uDPG+&noA3@#Z;m zyF5mRu&qnGU^enAOS>#Pj{thGoDkc!8V4iex(4Cw(zveI(UEYV>`MH7&yDnA!<`3; zr%uh`PFjAANv|iA9b3;|1ut&(&|9aot?T8K? zIKpr4XRGo5rXTnJCSKMD=R;1%cNkI2j(Pc1*u%*t;Uh)@J9ZZ&XdIqk$B#Ej$fHd) z9v0=>yCn3Xz$!K-1aigcgc#hBc)zm=U*Q(a4j2Q6IIlNV7|4T0rQoVG*!48PMGh>98=KPfb{QQ-Hmje(2N|FA2bJj&TyoOUowctFBxn_ zWR+(}dhuz?2A?>J^QgC`UBnRHE@J2h6EXsdB08J{e{W5j7GFUd#@ntp5L=JXLM}Ke-^&uU?pyRFC{ct4T{czOYTeu+UJT`0e20T3T zH%CXyYM`@me+QlSDehtbCG4o6X55BFDoWX8UZ+Pei+Ozx>2V;yLWSxUA-VVhiMU{(U0tOn~6S z6dw{BA}~xhA(+K?90S)LjmF6Mj1P%NXsbOQn?dk;JhAPVQ%gUg`t=#>ris5ehR0tV zyO~ZjF8wA3Gr#v^U0Kh56BU|P`D1yj{I3^~S0m3)4rb{;>%HixaAwuG9IEl*+8@P5 zH~5XW;U9{}*TX}S0ODZ2P<9pM#c)Y6R5V=s_B4Wu>>InC|uI_(`qyoRiw9Lf%#(HwA6Th|QuIDBP(%u0Gb0}of2WAE{!=IDYnwl$={K{UUI+ROhIPRkha{`G z_sv<&4w1Ae$@jXNXISFAN);b_DY=k}PS2F&Xg>c*auDi?qDQm%r0->#7lvg1!tni{ zWG{#@sx+70W%@AvAM@eJ-hH-$`^L_0`xBCVb$50fmoLr{@CG4(H7`sF5+A$o-kqHy z26?}U4cRgK6gQTg5#+%9hU~FoZP!;SSer$Y-C3+M#Z!~_aW>EUm~w$0tsq<)g7xMo zH8cbkA!09N{t#a8UdOoNT4=jFxFmhhgJmrla75Gvi8 zDfluu`+M~RN#yM!3jb6!{jb0V%fr!AP9s9Utl|9d#wF=&%kximmnsJq! z!3CcK8(=WFv)TSXha$|G7wA?U-2_+~$O&j`_}ay5rMv!n#E+}l;luo*(tH_Q9y;)n z25Ak4<7y}*OIn*|%i-E}^g94?@T$uKoFkFnyh*RNhS6!my3y|Ns{xI9g2zuEwjgf8 zv7bhzV+U}He}xXlL^S(2pvs!B<;GW=T{M@BoB1W3C>bzCK29;Dn zu6plityx*Uov*Ck(PtN8VO2lFc22}&0OnFV=J$A~oF6{1^BK-_0F~2;1WXDQ&&KG( zbEafw&~X^{Dj$}VnMtS5#hIBHc|1EabFLG1S{=4Lj`;_8i5Xm{$zmGXo{zVw~5S}M1kUa zAdH5D_v8*oATc~o>qn|3@n~#$a+s@kzV6)_iUgu|nelH31vZ~>ikNZ@R*Lk^n5w+`~dw+=m`WX9J!e0%8O0Tlb*9>-J~r-6r| z9pO#`kItcU3P9DYP<{+D^3l;L?NAp0eV>nu5XBM0F@D5w+?tLr@PHM>c6y(%{?Ai5 zuXH#e!RTW~?-T8jNeiD7JslAMFUZ0X0FN(p?~4yc@R12Tvod&Qb7qn}9Y_sd`lW=u-3_H{nI}Ho37f{^>F#=iU zlpEHXuy!|~-GpbhTOnR35UHYAdP}BRJm?l*Jm|KZY9505G1oiYF;q2gz3%Y0Ub%CM zK2hYp$(6D6sWA@xz?yQF zz0v28Cs=}yYW?8Y4`!Yb_zNF#saev+JR7`1P~eS$gGO`m0kntE{)YAl+GDOc`J_=- z=}U1@4vRjM*N#}OG`}7UHXiAuW(!v3dvagP{7GwZ8lKVBeBZkK$2KtHkYC0`1mk-e ze60tsoZjZU@T|A_*Fq5vw@~mrnwRg+!Y7-o`1Zi3){Y2=%N$>po0spv5@Vmr`QOc- z7AwDm$F6)TXHW+ncun`G>H#-$dw5wPO^(~St={*Rv~*kfnbi>GfJB1)2d0UCv8 z+ZSAwA%Na8y`ELz!X~wXTQGo-uGd`(f^bmfQqT#1;odro`MDOzSwD?Q#&q2a6nwF3 z0i$){N<54m_9}2P`28uAXM} zF8EuAlr*Nmj@_A5AY;H&!5@w(FgPK`MLjZ}4)AwLB4cr>>41)yZ0Qb@g1rtZRCB<} zqc|d+(^rGe>2ryOgU)Mc;aWYsnBh*rmo)^`1;sYUeJ+;|yYsj}ytGF!yg>_Lxep3_ z_?8C+8*LFp()gVN#lJ18Q=Eh1O`Xm1$9}@g`PF2{+g27Ryb>4iON>GFugXc{dJyC6^r?k*>{2HYv(7^RcINh-3qOy6XD0jq2#;_4l)QUVp^n@~IvPq$ zw(Q%5B16&zAfhg;R|&Z9=WPY>t_fl5OH3}@HMQ^s1#g|Vj;#Udn=boIdVtt7h+qY4 z^b%MEr-5sdUYcz9m1Tt?9Z^Xt0NGWAo=o+ZNC@@<|5X61uxitP&5l`6H|xX?{#BSj zMuCgm-oTId&MQ>dA!D!-A-XVlBSrSCwUR4xS2BnW1%H)ac-RBcznFyY6^-D>;wqAe zLqt6#M}eWti^sk${PKMaumGcpvm9n4u(IG=BY3g(Zz0t>@Mj1s{Z0c)jQ&6o7AfBHU{MYE6n0}ZOFIc)e8e9U zrJ!p?fVlCs$BM?gA;0R&MIDf;^_8LkigY|k;CCWEI1BI6)vU4r#LB*2bY>cY$Qtlb zg2%?*#p1gF&C#f0el+UY@hD_8Hu;(L_lOAci?l4P@)?{R%bqpF?M8eB{8;)tJqAZ$ zipFf(;O8>FHTLy$3Ui&o?z;^;In!P! z`ynt77CRe8 z2;UH3k)W@)p-_mSfv-fENu8tFrh4q4M2Mx4ULwq<&NotX=ebn)jv)Olg^A3NAXu@V z7<^Lsx24bm`GPQ^A_3mx(6U6yYxd{3Q$Ho|i16xj$< zsS__3=27Ri97ICo&bGn=>Rh!I7Ez~%osdMG3wFY{)M;cd%%aXNdtn@PULMNIvc?&zKv&lzTLLFa~prOvsDp(FVG*t`BsB>B^tfEdQ zUtx@B1j|(>Z}z*d5Jm8hzTj6RNvbc*pw7$s;CqCO@&iq=ljjG*V<*lZG{w$ge<6`N ziU8qjk?l`|blz-TfY6@ccLTtHh}p9N*cLl~G%#~(8wfrnCV|4t&qQh;WEN>&kXfYi z+Rn&^-~}YPS=)&YHbV~7cDzE&@~;gMCKK|%A;P53_%9AM^S=~o#%$HdtWIVlGl^qk zGus~;n`NkIER6q5!K5Z;1&=o|YZ27cY_1(m%_=LK2`MDNx@M3VD7I@@t?`%Sp_Rgf z4g|j!X7+f`aEJ=T%n29PQYWFg@B?*nn+rctXM77Y+u|0&_o7G{OCYmnwG>(r!oil1 zTC`j%h$!sLYX$L)osw2!M6C-cRk1-4LNg4jbxX8rwmU*-NhpsZ%o_J-Z8pZ4*5)8; z-^R>ue;e}(PLXD3E{cR|fGd2AG%q!=t(niG+D?zCT82?(KJ}xaEFjgIXtNb1?aY=) zX$LukQ-$r!LDx41G7llyF_1CXY0zGnMx70{9h(m3)u+{V{_bGr+$+}1@OZ45k58Q0 z?V32V7H{Kfi^`OaqHU@s2r8D{QJ@cO>+dR8F=Iy|5UrNmTc_f!ItkxMMIY>m1CO5T zB81@N^bI=InXW=MJlk4$KJcMv?A#b3 zjHb)S2&1UeXRO%yK9{M|}d(Di*fgSC~a(hu|!hj_N|D;-JKV36vq$b9H{ zUedHQme>*VxUkaYWK1F{?Od8b+7k1@-AWITP{iD~UukX~okK$DceK>>fxwduEZyS# zNtu4*N`IycM4IzRDb1_1yVd;CzBD3Pk`|TfNHW;pRD8Ck)R&A!b0^oAHlWo>?SHnG zUZLwaN}h+iOV`utB-!$Pr2%9T(%~;&nnD^8-KbloUyBg|^^Ow+_QcG{JS>jxH6J-~vHGI;Gd&X$fM8z;w zu6EGArV-KQchvSHOyb$SoAwkfPTG0*(Av>@fT`x4dTZhM3}TWjReiNpgo$)#60}O1 zBC=Kkw4KS*w7|xp+H^4@F?u?W(vBp|BiV2wy_BeZTo+kq#%b@7LTE&`|6A?3^W zt&<%pK%?NZ+R?r=g8_*$CXQU;>VLzZn~|~g_6inE?_%aty9s6;`OgJ zx*oI?$sCrhi$$S0#Q6hqJ_Y=^ow|}*GphN7J-VwzLMH36Pgh8KkgQz}>CWJb57C@n z**X`jb7IM0l8F-Q``S;=kO} ziFvo}e~`TS4|JAdd>UZ%u26T9g7~o9Ivzq@7h83!fJ&bwvqlr;3DocE|~ zD+!6tWGkPP1tSj%lsiw#8j?J;;kgx*scD2&ko7Gp!vN=Ri^^6L6d$j7*7Gv)8*eJ_ z`(Bp)K?~6dVr6+*6O19A{ZH8gTG8+XlIWnR>=iQLkdLXviH=R}-<26C5U0R_q~U_diXF5NmUSK#RiPtH3bDAjia*J{FjDj2z7=1QfK;z`462}i2E`Mn zRqPow6@C-}C=9z_Qt^?d@Wfs9q5|%7&4{d7RmJZ( zfDJ{>oQ)MraX>`JjUo~4XSZKf%=|Pn`k#t9IH2vu^bctyZf>l)f-;CqcfYzKf>fhj zCiry)ZA+v_&g+VCeUSxe-LacKjSwl6D|_he8{-^$gLx+FX_H3JvH{8Z0Gy$)&PdjG zq=+S3yjrOD#VN|kuvGm*Vu(&>Hy7)h;uHomtG7h|4hJ4f_092@VtU+CJ;gLFvURDr z2>C02sh(t^lnq>_&!$)a$=VVzKHf%X^no~_Iz3yX|5T^hC5@h9n`(h#xxNv_0i9lk zuF~gFY|~upbp2J@E2(mNW$NcsAYl>br}pbhNKHDXoIas%L3DJ~lySW$`J8x0-_gg? z936c&-_!4)jfUhJR3OT=s6gKjg{5Wn1$rCOhbpgIk$yi;kqnQD^!q5#sRC>h^kK9= z(wweJ|0iieo6PNM{c$7%#NY6jfQdEwLonb@uk}qZ40$_Q<4NIwco8Fc8$g6bF z4w+oJlDI?7SMl8B%C)EkeDzb=hNL6#>3NlVJ}t_>Us(A)#V|R^ZgnL&iO!P)R#&zm z$*GF}{8J@WaoVjaf2yoP8Ayu{8I@-#vB<6uvMRR^!#T2K`p3$CbOLzhVd#cXDvDi| zhPtA-NolaB5QF_m&42ea^rVtQJANa7!yH#6BPadV($Kull!_?BHd390xIV~HxXKyxaB21tgi0cx?l0Ak%;zqo$ z9yW+ykds4OoHFbr+Y)BwX~PZFg6aZJMrXj!@g=GZGU8yg)UWoh{?fX9cU?1?1NtwBf)5? zlL1xB>%{yju&NQIDILmp#Z+~p5Fk41o>jeRVRAsyfU2G(6fN~=Sk)kL4)#sfYaG0T z0O@g~Wb4LNQ5B#)xOiNZFS(RVq?%aOqaGrXBuf@l?V+a>8g*V%wUiu8YYRK8{3v_r zs1kUz>bx5&_U!kne@O^R$G6w3ejot?Y()a{Jo_APhOp8Kka&H*h;V-Ji8r?Jo#2Z}a6gqAqsT_I)Bdl_IFsU?M)TZXWs%@8av*&O+$;Q51mz&r%pI*?h1Ram zUbcQ!hy!}mc-H0>9o^_rG%WJfE1aQCGq&xk036WHoZ9x)elj_EsY~>$U{r4Z)Y-4< zoU}USRYVw4;P#{`+W(3d?f>V+M1;^O;F)uEHi<-6M_gI`mSTcjbH~5>EERm>zpqcV zq5;y;=zdc5Hd=*(YVC|_@t?cW+&3B3yXjCwp%AjG+L!7PoeanAtA0*rW0Z%F`>lEq zo>oPN{Qa~V9df3i`oI!=eVI5GisH3I(*}uoL~r8hh>$bZG=ZS>K+$=e=`x~_)IsA- z;rQy5?tuBsiKa9{B)|GiGA*JJJ&s4l zEMtkO4U$o1&@M4K5gDBd-ItkyaEeY=LzbDE;sC1z+r7+0?~tj8RWCE85)n$rGBl=W zz~i|ZQy9J12b{s57D!%YI!L%^LDqhasU=R)9+v>v#GV4O?}8>wClgwF4}+!Z;u_OzN9tDbvl#e60et>cA4Udip2O~FNwjy9{cDU z7hIGjpEk8aamdPdPMek!FOncRnww--KJyyvf`H}o9@<s5lf# zxCn;zkbqB)u7Ot*wPGp~YIf7NTeOSh4y!3AdeZL6h?>h}6ROtd6Kgu-90x9K={po+ zH}spDg`cd$tCMQFP$E(g3{9ztCQM>*d_hfrcU+j3^3SM&|0oPbWbjuTM1#|LrPIb5 W7m|YN;S5$2M~GzByv;R>r2hx)ebI>k diff --git a/eventbus-events/src/main/java/com/itsaky/androidide/eventbus/events/editor/DocumentEvents.kt b/eventbus-events/src/main/java/com/itsaky/androidide/eventbus/events/editor/DocumentEvents.kt index f4576263e..a5b74a645 100644 --- a/eventbus-events/src/main/java/com/itsaky/androidide/eventbus/events/editor/DocumentEvents.kt +++ b/eventbus-events/src/main/java/com/itsaky/androidide/eventbus/events/editor/DocumentEvents.kt @@ -45,7 +45,7 @@ constructor(var closedFile: Path, val selectionRange: Range = Range.NONE) : data class DocumentChangeEvent( var changedFile: Path, var changedText: String, - var newText: String?, + var newText: String? = null, var version: Int, var changeType: ChangeType, var changeDelta: Int, diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 4ec7937ea..e8d58aec8 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -98,6 +98,7 @@ tests-androidx-test-core = { module = "androidx.test:core", version = "1.5.0" } tests-androidx-junit = { module = "androidx.test.ext:junit", version = "1.1.5" } tests-androidx-espresso = { module = "androidx.test.espresso:espresso-core", version = "3.5.1" } tests-mockito-kotlin = { module = "org.mockito.kotlin:mockito-kotlin", version = "4.1.0" } +tests-mockk = { module = "io.mockk:mockk", version = "1.13.4" } # Tooling tooling-builderModel = { module="com.android.tools.build:builder-model", version.ref = "agp-tooling" } diff --git a/lsp/api/src/main/java/com/itsaky/androidide/lsp/snippets/SnippetParser.kt b/lsp/api/src/main/java/com/itsaky/androidide/lsp/snippets/SnippetParser.kt index ce69c3493..fc619b5bc 100644 --- a/lsp/api/src/main/java/com/itsaky/androidide/lsp/snippets/SnippetParser.kt +++ b/lsp/api/src/main/java/com/itsaky/androidide/lsp/snippets/SnippetParser.kt @@ -22,6 +22,7 @@ import com.google.gson.stream.JsonReader import com.itsaky.androidide.app.BaseApplication import com.itsaky.androidide.tasks.executeAsyncProvideError import com.itsaky.androidide.utils.ILogger +import com.itsaky.androidide.utils.VMUtils import java.io.IOException import java.util.concurrent.ConcurrentHashMap @@ -41,6 +42,12 @@ object SnippetParser { DefaultSnippet(prefix, desc, body.toTypedArray()) } ): Map> { + + // not supported for tests as assets cannot be accessed + if (VMUtils.isJvm()) { + return emptyMap() + } + return ConcurrentHashMap>().apply { for (scope in scopes) { this[scope] = @@ -62,7 +69,7 @@ object SnippetParser { try { BaseApplication.getBaseInstance() .assets - .open("data/editor/${lang}/snippets.${type}.json") + .open(assetsPath(lang, type)) .reader() } catch (e: IOException) { // snippet file probably does not exist @@ -84,6 +91,9 @@ object SnippetParser { } } + fun assetsPath(lang: String, type: String) = + "data/editor/${lang}/snippets.${type}.json" + private fun readSnippet( prefix: String, reader: JsonReader, diff --git a/lsp/java/src/test/java/com/itsaky/androidide/lsp/java/partial/PartialReparserImplTest.kt b/lsp/java/src/test/java/com/itsaky/androidide/lsp/java/partial/PartialReparserImplTest.kt index 8d682a06f..1494e7567 100644 --- a/lsp/java/src/test/java/com/itsaky/androidide/lsp/java/partial/PartialReparserImplTest.kt +++ b/lsp/java/src/test/java/com/itsaky/androidide/lsp/java/partial/PartialReparserImplTest.kt @@ -79,6 +79,7 @@ class PartialReparserImplTest { DocumentChangeEvent( file!!, contents!!.insert(192, "trim().").toString(), + null, 2, INSERT, "trim().".length, diff --git a/lsp/java/src/test/java/com/itsaky/androidide/lsp/java/providers/JavaSelectionProviderTest.kt b/lsp/java/src/test/java/com/itsaky/androidide/lsp/java/providers/JavaSelectionProviderTest.kt index 8b5ff708a..0fb0145e5 100644 --- a/lsp/java/src/test/java/com/itsaky/androidide/lsp/java/providers/JavaSelectionProviderTest.kt +++ b/lsp/java/src/test/java/com/itsaky/androidide/lsp/java/providers/JavaSelectionProviderTest.kt @@ -41,7 +41,7 @@ class JavaSelectionProviderTest { openFile("selection/SimpleSelectionExpansionTest") cursor = requireCursor() deleteCursorText() - dispatchEvent(DocumentChangeEvent(file!!, contents.toString(), 1, NEW_TEXT, 0, Range.NONE)) + dispatchEvent(DocumentChangeEvent(file!!, contents.toString(), null,1, NEW_TEXT, 0, Range.NONE)) val range = findRange() val expanded = server.expandSelection(ExpandSelectionParams(file!!, range)) diff --git a/lsp/testing/build.gradle.kts b/lsp/testing/build.gradle.kts index 2b031874b..d8836f0f2 100644 --- a/lsp/testing/build.gradle.kts +++ b/lsp/testing/build.gradle.kts @@ -37,5 +37,6 @@ dependencies { implementation(libs.tests.junit) implementation(libs.tests.google.truth) implementation(libs.tests.robolectric) + implementation(libs.tests.mockk) implementation(projects.actions) } \ No newline at end of file diff --git a/lsp/testing/src/main/java/com/itsaky/androidide/lsp/api/LSPTest.kt b/lsp/testing/src/main/java/com/itsaky/androidide/lsp/api/LSPTest.kt index 707d7f4ea..3de23a122 100644 --- a/lsp/testing/src/main/java/com/itsaky/androidide/lsp/api/LSPTest.kt +++ b/lsp/testing/src/main/java/com/itsaky/androidide/lsp/api/LSPTest.kt @@ -20,13 +20,15 @@ package com.itsaky.androidide.lsp.api import android.content.Context import com.google.common.truth.Truth.assertThat import com.itsaky.androidide.actions.ActionData +import com.itsaky.androidide.app.BaseApplication import com.itsaky.androidide.eventbus.events.editor.ChangeType.DELETE import com.itsaky.androidide.eventbus.events.editor.DocumentChangeEvent import com.itsaky.androidide.eventbus.events.editor.DocumentOpenEvent import com.itsaky.androidide.lookup.Lookup +import com.itsaky.androidide.lsp.snippets.SnippetParser import com.itsaky.androidide.models.Position import com.itsaky.androidide.models.Range -import com.itsaky.androidide.projects.FileManager +import com.itsaky.androidide.preferences.internal.tabSize import com.itsaky.androidide.projects.ProjectManager import com.itsaky.androidide.projects.builder.BuildService import com.itsaky.androidide.tooling.api.IProject @@ -37,15 +39,18 @@ import com.itsaky.androidide.tooling.testing.ToolingApiTestLauncher.MultiVersion import com.itsaky.androidide.utils.Environment import com.itsaky.androidide.utils.ILogger import io.github.rosemoe.sora.text.Content -import java.io.File -import java.nio.file.Path -import kotlin.io.path.pathString +import io.mockk.every +import io.mockk.mockkStatic import org.greenrobot.eventbus.EventBus import org.junit.Before import org.junit.runner.RunWith +import org.robolectric.Robolectric import org.robolectric.RobolectricTestRunner import org.robolectric.RuntimeEnvironment import org.robolectric.annotation.Config +import java.io.File +import java.nio.file.Path +import kotlin.io.path.pathString /** * Runs tests for a language server. @@ -75,11 +80,18 @@ abstract class LSPTest { return } + mockkStatic(::tabSize) + every { tabSize } returns 4 + val (server, project) = - ToolingApiTestLauncher().launchServer(implDir = FileProvider.implModule().pathString, client = MultiVersionTestClient()) + ToolingApiTestLauncher() + .launchServer( + implDir = FileProvider.implModule().pathString, + client = MultiVersionTestClient() + ) this.toolingProject = project this.toolingServer = server - + Lookup.DEFAULT.update(BuildService.KEY_PROJECT_PROXY, project) server @@ -117,7 +129,7 @@ abstract class LSPTest { // As the content has been changed, we have to // Update the content in language server - dispatchEvent(DocumentChangeEvent(file!!, contents.toString(), 1, DELETE, 0, Range.NONE)) + dispatchEvent(DocumentChangeEvent(file!!, contents.toString(), null, 1, DELETE, 0, Range.NONE)) } @JvmOverloads diff --git a/subprojects/projects/src/test/java/com/itsaky/androidide/projects/models/ActiveDocumentTest.kt b/subprojects/projects/src/test/java/com/itsaky/androidide/projects/models/ActiveDocumentTest.kt deleted file mode 100644 index 9db8f2e27..000000000 --- a/subprojects/projects/src/test/java/com/itsaky/androidide/projects/models/ActiveDocumentTest.kt +++ /dev/null @@ -1,129 +0,0 @@ -/* - * This file is part of AndroidIDE. - * - * AndroidIDE is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * AndroidIDE is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with AndroidIDE. If not, see . - */ - -package com.itsaky.androidide.projects.models - -import com.google.common.truth.Truth.assertThat -import com.itsaky.androidide.eventbus.events.editor.ChangeType -import com.itsaky.androidide.eventbus.events.editor.DocumentChangeEvent -import com.itsaky.androidide.models.Position -import com.itsaky.androidide.models.Range -import java.nio.file.Paths -import java.time.Instant -import org.junit.Test - -/** @author Akash Yadav */ -class ActiveDocumentTest { - - @Test - fun `test new text set patch`() { - val file = Paths.get("/") - val doc = ActiveDocument(file, 0, Instant.now(), "this is a string") - doc.patch( - DocumentChangeEvent( - file, - "this is a new text", - 2, - ChangeType.NEW_TEXT, - -1, - Range.pointRange(Position(0, doc.content.length).apply { index = column }) - ) - ) - - assertThat(doc.content).isEqualTo("this is a new text") - } - - @Test - fun `test single line insert patch`() { - val file = Paths.get("/") - val doc = ActiveDocument(file, 0, Instant.now(), "this is a string") - doc.patch( - DocumentChangeEvent( - file, - " added", - 2, - ChangeType.INSERT, - -1, - Range.pointRange(Position(0, doc.content.length).apply { index = column }) - ) - ) - - assertThat(doc.content).isEqualTo("this is a string added") - } - - @Test - fun `test single line delete patch`() { - val file = Paths.get("/") - val content = "this is a string added" - val doc = ActiveDocument(file, 0, Instant.now(), content) - doc.patch( - DocumentChangeEvent( - file, - " added", - 2, - ChangeType.DELETE, - -1, - Range( - Position(0, content.length - " added".length).apply { index = column }, - Position(0, content.length).apply { index = column } - ) - ) - ) - - assertThat(doc.content).isEqualTo("this is a string") - } - - @Test - fun `test multi line insert patch`() { - val file = Paths.get("/") - val doc = ActiveDocument(file, 0, Instant.now(), "this is an string") - doc.patch( - DocumentChangeEvent( - file, - "added\nand added\nand added ", - 2, - ChangeType.INSERT, - -1, - Range.pointRange(Position(0, doc.content.length - 6).apply { index = column }) - ) - ) - - assertThat(doc.content).isEqualTo("this is an added\nand added\nand added string") - } - - @Test - fun `test multi line delete patch`() { - val file = Paths.get("/") - val content = "this is an added\nand added\nand added string" - val doc = ActiveDocument(file, 0, Instant.now(), content) - doc.patch( - DocumentChangeEvent( - file, - " added", - 2, - ChangeType.DELETE, - -1, - Range( - Position(0, 9).apply { index = column }, - Position(0, content.length - 7).apply { index = column } - ) - ) - ) - - assertThat(doc.content).isEqualTo("this is a string") - } -}