simplify — introduce forceCloseProject (test only)

Since Kotlin is not used, have to introduce such method to avoid (false, true, false, true, guessWhatIDo)
This commit is contained in:
Vladimir Krivosheev
2017-05-15 16:09:08 +02:00
parent ba7f988b9b
commit 8753c5d96a
4 changed files with 13 additions and 8 deletions
@@ -161,7 +161,7 @@ public class DaemonRespondToChangesTest extends DaemonAnalyzerTestCase {
Project project = getProject();
if (project != null) {
doPostponedFormatting(project);
((ProjectManagerImpl)ProjectManagerEx.getInstanceEx()).closeProject(project, false, false, false);
((ProjectManagerImpl)ProjectManagerEx.getInstanceEx()).forceCloseProject(project, false);
}
}
finally {
@@ -566,7 +566,7 @@ public class ProjectManagerImpl extends ProjectManagerEx implements Disposable {
@TestOnly
public Collection<Project> closeTestProject(@NotNull final Project project) {
assert ApplicationManager.getApplication().isUnitTestMode();
closeProject(project, false, false, false);
forceCloseProject(project, false);
Project[] projects = getOpenProjects();
return projects.length == 0 ? Collections.emptyList() : Arrays.asList(projects);
}
@@ -604,8 +604,13 @@ public class ProjectManagerImpl extends ProjectManagerEx implements Disposable {
return closeProject(project, true, false, true);
}
@TestOnly
public boolean forceCloseProject(@NotNull Project project, boolean dispose) {
return closeProject(project, false, dispose, false);
}
@SuppressWarnings("TestOnlyProblems")
public boolean closeProject(@NotNull final Project project, final boolean save, final boolean dispose, boolean checkCanClose) {
public boolean closeProject(@NotNull final Project project, final boolean saveProject, final boolean dispose, boolean checkCanClose) {
Application app = ApplicationManager.getApplication();
if (app.isWriteAccessAllowed()) {
throw new IllegalStateException("Must not call closeProject() from under write action because fireProjectClosing() listeners must have a chance to do something useful");
@@ -634,7 +639,7 @@ public class ProjectManagerImpl extends ProjectManagerEx implements Disposable {
try {
myBusPublisher.projectClosingBeforeSave(project);
if (save) {
if (saveProject) {
FileDocumentManager.getInstance().saveAllDocuments();
project.save();
app.saveSettings();
@@ -107,7 +107,7 @@ class ProjectRule : ApplicationRule() {
override public fun after() {
if (projectOpened.compareAndSet(true, false)) {
sharedProject?.let { runInEdtAndWait { (ProjectManager.getInstance() as ProjectManagerImpl).closeProject(it, false, false, false) } }
sharedProject?.let { runInEdtAndWait { (ProjectManager.getInstance() as ProjectManagerImpl).forceCloseProject(it, false) } }
}
}
@@ -243,7 +243,7 @@ fun Project.use(task: (Project) -> Unit) {
task(this)
}
finally {
runInEdtAndWait { projectManager.closeProject(this, false, true, false) }
runInEdtAndWait { projectManager.forceCloseProject(this, true) }
}
}
@@ -252,7 +252,7 @@ class DisposeNonLightProjectsRule : ExternalResource() {
val projectManager = if (ApplicationManager.getApplication().isDisposed) null else ProjectManager.getInstance() as ProjectManagerImpl
projectManager?.openProjects?.forEachGuaranteed {
if (!ProjectManagerImpl.isLight(it)) {
runInEdtAndWait { projectManager.closeProject(it, false, true, false) }
runInEdtAndWait { projectManager.forceCloseProject(it, true) }
}
}
}
@@ -531,7 +531,7 @@ public abstract class PlatformTestCase extends UsefulTestCase implements DataPro
for (Project project : projectManager.closeTestProject(projectToClose)) {
runAll = runAll
.append(() -> { throw new IllegalStateException("Test project is not disposed: " + project + ";\n created in: " + getCreationPlace(project)); })
.append(() -> ((ProjectManagerImpl)projectManager).closeProject(project, false, true, false));
.append(() -> ((ProjectManagerImpl)projectManager).forceCloseProject(project, true));
}
}
runAll.append(() -> WriteAction.run(() -> Disposer.dispose(projectToClose))).run();