From 1072b1943f8b96d4631ddee0d6970c77cc46688f Mon Sep 17 00:00:00 2001 From: Pavel Talanov Date: Thu, 29 Aug 2013 18:03:08 +0400 Subject: [PATCH] Provide sources of dependency in AbstractJavaWithLibCompletionTest Test compiles dependency before running --- .../custom/TopLevelNonImportedExtFun.jar | Bin 1659 -> 1393 bytes .../TopLevelNonImportedExtFunSrc/abc.kt | 9 ++++ .../basic/custom/TopLevelNonImportedFun.jar | Bin 1659 -> 1385 bytes .../custom/TopLevelNonImportedFunSrc/abc.kt | 9 ++++ .../AbstractJavaWithLibCompletionTest.java | 47 ++++++++++++++---- 5 files changed, 55 insertions(+), 10 deletions(-) create mode 100644 idea/testData/completion/basic/custom/TopLevelNonImportedExtFunSrc/abc.kt create mode 100644 idea/testData/completion/basic/custom/TopLevelNonImportedFunSrc/abc.kt diff --git a/idea/testData/completion/basic/custom/TopLevelNonImportedExtFun.jar b/idea/testData/completion/basic/custom/TopLevelNonImportedExtFun.jar index 87a2f061f6d127594bf189d6f22f9c7a2092f293..c188655e547bd028ac965679772c44cb00d4ddf4 100644 GIT binary patch literal 1393 zcmWIWW@Zs#-~hrslm9v~AOR5u76xC}5Jz24KR10}M?X(D*WeI6U$=j!7#KeLo;mH~ zt*dvD*IQTX+?n&6gAA@1KX_WC=jE&8>3gws)s~G`!IUq4PJ25>~FF7Z%xHvcHw%=_Bfw?z( zbIr^Pf-YM*M635HtWr=CxpnBW)j|!eExZ>zI+ky}sq|b+mGAGmeGBcrF#ie+y?#V= zQL5_uGjlA{%dT1PulxUllYzHD@Y5mwS9kdBx)NB0GV_uYalUS8qPS z(6vDOS(v?3M8G-G=QYxec~^FE=*wLzSU&kc=!D(7zq{4d?!Il1pvY|{k(n^T@5{XB zrUF6IZ==k)BTpRNX~Wd^DqDR{+UA{;TMyYpx+J`FVKdq@adOLrtgUg%8PaceYn}dJ zqGso;A@@BcP~VUoNm&^y*ie)juy6roz96if;V6aPQ-ad4-+d zvuet!_MO!)PrEiDw7u-C{jF1Vw{=97XO?%Xi}z;zPx}97$(C*E*>^%VUb%GiRiJQn z*gDZTn3gg&_lzNFSCrrn7%XPYc8d{(1qm7FWg`D|t8Lx%IscC4suRgv% zi@VS^Phi@^>f3W}>4a-r%Nc3S>GKY;pLtd}$ehZv;0>MD z@AlZk<(2NT1g1ujBigKGHW~}kyj)is#IKA#Q4=oqaOthm)a3hp$JG+AP3;X_Tf*IK zIJIH%w>L5^s--M{l=W=1>OSqiQRTA6O;_-}wpnNK(y7rK-d{akY!Y}p?#_|J(gGUy zKbo%4hz{}abk)u+{kYZpfTqoVW>AW~rFK-QfQf-&6*ImRs|rlds3}&ZxF}f#D5PR) zW}cd6VQK_P!o3qt`yFx+Y5ULoR7)et=}?!icxrO8Xz6WlpIH+!m=f(}`<7g|k-~EC z^jdED1MNnBw-X@$T`2NpllYajD`G@Jj!!85C&XT__`#5$AOK-bBb&Khy^zZzC zep!5uQaF^L-FN8hk=w^={kG|R*S*5&`!@Fdx0Y@5*3{nLuXttd%To;s95zi)kFYKb zNzbuLl(;8kwJqu7%ZXDD28!Gjl=6#tx8YFD*_MYk)0Lt*r*^44PBj$R)%|CIiv3c_ z$3mtN8ix)^_`YCIUJzaz;wYagxwyA4)0e9zYoZupvwO!O~*asR-EDbo8v!724;&x$|5!0KZJ1t%ku2m_)7LM|LYB@imWRUV<6f*fHY uC`Qx+d8m;Di4$}aklhH1SOhQxCIVCwa71%}H!B-R8#55z2GR{+-v9uUp(wQg literal 1659 zcmWIWW@h1H0D+lR+D>2wlwe_CVMt6$*8g{kfgu2>N`!#}2+>uE09AujIVL3sBqnDk zrl;y9=Oh*v_fGK5zw98;c7NmDWxn2--qHr~YXw$a;uc%FeV&ZF$I7l13qCd8J~p$> zH&%MB`P3hgF_s^ge*}gemv`h+I^Y#|{@kAT#+!eC{`Q-n!TpAM&Wc2#mcvhCRKv5* z=n5njFUkvez6HD64HN4ZewMv`{-=kH_w-+v!B zN-7W7`fX8-iok#8yEfNa<(A2$MdnStS{Wv=?ffT~r5lZ+JYO!l!=e9-cfZ@5;%)ZN zf+v57o@>OxXEWt=bH7;FlRqwg-vji2h5em3tzYd?sOEO|h{IKiLh{l(__rIqnfhpE z;|HH_U#%K*-{`p5On)pz>q`r*$zr=-UrK1(!(rxPf(cP`xdig(&{ZorruA3l`*wn2XCrOUD=-_3tGd}RE<4GO-=Np`9a zfu1)21|cGNrlDmeP@onk7iAWd=w+7_ubt|hf7^iP`1^k%P5yV4!`d0GMQ$W!m?vm& z6VQ}MFGke5*q*q93ZWdbqy(4OMF#j3Z6R+Y- ztW(o9Hcn$%`|H7_`U~?Dcz10(yZV)HsZD+Dnrx@Hcek2pE4V#e#iqr-Eb>jwohOM` zUp}Z-+n?1u)8Wia4_%gsq;AKwm(nWyTR;Cbnp!U=_AvHs+M!e~!F-q72NWkqGoN#3 zmdnjLRpax{dDX5;DckJyiG0lb0i74^yDWX1*6%IZtMOWcx6fnt^ixO5R%mU}`ewBE zm-}P?nVy|1<(IwF_@}yV`GR(Z;~#Ao+jV6BznaPZgI98+!y~bR^=Btve*A8F3U6iT z^xMmV?k91 diff --git a/idea/testData/completion/basic/custom/TopLevelNonImportedExtFunSrc/abc.kt b/idea/testData/completion/basic/custom/TopLevelNonImportedExtFunSrc/abc.kt new file mode 100644 index 00000000000..cd2a1b8f239 --- /dev/null +++ b/idea/testData/completion/basic/custom/TopLevelNonImportedExtFunSrc/abc.kt @@ -0,0 +1,9 @@ +package abc + +public fun abcdAAA1(): Unit {} + +public fun abcdBBB2(i: Int) {} + +public fun Int.abcdCCC3() {} + +public fun Int.abcdDDD4(i: Int) {} \ No newline at end of file diff --git a/idea/testData/completion/basic/custom/TopLevelNonImportedFun.jar b/idea/testData/completion/basic/custom/TopLevelNonImportedFun.jar index 87a2f061f6d127594bf189d6f22f9c7a2092f293..5c5910a1aa1f82a0f028629f42adcaff6609fc0f 100644 GIT binary patch literal 1385 zcmWIWW@Zs#-~dAY1wWk_kbnpS3xls~h@-BjpPRm~qo1dnYjB93uiL*<3=E%r&z$!0 z*44Yn>#eJG?#%hkK?YZhA3QD6^YYd4^u1WRYD>@uFWo{duQO+~!#t`ftnZkV9FUltotU1gmzb70W%h!DPJAI3HZ5>Ao4R}5 z?%oMEUzq%|JmDDkjEh5}bN%EZoAb9%Iu_2;QGD@Dh3C)Lv8-}e2?URAjFt>%#>yzHE>jvUl;XFY4yqkP)2ca5Z4Qh#Qb0*9k-eHm8^X6I8x_2E4|9@q3 z$MlI`*O&!O4L>b*GWhM{n_DLc9q*~yB)`?P-*#`}Bdc#)Lc1g7f^uH2`MrDJjqV}lq zdu;Kr^M`1#L8AlPlamgS?>H4~1TQAfn16;>BEHqNLMtyc;^p+G*Or`Fwn1p=ROyH* zAxzVD6c-CjJ0kp{e@Dgo9|!+GdRl!X>2lCV?SpDY;VbVs{9Ip^+P5t0=7ehv%D zPA}h}m*c4*Di~^=^x~Kp~YB z3yY*g(-cVJ?VWJi>#&1J+yBeUzK3PEI+>SEcHLzdA-d}-_4%3&M|LS6z4vF zYlTA<$KAgb*WLYey;V6P2HZPTmTW~%>jrRy`6gb3y@hAW;ttba0b>iL4ar>!TC#aBi# zYtMgYu)on$b$cBnC@>SH;@kBL>Lf74|1shDtb@>u7U{N6y)d2wlwe_CVMt6$*8g{kfgu2>N`!#}2+>uE09AujIVL3sBqnDk zrl;y9=Oh*v_fGK5zw98;c7NmDWxn2--qHr~YXw$a;uc%FeV&ZF$I7l13qCd8J~p$> zH&%MB`P3hgF_s^ge*}gemv`h+I^Y#|{@kAT#+!eC{`Q-n!TpAM&Wc2#mcvhCRKv5* z=n5njFUkvez6HD64HN4ZewMv`{-=kH_w-+v!B zN-7W7`fX8-iok#8yEfNa<(A2$MdnStS{Wv=?ffT~r5lZ+JYO!l!=e9-cfZ@5;%)ZN zf+v57o@>OxXEWt=bH7;FlRqwg-vji2h5em3tzYd?sOEO|h{IKiLh{l(__rIqnfhpE z;|HH_U#%K*-{`p5On)pz>q`r*$zr=-UrK1(!(rxPf(cP`xdig(&{ZorruA3l`*wn2XCrOUD=-_3tGd}RE<4GO-=Np`9a zfu1)21|cGNrlDmeP@onk7iAWd=w+7_ubt|hf7^iP`1^k%P5yV4!`d0GMQ$W!m?vm& z6VQ}MFGke5*q*q93ZWdbqy(4OMF#j3Z6R+Y- ztW(o9Hcn$%`|H7_`U~?Dcz10(yZV)HsZD+Dnrx@Hcek2pE4V#e#iqr-Eb>jwohOM` zUp}Z-+n?1u)8Wia4_%gsq;AKwm(nWyTR;Cbnp!U=_AvHs+M!e~!F-q72NWkqGoN#3 zmdnjLRpax{dDX5;DckJyiG0lb0i74^yDWX1*6%IZtMOWcx6fnt^ixO5R%mU}`ewBE zm-}P?nVy|1<(IwF_@}yV`GR(Z;~#Ao+jV6BznaPZgI98+!y~bR^=Btve*A8F3U6iT z^xMmV?k91 diff --git a/idea/testData/completion/basic/custom/TopLevelNonImportedFunSrc/abc.kt b/idea/testData/completion/basic/custom/TopLevelNonImportedFunSrc/abc.kt new file mode 100644 index 00000000000..cd2a1b8f239 --- /dev/null +++ b/idea/testData/completion/basic/custom/TopLevelNonImportedFunSrc/abc.kt @@ -0,0 +1,9 @@ +package abc + +public fun abcdAAA1(): Unit {} + +public fun abcdBBB2(i: Int) {} + +public fun Int.abcdCCC3() {} + +public fun Int.abcdDDD4(i: Int) {} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/completion/AbstractJavaWithLibCompletionTest.java b/idea/tests/org/jetbrains/jet/completion/AbstractJavaWithLibCompletionTest.java index daca77cdc8f..62f6691c2ea 100644 --- a/idea/tests/org/jetbrains/jet/completion/AbstractJavaWithLibCompletionTest.java +++ b/idea/tests/org/jetbrains/jet/completion/AbstractJavaWithLibCompletionTest.java @@ -27,30 +27,31 @@ import com.intellij.openapi.roots.ui.configuration.libraryEditor.NewLibraryEdito import com.intellij.openapi.vfs.VfsUtil; import com.intellij.testFramework.LightProjectDescriptor; import com.intellij.testFramework.fixtures.impl.CodeInsightTestFixtureImpl; +import junit.framework.Assert; import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.cli.common.ExitCode; +import org.jetbrains.jet.cli.jvm.K2JVMCompiler; +import org.jetbrains.jet.codegen.forTestCompile.ForTestCompileRuntime; +import org.jetbrains.jet.codegen.forTestCompile.ForTestPackJdkAnnotations; import org.jetbrains.jet.plugin.PluginTestCaseBase; import org.jetbrains.jet.plugin.project.TargetPlatform; import org.jetbrains.jet.testing.ConfigLibraryUtil; import java.io.File; +import java.io.IOException; public abstract class AbstractJavaWithLibCompletionTest extends JetFixtureCompletionBaseTestCase { - public void doTestWithJar(String testPath) { + public void doTestWithJar(String testPath) throws IOException { + + File jarDependency = getOrCompileJarDependency(testPath); + assert jarDependency.exists() : "Library file should exist: " + jarDependency.getAbsolutePath(); NewLibraryEditor editor = new NewLibraryEditor(); editor.setName("doTestWithJarLib"); - - File fullDirectoryPath = new File(testPath).getParentFile(); - String jarLibName = getTestName(false) + ".jar"; - - File jarFile = new File(fullDirectoryPath, jarLibName); - assert jarFile.exists() : "Library file should exist: " + jarFile.getAbsolutePath(); - - editor.addRoot(VfsUtil.getUrlForLibraryRoot(jarFile), OrderRootType.CLASSES); + editor.addRoot(VfsUtil.getUrlForLibraryRoot(jarDependency), OrderRootType.CLASSES); try { ConfigLibraryUtil.configureLibrary(myModule, getProjectDescriptor().getSdk(), editor); CodeInsightTestFixtureImpl.ensureIndexesUpToDate(getProject()); - doTest(testPath); } finally { @@ -83,4 +84,30 @@ public abstract class AbstractJavaWithLibCompletionTest extends JetFixtureComple public TargetPlatform getPlatform() { return TargetPlatform.JVM; } + + //NOTE: you can just delete existing jar to recompile data for tests that have kotlin dependency + @NotNull + private File getOrCompileJarDependency(@NotNull String testPath) throws IOException { + File fullDirectoryPath = new File(testPath).getParentFile(); + String jarLibName = getTestName(false) + ".jar"; + File jarFile = new File(fullDirectoryPath, jarLibName); + if (!jarFile.exists()) { + compileDependencySources(jarFile, fullDirectoryPath); + } + return jarFile; + } + + private void compileDependencySources(@NotNull File outputFile, @NotNull File fullDirectoryPath) { + File sourcesDir = new File(fullDirectoryPath, getTestName(true) + "Src"); + File stdlib = ForTestCompileRuntime.runtimeJarForTests(); + File jdkAnnotations = ForTestPackJdkAnnotations.jdkAnnotationsForTests(); + ExitCode rv = new K2JVMCompiler().exec(System.out, + "-src", sourcesDir.getAbsolutePath(), + "-jar", outputFile.getAbsolutePath(), + "-noStdlib", + "-classpath", stdlib.getAbsolutePath(), + "-noJdkAnnotations", + "-annotations", jdkAnnotations.getAbsolutePath()); + Assert.assertEquals("compilation completed with non-zero code: " + rv.getCode(), ExitCode.OK, rv); + } }