Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
硅谷海盗
kotlin
提交
7831fc3d
K
kotlin
项目概览
硅谷海盗
/
kotlin
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kotlin
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
7831fc3d
编写于
10月 14, 2011
作者:
S
svtk
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
b3783e 'JetLiteFixture uses CoreEnvironment...' reverted
上级
ae2ecc52
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
103 addition
and
19 deletion
+103
-19
idea/tests/org/jetbrains/jet/JetLiteFixture.java
idea/tests/org/jetbrains/jet/JetLiteFixture.java
+103
-19
未找到文件。
idea/tests/org/jetbrains/jet/JetLiteFixture.java
浏览文件 @
7831fc3d
package
org.jetbrains.jet
;
import
com.intellij.core.CoreEnvironment
;
import
com.intellij.lang.Language
;
import
com.intellij.ide.startup.impl.StartupManagerImpl
;
import
com.intellij.lang.*
;
import
com.intellij.lang.impl.PsiBuilderFactoryImpl
;
import
com.intellij.mock.*
;
import
com.intellij.openapi.Disposable
;
import
com.intellij.openapi.editor.Document
;
import
com.intellij.openapi.editor.EditorFactory
;
import
com.intellij.openapi.fileEditor.FileDocumentManager
;
import
com.intellij.openapi.fileEditor.impl.FileDocumentManagerImpl
;
import
com.intellij.openapi.fileEditor.impl.LoadTextUtil
;
import
com.intellij.openapi.fileTypes.FileTypeFactory
;
import
com.intellij.openapi.fileTypes.FileTypeManager
;
import
com.intellij.openapi.options.SchemesManagerFactory
;
import
com.intellij.openapi.progress.impl.ProgressManagerImpl
;
import
com.intellij.openapi.startup.StartupManager
;
import
com.intellij.openapi.util.Disposer
;
import
com.intellij.openapi.util.io.FileUtil
;
import
com.intellij.openapi.util.text.StringUtil
;
import
com.intellij.openapi.vfs.CharsetToolkit
;
import
com.intellij.psi.PsiElement
;
import
com.intellij.psi.PsiElementVisitor
;
import
com.intellij.psi.PsiFile
;
import
com.intellij.psi.PsiFileFactory
;
import
com.intellij.psi.*
;
import
com.intellij.psi.impl.PsiCachedValuesFactory
;
import
com.intellij.psi.impl.PsiFileFactoryImpl
;
import
com.intellij.psi.impl.source.resolve.reference.ReferenceProvidersRegistry
;
import
com.intellij.psi.impl.source.resolve.reference.ReferenceProvidersRegistryImpl
;
import
com.intellij.psi.util.CachedValuesManager
;
import
com.intellij.testFramework.LightVirtualFile
;
import
com.intellij.testFramework.MockSchemesManagerFactory
;
import
com.intellij.testFramework.PlatformLiteFixture
;
import
com.intellij.testFramework.TestDataFile
;
import
com.intellij.testFramework.UsefulTestCase
;
import
com.intellij.util.CachedValuesManagerImpl
;
import
com.intellij.util.Function
;
import
com.intellij.util.messages.MessageBus
;
import
com.intellij.util.messages.MessageBusFactory
;
import
org.jetbrains.annotations.NonNls
;
import
org.jetbrains.jet.lang.parsing.JetParserDefinition
;
import
org.jetbrains.jet.plugin.JetFileType
;
import
org.jetbrains.jet.plugin.JetLanguage
;
import
org.picocontainer.MutablePicoContainer
;
import
org.picocontainer.PicoContainer
;
import
org.picocontainer.PicoInitializationException
;
import
org.picocontainer.PicoIntrospectionException
;
import
org.picocontainer.defaults.AbstractComponentAdapter
;
import
java.io.File
;
import
java.io.IOException
;
...
...
@@ -25,17 +47,20 @@ import java.io.IOException;
/**
* @author abreslav
*/
public
abstract
class
JetLiteFixture
extends
UsefulTestCas
e
{
public
abstract
class
JetLiteFixture
extends
PlatformLiteFixtur
e
{
protected
String
myFileExt
;
@NonNls
protected
final
String
myFullDataPath
;
protected
PsiFile
myFile
;
private
MockPsiManager
myPsiManager
;
private
PsiFileFactoryImpl
myFileFactory
;
protected
Language
myLanguage
;
pr
ivate
CoreEnvironment
myEnvironment
;
pr
otected
final
ParserDefinition
[]
myDefinitions
;
public
JetLiteFixture
(
@NonNls
String
dataPath
)
{
myFileExt
=
"jet"
;
myFullDataPath
=
getTestDataPath
()
+
"/"
+
dataPath
;
myDefinitions
=
new
ParserDefinition
[]
{
new
JetParserDefinition
()};
}
protected
String
getTestDataPath
()
{
...
...
@@ -45,17 +70,57 @@ public abstract class JetLiteFixture extends UsefulTestCase {
@Override
protected
void
setUp
()
throws
Exception
{
super
.
setUp
();
myEnvironment
=
new
CoreEnvironment
(
getTestRootDisposable
());
myEnvironment
.
registerFileType
(
JetFileType
.
INSTANCE
,
".jet"
);
myLanguage
=
JetLanguage
.
INSTANCE
;
myEnvironment
.
registerParserDefinition
(
new
JetParserDefinition
());
initApplication
();
getApplication
().
getPicoContainer
().
registerComponent
(
new
AbstractComponentAdapter
(
"com.intellij.openapi.progress.ProgressManager"
,
Object
.
class
)
{
@Override
public
Object
getComponentInstance
(
PicoContainer
container
)
throws
PicoInitializationException
,
PicoIntrospectionException
{
return
new
ProgressManagerImpl
(
getApplication
());
}
@Override
public
void
verify
(
PicoContainer
container
)
throws
PicoIntrospectionException
{
}
});
myProject
=
disposeOnTearDown
(
new
MockProjectEx
(
getTestRootDisposable
()));
myPsiManager
=
new
MockPsiManager
(
myProject
);
myFileFactory
=
new
PsiFileFactoryImpl
(
myPsiManager
);
final
MutablePicoContainer
appContainer
=
getApplication
().
getPicoContainer
();
registerComponentInstance
(
appContainer
,
MessageBus
.
class
,
MessageBusFactory
.
newMessageBus
(
getApplication
()));
registerComponentInstance
(
appContainer
,
SchemesManagerFactory
.
class
,
new
MockSchemesManagerFactory
());
final
MockEditorFactory
editorFactory
=
new
MockEditorFactory
();
registerComponentInstance
(
appContainer
,
EditorFactory
.
class
,
editorFactory
);
registerComponentInstance
(
appContainer
,
FileDocumentManager
.
class
,
new
MockFileDocumentManagerImpl
(
new
Function
<
CharSequence
,
Document
>()
{
@Override
public
Document
fun
(
CharSequence
charSequence
)
{
return
editorFactory
.
createDocument
(
charSequence
);
}
},
FileDocumentManagerImpl
.
DOCUMENT_KEY
));
registerComponentInstance
(
appContainer
,
PsiDocumentManager
.
class
,
new
MockPsiDocumentManager
());
myLanguage
=
myLanguage
==
null
&&
myDefinitions
!=
null
&&
myDefinitions
.
length
>
0
?
myDefinitions
[
0
].
getFileNodeType
().
getLanguage
()
:
myLanguage
;
registerComponentInstance
(
appContainer
,
FileTypeManager
.
class
,
new
MockFileTypeManager
(
new
MockLanguageFileType
(
myLanguage
,
myFileExt
)));
registerApplicationService
(
PsiBuilderFactory
.
class
,
new
PsiBuilderFactoryImpl
());
registerApplicationService
(
DefaultASTFactory
.
class
,
new
DefaultASTFactoryImpl
());
registerApplicationService
(
ReferenceProvidersRegistry
.
class
,
new
ReferenceProvidersRegistryImpl
());
myProject
.
registerService
(
CachedValuesManager
.
class
,
new
CachedValuesManagerImpl
(
myProject
,
new
PsiCachedValuesFactory
(
myPsiManager
)));
myProject
.
registerService
(
PsiManager
.
class
,
myPsiManager
);
myProject
.
registerService
(
StartupManager
.
class
,
new
StartupManagerImpl
(
myProject
));
myProject
.
registerService
(
PsiFileFactory
.
class
,
new
PsiFileFactoryImpl
(
myPsiManager
));
registerExtensionPoint
(
FileTypeFactory
.
FILE_TYPE_FACTORY_EP
,
FileTypeFactory
.
class
);
for
(
ParserDefinition
definition
:
myDefinitions
)
{
addExplicitExtension
(
LanguageParserDefinitions
.
INSTANCE
,
definition
.
getFileNodeType
().
getLanguage
(),
definition
);
}
}
@Override
protected
void
tearDown
()
throws
Exception
{
myFile
=
null
;
myEnvironment
=
null
;
super
.
tearDown
();
myFile
=
null
;
myProject
=
null
;
myPsiManager
=
null
;
}
protected
String
loadFile
(
@NonNls
@TestDataFile
String
name
)
throws
IOException
{
...
...
@@ -76,8 +141,7 @@ public abstract class JetLiteFixture extends UsefulTestCase {
protected
PsiFile
createFile
(
@NonNls
String
name
,
String
text
)
{
LightVirtualFile
virtualFile
=
new
LightVirtualFile
(
name
,
myLanguage
,
text
);
virtualFile
.
setCharset
(
CharsetToolkit
.
UTF8_CHARSET
);
PsiFileFactoryImpl
psiFileFactory
=
(
PsiFileFactoryImpl
)
PsiFileFactory
.
getInstance
(
myEnvironment
.
getProject
());
return
psiFileFactory
.
trySetupPsiForFile
(
virtualFile
,
myLanguage
,
true
,
false
);
return
myFileFactory
.
trySetupPsiForFile
(
virtualFile
,
myLanguage
,
true
,
false
);
}
protected
static
void
ensureParsed
(
PsiFile
file
)
{
...
...
@@ -89,6 +153,26 @@ public abstract class JetLiteFixture extends UsefulTestCase {
});
}
protected
<
T
>
void
registerApplicationService
(
final
Class
<
T
>
aClass
,
T
object
)
{
getApplication
().
registerService
(
aClass
,
object
);
Disposer
.
register
(
myProject
,
new
Disposable
()
{
@Override
public
void
dispose
()
{
getApplication
().
getPicoContainer
().
unregisterComponent
(
aClass
.
getName
());
}
});
}
protected
<
T
>
void
addExplicitExtension
(
final
LanguageExtension
<
T
>
instance
,
final
Language
language
,
final
T
object
)
{
instance
.
addExplicitExtension
(
language
,
object
);
Disposer
.
register
(
myProject
,
new
Disposable
()
{
@Override
public
void
dispose
()
{
instance
.
removeExplicitExtension
(
language
,
object
);
}
});
}
protected
void
prepareForTest
(
String
name
)
throws
IOException
{
String
text
=
loadFile
(
name
+
"."
+
myFileExt
);
createAndCheckPsiFile
(
name
,
text
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录