From ea5e01153a3a1489524f0ef22220e48080b95cce Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Fri, 14 Nov 2014 15:54:57 +0300 Subject: [PATCH] file type test --- .../openapi/fileTypes/impl/FileTypesTest.java | 42 ++++++++----------- 1 file changed, 18 insertions(+), 24 deletions(-) diff --git a/platform/platform-tests/testSrc/com/intellij/openapi/fileTypes/impl/FileTypesTest.java b/platform/platform-tests/testSrc/com/intellij/openapi/fileTypes/impl/FileTypesTest.java index b0f9b84872ec..df484cce9a83 100644 --- a/platform/platform-tests/testSrc/com/intellij/openapi/fileTypes/impl/FileTypesTest.java +++ b/platform/platform-tests/testSrc/com/intellij/openapi/fileTypes/impl/FileTypesTest.java @@ -30,12 +30,11 @@ import com.intellij.openapi.vfs.CharsetToolkit; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.openapi.vfs.newvfs.NewVirtualFile; import com.intellij.psi.*; import com.intellij.psi.impl.PsiManagerEx; import com.intellij.testFramework.PlatformTestCase; import com.intellij.util.PatternUtil; -import com.intellij.util.containers.ConcurrentHashSet; +import com.intellij.util.containers.ContainerUtil; import com.intellij.util.ui.UIUtil; import junit.framework.TestCase; import org.jetbrains.annotations.NotNull; @@ -290,15 +289,16 @@ public class FileTypesTest extends PlatformTestCase { assertNotNull(project); assertFalse(project.equals(PlainTextFileType.INSTANCE)); - final Set detectorCalled = new ConcurrentHashSet(); + final Set detectorCalled = ContainerUtil.newConcurrentSet(); FileTypeRegistry.FileTypeDetector detector = new FileTypeRegistry.FileTypeDetector() { @Nullable @Override public FileType detect(@NotNull VirtualFile file, @NotNull ByteSequence firstBytes, @Nullable CharSequence firstCharsIfText) { detectorCalled.add(file); String text = firstCharsIfText.toString(); - if (text.startsWith("TYPE:")) return FileTypeRegistry.getInstance().findFileTypeByName(StringUtil.trimStart(text, "TYPE:")); - return null; + FileType result = text.startsWith("TYPE:") ? FileTypeRegistry.getInstance().findFileTypeByName(StringUtil.trimStart(text, "TYPE:")) : null; + System.out.println("T: my detector run for "+file.getName()+"; result: "+(result == null ? null : result.getName())); + return result; } @Override @@ -312,35 +312,29 @@ public class FileTypesTest extends PlatformTestCase { File f = new File(d, "xx.asfdasdfas"); FileUtil.writeToFile(f, "akjdhfksdjgf"); VirtualFile vFile = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(f); - ((NewVirtualFile)vFile).markDirty(); - vFile.refresh(false, false); - UIUtil.dispatchAllInvocationEvents(); - myFileTypeManager.drainReDetectQueue(); - UIUtil.dispatchAllInvocationEvents(); + ensureRedetected(vFile, detectorCalled); assertTrue(vFile.getFileType().toString(), vFile.getFileType() instanceof PlainTextFileType); - assertTrue(detectorCalled.contains(vFile)); - detectorCalled.clear(); VfsUtil.saveText(vFile, "TYPE:IDEA_MODULE"); - PsiDocumentManager.getInstance(getProject()).commitAllDocuments(); - UIUtil.dispatchAllInvocationEvents(); - myFileTypeManager.drainReDetectQueue(); - UIUtil.dispatchAllInvocationEvents(); - assertTrue(detectorCalled.contains(vFile)); - detectorCalled.clear(); + ensureRedetected(vFile, detectorCalled); assertTrue(vFile.getFileType().toString(), vFile.getFileType() instanceof ModuleFileType); VfsUtil.saveText(vFile, "TYPE:IDEA_PROJECT"); - PsiDocumentManager.getInstance(getProject()).commitAllDocuments(); - UIUtil.dispatchAllInvocationEvents(); - myFileTypeManager.drainReDetectQueue(); - UIUtil.dispatchAllInvocationEvents(); - assertTrue(detectorCalled.contains(vFile)); - detectorCalled.clear(); + ensureRedetected(vFile, detectorCalled); assertTrue(vFile.getFileType().toString(), vFile.getFileType() instanceof ProjectFileType); } finally { Extensions.getRootArea().getExtensionPoint(FileTypeRegistry.FileTypeDetector.EP_NAME).unregisterExtension(detector); } } + + private void ensureRedetected(VirtualFile vFile, Set detectorCalled) { + PsiDocumentManager.getInstance(getProject()).commitAllDocuments(); + UIUtil.dispatchAllInvocationEvents(); + myFileTypeManager.drainReDetectQueue(); + UIUtil.dispatchAllInvocationEvents(); + vFile.getFileType(); + assertTrue(detectorCalled.contains(vFile)); + detectorCalled.clear(); + } }