Support several res/ directories
This commit is contained in:
+1
-1
@@ -46,7 +46,7 @@ public class AndroidPsiTreeChangePreprocessor : PsiTreeChangePreprocessor, Simpl
|
||||
val module = projectFileIndex.getModuleForFile(file.getVirtualFile())
|
||||
if (module != null) {
|
||||
val resourceManager = AndroidResourceManager.getInstance(module)
|
||||
val mainResDirectory = resourceManager.getMainResDirectory()
|
||||
val mainResDirectory = resourceManager.getResDirectories()
|
||||
val baseDirectory = file.getParent()?.getParent()?.getVirtualFile()
|
||||
|
||||
//File from res/ directory was modified
|
||||
|
||||
+2
-2
@@ -54,10 +54,10 @@ public class IDEAndroidResourceManager(val module: Module) : AndroidResourceMana
|
||||
|
||||
private fun AndroidFacet.toAndroidModuleInfo(): AndroidModuleInfo? {
|
||||
val applicationPackage = getManifest()?.getPackage()?.toString()
|
||||
val mainResDirectory = getAllResourceDirectories().firstOrNull()?.getPath()
|
||||
val mainResDirectories = getAllResourceDirectories().map { it.getPath() }
|
||||
|
||||
return if (applicationPackage != null) {
|
||||
AndroidModuleInfo(applicationPackage, mainResDirectory)
|
||||
AndroidModuleInfo(applicationPackage, mainResDirectories)
|
||||
}
|
||||
else null
|
||||
}
|
||||
|
||||
+4
-4
@@ -44,11 +44,11 @@ public abstract class AbstractAndroidCompletionTest : KotlinAndroidTestCase() {
|
||||
|
||||
private fun completionType() = CompletionType.BASIC
|
||||
|
||||
fun doTest(testPath: String?) {
|
||||
myFixture.copyDirectoryToProject(getResDir()!!, "res")
|
||||
val virtualFile = myFixture.copyFileToProject(testPath + getTestName(true) + ".kt", "src/" + getTestName(true) + ".kt");
|
||||
fun doTest(path: String?) {
|
||||
getResourceDirs(path).forEach { myFixture.copyDirectoryToProject(it.name, it.name) }
|
||||
val virtualFile = myFixture.copyFileToProject(path + getTestName(true) + ".kt", "src/" + getTestName(true) + ".kt");
|
||||
myFixture.configureFromExistingVirtualFile(virtualFile)
|
||||
val fileText = FileUtil.loadFile(File(testPath + getTestName(true) + ".kt"), true)
|
||||
val fileText = FileUtil.loadFile(File(path + getTestName(true) + ".kt"), true)
|
||||
testCompletion(fileText, TargetPlatform.JVM, {
|
||||
count -> myFixture.complete(completionType())
|
||||
})
|
||||
|
||||
+1
-1
@@ -25,7 +25,7 @@ public abstract class AbstractAndroidFindUsagesTest : KotlinAndroidTestCase() {
|
||||
|
||||
public fun doTest(path: String) {
|
||||
val f = myFixture!!
|
||||
f.copyDirectoryToProject(getResDir()!!, "res")
|
||||
getResourceDirs(path).forEach { myFixture.copyDirectoryToProject(it.name, it.name) }
|
||||
val virtualFile = f.copyFileToProject(path + getTestName(true) + ".kt", "src/" + getTestName(true) + ".kt");
|
||||
f.configureFromExistingVirtualFile(virtualFile)
|
||||
|
||||
|
||||
+1
-1
@@ -27,7 +27,7 @@ public abstract class AbstractAndroidGotoTest : KotlinAndroidTestCase() {
|
||||
|
||||
public fun doTest(path: String) {
|
||||
val f = myFixture!!
|
||||
f.copyDirectoryToProject(getResDir()!!, "res")
|
||||
getResourceDirs(path).forEach { myFixture.copyDirectoryToProject(it.name, it.name) }
|
||||
val virtualFile = f.copyFileToProject(path + getTestName(true) + ".kt", "src/" + getTestName(true) + ".kt");
|
||||
f.configureFromExistingVirtualFile(virtualFile)
|
||||
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@ public abstract class AbstractAndroidRenameTest : KotlinAndroidTestCase() {
|
||||
|
||||
public fun doTest(path: String) {
|
||||
val f = myFixture!!
|
||||
f.copyDirectoryToProject(getResDir()!!, "res")
|
||||
getResourceDirs(path).forEach { myFixture.copyDirectoryToProject(it.name, it.name) }
|
||||
val virtualFile = f.copyFileToProject(path + getTestName(true) + ".kt", "src/" + getTestName(true) + ".kt");
|
||||
f.configureFromExistingVirtualFile(virtualFile)
|
||||
|
||||
|
||||
+7
-2
@@ -25,14 +25,19 @@ import org.jetbrains.kotlin.test.ConfigurationKind
|
||||
import org.jetbrains.kotlin.test.TestJdkKind
|
||||
import org.jetbrains.kotlin.test.JetTestUtils
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
|
||||
import java.io.File
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
public abstract class AbstractParserResultEqualityTest : KotlinAndroidTestCase() {
|
||||
public fun doTest(path: String) {
|
||||
val project = myFixture.getProject()
|
||||
project.putUserData(TestConst.TESTDATA_PATH, path)
|
||||
myFixture.copyDirectoryToProject(getResDir(), "res")
|
||||
val cliParser = CliAndroidUIXmlProcessor(project, path + "../AndroidManifest.xml", path + getResDir() + "/layout/")
|
||||
val resDirs = getResourceDirs(path).map {
|
||||
myFixture.copyDirectoryToProject(it.name, it.name)
|
||||
"$path${it.name}/"
|
||||
}
|
||||
|
||||
val cliParser = CliAndroidUIXmlProcessor(project, path + "../AndroidManifest.xml", resDirs)
|
||||
val ideParser = IDEAndroidUIXmlProcessor(ModuleManager.getInstance(project).getModules()[0])
|
||||
|
||||
val cliResult = cliParser.parseToPsi()!!.joinToString("\n\n")
|
||||
|
||||
+15
-13
@@ -28,6 +28,7 @@ import com.intellij.facet.ModifiableFacetModel;
|
||||
import com.intellij.ide.startup.impl.StartupManagerImpl;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.application.PathManager;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.roots.ModuleRootModificationUtil;
|
||||
import com.intellij.openapi.startup.StartupManager;
|
||||
@@ -38,7 +39,6 @@ import com.intellij.psi.PsiManager;
|
||||
import com.intellij.psi.impl.PsiManagerEx;
|
||||
import com.intellij.psi.impl.file.impl.FileManager;
|
||||
import com.intellij.testFramework.InspectionTestUtil;
|
||||
import com.intellij.testFramework.TestLogger;
|
||||
import com.intellij.testFramework.builders.JavaModuleFixtureBuilder;
|
||||
import com.intellij.testFramework.fixtures.*;
|
||||
import com.intellij.testFramework.fixtures.impl.CodeInsightTestFixtureImpl;
|
||||
@@ -46,13 +46,13 @@ import com.intellij.testFramework.fixtures.impl.GlobalInspectionContextForTests;
|
||||
import org.jetbrains.android.facet.AndroidFacet;
|
||||
import org.jetbrains.android.facet.AndroidRootUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.kotlin.android.KotlinAndroidTestCaseBase;
|
||||
import org.jetbrains.kotlin.idea.actions.internal.KotlinInternalMode;
|
||||
import org.jetbrains.kotlin.idea.references.BuiltInsReferenceResolver;
|
||||
import org.jetbrains.kotlin.psi.JetFile;
|
||||
import org.jetbrains.kotlin.test.JetTestUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileFilter;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -77,9 +77,13 @@ public abstract class KotlinAndroidTestCase extends KotlinAndroidTestCaseBase {
|
||||
this(true);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
protected String getResRelativePath() {
|
||||
return "res/";
|
||||
protected File[] getResourceDirs(String path) {
|
||||
return new File(path).listFiles(new FileFilter() {
|
||||
@Override
|
||||
public boolean accept(@NotNull File file) {
|
||||
return file.getName().startsWith("res") && file.isDirectory();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -119,10 +123,12 @@ public abstract class KotlinAndroidTestCase extends KotlinAndroidTestCaseBase {
|
||||
|
||||
androidSdk = createAndroidSdk(getTestSdkPath(), getPlatformDir());
|
||||
myFacet = addAndroidFacet(myModule, sdkPath, getPlatformDir(), isToAddSdk());
|
||||
if (new File(getResDir()).exists()) {
|
||||
myFixture.copyDirectoryToProject(getResDir(), "res");
|
||||
} else {
|
||||
TestLogger.getInstance(this.getClass()).info("No res directory found in test");
|
||||
for (File resDir : getResourceDirs(dirPath)) {
|
||||
if (resDir.exists()) {
|
||||
myFixture.copyDirectoryToProject(resDir.getName(), resDir.getName());
|
||||
} else {
|
||||
Logger.getInstance(this.getClass()).info("No res directory found in test");
|
||||
}
|
||||
}
|
||||
myAdditionalModules = new ArrayList<Module>();
|
||||
|
||||
@@ -182,10 +188,6 @@ public abstract class KotlinAndroidTestCase extends KotlinAndroidTestCaseBase {
|
||||
return "/additionalModules/" + moduleName;
|
||||
}
|
||||
|
||||
protected String getResDir() {
|
||||
return "res";
|
||||
}
|
||||
|
||||
public static void tuneModule(JavaModuleFixtureBuilder moduleBuilder, String moduleDirPath) {
|
||||
moduleBuilder.addContentRoot(moduleDirPath);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user