Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
9ac1af48
V
vscode
项目概览
xxadev
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
9ac1af48
编写于
9月 20, 2018
作者:
J
Johannes Rieken
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add api tests for #1800
上级
42d6574a
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
73 addition
and
32 deletion
+73
-32
extensions/vscode-api-tests/src/singlefolder-tests/languages.test.ts
...vscode-api-tests/src/singlefolder-tests/languages.test.ts
+73
-32
未找到文件。
extensions/vscode-api-tests/src/singlefolder-tests/languages.test.ts
浏览文件 @
9ac1af48
...
...
@@ -7,26 +7,67 @@
import
*
as
assert
from
'
assert
'
;
import
{
join
}
from
'
path
'
;
import
{
languages
,
workspace
,
commands
,
Uri
,
Diagnostic
,
Range
,
Command
,
Disposable
,
CancellationToken
,
CompletionList
,
CompletionItem
,
CompletionItemKind
,
TextDocument
,
Position
}
from
'
vscode
'
;
import
*
as
vscode
from
'
vscode
'
;
import
{
createRandomFile
}
from
'
../utils
'
;
suite
(
'
languages namespace tests
'
,
()
=>
{
test
(
'
setTextDocumentLanguage -> close/open event
'
,
async
function
()
{
const
file
=
await
createRandomFile
(
'
foo
\n
bar
\n
bar
'
);
const
doc
=
await
vscode
.
workspace
.
openTextDocument
(
file
);
const
langIdNow
=
doc
.
languageId
;
let
clock
=
0
;
let
close
=
new
Promise
(
resolve
=>
{
vscode
.
workspace
.
onDidCloseTextDocument
(
e
=>
{
if
(
e
===
doc
)
{
assert
.
equal
(
doc
.
languageId
,
langIdNow
);
assert
.
equal
(
clock
,
0
);
clock
+=
1
;
resolve
();
}
});
});
let
open
=
new
Promise
(
resolve
=>
{
vscode
.
workspace
.
onDidOpenTextDocument
(
e
=>
{
if
(
e
===
doc
)
{
// same instance!
assert
.
equal
(
doc
.
languageId
,
'
json
'
);
assert
.
equal
(
clock
,
1
);
clock
+=
1
;
resolve
();
}
});
});
let
change
=
vscode
.
languages
.
setTextDocumentLanguage
(
doc
,
'
json
'
);
await
Promise
.
all
([
change
,
close
,
open
]);
assert
.
equal
(
clock
,
2
);
assert
.
equal
(
doc
.
languageId
,
'
json
'
);
});
test
(
'
setTextDocumentLanguage -> error when language does not exist
'
,
async
function
()
{
const
file
=
await
createRandomFile
(
'
foo
\n
bar
\n
bar
'
);
const
doc
=
await
vscode
.
workspace
.
openTextDocument
(
file
);
try
{
await
vscode
.
languages
.
setTextDocumentLanguage
(
doc
,
'
fooLangDoesNotExist
'
);
assert
.
ok
(
false
);
}
catch
(
err
)
{
assert
.
ok
(
err
);
}
});
test
(
'
diagnostics, read & event
'
,
function
()
{
let
uri
=
Uri
.
file
(
'
/foo/bar.txt
'
);
let
col1
=
languages
.
createDiagnosticCollection
(
'
foo1
'
);
col1
.
set
(
uri
,
[
new
Diagnostic
(
new
Range
(
0
,
0
,
0
,
12
),
'
error1
'
)]);
let
uri
=
vscode
.
Uri
.
file
(
'
/foo/bar.txt
'
);
let
col1
=
vscode
.
languages
.
createDiagnosticCollection
(
'
foo1
'
);
col1
.
set
(
uri
,
[
new
vscode
.
Diagnostic
(
new
vscode
.
Range
(
0
,
0
,
0
,
12
),
'
error1
'
)]);
let
col2
=
languages
.
createDiagnosticCollection
(
'
foo2
'
);
col2
.
set
(
uri
,
[
new
Diagnostic
(
new
Range
(
0
,
0
,
0
,
12
),
'
error1
'
)]);
let
col2
=
vscode
.
languages
.
createDiagnosticCollection
(
'
foo2
'
);
col2
.
set
(
uri
,
[
new
vscode
.
Diagnostic
(
new
vscode
.
Range
(
0
,
0
,
0
,
12
),
'
error1
'
)]);
let
diag
=
languages
.
getDiagnostics
(
uri
);
let
diag
=
vscode
.
languages
.
getDiagnostics
(
uri
);
assert
.
equal
(
diag
.
length
,
2
);
let
tuples
=
languages
.
getDiagnostics
();
let
tuples
=
vscode
.
languages
.
getDiagnostics
();
let
found
=
false
;
for
(
let
[
thisUri
,]
of
tuples
)
{
if
(
thisUri
.
toString
()
===
uri
.
toString
())
{
...
...
@@ -40,21 +81,21 @@ suite('languages namespace tests', () => {
test
(
'
diagnostics & CodeActionProvider
'
,
function
()
{
class
D2
extends
Diagnostic
{
class
D2
extends
vscode
.
Diagnostic
{
customProp
=
{
complex
()
{
}
};
constructor
()
{
super
(
new
Range
(
0
,
2
,
0
,
7
),
'
sonntag
'
);
super
(
new
vscode
.
Range
(
0
,
2
,
0
,
7
),
'
sonntag
'
);
}
}
let
diag1
=
new
Diagnostic
(
new
Range
(
0
,
0
,
0
,
5
),
'
montag
'
);
let
diag1
=
new
vscode
.
Diagnostic
(
new
vscode
.
Range
(
0
,
0
,
0
,
5
),
'
montag
'
);
let
diag2
=
new
D2
();
let
ran
=
false
;
let
uri
=
Uri
.
parse
(
'
ttt:path.far
'
);
let
uri
=
vscode
.
Uri
.
parse
(
'
ttt:path.far
'
);
let
r1
=
languages
.
registerCodeActionsProvider
({
pattern
:
'
*.far
'
,
scheme
:
'
ttt
'
},
{
provideCodeActions
(
document
,
range
,
ctx
):
Command
[]
{
let
r1
=
vscode
.
languages
.
registerCodeActionsProvider
({
pattern
:
'
*.far
'
,
scheme
:
'
ttt
'
},
{
provideCodeActions
(
document
,
range
,
ctx
):
vscode
.
Command
[]
{
assert
.
equal
(
ctx
.
diagnostics
.
length
,
2
);
let
[
first
,
second
]
=
ctx
.
diagnostics
;
...
...
@@ -66,44 +107,44 @@ suite('languages namespace tests', () => {
}
});
let
r2
=
workspace
.
registerTextDocumentContentProvider
(
'
ttt
'
,
{
let
r2
=
vscode
.
workspace
.
registerTextDocumentContentProvider
(
'
ttt
'
,
{
provideTextDocumentContent
()
{
return
'
this is some text
'
;
}
});
let
r3
=
languages
.
createDiagnosticCollection
();
let
r3
=
vscode
.
languages
.
createDiagnosticCollection
();
r3
.
set
(
uri
,
[
diag1
]);
let
r4
=
languages
.
createDiagnosticCollection
();
let
r4
=
vscode
.
languages
.
createDiagnosticCollection
();
r4
.
set
(
uri
,
[
diag2
]);
return
workspace
.
openTextDocument
(
uri
).
then
(
doc
=>
{
return
commands
.
executeCommand
(
'
vscode.executeCodeActionProvider
'
,
uri
,
new
Range
(
0
,
0
,
0
,
10
));
return
vscode
.
workspace
.
openTextDocument
(
uri
).
then
(
doc
=>
{
return
vscode
.
commands
.
executeCommand
(
'
vscode.executeCodeActionProvider
'
,
uri
,
new
vscode
.
Range
(
0
,
0
,
0
,
10
));
}).
then
(
commands
=>
{
assert
.
ok
(
ran
);
Disposable
.
from
(
r1
,
r2
,
r3
,
r4
).
dispose
();
vscode
.
Disposable
.
from
(
r1
,
r2
,
r3
,
r4
).
dispose
();
});
});
test
(
'
completions with document filters
'
,
function
()
{
let
ran
=
false
;
let
uri
=
Uri
.
file
(
join
(
workspace
.
rootPath
||
''
,
'
./bower.json
'
));
let
uri
=
vscode
.
Uri
.
file
(
join
(
vscode
.
workspace
.
rootPath
||
''
,
'
./bower.json
'
));
let
jsonDocumentFilter
=
[{
language
:
'
json
'
,
pattern
:
'
**/package.json
'
},
{
language
:
'
json
'
,
pattern
:
'
**/bower.json
'
},
{
language
:
'
json
'
,
pattern
:
'
**/.bower.json
'
}];
let
r1
=
languages
.
registerCompletionItemProvider
(
jsonDocumentFilter
,
{
provideCompletionItems
:
(
document
:
TextDocument
,
position
:
Position
,
token
:
CancellationToken
):
CompletionItem
[]
=>
{
let
proposal
=
new
CompletionItem
(
'
foo
'
);
proposal
.
kind
=
CompletionItemKind
.
Property
;
let
r1
=
vscode
.
languages
.
registerCompletionItemProvider
(
jsonDocumentFilter
,
{
provideCompletionItems
:
(
document
:
vscode
.
TextDocument
,
position
:
vscode
.
Position
,
token
:
vscode
.
CancellationToken
):
vscode
.
CompletionItem
[]
=>
{
let
proposal
=
new
vscode
.
CompletionItem
(
'
foo
'
);
proposal
.
kind
=
vscode
.
CompletionItemKind
.
Property
;
ran
=
true
;
return
[
proposal
];
}
});
return
workspace
.
openTextDocument
(
uri
).
then
(
doc
=>
{
return
commands
.
executeCommand
<
CompletionList
>
(
'
vscode.executeCompletionItemProvider
'
,
uri
,
new
Position
(
1
,
0
));
}).
then
((
result
:
CompletionList
|
undefined
)
=>
{
return
vscode
.
workspace
.
openTextDocument
(
uri
).
then
(
doc
=>
{
return
vscode
.
commands
.
executeCommand
<
vscode
.
CompletionList
>
(
'
vscode.executeCompletionItemProvider
'
,
uri
,
new
vscode
.
Position
(
1
,
0
));
}).
then
((
result
:
vscode
.
CompletionList
|
undefined
)
=>
{
r1
.
dispose
();
assert
.
ok
(
ran
);
console
.
log
(
result
!
.
items
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录