fixed memory leak in tests

This commit is contained in:
nik
2012-08-22 09:29:17 +04:00
parent d9511284da
commit e07dacb633
3 changed files with 37 additions and 19 deletions
@@ -77,6 +77,7 @@ import org.jboss.netty.handler.codec.protobuf.ProtobufVarint32LengthFieldPrepend
import org.jdom.Element;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.TestOnly;
import org.jetbrains.jps.api.*;
import org.jetbrains.jps.cmdline.BuildMain;
import org.jetbrains.jps.cmdline.ClasspathBootstrap;
@@ -916,6 +917,11 @@ public class BuildManager implements ApplicationComponent{
return listenPort;
}
@TestOnly
public void stopWatchingProject(Project project) {
myProjectDataMap.remove(getProjectPath(project));
}
private static String classpathToString(List<File> cp) {
StringBuilder builder = new StringBuilder();
for (File file : cp) {
@@ -2,8 +2,13 @@ package com.intellij.compiler;
import com.intellij.compiler.impl.TranslatingCompilerFilesMonitor;
import com.intellij.compiler.impl.javaCompiler.javac.JavacSettings;
import com.intellij.compiler.server.BuildManager;
import com.intellij.openapi.application.Result;
import com.intellij.openapi.application.WriteAction;
import com.intellij.openapi.application.ex.ApplicationManagerEx;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.projectRoots.ProjectJdkTable;
import com.intellij.openapi.projectRoots.impl.JavaAwareProjectJdkTableImpl;
import com.intellij.openapi.projectRoots.impl.ProjectJdkTableImpl;
import com.intellij.openapi.roots.ProjectRootManager;
import com.intellij.openapi.util.JDOMUtil;
@@ -55,4 +60,27 @@ public class CompilerTestUtil {
throw new RuntimeException(e);
}
}
public static void enableExternalCompiler(final Project project) {
new WriteAction() {
protected void run(final Result result) {
CompilerWorkspaceConfiguration.getInstance(project).USE_COMPILE_SERVER = true;
ApplicationManagerEx.getApplicationEx().doNotSave(false);
JavaAwareProjectJdkTableImpl table = JavaAwareProjectJdkTableImpl.getInstanceEx();
table.addJdk(table.getInternalJdk());
}
}.execute();
}
public static void disableExternalCompiler(final Project project) {
new WriteAction() {
protected void run(final Result result) {
CompilerWorkspaceConfiguration.getInstance(project).USE_COMPILE_SERVER = false;
ApplicationManagerEx.getApplicationEx().doNotSave(true);
JavaAwareProjectJdkTableImpl table = JavaAwareProjectJdkTableImpl.getInstanceEx();
table.removeJdk(table.getInternalJdk());
BuildManager.getInstance().stopWatchingProject(project);
}
}.execute();
}
}
@@ -17,7 +17,6 @@ package org.jetbrains.plugins.groovy.compiler;
import com.intellij.compiler.CompilerManagerImpl;
import com.intellij.compiler.CompilerTestUtil;
import com.intellij.compiler.CompilerWorkspaceConfiguration;
import com.intellij.execution.ExecutionException;
import com.intellij.execution.Executor;
import com.intellij.execution.application.ApplicationConfiguration;
@@ -33,14 +32,12 @@ import com.intellij.openapi.Disposable;
import com.intellij.openapi.application.AccessToken;
import com.intellij.openapi.application.Result;
import com.intellij.openapi.application.WriteAction;
import com.intellij.openapi.application.ex.ApplicationManagerEx;
import com.intellij.openapi.command.WriteCommandAction;
import com.intellij.openapi.compiler.*;
import com.intellij.openapi.module.ModifiableModuleModel;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleManager;
import com.intellij.openapi.module.StdModuleTypes;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.projectRoots.impl.JavaAwareProjectJdkTableImpl;
import com.intellij.openapi.projectRoots.impl.JavaSdkImpl;
import com.intellij.openapi.roots.*;
@@ -94,13 +91,8 @@ public abstract class GroovyCompilerTestCase extends JavaCodeInsightFixtureTestC
//noinspection ConstantConditions
CompilerProjectExtension.getInstance(getProject()).setCompilerOutputUrl(myMainOutput.findOrCreateDir("out").getUrl());
if (useJps()) {
ApplicationManagerEx.getApplicationEx().doNotSave(false);
CompilerWorkspaceConfiguration.getInstance(getProject()).USE_COMPILE_SERVER = true;
JavaAwareProjectJdkTableImpl jdkTable = JavaAwareProjectJdkTableImpl.getInstanceEx();
Sdk internalJdk = jdkTable.getInternalJdk();
jdkTable.addJdk(internalJdk);
ModuleRootModificationUtil.setModuleSdk(myModule, internalJdk);
CompilerTestUtil.enableExternalCompiler(getProject());
ModuleRootModificationUtil.setModuleSdk(myModule, JavaAwareProjectJdkTableImpl.getInstanceEx().getInternalJdk());
}
}
}.execute();
@@ -125,15 +117,7 @@ public abstract class GroovyCompilerTestCase extends JavaCodeInsightFixtureTestC
public void run() {
try {
if (useJps()) {
CompilerWorkspaceConfiguration.getInstance(getProject()).USE_COMPILE_SERVER = false;
ApplicationManagerEx.getApplicationEx().doNotSave(true);
new WriteCommandAction(getProject()) {
@Override
protected void run(Result result) throws Throwable {
final JavaAwareProjectJdkTableImpl jdkTable = JavaAwareProjectJdkTableImpl.getInstanceEx();
jdkTable.removeJdk(jdkTable.getInternalJdk());
}
}.execute();
CompilerTestUtil.disableExternalCompiler(getProject());
}
myMainOutput.tearDown();