Accelerated navigation to library tests by compiling test library once.
This commit is contained in:
@@ -21,6 +21,7 @@ import com.intellij.openapi.roots.ModifiableRootModel;
|
|||||||
import com.intellij.openapi.roots.ModuleRootManager;
|
import com.intellij.openapi.roots.ModuleRootManager;
|
||||||
import com.intellij.openapi.roots.OrderRootType;
|
import com.intellij.openapi.roots.OrderRootType;
|
||||||
import com.intellij.openapi.roots.libraries.Library;
|
import com.intellij.openapi.roots.libraries.Library;
|
||||||
|
import com.intellij.openapi.util.io.FileUtil;
|
||||||
import com.intellij.openapi.vfs.LocalFileSystem;
|
import com.intellij.openapi.vfs.LocalFileSystem;
|
||||||
import com.intellij.openapi.vfs.VfsUtilCore;
|
import com.intellij.openapi.vfs.VfsUtilCore;
|
||||||
import com.intellij.openapi.vfs.VirtualFile;
|
import com.intellij.openapi.vfs.VirtualFile;
|
||||||
@@ -28,11 +29,15 @@ import com.intellij.openapi.vfs.VirtualFileVisitor;
|
|||||||
import com.intellij.openapi.vfs.newvfs.NewVirtualFile;
|
import com.intellij.openapi.vfs.newvfs.NewVirtualFile;
|
||||||
import com.intellij.testFramework.PlatformTestCase;
|
import com.intellij.testFramework.PlatformTestCase;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.jet.JetTestUtils;
|
||||||
import org.jetbrains.jet.cli.common.ExitCode;
|
import org.jetbrains.jet.cli.common.ExitCode;
|
||||||
import org.jetbrains.jet.cli.jvm.K2JVMCompiler;
|
import org.jetbrains.jet.cli.jvm.K2JVMCompiler;
|
||||||
import org.jetbrains.jet.plugin.PluginTestCaseBase;
|
import org.jetbrains.jet.plugin.PluginTestCaseBase;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.io.PrintStream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Evgeny Gerashchenko
|
* @author Evgeny Gerashchenko
|
||||||
@@ -41,11 +46,28 @@ import java.io.IOException;
|
|||||||
public abstract class AbstractNavigateToLibraryTest extends PlatformTestCase {
|
public abstract class AbstractNavigateToLibraryTest extends PlatformTestCase {
|
||||||
protected static final String PACKAGE = "testData.libraries";
|
protected static final String PACKAGE = "testData.libraries";
|
||||||
protected static final String TEST_DATA_PATH = PluginTestCaseBase.getTestDataPathBase() + "/libraries";
|
protected static final String TEST_DATA_PATH = PluginTestCaseBase.getTestDataPathBase() + "/libraries";
|
||||||
|
protected static final String SOURCES_PATH = TEST_DATA_PATH + "/library";
|
||||||
|
private static File tempDirWithCompiled;
|
||||||
protected VirtualFile libraryDir;
|
protected VirtualFile libraryDir;
|
||||||
protected VirtualFile librarySourceDir;
|
protected VirtualFile librarySourceDir;
|
||||||
|
|
||||||
protected abstract boolean isWithSources();
|
protected abstract boolean isWithSources();
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
private static File getTempDirWithCompiled() throws Exception {
|
||||||
|
if (tempDirWithCompiled == null) {
|
||||||
|
tempDirWithCompiled = JetTestUtils.tmpDir("dummylib");
|
||||||
|
|
||||||
|
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
|
||||||
|
|
||||||
|
ExitCode compilerExec = new K2JVMCompiler().exec(
|
||||||
|
new PrintStream(outStream), "-src", SOURCES_PATH, "-output", tempDirWithCompiled.getAbsolutePath());
|
||||||
|
assertEquals(new String(outStream.toByteArray()), ExitCode.OK, compilerExec);
|
||||||
|
}
|
||||||
|
|
||||||
|
return tempDirWithCompiled;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void setUp() throws Exception {
|
protected void setUp() throws Exception {
|
||||||
super.setUp();
|
super.setUp();
|
||||||
@@ -73,14 +95,10 @@ public abstract class AbstractNavigateToLibraryTest extends PlatformTestCase {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
librarySourceDir = LocalFileSystem.getInstance().findFileByPath(TEST_DATA_PATH + "/library");
|
librarySourceDir = LocalFileSystem.getInstance().findFileByPath(SOURCES_PATH);
|
||||||
assertNotNull(librarySourceDir);
|
assertNotNull(librarySourceDir);
|
||||||
|
|
||||||
|
FileUtil.copyDir(getTempDirWithCompiled(), new File(libraryDir.getPath()));
|
||||||
ExitCode compilerExec =
|
|
||||||
new K2JVMCompiler().exec(System.out, "-src", librarySourceDir.getPath(), "-output", libraryDir.getPath());
|
|
||||||
assertEquals(ExitCode.OK, compilerExec);
|
|
||||||
assertNotNull(libraryDir);
|
|
||||||
|
|
||||||
((NewVirtualFile)libraryDir).markDirtyRecursively();
|
((NewVirtualFile)libraryDir).markDirtyRecursively();
|
||||||
libraryDir.refresh(false, true);
|
libraryDir.refresh(false, true);
|
||||||
|
|||||||
Reference in New Issue
Block a user