correctly remove temp file types in tests

GitOrigin-RevId: 23a56810104e5451b78a46c2a65b30d20e7a738e
This commit is contained in:
Alexey Kudravtsev
2021-04-06 20:13:27 +00:00
committed by intellij-monorepo-bot
parent f83a2e1c93
commit c4db8aaae6
2 changed files with 18 additions and 12 deletions
@@ -2,18 +2,16 @@
package com.intellij.util.indexing;
import com.intellij.find.ngrams.TrigramIndex;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.fileTypes.ex.FileTypeManagerEx;
import com.intellij.openapi.fileTypes.FileTypeManager;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.io.FileUtilRt;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileWithId;
import com.intellij.psi.search.FilenameIndex;
import com.intellij.psi.search.FilenameIndexImpl;
import com.intellij.psi.stubs.StubUpdatingIndex;
import com.intellij.testFramework.LightVirtualFile;
import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase;
import com.intellij.util.text.CharArrayCharSequence;
/**
* @author Dmitry Avdeev
@@ -23,8 +21,11 @@ public class FileBasedIndexTest extends LightJavaCodeInsightFixtureTestCase {
public void testSurviveOnFileTypeChange() {
myFixture.configureByText("Foo.java", "class Foo { String bar; }");
myFixture.testHighlighting();
FileType foo = FileTypeIndexTest.registerFakeFileType();
FileTypeManagerEx.getInstanceEx().unregisterFileType(foo);
Disposable disposable = Disposer.newDisposable();
FileType foo = FileTypeIndexTest.registerFakeFileType(getTestName(false), disposable);
String fooName = foo.getName();
Disposer.dispose(disposable);
assertNull(FileTypeManager.getInstance().findFileTypeByName(fooName));
myFixture.configureByText("Bar.java", "class Bar { String bar; }");
myFixture.testHighlighting();
}
@@ -1,10 +1,12 @@
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.util.indexing;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.fileTypes.PlainTextFileType;
import com.intellij.openapi.fileTypes.ex.FakeFileType;
import com.intellij.openapi.fileTypes.ex.FileTypeManagerEx;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.search.FileTypeIndex;
import com.intellij.psi.search.FileTypeIndexImpl;
@@ -25,7 +27,8 @@ public class FileTypeIndexTest extends BasePlatformTestCase {
FileTypeIndex.getFiles(PlainTextFileType.INSTANCE, GlobalSearchScope.allScope(getProject()));
int version = index.getVersion();
FileType foo = registerFakeFileType();
Disposable disposable = Disposer.newDisposable();
FileType foo = registerFakeFileType(getTestName(false), disposable);
try {
assertEquals(version, index.getVersion());
Collection<VirtualFile> files = FileTypeIndex.getFiles(foo, GlobalSearchScope.allScope(getProject()));
@@ -33,14 +36,14 @@ public class FileTypeIndexTest extends BasePlatformTestCase {
assertEquals(foo, FileTypeIndex.getIndexedFileType(file, getProject()));
}
finally {
FileTypeManagerEx.getInstanceEx().unregisterFileType(foo);
Disposer.dispose(disposable);
}
assertEquals(PlainTextFileType.INSTANCE, FileTypeIndex.getIndexedFileType(file, getProject()));
assertEmpty(FileTypeIndex.getFiles(foo, GlobalSearchScope.allScope(getProject())));
}
@NotNull
static FileType registerFakeFileType() {
static FileType registerFakeFileType(@NotNull String name, @NotNull Disposable parent) {
FileType foo = new FakeFileType() {
@Override
public boolean isMyFileType(@NotNull VirtualFile file) {
@@ -50,17 +53,19 @@ public class FileTypeIndexTest extends BasePlatformTestCase {
@NotNull
@Override
public String getName() {
return "foo";
return name;
}
@NotNull
@Override
public String getDescription() {
return "";
return name;
}
};
FileTypeManagerEx.getInstanceEx().registerFileType(foo);
Disposer.register(parent, () -> FileTypeManagerEx.getInstanceEx().unregisterFileType(foo));
return foo;
}
}