[tests] fixes broken existing file lookup in VfsTestUtil
authorRoman Shevchenko <roman.shevchenko@jetbrains.com>
Wed, 7 Sep 2016 15:42:48 +0000 (18:42 +0300)
committerRoman Shevchenko <roman.shevchenko@jetbrains.com>
Wed, 7 Sep 2016 16:04:10 +0000 (19:04 +0300)
platform/testFramework/src/com/intellij/testFramework/VfsTestUtil.java

index 759af32d0f8772c3c280755b32a4ac67a6a118b8..4bd39aadd7b3f1481c25249d51bc7092854e4a45 100644 (file)
@@ -15,7 +15,6 @@
  */
 package com.intellij.testFramework;
 
-import com.intellij.openapi.application.AccessToken;
 import com.intellij.openapi.application.ApplicationManager;
 import com.intellij.openapi.application.WriteAction;
 import com.intellij.openapi.util.Key;
@@ -30,7 +29,6 @@ import com.intellij.openapi.vfs.newvfs.BulkFileListener;
 import com.intellij.openapi.vfs.newvfs.events.*;
 import com.intellij.util.PathUtil;
 import com.intellij.util.messages.MessageBusConnection;
-import com.intellij.util.text.StringTokenizer;
 import org.jetbrains.annotations.NotNull;
 import org.junit.Assert;
 
@@ -48,30 +46,23 @@ public class VfsTestUtil {
 
   private VfsTestUtil() { }
 
-  public static VirtualFile createFile(final VirtualFile root, final String relativePath) {
+  public static VirtualFile createFile(@NotNull VirtualFile root, @NotNull String relativePath) {
     return createFile(root, relativePath, "");
   }
 
-  public static VirtualFile createFile(final VirtualFile root, final String relativePath, final String text) {
+  public static VirtualFile createFile(@NotNull VirtualFile root, @NotNull String relativePath, @NotNull String text) {
     return createFileOrDir(root, relativePath, text, false);
   }
 
-  public static VirtualFile createDir(final VirtualFile root, final String relativePath) {
+  public static VirtualFile createDir(@NotNull VirtualFile root, @NotNull String relativePath) {
     return createFileOrDir(root, relativePath, "", true);
   }
 
-  private static VirtualFile createFileOrDir(final VirtualFile root,
-                                             final String relativePath,
-                                             final String text,
-                                             final boolean dir) {
+  private static VirtualFile createFileOrDir(VirtualFile root, String relativePath, String text, boolean dir) {
     try {
-      AccessToken token = WriteAction.start();
-      try {
+      return WriteAction.compute(() -> {
         VirtualFile parent = root;
-        Assert.assertNotNull(parent);
-        StringTokenizer parents = new StringTokenizer(PathUtil.getParentPath(relativePath), "/");
-        while (parents.hasMoreTokens()) {
-          final String name = parents.nextToken();
+        for (String name : StringUtil.tokenize(PathUtil.getParentPath(relativePath), "/")) {
           VirtualFile child = parent.findChild(name);
           if (child == null || !child.isValid()) {
             child = parent.createChildDirectory(VfsTestUtil.class, name);
@@ -79,23 +70,22 @@ public class VfsTestUtil {
           parent = child;
         }
 
-        VirtualFile file;
         parent.getChildren();//need this to ensure that fileCreated event is fired
+
+        String name = PathUtil.getFileName(relativePath);
+        VirtualFile file;
         if (dir) {
-          file = parent.createChildDirectory(VfsTestUtil.class, PathUtil.getFileName(relativePath));
+          file = parent.createChildDirectory(VfsTestUtil.class, name);
         }
         else {
-          file = parent.findFileByRelativePath(relativePath);
+          file = parent.findChild(name);
           if (file == null) {
-            file = parent.createChildData(VfsTestUtil.class, PathUtil.getFileName(relativePath));
+            file = parent.createChildData(VfsTestUtil.class, name);
           }
           VfsUtil.saveText(file, text);
         }
         return file;
-      }
-      finally {
-        token.finish();
-      }
+      });
     }
     catch (IOException e) {
       throw new RuntimeException(e);
@@ -117,7 +107,6 @@ public class VfsTestUtil {
     });
   }
 
-  @SuppressWarnings("UnusedDeclaration")
   public static void overwriteTestData(String filePath, String actual) {
     try {
       FileUtil.writeToFile(new File(filePath), actual);