Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
5e804dc4
V
vscode
项目概览
掘金者说
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
5e804dc4
编写于
7月 02, 2019
作者:
D
Daniel Imms
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Move terminal api tests into new file
上级
d5043415
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
207 addition
and
198 deletion
+207
-198
extensions/vscode-api-tests/src/singlefolder-tests/terminal.test.ts
.../vscode-api-tests/src/singlefolder-tests/terminal.test.ts
+206
-0
extensions/vscode-api-tests/src/singlefolder-tests/window.test.ts
...ns/vscode-api-tests/src/singlefolder-tests/window.test.ts
+1
-198
未找到文件。
extensions/vscode-api-tests/src/singlefolder-tests/terminal.test.ts
0 → 100644
浏览文件 @
5e804dc4
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import
{
window
,
commands
,
Terminal
,
TerminalDimensionsChangeEvent
}
from
'
vscode
'
;
import
{
doesNotThrow
,
equal
,
ok
}
from
'
assert
'
;
suite
(
'
window namespace tests
'
,
()
=>
{
(
process
.
platform
===
'
win32
'
?
suite
.
skip
/* https://github.com/microsoft/vscode/issues/75689 */
:
suite
)(
'
Terminal
'
,
()
=>
{
test
(
'
sendText immediately after createTerminal should not throw
'
,
()
=>
{
const
terminal
=
window
.
createTerminal
();
doesNotThrow
(
terminal
.
sendText
.
bind
(
terminal
,
'
echo "foo"
'
));
terminal
.
dispose
();
});
test
(
'
onDidCloseTerminal event fires when terminal is disposed
'
,
(
done
)
=>
{
const
terminal
=
window
.
createTerminal
();
const
reg
=
window
.
onDidCloseTerminal
((
eventTerminal
)
=>
{
equal
(
terminal
,
eventTerminal
);
reg
.
dispose
();
done
();
});
terminal
.
dispose
();
});
test
(
'
processId immediately after createTerminal should fetch the pid
'
,
(
done
)
=>
{
const
terminal
=
window
.
createTerminal
();
terminal
.
processId
.
then
(
id
=>
{
ok
(
id
>
0
);
terminal
.
dispose
();
done
();
});
});
test
(
'
name in constructor should set terminal.name
'
,
()
=>
{
const
terminal
=
window
.
createTerminal
(
'
a
'
);
equal
(
terminal
.
name
,
'
a
'
);
terminal
.
dispose
();
});
test
(
'
onDidOpenTerminal should fire when a terminal is created
'
,
(
done
)
=>
{
const
reg1
=
window
.
onDidOpenTerminal
(
term
=>
{
equal
(
term
.
name
,
'
b
'
);
reg1
.
dispose
();
const
reg2
=
window
.
onDidCloseTerminal
(()
=>
{
reg2
.
dispose
();
done
();
});
terminal
.
dispose
();
});
const
terminal
=
window
.
createTerminal
(
'
b
'
);
});
test
(
'
createTerminalRenderer should fire onDidOpenTerminal and onDidCloseTerminal
'
,
(
done
)
=>
{
const
reg1
=
window
.
onDidOpenTerminal
(
term
=>
{
equal
(
term
.
name
,
'
c
'
);
reg1
.
dispose
();
const
reg2
=
window
.
onDidCloseTerminal
(()
=>
{
reg2
.
dispose
();
done
();
});
term
.
dispose
();
});
window
.
createTerminalRenderer
(
'
c
'
);
});
test
(
'
terminal renderers should get maximum dimensions set when shown
'
,
(
done
)
=>
{
let
terminal
:
Terminal
;
const
reg1
=
window
.
onDidOpenTerminal
(
term
=>
{
reg1
.
dispose
();
term
.
show
();
terminal
=
term
;
});
const
renderer
=
window
.
createTerminalRenderer
(
'
foo
'
);
const
reg2
=
renderer
.
onDidChangeMaximumDimensions
(
dimensions
=>
{
ok
(
dimensions
.
columns
>
0
);
ok
(
dimensions
.
rows
>
0
);
reg2
.
dispose
();
const
reg3
=
window
.
onDidCloseTerminal
(()
=>
{
reg3
.
dispose
();
done
();
});
terminal
.
dispose
();
});
});
test
(
'
TerminalRenderer.write should fire Terminal.onData
'
,
(
done
)
=>
{
const
reg1
=
window
.
onDidOpenTerminal
(
terminal
=>
{
reg1
.
dispose
();
const
reg2
=
terminal
.
onDidWriteData
(
data
=>
{
equal
(
data
,
'
bar
'
);
reg2
.
dispose
();
const
reg3
=
window
.
onDidCloseTerminal
(()
=>
{
reg3
.
dispose
();
done
();
});
terminal
.
dispose
();
});
renderer
.
write
(
'
bar
'
);
});
const
renderer
=
window
.
createTerminalRenderer
(
'
foo
'
);
});
test
(
'
Terminal.sendText should fire Terminal.onInput
'
,
(
done
)
=>
{
const
reg1
=
window
.
onDidOpenTerminal
(
terminal
=>
{
reg1
.
dispose
();
const
reg2
=
renderer
.
onDidAcceptInput
(
data
=>
{
equal
(
data
,
'
bar
'
);
reg2
.
dispose
();
const
reg3
=
window
.
onDidCloseTerminal
(()
=>
{
reg3
.
dispose
();
done
();
});
terminal
.
dispose
();
});
terminal
.
sendText
(
'
bar
'
,
false
);
});
const
renderer
=
window
.
createTerminalRenderer
(
'
foo
'
);
});
test
(
'
onDidChangeActiveTerminal should fire when new terminals are created
'
,
(
done
)
=>
{
const
reg1
=
window
.
onDidChangeActiveTerminal
((
active
:
Terminal
|
undefined
)
=>
{
equal
(
active
,
terminal
);
equal
(
active
,
window
.
activeTerminal
);
reg1
.
dispose
();
const
reg2
=
window
.
onDidChangeActiveTerminal
((
active
:
Terminal
|
undefined
)
=>
{
equal
(
active
,
undefined
);
equal
(
active
,
window
.
activeTerminal
);
reg2
.
dispose
();
done
();
});
terminal
.
dispose
();
});
const
terminal
=
window
.
createTerminal
();
terminal
.
show
();
});
test
(
'
onDidChangeTerminalDimensions should fire when new terminals are created
'
,
(
done
)
=>
{
const
reg1
=
window
.
onDidChangeTerminalDimensions
(
async
(
event
:
TerminalDimensionsChangeEvent
)
=>
{
equal
(
event
.
terminal
,
terminal1
);
equal
(
typeof
event
.
dimensions
.
columns
,
'
number
'
);
equal
(
typeof
event
.
dimensions
.
rows
,
'
number
'
);
ok
(
event
.
dimensions
.
columns
>
0
);
ok
(
event
.
dimensions
.
rows
>
0
);
reg1
.
dispose
();
let
terminal2
:
Terminal
;
const
reg2
=
window
.
onDidOpenTerminal
((
newTerminal
)
=>
{
// This is guarantees to fire before dimensions change event
if
(
newTerminal
!==
terminal1
)
{
terminal2
=
newTerminal
;
reg2
.
dispose
();
}
});
let
firstCalled
=
false
;
let
secondCalled
=
false
;
const
reg3
=
window
.
onDidChangeTerminalDimensions
((
event
:
TerminalDimensionsChangeEvent
)
=>
{
if
(
event
.
terminal
===
terminal1
)
{
// The original terminal should fire dimension change after a split
firstCalled
=
true
;
}
else
if
(
event
.
terminal
!==
terminal1
)
{
// The new split terminal should fire dimension change
secondCalled
=
true
;
}
if
(
firstCalled
&&
secondCalled
)
{
terminal1
.
dispose
();
terminal2
.
dispose
();
reg3
.
dispose
();
done
();
}
});
await
timeout
(
500
);
commands
.
executeCommand
(
'
workbench.action.terminal.split
'
);
});
const
terminal1
=
window
.
createTerminal
({
name
:
'
test
'
});
terminal1
.
show
();
});
test
(
'
hideFromUser terminal: onDidWriteData should work
'
,
done
=>
{
const
terminal
=
window
.
createTerminal
({
name
:
'
bg
'
,
hideFromUser
:
true
});
let
data
=
''
;
terminal
.
onDidWriteData
(
e
=>
{
data
+=
e
;
if
(
data
.
indexOf
(
'
foo
'
)
!==
-
1
)
{
terminal
.
dispose
();
done
();
}
});
terminal
.
sendText
(
'
foo
'
);
});
test
(
'
hideFromUser terminal: should be available to terminals API
'
,
done
=>
{
const
terminal
=
window
.
createTerminal
({
name
:
'
bg
'
,
hideFromUser
:
true
});
window
.
onDidOpenTerminal
(
t
=>
{
equal
(
t
,
terminal
);
equal
(
t
.
name
,
'
bg
'
);
ok
(
window
.
terminals
.
indexOf
(
terminal
)
!==
-
1
);
done
();
});
});
});
});
async
function
timeout
(
ms
=
0
):
Promise
<
void
>
{
return
new
Promise
<
void
>
(
resolve
=>
setTimeout
(()
=>
resolve
(),
ms
));
}
extensions/vscode-api-tests/src/singlefolder-tests/window.test.ts
浏览文件 @
5e804dc4
...
...
@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/
import
*
as
assert
from
'
assert
'
;
import
{
workspace
,
window
,
commands
,
ViewColumn
,
TextEditorViewColumnChangeEvent
,
Uri
,
Selection
,
Position
,
CancellationTokenSource
,
TextEditorSelectionChangeKind
,
Terminal
,
TerminalDimensionsChangeEvent
}
from
'
vscode
'
;
import
{
workspace
,
window
,
commands
,
ViewColumn
,
TextEditorViewColumnChangeEvent
,
Uri
,
Selection
,
Position
,
CancellationTokenSource
,
TextEditorSelectionChangeKind
}
from
'
vscode
'
;
import
{
join
}
from
'
path
'
;
import
{
closeAllEditors
,
pathEquals
,
createRandomFile
}
from
'
../utils
'
;
...
...
@@ -568,201 +568,4 @@ suite('window namespace tests', () => {
});
});
(
process
.
platform
===
'
win32
'
?
suite
.
skip
/* https://github.com/microsoft/vscode/issues/75689 */
:
suite
)(
'
Terminal
'
,
()
=>
{
test
(
'
sendText immediately after createTerminal should not throw
'
,
()
=>
{
const
terminal
=
window
.
createTerminal
();
assert
.
doesNotThrow
(
terminal
.
sendText
.
bind
(
terminal
,
'
echo "foo"
'
));
terminal
.
dispose
();
});
test
(
'
onDidCloseTerminal event fires when terminal is disposed
'
,
(
done
)
=>
{
const
terminal
=
window
.
createTerminal
();
const
reg
=
window
.
onDidCloseTerminal
((
eventTerminal
)
=>
{
assert
.
equal
(
terminal
,
eventTerminal
);
reg
.
dispose
();
done
();
});
terminal
.
dispose
();
});
test
(
'
processId immediately after createTerminal should fetch the pid
'
,
(
done
)
=>
{
const
terminal
=
window
.
createTerminal
();
terminal
.
processId
.
then
(
id
=>
{
assert
.
ok
(
id
>
0
);
terminal
.
dispose
();
done
();
});
});
test
(
'
name in constructor should set terminal.name
'
,
()
=>
{
const
terminal
=
window
.
createTerminal
(
'
a
'
);
assert
.
equal
(
terminal
.
name
,
'
a
'
);
terminal
.
dispose
();
});
test
(
'
onDidOpenTerminal should fire when a terminal is created
'
,
(
done
)
=>
{
const
reg1
=
window
.
onDidOpenTerminal
(
term
=>
{
assert
.
equal
(
term
.
name
,
'
b
'
);
reg1
.
dispose
();
const
reg2
=
window
.
onDidCloseTerminal
(()
=>
{
reg2
.
dispose
();
done
();
});
terminal
.
dispose
();
});
const
terminal
=
window
.
createTerminal
(
'
b
'
);
});
test
(
'
createTerminalRenderer should fire onDidOpenTerminal and onDidCloseTerminal
'
,
(
done
)
=>
{
const
reg1
=
window
.
onDidOpenTerminal
(
term
=>
{
assert
.
equal
(
term
.
name
,
'
c
'
);
reg1
.
dispose
();
const
reg2
=
window
.
onDidCloseTerminal
(()
=>
{
reg2
.
dispose
();
done
();
});
term
.
dispose
();
});
window
.
createTerminalRenderer
(
'
c
'
);
});
test
(
'
terminal renderers should get maximum dimensions set when shown
'
,
(
done
)
=>
{
let
terminal
:
Terminal
;
const
reg1
=
window
.
onDidOpenTerminal
(
term
=>
{
reg1
.
dispose
();
term
.
show
();
terminal
=
term
;
});
const
renderer
=
window
.
createTerminalRenderer
(
'
foo
'
);
const
reg2
=
renderer
.
onDidChangeMaximumDimensions
(
dimensions
=>
{
assert
.
ok
(
dimensions
.
columns
>
0
);
assert
.
ok
(
dimensions
.
rows
>
0
);
reg2
.
dispose
();
const
reg3
=
window
.
onDidCloseTerminal
(()
=>
{
reg3
.
dispose
();
done
();
});
terminal
.
dispose
();
});
});
test
(
'
TerminalRenderer.write should fire Terminal.onData
'
,
(
done
)
=>
{
const
reg1
=
window
.
onDidOpenTerminal
(
terminal
=>
{
reg1
.
dispose
();
const
reg2
=
terminal
.
onDidWriteData
(
data
=>
{
assert
.
equal
(
data
,
'
bar
'
);
reg2
.
dispose
();
const
reg3
=
window
.
onDidCloseTerminal
(()
=>
{
reg3
.
dispose
();
done
();
});
terminal
.
dispose
();
});
renderer
.
write
(
'
bar
'
);
});
const
renderer
=
window
.
createTerminalRenderer
(
'
foo
'
);
});
test
(
'
Terminal.sendText should fire Terminal.onInput
'
,
(
done
)
=>
{
const
reg1
=
window
.
onDidOpenTerminal
(
terminal
=>
{
reg1
.
dispose
();
const
reg2
=
renderer
.
onDidAcceptInput
(
data
=>
{
assert
.
equal
(
data
,
'
bar
'
);
reg2
.
dispose
();
const
reg3
=
window
.
onDidCloseTerminal
(()
=>
{
reg3
.
dispose
();
done
();
});
terminal
.
dispose
();
});
terminal
.
sendText
(
'
bar
'
,
false
);
});
const
renderer
=
window
.
createTerminalRenderer
(
'
foo
'
);
});
test
(
'
onDidChangeActiveTerminal should fire when new terminals are created
'
,
(
done
)
=>
{
const
reg1
=
window
.
onDidChangeActiveTerminal
((
active
:
Terminal
|
undefined
)
=>
{
assert
.
equal
(
active
,
terminal
);
assert
.
equal
(
active
,
window
.
activeTerminal
);
reg1
.
dispose
();
const
reg2
=
window
.
onDidChangeActiveTerminal
((
active
:
Terminal
|
undefined
)
=>
{
assert
.
equal
(
active
,
undefined
);
assert
.
equal
(
active
,
window
.
activeTerminal
);
reg2
.
dispose
();
done
();
});
terminal
.
dispose
();
});
const
terminal
=
window
.
createTerminal
();
terminal
.
show
();
});
test
(
'
onDidChangeTerminalDimensions should fire when new terminals are created
'
,
(
done
)
=>
{
const
reg1
=
window
.
onDidChangeTerminalDimensions
(
async
(
event
:
TerminalDimensionsChangeEvent
)
=>
{
assert
.
equal
(
event
.
terminal
,
terminal1
);
assert
.
equal
(
typeof
event
.
dimensions
.
columns
,
'
number
'
);
assert
.
equal
(
typeof
event
.
dimensions
.
rows
,
'
number
'
);
assert
.
ok
(
event
.
dimensions
.
columns
>
0
);
assert
.
ok
(
event
.
dimensions
.
rows
>
0
);
reg1
.
dispose
();
let
terminal2
:
Terminal
;
const
reg2
=
window
.
onDidOpenTerminal
((
newTerminal
)
=>
{
// This is guarantees to fire before dimensions change event
if
(
newTerminal
!==
terminal1
)
{
terminal2
=
newTerminal
;
reg2
.
dispose
();
}
});
let
firstCalled
=
false
;
let
secondCalled
=
false
;
const
reg3
=
window
.
onDidChangeTerminalDimensions
((
event
:
TerminalDimensionsChangeEvent
)
=>
{
if
(
event
.
terminal
===
terminal1
)
{
// The original terminal should fire dimension change after a split
firstCalled
=
true
;
}
else
if
(
event
.
terminal
!==
terminal1
)
{
// The new split terminal should fire dimension change
secondCalled
=
true
;
}
if
(
firstCalled
&&
secondCalled
)
{
terminal1
.
dispose
();
terminal2
.
dispose
();
reg3
.
dispose
();
done
();
}
});
await
timeout
(
500
);
commands
.
executeCommand
(
'
workbench.action.terminal.split
'
);
});
const
terminal1
=
window
.
createTerminal
({
name
:
'
test
'
});
terminal1
.
show
();
});
test
(
'
hideFromUser terminal: onDidWriteData should work
'
,
done
=>
{
const
terminal
=
window
.
createTerminal
({
name
:
'
bg
'
,
hideFromUser
:
true
});
let
data
=
''
;
terminal
.
onDidWriteData
(
e
=>
{
data
+=
e
;
if
(
data
.
indexOf
(
'
foo
'
)
!==
-
1
)
{
terminal
.
dispose
();
done
();
}
});
terminal
.
sendText
(
'
foo
'
);
});
test
(
'
hideFromUser terminal: should be available to terminals API
'
,
done
=>
{
const
terminal
=
window
.
createTerminal
({
name
:
'
bg
'
,
hideFromUser
:
true
});
window
.
onDidOpenTerminal
(
t
=>
{
assert
.
equal
(
t
,
terminal
);
assert
.
equal
(
t
.
name
,
'
bg
'
);
assert
.
ok
(
window
.
terminals
.
indexOf
(
terminal
)
!==
-
1
);
done
();
});
});
});
});
async
function
timeout
(
ms
=
0
):
Promise
<
void
>
{
return
new
Promise
<
void
>
(
resolve
=>
setTimeout
(()
=>
resolve
(),
ms
));
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录