tests fixed: allow access via VFS to required files

This commit is contained in:
nik
2014-12-02 19:12:16 +03:00
parent ce99c89cd9
commit 81c2bd615d
2 changed files with 23 additions and 11 deletions

View File

@@ -27,6 +27,7 @@ import com.intellij.openapi.util.WriteExternalException;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.newvfs.impl.VfsRootAccess;
import com.intellij.util.SystemProperties;
import org.jdom.Element;
import org.jetbrains.annotations.NotNull;
@@ -98,15 +99,21 @@ public class CompilerTestUtil {
new WriteAction() {
@Override
protected void run(@NotNull final Result result) throws IOException {
VirtualFile virtualFile = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(file);
Assert.assertNotNull(file.getAbsolutePath(), virtualFile);
//emulate save via 'saveSettings' so file won't be treated as changed externally
OutputStream stream = virtualFile.getOutputStream(new SaveSessionRequestor());
VfsRootAccess.allowRootAccess(file.getAbsolutePath());
try {
JDOMUtil.writeParent(root, stream, SystemProperties.getLineSeparator());
VirtualFile virtualFile = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(file);
Assert.assertNotNull(file.getAbsolutePath(), virtualFile);
//emulate save via 'saveSettings' so file won't be treated as changed externally
OutputStream stream = virtualFile.getOutputStream(new SaveSessionRequestor());
try {
JDOMUtil.writeParent(root, stream, SystemProperties.getLineSeparator());
}
finally {
stream.close();
}
}
finally {
stream.close();
VfsRootAccess.disallowRootAccess(file.getAbsolutePath());
}
}
}.execute().throwException();

View File

@@ -15,10 +15,9 @@
*/
package org.jetbrains.plugins.groovy.compiler
import com.intellij.compiler.CompilerConfiguration
import com.intellij.compiler.CompilerConfigurationImpl
import com.intellij.compiler.CompilerWorkspaceConfiguration
import com.intellij.compiler.server.BuildManager
import com.intellij.execution.executors.DefaultRunExecutor
import com.intellij.execution.impl.DefaultJavaProgramRunner
import com.intellij.execution.process.ProcessAdapter
@@ -32,7 +31,6 @@ import com.intellij.openapi.application.PluginPathManager
import com.intellij.openapi.compiler.CompilerMessage
import com.intellij.openapi.compiler.CompilerMessageCategory
import com.intellij.openapi.compiler.options.ExcludeEntryDescription
import com.intellij.openapi.compiler.options.ExcludedEntriesConfiguration
import com.intellij.openapi.compiler.options.ExcludesConfiguration
import com.intellij.openapi.module.Module
import com.intellij.openapi.roots.ModuleRootModificationUtil
@@ -40,12 +38,12 @@ import com.intellij.openapi.util.Key
import com.intellij.openapi.util.Ref
import com.intellij.openapi.util.io.FileUtil
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.openapi.vfs.newvfs.impl.VfsRootAccess
import com.intellij.psi.PsiFile
import com.intellij.testFramework.PsiTestUtil
import com.intellij.testFramework.TestLoggerFactory
import org.jetbrains.annotations.NotNull
import org.jetbrains.plugins.groovy.lang.psi.GroovyFile
/**
* @author peter
*/
@@ -695,7 +693,14 @@ public class Main {
setFileText(foo, 'class Foo implements Runnabl {}')
shouldFail { make() }
def compilerTempRoot = BuildManager.instance.getProjectSystemDirectory(project).absolutePath
try {
VfsRootAccess.allowRootAccess(compilerTempRoot) //because compilation error points to file under 'groovyStubs' directory
shouldFail { make() }
}
finally {
VfsRootAccess.disallowRootAccess(compilerTempRoot)
}
setFileText(foo, 'class Foo {}')