From c41d6c427dc3e41624c39b0724ce4e820a1ed0ac Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Mon, 18 Feb 2019 18:42:32 +0300 Subject: [PATCH] Fix flaky navigation tests by refreshing file system before find --- .../navigation/AbstractNavigateFromLibrarySourcesTest.kt | 4 +++- .../org/jetbrains/kotlin/test/util/ProjectStructureUtils.kt | 6 +++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/idea/tests/org/jetbrains/kotlin/idea/decompiler/navigation/AbstractNavigateFromLibrarySourcesTest.kt b/idea/tests/org/jetbrains/kotlin/idea/decompiler/navigation/AbstractNavigateFromLibrarySourcesTest.kt index 6e7bbb8a836..1689307c30f 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/decompiler/navigation/AbstractNavigateFromLibrarySourcesTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/decompiler/navigation/AbstractNavigateFromLibrarySourcesTest.kt @@ -17,7 +17,9 @@ abstract class AbstractNavigateFromLibrarySourcesTest : LightCodeInsightFixtureT protected fun navigationElementForReferenceInLibrarySource(filePath: String, referenceText: String): PsiElement { val libraryOrderEntry = ModuleRootManager.getInstance(myModule!!).orderEntries.first { it is LibraryOrderEntry } val libSourcesRoot = libraryOrderEntry.getUrls(OrderRootType.SOURCES)[0] - val vf = VirtualFileManager.getInstance().findFileByUrl(libSourcesRoot + "/$filePath")!! + val libUrl = "$libSourcesRoot/$filePath" + val vf = VirtualFileManager.getInstance().refreshAndFindFileByUrl(libUrl) + ?: error("Can't find library: $libUrl") val psiFile = psiManager.findFile(vf)!! val indexOf = psiFile.text!!.indexOf(referenceText) val reference = psiFile.findReferenceAt(indexOf) diff --git a/idea/tests/org/jetbrains/kotlin/test/util/ProjectStructureUtils.kt b/idea/tests/org/jetbrains/kotlin/test/util/ProjectStructureUtils.kt index eb78338eac1..48eb20d67ae 100644 --- a/idea/tests/org/jetbrains/kotlin/test/util/ProjectStructureUtils.kt +++ b/idea/tests/org/jetbrains/kotlin/test/util/ProjectStructureUtils.kt @@ -41,7 +41,11 @@ fun PlatformTestCase.projectLibrary( } } -val File.jarRoot get() = JarFileSystem.getInstance().getRootByLocal(LocalFileSystem.getInstance().findFileByIoFile(this)!!)!! +val File.jarRoot: VirtualFile + get() { + val virtualFile = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(this) ?: error("Cannot find file $this") + return JarFileSystem.getInstance().getRootByLocal(virtualFile) ?: error("Can't find root by file $virtualFile") + } fun Module.addDependency( library: Library,