mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IJPL-219909 FilePatternPackageSet calculates relative path from content file set root if file has no content root
GitOrigin-RevId: b0954a23517713021826f550df4c17c9b065528b
This commit is contained in:
committed by
intellij-monorepo-bot
parent
645f193d45
commit
51d844aa00
+8
-1
@@ -194,9 +194,16 @@ public final class FilePatternPackageSet extends PatternBasedPackageSet {
|
||||
}
|
||||
}
|
||||
return virtualFile.getPath();
|
||||
} else {
|
||||
}
|
||||
else if (index.isInContent(virtualFile)) {
|
||||
final VirtualFile contentFileSetRoot = index.getWorkspaceContentFileSetRoot(virtualFile);
|
||||
if (contentFileSetRoot == null) return null;
|
||||
return VfsUtilCore.getRelativePath(virtualFile, contentFileSetRoot, '/');
|
||||
}
|
||||
else if (index.isInLibrary(virtualFile)) {
|
||||
return getLibRelativePath(virtualFile, index);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static String getLibRelativePath(final VirtualFile virtualFile, final ProjectFileIndex index) {
|
||||
|
||||
+61
@@ -0,0 +1,61 @@
|
||||
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.psi.search.scope.packageSet
|
||||
|
||||
import com.intellij.openapi.application.readAction
|
||||
import com.intellij.testFramework.VfsTestUtil
|
||||
import com.intellij.testFramework.junit5.TestApplication
|
||||
import com.intellij.testFramework.rules.ProjectModelExtension
|
||||
import com.intellij.testFramework.rules.TempDirectoryExtension
|
||||
import com.intellij.workspaceModel.ide.registerProjectRoot
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import org.assertj.core.api.Assumptions
|
||||
import org.junit.jupiter.api.Assertions.assertFalse
|
||||
import org.junit.jupiter.api.Assertions.assertTrue
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.junit.jupiter.api.extension.RegisterExtension
|
||||
import kotlin.io.path.createDirectories
|
||||
import kotlin.io.path.pathString
|
||||
import kotlin.io.path.writeText
|
||||
|
||||
@TestApplication
|
||||
class FilePatternPackageSetTest {
|
||||
@JvmField
|
||||
@RegisterExtension
|
||||
val projectModel: ProjectModelExtension = ProjectModelExtension()
|
||||
|
||||
@JvmField
|
||||
@RegisterExtension
|
||||
val tempDir: TempDirectoryExtension = TempDirectoryExtension()
|
||||
|
||||
@Test
|
||||
fun `files from CONTENT_NON_INDEXABLE root are included with empty module pattern when path matches`(): Unit = runBlocking {
|
||||
val rootPath = tempDir.newDirectoryPath("non-indexable-root")
|
||||
val filePath = rootPath.resolve("src/match.txt")
|
||||
filePath.parent.createDirectories()
|
||||
filePath.writeText("content")
|
||||
|
||||
registerProjectRoot(projectModel.project, rootPath)
|
||||
|
||||
val file = VfsTestUtil.findFileByCaseSensitivePath(filePath.pathString)
|
||||
Assumptions.assumeThat(file).isNotNull()
|
||||
|
||||
val packageSet = FilePatternPackageSet("", "src/match.txt")
|
||||
assertTrue(readAction { packageSet.contains(file, projectModel.project, null) })
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `files from CONTENT_NON_INDEXABLE root are not included with non-empty module pattern when path matches`(): Unit = runBlocking {
|
||||
val rootPath = tempDir.newDirectoryPath("non-indexable-root")
|
||||
val filePath = rootPath.resolve("src/match.txt")
|
||||
filePath.parent.createDirectories()
|
||||
filePath.writeText("content")
|
||||
|
||||
registerProjectRoot(projectModel.project, rootPath)
|
||||
|
||||
val file = VfsTestUtil.findFileByCaseSensitivePath(filePath.pathString)
|
||||
Assumptions.assumeThat(file).isNotNull()
|
||||
|
||||
val packageSet = FilePatternPackageSet("module", "src/match.txt")
|
||||
assertFalse(readAction { packageSet.contains(file, projectModel.project, null) })
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user