Add few tests on internal visibility in MPP

This commit is contained in:
Dmitry Savvinov
2019-05-22 11:08:21 +03:00
parent 43ef0ffa50
commit c50eeb3edb
11 changed files with 45 additions and 8 deletions
@@ -0,0 +1 @@
internal fun internalFromCommon() { }
@@ -0,0 +1,4 @@
MODULE common { platform=[JVM, JS, Native]; root=common }
MODULE jvm { platform=[JVM]; root=jvm }
jvm -> common { kind=DEPENDS_ON }
@@ -0,0 +1,3 @@
fun usage() {
internalFromCommon()
}
@@ -0,0 +1 @@
internal fun internalFromCommon() { }
@@ -0,0 +1,4 @@
MODULE common { platform=[JVM, JS, Native]; root=common }
MODULE jvm { platform=[JVM]; root=jvmMain; testRoot=jvmTest }
jvm -> common { kind=DEPENDS_ON }
@@ -0,0 +1,3 @@
fun usageInTest() {
internalFromCommon()
}
@@ -0,0 +1 @@
MODULE module { platform=[JVM]; root=moduleMain; testRoot=moduleTest }
@@ -0,0 +1 @@
internal fun internalFromMain() { }
@@ -0,0 +1,3 @@
fun usage() {
internalFromMain()
}
@@ -5,18 +5,19 @@
package org.jetbrains.kotlin.idea.caches.resolve
import com.intellij.psi.PsiFile
import com.intellij.openapi.module.ModuleManager
import com.intellij.openapi.vfs.VfsUtilCore
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.psi.PsiManager
import com.intellij.util.io.exists
import org.jetbrains.kotlin.checkers.BaseDiagnosticsTest
import org.jetbrains.kotlin.checkers.utils.CheckerTestUtil
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
import org.jetbrains.kotlin.idea.multiplatform.setupMppProjectFromTextFile
import org.jetbrains.kotlin.idea.project.platform
import org.jetbrains.kotlin.idea.resolve.frontendService
import org.jetbrains.kotlin.idea.stubs.AbstractMultiModuleTest
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
import org.jetbrains.kotlin.idea.test.allKotlinFiles
import org.jetbrains.kotlin.idea.util.module
import org.jetbrains.kotlin.idea.util.sourceRoots
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.test.KotlinTestUtils
@@ -35,13 +36,23 @@ abstract class AbstractMultiModuleIdeResolveTest : AbstractMultiModuleTest() {
// This will implicitly copy all source files to temporary directory, clearing them from diagnostic markup in process
setupMppProjectFromTextFile(testRoot)
for (tempFile in project.allKotlinFiles()) {
checkFile(tempFile, tempFile.findCorrespondingFileInTestDir(testRoot))
project.allKotlinFiles()
for (module in ModuleManager.getInstance(project).modules) {
for (sourceRoot in module.sourceRoots) {
VfsUtilCore.processFilesRecursively(sourceRoot) { file ->
if (file.isDirectory) return@processFilesRecursively true
val tempSourceKtFile = PsiManager.getInstance(project).findFile(file) as KtFile
checkFile(tempSourceKtFile, tempSourceKtFile.findCorrespondingFileInTestDir(sourceRoot, testRoot))
true
}
}
}
}
private fun KtFile.findCorrespondingFileInTestDir(testDir: File): File {
val tempRootPath = Paths.get(this.module!!.sourceRoots.single().path)
private fun KtFile.findCorrespondingFileInTestDir(containingRoot: VirtualFile, testDir: File): File {
val tempRootPath = Paths.get(containingRoot.path)
val tempProjectDirPath = tempRootPath.parent
val tempSourcePath = Paths.get(this.virtualFilePath)
@@ -92,4 +103,8 @@ abstract class AbstractMultiModuleIdeResolveTest : AbstractMultiModuleTest() {
abstract class AbstractHierarchicalExpectActualTest : AbstractMultiModuleIdeResolveTest() {
override fun getTestDataPath(): String = "${PluginTestCaseBase.getTestDataPathBase()}/hierarchicalExpectActual"
}
abstract class AbstractMultiplatformAnalysisTest : AbstractMultiModuleIdeResolveTest() {
override fun getTestDataPath(): String = "${PluginTestCaseBase.getTestDataPathBase()}/multiplatform"
}
@@ -61,7 +61,8 @@ public class MultiplatformAnalysisTestGenerated extends AbstractMultiplatformAna
}
public void testAllFilesPresentInMultiplatformTypeRefinement() throws Exception {
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/multiplatformTypeRefinement"), Pattern.compile("^([^\\.]+)$"), TargetBackend.ANY, false);
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/multiplatformTypeRefinement"),
Pattern.compile("^([^\\.]+)$"), TargetBackend.ANY, false);
}
@TestMetadata("callableReferences")