From 46e9be7f7684a59c80674cdb6f7beb5f7e0d997f Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Mon, 1 Oct 2018 09:49:36 +0200 Subject: [PATCH] tests: navigate to correct offset in plain text files (IDEA-198881) --- .../execution/testframework/sm/FileUrlProvider.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/platform/smRunner/src/com/intellij/execution/testframework/sm/FileUrlProvider.java b/platform/smRunner/src/com/intellij/execution/testframework/sm/FileUrlProvider.java index e74b15771955..0ff5fd92c9dc 100644 --- a/platform/smRunner/src/com/intellij/execution/testframework/sm/FileUrlProvider.java +++ b/platform/smRunner/src/com/intellij/execution/testframework/sm/FileUrlProvider.java @@ -19,6 +19,7 @@ import com.intellij.execution.Location; import com.intellij.execution.PsiLocation; import com.intellij.execution.testframework.sm.runner.SMTestLocator; import com.intellij.openapi.editor.Document; +import com.intellij.openapi.fileEditor.OpenFileDescriptor; import com.intellij.openapi.project.DumbAware; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.io.FileUtil; @@ -131,6 +132,18 @@ public class FileUrlProvider implements SMTestLocator, DumbAware { int length = elementAtLine.getTextLength(); offset += length > 1 ? length - 1 : 1; } + + if (elementAtLine instanceof PsiPlainText && offset > 0) { + int offsetInPlainTextFile = offset; + return new PsiLocation(project, (PsiPlainText)elementAtLine) { + @Nullable + @Override + public OpenFileDescriptor getOpenFileDescriptor() { + VirtualFile file = getVirtualFile(); + return file != null ? new OpenFileDescriptor(getProject(), file, offsetInPlainTextFile) : null; + } + }; + } return PsiLocation.fromPsiElement(project, elementAtLine != null ? elementAtLine : psiFile); }