Inherit VcsRootBaseTest from the VcsPlatformTest & cleanup

Inheriting from the VcsPlatformTest allows to:
* remove project fixture initialization and tearDown;
* remove myVcsManager: already exists in parent;
* remove doCreateRealModuleIn, copy-pasted from PlatformTestCase;
* remove manual call to clearFields.

There is also no need to hold myFilesToDelete, which:
(a) already exist in the UsefulTestCase;
(b) are not needed, because the only deleted file is inside the project
    and will be deleted automatically.
This commit is contained in:
Kirill Likhodedov
2017-03-20 22:54:06 +00:00
parent f4eef1cba2
commit db21e64562
3 changed files with 15 additions and 73 deletions
@@ -141,7 +141,6 @@ public class VcsIntegrationEnablerTest extends VcsRootBaseTest {
protected boolean initOrNotifyError(@NotNull final VirtualFile projectDir) {
File file = new File(projectDir.getPath(), ".mock");
VcsNotifier.getInstance(myProject).notifySuccess("Created mock repository in " + projectDir.getPresentableUrl());
myFilesToDelete.add(file);
return file.mkdir();
}
}
@@ -15,74 +15,54 @@
*/
package com.intellij.openapi.vcs.roots;
import com.intellij.ide.highlighter.ModuleFileType;
import com.intellij.openapi.application.Result;
import com.intellij.openapi.application.WriteAction;
import com.intellij.openapi.extensions.ExtensionPoint;
import com.intellij.openapi.extensions.Extensions;
import com.intellij.openapi.module.EmptyModuleType;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleManager;
import com.intellij.openapi.module.ModuleType;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.ModuleRootManager;
import com.intellij.openapi.roots.impl.ModuleRootManagerImpl;
import com.intellij.openapi.roots.impl.RootModelImpl;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.vcs.ProjectLevelVcsManager;
import com.intellij.openapi.vcs.VcsKey;
import com.intellij.openapi.vcs.VcsRootChecker;
import com.intellij.openapi.vcs.changes.committed.MockAbstractVcs;
import com.intellij.openapi.vcs.impl.ProjectLevelVcsManagerImpl;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VfsUtilCore;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.testFramework.UsefulTestCase;
import com.intellij.testFramework.fixtures.IdeaProjectTestFixture;
import com.intellij.testFramework.fixtures.IdeaTestFixtureFactory;
import com.intellij.vcs.test.VcsPlatformTest;
import org.jetbrains.annotations.NotNull;
import java.io.File;
import java.io.IOException;
import java.util.Collection;
import java.util.HashSet;
import static com.intellij.openapi.vcs.Executor.cd;
import static com.intellij.openapi.vcs.Executor.mkdir;
public abstract class VcsRootBaseTest extends UsefulTestCase {
public abstract class VcsRootBaseTest extends VcsPlatformTest {
public static final String DOT_MOCK = ".mock";
static final String DOT_MOCK = ".mock";
protected MockAbstractVcs myVcs;
protected String myVcsName;
protected VirtualFile myRepository;
private VcsRootChecker myExtension;
@NotNull protected ProjectLevelVcsManagerImpl myVcsManager;
@NotNull protected MockAbstractVcs myVcs;
@NotNull protected String myVcsName;
protected Project myProject;
protected VirtualFile myProjectRoot;
protected VirtualFile myRepository;
public static final String myRepositoryFolderName = "repository";
private RootModelImpl myRootModel;
protected static final Collection<File> myFilesToDelete = new HashSet<>();
protected IdeaProjectTestFixture myProjectFixture;
@Override
protected void setUp() throws Exception {
super.setUp();
myProjectFixture = IdeaTestFixtureFactory.getFixtureFactory().createFixtureBuilder(getTestName(true)).getFixture();
myProjectFixture.setUp();
myProject = myProjectFixture.getProject();
myProjectRoot = myProject.getBaseDir();
cd(myProjectRoot);
Module module = doCreateRealModuleIn("foo", myProject, EmptyModuleType
.getInstance());
Module module = doCreateRealModuleIn("foo", myProject, EmptyModuleType.getInstance());
myRootModel = ((ModuleRootManagerImpl)ModuleRootManager.getInstance(module)).getRootModel();
mkdir(myRepositoryFolderName);
mkdir("repository");
myProjectRoot.refresh(false, true);
myRepository = myProjectRoot.findChild(myRepositoryFolderName);
myRepository = myProjectRoot.findChild("repository");
myVcs = new MockAbstractVcs(myProject);
myVcsManager = (ProjectLevelVcsManagerImpl)ProjectLevelVcsManager.getInstance(myProject);
ExtensionPoint<VcsRootChecker> point = getExtensionPoint();
myExtension = new VcsRootChecker() {
@NotNull
@@ -102,7 +82,7 @@ public abstract class VcsRootBaseTest extends UsefulTestCase {
}
};
point.registerExtension(myExtension);
myVcsManager.registerVcs(myVcs);
vcsManager.registerVcs(myVcs);
myVcsName = myVcs.getName();
myRepository.refresh(false, true);
}
@@ -115,25 +95,13 @@ public abstract class VcsRootBaseTest extends UsefulTestCase {
protected void tearDown() throws Exception {
try {
getExtensionPoint().unregisterExtension(myExtension);
myVcsManager.unregisterVcs(myVcs);
for (File file : myFilesToDelete) {
delete(file);
}
myProjectFixture.tearDown();
clearFields(this);
vcsManager.unregisterVcs(myVcs);
}
finally {
super.tearDown();
}
}
private static void delete(File file) {
boolean b = FileUtil.delete(file);
if (!b && file.exists()) {
fail("Can't delete " + file.getAbsolutePath());
}
}
/**
* Creates the necessary temporary directories in the filesystem with empty ".mock" directories for given roots.
* And creates an instance of the project.
@@ -165,31 +133,6 @@ public abstract class VcsRootBaseTest extends UsefulTestCase {
}
}
@NotNull
public static Module doCreateRealModuleIn(@NotNull String moduleName,
@NotNull final Project project,
@NotNull final ModuleType moduleType) {
final VirtualFile baseDir = project.getBaseDir();
assertNotNull(baseDir);
final File moduleFile = new File(baseDir.getPath().replace('/', File.separatorChar),
moduleName + ModuleFileType.DOT_DEFAULT_EXTENSION);
FileUtil.createIfDoesntExist(moduleFile);
myFilesToDelete.add(moduleFile);
return new WriteAction<Module>() {
@Override
protected void run(@NotNull Result<Module> result) throws Throwable {
final VirtualFile virtualFile = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(moduleFile);
assert virtualFile != null;
Module module = ModuleManager.getInstance(project).newModule(virtualFile.getPath(), moduleType.getId());
module.getModuleFile();
result.setResult(module);
}
}.execute().getResultObject();
}
/**
* @return path to the project
*/
private void createDirs(@NotNull Collection<String> mockRoots) throws IOException {
File baseDir;
if (mockRoots.isEmpty()) {
@@ -191,11 +191,11 @@ public class VcsRootErrorsFinderTest extends VcsRootBaseTest {
void addVcsRoots(@NotNull Collection<String> relativeRoots) {
for (String root : relativeRoots) {
if (root.equals(PROJECT)) {
myVcsManager.setDirectoryMapping("", myVcsName);
vcsManager.setDirectoryMapping("", myVcsName);
}
else {
String absoluteRoot = VcsTestUtil.toAbsolute(root, myProject);
myVcsManager.setDirectoryMapping(absoluteRoot, myVcsName);
vcsManager.setDirectoryMapping(absoluteRoot, myVcsName);
}
}
}