Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
e1f75801
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,发现更多精彩内容 >>
提交
e1f75801
编写于
7月 21, 2017
作者:
R
Ramya Achutha Rao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
First set of tests for Emmet commands #8454
上级
1fbfd18c
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
189 addition
and
9 deletion
+189
-9
extensions/emmet/package.json
extensions/emmet/package.json
+2
-1
extensions/emmet/src/extension.ts
extensions/emmet/src/extension.ts
+6
-6
extensions/emmet/src/incrementDecrement.ts
extensions/emmet/src/incrementDecrement.ts
+2
-2
extensions/emmet/src/test/incrementDecrement.test.ts
extensions/emmet/src/test/incrementDecrement.test.ts
+78
-0
extensions/emmet/src/test/index.ts
extensions/emmet/src/test/index.ts
+28
-0
extensions/emmet/src/test/testUtils.ts
extensions/emmet/src/test/testUtils.ts
+72
-0
scripts/test-integration.sh
scripts/test-integration.sh
+1
-0
未找到文件。
extensions/emmet/package.json
浏览文件 @
e1f75801
...
...
@@ -65,7 +65,8 @@
"compile"
:
"gulp compile-extension:emmet"
},
"devDependencies"
:
{
"@types/node"
:
"^7.0.4"
"@types/node"
:
"^7.0.4"
,
"vscode"
:
"1.0.1"
},
"dependencies"
:
{
"@emmetio/expand-abbreviation"
:
"^0.5.8"
,
...
...
extensions/emmet/src/extension.ts
浏览文件 @
e1f75801
...
...
@@ -96,27 +96,27 @@ export function activate(context: vscode.ExtensionContext) {
}));
context
.
subscriptions
.
push
(
vscode
.
commands
.
registerCommand
(
'
emmet.incrementNumberByOneTenth
'
,
()
=>
{
incrementDecrement
(.
1
);
return
incrementDecrement
(.
1
);
}));
context
.
subscriptions
.
push
(
vscode
.
commands
.
registerCommand
(
'
emmet.incrementNumberByOne
'
,
()
=>
{
incrementDecrement
(
1
);
return
incrementDecrement
(
1
);
}));
context
.
subscriptions
.
push
(
vscode
.
commands
.
registerCommand
(
'
emmet.incrementNumberByTen
'
,
()
=>
{
incrementDecrement
(
10
);
return
incrementDecrement
(
10
);
}));
context
.
subscriptions
.
push
(
vscode
.
commands
.
registerCommand
(
'
emmet.decrementNumberByOneTenth
'
,
()
=>
{
incrementDecrement
(
-
0.1
);
return
incrementDecrement
(
-
0.1
);
}));
context
.
subscriptions
.
push
(
vscode
.
commands
.
registerCommand
(
'
emmet.decrementNumberByOne
'
,
()
=>
{
incrementDecrement
(
-
1
);
return
incrementDecrement
(
-
1
);
}));
context
.
subscriptions
.
push
(
vscode
.
commands
.
registerCommand
(
'
emmet.decrementNumberByTen
'
,
()
=>
{
incrementDecrement
(
-
10
);
return
incrementDecrement
(
-
10
);
}));
let
currentExtensionsPath
=
undefined
;
...
...
extensions/emmet/src/incrementDecrement.ts
浏览文件 @
e1f75801
...
...
@@ -13,14 +13,14 @@ const reNumber = /[0-9]/;
* Incerement number under caret of given editor
* @param {Number} delta
*/
export
function
incrementDecrement
(
delta
:
number
)
{
export
function
incrementDecrement
(
delta
:
number
)
:
Thenable
<
boolean
>
{
let
editor
=
vscode
.
window
.
activeTextEditor
;
if
(
!
editor
)
{
vscode
.
window
.
showInformationMessage
(
'
No editor is active
'
);
return
;
}
editor
.
edit
(
editBuilder
=>
{
return
editor
.
edit
(
editBuilder
=>
{
editor
.
selections
.
forEach
(
selection
=>
{
let
rangeToReplace
:
vscode
.
Range
=
selection
;
if
(
selection
.
isEmpty
)
{
...
...
extensions/emmet/src/test/incrementDecrement.test.ts
0 → 100644
浏览文件 @
e1f75801
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import
*
as
assert
from
'
assert
'
;
import
{
Selection
,
commands
}
from
'
vscode
'
;
import
{
withRandomFileEditor
,
closeAllEditors
}
from
'
./testUtils
'
;
suite
(
'
Tests for Increment/Decrement Emmet Commands
'
,
()
=>
{
teardown
(
closeAllEditors
);
const
contents
=
`
hello 123.43 there
hello 999.9 there
hello 100 there
`
;
test
(
'
incrementNumberByOne
'
,
function
():
any
{
return
withRandomFileEditor
(
contents
,
(
editor
,
doc
)
=>
{
editor
.
selections
=
[
new
Selection
(
1
,
7
,
1
,
10
),
new
Selection
(
2
,
7
,
2
,
10
)];
return
commands
.
executeCommand
(
'
emmet.incrementNumberByOne
'
).
then
(()
=>
{
assert
.
equal
(
doc
.
getText
(),
contents
.
replace
(
'
123
'
,
'
124
'
).
replace
(
'
999
'
,
'
1000
'
));
return
Promise
.
resolve
();
});
});
});
test
(
'
incrementNumberByTen
'
,
function
():
any
{
return
withRandomFileEditor
(
contents
,
(
editor
,
doc
)
=>
{
editor
.
selections
=
[
new
Selection
(
1
,
7
,
1
,
10
),
new
Selection
(
2
,
7
,
2
,
10
)];
return
commands
.
executeCommand
(
'
emmet.incrementNumberByTen
'
).
then
(()
=>
{
assert
.
equal
(
doc
.
getText
(),
contents
.
replace
(
'
123
'
,
'
133
'
).
replace
(
'
999
'
,
'
1009
'
));
return
Promise
.
resolve
();
});
});
});
test
(
'
incrementNumberByOneTenth
'
,
function
():
any
{
return
withRandomFileEditor
(
contents
,
(
editor
,
doc
)
=>
{
editor
.
selections
=
[
new
Selection
(
1
,
7
,
1
,
13
),
new
Selection
(
2
,
7
,
2
,
12
)];
return
commands
.
executeCommand
(
'
emmet.incrementNumberByOneTenth
'
).
then
(()
=>
{
assert
.
equal
(
doc
.
getText
(),
contents
.
replace
(
'
123.43
'
,
'
123.53
'
).
replace
(
'
999.9
'
,
'
1000
'
));
return
Promise
.
resolve
();
});
});
});
test
(
'
decrementNumberByOne
'
,
function
():
any
{
return
withRandomFileEditor
(
contents
,
(
editor
,
doc
)
=>
{
editor
.
selections
=
[
new
Selection
(
1
,
7
,
1
,
10
),
new
Selection
(
3
,
7
,
3
,
10
)];
return
commands
.
executeCommand
(
'
emmet.decrementNumberByOne
'
).
then
(()
=>
{
assert
.
equal
(
doc
.
getText
(),
contents
.
replace
(
'
123
'
,
'
122
'
).
replace
(
'
100
'
,
'
99
'
));
return
Promise
.
resolve
();
});
});
});
test
(
'
decrementNumberByTen
'
,
function
():
any
{
return
withRandomFileEditor
(
contents
,
(
editor
,
doc
)
=>
{
editor
.
selections
=
[
new
Selection
(
1
,
7
,
1
,
10
),
new
Selection
(
3
,
7
,
3
,
10
)];
return
commands
.
executeCommand
(
'
emmet.decrementNumberByTen
'
).
then
(()
=>
{
assert
.
equal
(
doc
.
getText
(),
contents
.
replace
(
'
123
'
,
'
113
'
).
replace
(
'
100
'
,
'
90
'
));
return
Promise
.
resolve
();
});
});
});
test
(
'
decrementNumberByOneTenth
'
,
function
():
any
{
return
withRandomFileEditor
(
contents
,
(
editor
,
doc
)
=>
{
editor
.
selections
=
[
new
Selection
(
1
,
7
,
1
,
13
),
new
Selection
(
3
,
7
,
3
,
10
)];
return
commands
.
executeCommand
(
'
emmet.decrementNumberByOneTenth
'
).
then
(()
=>
{
assert
.
equal
(
doc
.
getText
(),
contents
.
replace
(
'
123.43
'
,
'
123.33
'
).
replace
(
'
100
'
,
'
99.9
'
));
return
Promise
.
resolve
();
});
});
});
});
\ No newline at end of file
extensions/emmet/src/test/index.ts
0 → 100644
浏览文件 @
e1f75801
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
//
// PLEASE DO NOT MODIFY / DELETE UNLESS YOU KNOW WHAT YOU ARE DOING
//
// This file is providing the test runner to use when running extension tests.
// By default the test runner in use is Mocha based.
//
// You can provide your own test runner if you want to override it by exporting
// a function run(testRoot: string, clb: (error:Error) => void) that the extension
// host can call to run the tests. The test runner is expected to use console.log
// to report the results back to the caller. When the tests are finished, return
// a possible error to the callback or null if none.
const
testRunner
=
require
(
'
vscode/lib/testrunner
'
);
// You can directly control Mocha options by uncommenting the following lines
// See https://github.com/mochajs/mocha/wiki/Using-mocha-programmatically#set-options for more info
testRunner
.
configure
({
ui
:
'
tdd
'
,
// the TDD UI is being used in extension.test.ts (suite, test, etc.)
useColors
:
process
.
platform
!==
'
win32
'
,
// colored output from test results (only windows cannot handle)
timeout
:
60000
});
export
=
testRunner
;
extensions/emmet/src/test/testUtils.ts
0 → 100644
浏览文件 @
e1f75801
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'
use strict
'
;
import
*
as
vscode
from
'
vscode
'
;
import
*
as
fs
from
'
fs
'
;
import
*
as
os
from
'
os
'
;
import
{
join
}
from
'
path
'
;
function
rndName
()
{
return
Math
.
random
().
toString
(
36
).
replace
(
/
[^
a-z
]
+/g
,
''
).
substr
(
0
,
10
);
}
export
function
createRandomFile
(
contents
=
''
):
Thenable
<
vscode
.
Uri
>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
const
tmpFile
=
join
(
os
.
tmpdir
(),
rndName
());
fs
.
writeFile
(
tmpFile
,
contents
,
(
error
)
=>
{
if
(
error
)
{
return
reject
(
error
);
}
resolve
(
vscode
.
Uri
.
file
(
tmpFile
));
});
});
}
export
function
pathEquals
(
path1
:
string
,
path2
:
string
):
boolean
{
if
(
process
.
platform
!==
'
linux
'
)
{
path1
=
path1
.
toLowerCase
();
path2
=
path2
.
toLowerCase
();
}
return
path1
===
path2
;
}
export
function
deleteFile
(
file
:
vscode
.
Uri
):
Thenable
<
boolean
>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
fs
.
unlink
(
file
.
fsPath
,
(
err
)
=>
{
if
(
err
)
{
reject
(
err
);
}
else
{
resolve
(
true
);
}
});
});
}
export
function
closeAllEditors
():
Thenable
<
any
>
{
return
vscode
.
commands
.
executeCommand
(
'
workbench.action.closeAllEditors
'
);
}
export
function
withRandomFileEditor
(
initialContents
:
string
,
run
:
(
editor
:
vscode
.
TextEditor
,
doc
:
vscode
.
TextDocument
)
=>
Thenable
<
void
>
):
Thenable
<
boolean
>
{
return
createRandomFile
(
initialContents
).
then
(
file
=>
{
return
vscode
.
workspace
.
openTextDocument
(
file
).
then
(
doc
=>
{
return
vscode
.
window
.
showTextDocument
(
doc
).
then
((
editor
)
=>
{
return
run
(
editor
,
doc
).
then
(
_
=>
{
if
(
doc
.
isDirty
)
{
return
doc
.
save
().
then
(
saved
=>
{
return
deleteFile
(
file
);
});
}
else
{
return
deleteFile
(
file
);
}
});
});
});
});
}
\ No newline at end of file
scripts/test-integration.sh
浏览文件 @
e1f75801
...
...
@@ -16,5 +16,6 @@ cd $ROOT
./scripts/code.sh
$ROOT
/extensions/vscode-api-tests/testWorkspace
--extensionDevelopmentPath
=
$ROOT
/extensions/vscode-api-tests
--extensionTestsPath
=
$ROOT
/extensions/vscode-api-tests/out
--disableExtensions
--user-data-dir
=
$VSCODEUSERDATADIR
./scripts/code.sh
$ROOT
/extensions/vscode-colorize-tests/test
--extensionDevelopmentPath
=
$ROOT
/extensions/vscode-colorize-tests
--extensionTestsPath
=
$ROOT
/extensions/vscode-colorize-tests/out
--user-data-dir
=
$VSCODEUSERDATADIR
./scripts/test-int-mocha.sh
./scripts/code.sh
--extensionDevelopmentPath
=
$ROOT
/extensions/emmet
--extensionTestsPath
=
$ROOT
/extensions/emmet/out/test
--disableExtensions
--user-data-dir
=
$VSCODEUSERDATADIR
rm
-r
$VSCODEUSERDATADIR
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录