From e9b09067a0f6dad6a6c9017a07eb4fd2cabffcf9 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Fri, 8 Jun 2012 12:16:48 +0400 Subject: [PATCH] memory in tests --- .../TestSourceBasedTestCase.java | 4 +-- .../com/intellij/ide/caches/FileContent.java | 5 ++- .../vfs/local/LocalFileSystemTest.java | 2 +- .../testFramework/FlyIdeaTestCase.java | 2 +- .../testFramework/PlatformTestCase.java | 3 +- .../intellij/testFramework/PsiTestUtil.java | 2 +- .../com/intellij/testFramework/TempFiles.java | 31 ++++++++++--------- .../fixtures/impl/TempDirTestFixtureImpl.java | 2 +- .../intellij/util/io/TestFileSystemItem.java | 2 +- .../intellij/openapi/util/io/FileUtilRt.java | 27 +++++++++++----- .../intellij/openapi/util/io/FileUtil.java | 10 +++++- .../openapi/util/io/FileUtilFindFileTest.java | 2 +- 12 files changed, 57 insertions(+), 35 deletions(-) diff --git a/java/testFramework/src/com/intellij/testFramework/TestSourceBasedTestCase.java b/java/testFramework/src/com/intellij/testFramework/TestSourceBasedTestCase.java index 4ed56d6f856b..377de5d14d6c 100644 --- a/java/testFramework/src/com/intellij/testFramework/TestSourceBasedTestCase.java +++ b/java/testFramework/src/com/intellij/testFramework/TestSourceBasedTestCase.java @@ -33,8 +33,8 @@ import java.io.File; @Override protected void setUp() throws Exception { super.setUp(); - myTempDirectory = FileUtil.createTempDirectory(getTestName(true), "test"); - myFilesToDelete.add(getTestContentFile()); + myTempDirectory = FileUtil.createTempDirectory(getTestName(true), "test",false); + myFilesToDelete.add(myTempDirectory); final File testRoot = new File(getTestDataPath(), getTestPath()); assertTrue(testRoot.getAbsolutePath(), testRoot.isDirectory()); diff --git a/platform/core-api/src/com/intellij/ide/caches/FileContent.java b/platform/core-api/src/com/intellij/ide/caches/FileContent.java index 980970fc1955..9caab59533b7 100644 --- a/platform/core-api/src/com/intellij/ide/caches/FileContent.java +++ b/platform/core-api/src/com/intellij/ide/caches/FileContent.java @@ -18,6 +18,7 @@ package com.intellij.ide.caches; import com.intellij.openapi.util.UserDataHolderBase; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.util.ArrayUtil; import java.io.IOException; @@ -25,8 +26,6 @@ import java.io.IOException; * @author max */ public class FileContent extends UserDataHolderBase { - private static final byte[] EMPTY_CONTENT = new byte[0]; - private final VirtualFile myVirtualFile; private byte[] myCachedBytes; private long myCachedLength = -1; @@ -53,7 +52,7 @@ public class FileContent extends UserDataHolderBase { } public void setEmptyContent() { - myCachedBytes = EMPTY_CONTENT; + myCachedBytes = ArrayUtil.EMPTY_BYTE_ARRAY; myCachedLength = 0; } diff --git a/platform/platform-tests/testSrc/com/intellij/openapi/vfs/local/LocalFileSystemTest.java b/platform/platform-tests/testSrc/com/intellij/openapi/vfs/local/LocalFileSystemTest.java index bed3356d231c..9981fc3e8aac 100644 --- a/platform/platform-tests/testSrc/com/intellij/openapi/vfs/local/LocalFileSystemTest.java +++ b/platform/platform-tests/testSrc/com/intellij/openapi/vfs/local/LocalFileSystemTest.java @@ -292,7 +292,7 @@ public class LocalFileSystemTest extends PlatformLangTestCase { if (!SystemInfo.isWindows && !SystemInfo.isUnix) return; final boolean safeWrite = GeneralSettings.getInstance().isUseSafeWrite(); - final File dir = FileUtil.createTempDirectory("hardlinks", ""); + final File dir = FileUtil.createTempDirectory("hardlinks", "",false); try { GeneralSettings.getInstance().setUseSafeWrite(false); diff --git a/platform/testFramework/src/com/intellij/testFramework/FlyIdeaTestCase.java b/platform/testFramework/src/com/intellij/testFramework/FlyIdeaTestCase.java index 134347e19063..358be4ad349a 100644 --- a/platform/testFramework/src/com/intellij/testFramework/FlyIdeaTestCase.java +++ b/platform/testFramework/src/com/intellij/testFramework/FlyIdeaTestCase.java @@ -34,7 +34,7 @@ public abstract class FlyIdeaTestCase extends TestCase { public File getTempDir() throws IOException { if (myTempDir == null) { - myTempDir = FileUtil.createTempDirectory(getName(), getClass().getName()); + myTempDir = FileUtil.createTempDirectory(getName(), getClass().getName(),false); } return myTempDir; diff --git a/platform/testFramework/src/com/intellij/testFramework/PlatformTestCase.java b/platform/testFramework/src/com/intellij/testFramework/PlatformTestCase.java index 797d9063ca27..e298fd27cb8e 100644 --- a/platform/testFramework/src/com/intellij/testFramework/PlatformTestCase.java +++ b/platform/testFramework/src/com/intellij/testFramework/PlatformTestCase.java @@ -53,6 +53,7 @@ import com.intellij.openapi.startup.StartupManager; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.EmptyRunnable; import com.intellij.openapi.util.io.FileUtil; +import com.intellij.openapi.util.io.FileUtilRt; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.impl.local.LocalFileSystemImpl; @@ -722,7 +723,7 @@ public abstract class PlatformTestCase extends UsefulTestCase implements DataPro } public static File createTempDir(@NonNls final String prefix, final boolean refresh) throws IOException { - final File tempDirectory = FileUtil.createTempDirectory(TEST_DIR_PREFIX + prefix, null); + final File tempDirectory = FileUtilRt.createTempDirectory(TEST_DIR_PREFIX + prefix, null, false); myFilesToDelete.add(tempDirectory); if (refresh) { getVirtualFile(tempDirectory); diff --git a/platform/testFramework/src/com/intellij/testFramework/PsiTestUtil.java b/platform/testFramework/src/com/intellij/testFramework/PsiTestUtil.java index d16065ccc341..82bf1b6c818b 100644 --- a/platform/testFramework/src/com/intellij/testFramework/PsiTestUtil.java +++ b/platform/testFramework/src/com/intellij/testFramework/PsiTestUtil.java @@ -87,7 +87,7 @@ import java.util.List; final String rootPath, final Collection filesToDelete, final boolean addProjectRoots) throws Exception { - File dir = FileUtil.createTempDirectory(tempName, null); + File dir = FileUtil.createTempDirectory(tempName, null,false); filesToDelete.add(dir); final VirtualFile vDir = LocalFileSystem.getInstance().refreshAndFindFileByPath(dir.getCanonicalPath().replace(File.separatorChar, '/')); diff --git a/platform/testFramework/src/com/intellij/testFramework/TempFiles.java b/platform/testFramework/src/com/intellij/testFramework/TempFiles.java index 12457a8323f6..14b9adac90c7 100644 --- a/platform/testFramework/src/com/intellij/testFramework/TempFiles.java +++ b/platform/testFramework/src/com/intellij/testFramework/TempFiles.java @@ -19,36 +19,36 @@ import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.junit.Assert; import java.io.File; import java.io.IOException; import java.util.Collection; -import static org.junit.Assert.assertTrue; - public class TempFiles { private final Collection myFilesToDelete; - public TempFiles(Collection filesToDelete) { + public TempFiles(@NotNull Collection filesToDelete) { myFilesToDelete = filesToDelete; } @Nullable - public VirtualFile createVFile(String prefix) { + public VirtualFile createVFile(@NotNull String prefix) { return getVFileByFile(createTempFile(prefix)); } @Nullable - public VirtualFile createVFile(String prefix, String postfix) { + public VirtualFile createVFile(@NotNull String prefix, String postfix) { return getVFileByFile(createTempFile(prefix, postfix)); } - public File createTempFile(String prefix) { + public File createTempFile(@NotNull String prefix) { return createTempFile(prefix, "_Temp_File_"); } - public File createTempFile(String prefix, String postfix) { + public File createTempFile(@NotNull String prefix, String postfix) { try { File tempFile = FileUtil.createTempFile(prefix, postfix); tempFileCreated(tempFile); @@ -60,13 +60,12 @@ public class TempFiles { } } - private void tempFileCreated(File tempFile) { + private void tempFileCreated(@NotNull File tempFile) { myFilesToDelete.add(tempFile); - tempFile.deleteOnExit(); } @Nullable - public static VirtualFile getVFileByFile(File tempFile) { + public static VirtualFile getVFileByFile(@NotNull File tempFile) { return LocalFileSystem.getInstance().refreshAndFindFileByIoFile(tempFile); } @@ -74,9 +73,9 @@ public class TempFiles { return createTempDir("dir"); } - private File createTempDir(String prefix) { + private File createTempDir(@NotNull String prefix) { try { - File dir = FileUtil.createTempDirectory(prefix, "test"); + File dir = FileUtil.createTempDirectory(prefix, "test",false); tempFileCreated(dir); getVFileByFile(dir); return dir; @@ -92,20 +91,22 @@ public class TempFiles { } @Nullable - public VirtualFile createTempVDir(String prefix) { + public VirtualFile createTempVDir(@NotNull String prefix) { return getVFileByFile(createTempDir(prefix)); } public String createTempPath() { File tempFile = createTempFile("xxx"); String absolutePath = tempFile.getAbsolutePath(); - assertTrue(absolutePath, tempFile.delete()); + Assert.assertTrue(absolutePath, tempFile.delete()); return absolutePath; } public void deleteAll() { for (File file : myFilesToDelete) { - FileUtil.delete(file); + if (!FileUtil.delete(file)) { + file.deleteOnExit(); + } } } diff --git a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/TempDirTestFixtureImpl.java b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/TempDirTestFixtureImpl.java index eb8a00c1b254..3fcfa105ee03 100644 --- a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/TempDirTestFixtureImpl.java +++ b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/TempDirTestFixtureImpl.java @@ -164,7 +164,7 @@ public class TempDirTestFixtureImpl extends BaseFixture implements TempDirTestFi try { if (myTempDir == null) { File th = getTempHome(); - myTempDir = th != null ? FileUtil.createTempDirectory(th, "unitTest", null) : FileUtil.createTempDirectory("unitTest", null); + myTempDir = th != null ? FileUtil.createTempDirectory(th, "unitTest", null,false) : FileUtil.createTempDirectory("unitTest", null,false); myFilesToDelete.add(myTempDir); } return myTempDir; diff --git a/platform/testFramework/src/com/intellij/util/io/TestFileSystemItem.java b/platform/testFramework/src/com/intellij/util/io/TestFileSystemItem.java index 852dc08c2547..a41984aeb1cb 100644 --- a/platform/testFramework/src/com/intellij/util/io/TestFileSystemItem.java +++ b/platform/testFramework/src/com/intellij/util/io/TestFileSystemItem.java @@ -60,7 +60,7 @@ public class TestFileSystemItem { try { Assert.assertEquals("in " + relativePath, myName, file.getName()); if (myArchive) { - final File dirForExtracted = FileUtil.createTempDirectory("extracted_archive", null); + final File dirForExtracted = FileUtil.createTempDirectory("extracted_archive", null,false); ZipUtil.extract(file, dirForExtracted, null); assertDirectoryEqual(dirForExtracted, relativePath); FileUtil.delete(dirForExtracted); diff --git a/platform/util-rt/src/com/intellij/openapi/util/io/FileUtilRt.java b/platform/util-rt/src/com/intellij/openapi/util/io/FileUtilRt.java index 1b7440f97c56..a095a5fe9fc3 100644 --- a/platform/util-rt/src/com/intellij/openapi/util/io/FileUtilRt.java +++ b/platform/util-rt/src/com/intellij/openapi/util/io/FileUtilRt.java @@ -37,6 +37,7 @@ public class FileUtilRt { private static final LoggerRt LOG = LoggerRt.getInstance("#com.intellij.openapi.util.io.FileUtilLight"); protected static final ThreadLocal BUFFER = new ThreadLocal() { + @Override protected byte[] initialValue() { return new byte[1024 * 20]; } @@ -130,19 +131,31 @@ public class FileUtilRt { @NotNull public static File createTempDirectory(@NotNull @NonNls String prefix, @Nullable @NonNls String suffix) throws IOException { + return createTempDirectory(prefix, suffix, true); + } + + public static File createTempDirectory(@NotNull @NonNls String prefix, @Nullable @NonNls String suffix, boolean deleteOnExit) throws IOException { File file = doCreateTempFile(prefix, suffix); file.delete(); file.mkdir(); - file.deleteOnExit(); + if (deleteOnExit) { + file.deleteOnExit(); + } return file; } @NotNull - public static File createTempDirectory(File dir, @NotNull @NonNls String prefix, @Nullable @NonNls String suffix) throws IOException { - File file = doCreateTempFile(prefix, suffix, dir); + public static File createTempDirectory(@NotNull File dir, @NotNull @NonNls String prefix, @Nullable @NonNls String suffix) throws IOException { + return createTempDirectory(dir, prefix, suffix,true); + } + @NotNull + public static File createTempDirectory(@NotNull File dir, @NotNull @NonNls String prefix, @Nullable @NonNls String suffix,boolean deleteOnExit) throws IOException { + File file = doCreateTempFile(dir, prefix, suffix); file.delete(); file.mkdir(); - file.deleteOnExit(); + if (deleteOnExit) { + file.deleteOnExit(); + } return file; } @@ -157,7 +170,7 @@ public class FileUtilRt { @Nullable @NonNls String suffix, final boolean create, boolean deleteOnExit) throws IOException { - File file = doCreateTempFile(prefix, suffix, dir); + File file = doCreateTempFile(dir, prefix, suffix); file.delete(); if (create) { file.createNewFile(); @@ -186,11 +199,11 @@ public class FileUtilRt { @NotNull private static File doCreateTempFile(String prefix, String suffix) throws IOException { - return doCreateTempFile(prefix, suffix, new File(getTempDirectory())); + return doCreateTempFile(new File(getTempDirectory()), prefix, suffix); } @NotNull - private static File doCreateTempFile(@NotNull String prefix, String suffix, final File dir) throws IOException { + private static File doCreateTempFile(@NotNull File dir, @NotNull String prefix, String suffix) throws IOException { dir.mkdirs(); if (prefix.length() < 3) { diff --git a/platform/util/src/com/intellij/openapi/util/io/FileUtil.java b/platform/util/src/com/intellij/openapi/util/io/FileUtil.java index f47ea423c48e..4283b65ad977 100644 --- a/platform/util/src/com/intellij/openapi/util/io/FileUtil.java +++ b/platform/util/src/com/intellij/openapi/util/io/FileUtil.java @@ -1127,11 +1127,19 @@ public class FileUtil extends FileUtilRt { public static File createTempDirectory(@NotNull @NonNls String prefix, @Nullable @NonNls String suffix) throws IOException { return FileUtilRt.createTempDirectory(prefix, suffix); } + @NotNull + public static File createTempDirectory(@NotNull @NonNls String prefix, @Nullable @NonNls String suffix, boolean deleteOnExit) throws IOException { + return FileUtilRt.createTempDirectory(prefix, suffix, deleteOnExit); + } @NotNull - public static File createTempDirectory(File dir, @NotNull @NonNls String prefix, @Nullable @NonNls String suffix) throws IOException { + public static File createTempDirectory(@NotNull File dir, @NotNull @NonNls String prefix, @Nullable @NonNls String suffix) throws IOException { return FileUtilRt.createTempDirectory(dir, prefix, suffix); } + @NotNull + public static File createTempDirectory(File dir, @NotNull @NonNls String prefix, @Nullable @NonNls String suffix, boolean deleteOnExit) throws IOException { + return FileUtilRt.createTempDirectory(dir, prefix, suffix,deleteOnExit); + } @NotNull public static File createTempFile(@NonNls File dir, @NotNull @NonNls String prefix, @Nullable @NonNls String suffix, boolean create) throws IOException { diff --git a/platform/util/testSrc/com/intellij/openapi/util/io/FileUtilFindFileTest.java b/platform/util/testSrc/com/intellij/openapi/util/io/FileUtilFindFileTest.java index a9d1f4660692..934f78a5881b 100644 --- a/platform/util/testSrc/com/intellij/openapi/util/io/FileUtilFindFileTest.java +++ b/platform/util/testSrc/com/intellij/openapi/util/io/FileUtilFindFileTest.java @@ -36,7 +36,7 @@ public class FileUtilFindFileTest { @BeforeClass public static void setUp() throws Exception { - myTempFile = FileUtil.createTempDirectory("tEF", ""); //NON-NLS + myTempFile = FileUtil.createTempDirectory("tEF", "",false); //NON-NLS myFirstFile = new File(myTempFile, "first"); mySecondFile = new File(myTempFile, "second"); //NON-NLS assertTrue(myFirstFile.createNewFile());