Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
c0c5de44
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,体验更适合开发者的 AI 搜索 >>
提交
c0c5de44
编写于
4月 04, 2017
作者:
J
Johannes Rieken
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add --coverage option #23742
上级
396f25dd
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
89 addition
and
6 deletion
+89
-6
src/vs/loader.js
src/vs/loader.js
+3
-2
test/electron/index.js
test/electron/index.js
+1
-0
test/electron/renderer.js
test/electron/renderer.js
+85
-4
未找到文件。
src/vs/loader.js
浏览文件 @
c0c5de44
...
...
@@ -622,7 +622,8 @@ var AMDLoader;
errorback
(
err
);
return
;
}
var
vmScriptSrc
=
_this
.
_path
.
normalize
(
scriptSrc
);
var
normalizedScriptSrc
=
_this
.
_path
.
normalize
(
scriptSrc
);
var
vmScriptSrc
=
normalizedScriptSrc
;
// Make the script src friendly towards electron
if
(
AMDLoader
.
isElectronRenderer
)
{
var
driveLetterMatch
=
vmScriptSrc
.
match
(
/^
([
a-z
])\:(
.*
)
/i
);
...
...
@@ -638,7 +639,7 @@ var AMDLoader;
else
{
contents
=
prefix
+
data
+
suffix
;
}
contents
=
nodeInstrumenter
(
contents
,
vm
ScriptSrc
);
contents
=
nodeInstrumenter
(
contents
,
normalized
ScriptSrc
);
if
(
!
opts
.
nodeCachedDataDir
)
{
_this
.
_loadAndEvalScript
(
scriptSrc
,
vmScriptSrc
,
contents
,
{
filename
:
vmScriptSrc
},
recorder
);
callback
();
...
...
test/electron/index.js
浏览文件 @
c0c5de44
...
...
@@ -11,6 +11,7 @@ const optimist = require('optimist')
.
describe
(
'
grep
'
,
'
only run tests matching <pattern>
'
).
string
(
'
grep
'
).
alias
(
'
grep
'
,
'
g
'
).
string
(
'
g
'
)
.
describe
(
'
run
'
,
'
only run tests from <file>
'
).
string
(
'
run
'
)
.
describe
(
'
build
'
,
'
run with build output (out-build)
'
).
boolean
(
'
build
'
)
.
describe
(
'
coverage
'
,
'
generate coverage report
'
).
boolean
(
'
coverage
'
)
.
describe
(
'
debug
'
,
'
open dev tools, keep window open, reuse app data
'
).
string
(
'
debug
'
);
const
argv
=
optimist
.
argv
;
...
...
test/electron/renderer.js
浏览文件 @
c0c5de44
...
...
@@ -7,17 +7,24 @@
const
{
ipcRenderer
}
=
require
(
'
electron
'
);
const
assert
=
require
(
'
assert
'
);
const
glob
=
require
(
'
glob
'
);
const
path
=
require
(
'
path
'
);
const
glob
=
require
(
'
glob
'
);
const
minimatch
=
require
(
'
minimatch
'
);
const
istanbul
=
require
(
'
istanbul
'
);
const
i_remap
=
require
(
'
remap-istanbul/lib/remap
'
);
let
_tests_glob
=
'
**/test/**/*.test.js
'
;
let
loader
;
let
_out
;
function
initLoader
(
opts
)
{
let
outdir
=
opts
.
build
?
'
out-build
'
:
'
out
'
;
_out
=
path
.
join
(
__dirname
,
`../../
${
outdir
}
`
);
// setup loader
loader
=
require
(
`
${
_out
}
/vs/loader`
);
loader
.
require
.
config
(
{
const
loaderConfig
=
{
nodeRequire
:
require
,
nodeMain
:
__filename
,
catchError
:
true
,
...
...
@@ -27,6 +34,78 @@ function initLoader(opts) {
'
lib
'
:
`../
${
outdir
}
/lib`
,
'
bootstrap
'
:
`../
${
outdir
}
/bootstrap`
}
};
// nodeInstrumenter when coverage is requested
if
(
opts
.
coverage
)
{
const
instrumenter
=
new
istanbul
.
Instrumenter
();
loaderConfig
.
nodeInstrumenter
=
function
(
contents
,
source
)
{
return
minimatch
(
source
,
_tests_glob
)
?
contents
// don't instrument tests itself
:
instrumenter
.
instrumentSync
(
contents
,
source
);
};
}
loader
.
require
.
config
(
loaderConfig
);
}
function
createCoverageReport
(
opts
)
{
return
new
Promise
(
resolve
=>
{
if
(
!
opts
.
coverage
)
{
return
resolve
(
undefined
);
}
const
exclude
=
/
\b((
winjs
\.
base
)
|
(
marked
)
|
(
raw
\.
marked
)
|
(
nls
)
|
(
css
))\.
js$/
;
const
remappedCoverage
=
i_remap
(
global
.
__coverage__
,
{
exclude
:
exclude
}).
getFinalCoverage
();
// The remapped coverage comes out with broken paths
function
toUpperDriveLetter
(
str
)
{
if
(
/^
[
a-z
]
:/
.
test
(
str
))
{
return
str
.
charAt
(
0
).
toUpperCase
()
+
str
.
substr
(
1
);
}
return
str
;
};
function
toLowerDriveLetter
(
str
)
{
if
(
/^
[
A-Z
]
:/
.
test
(
str
))
{
return
str
.
charAt
(
0
).
toLowerCase
()
+
str
.
substr
(
1
);
}
return
str
;
};
const
REPO_PATH
=
toUpperDriveLetter
(
path
.
join
(
__dirname
,
'
../..
'
));
const
fixPath
=
function
(
brokenPath
)
{
const
startIndex
=
brokenPath
.
indexOf
(
REPO_PATH
);
if
(
startIndex
===
-
1
)
{
return
toLowerDriveLetter
(
brokenPath
);
}
return
toLowerDriveLetter
(
brokenPath
.
substr
(
startIndex
));
};
const
finalCoverage
=
Object
.
create
(
null
);
for
(
const
entryKey
in
remappedCoverage
)
{
const
entry
=
remappedCoverage
[
entryKey
];
entry
.
path
=
fixPath
(
entry
.
path
);
finalCoverage
[
fixPath
(
entryKey
)]
=
entry
;
}
const
collector
=
new
istanbul
.
Collector
();
collector
.
add
(
finalCoverage
);
let
coveragePath
=
path
.
join
(
path
.
dirname
(
__dirname
),
'
../.build/coverage
'
);
let
reportTypes
=
[];
if
(
opts
.
run
||
opts
.
grep
)
{
// single file running
coveragePath
+=
'
-single
'
;
reportTypes
=
[
'
lcovonly
'
];
}
else
{
reportTypes
=
[
'
json
'
,
'
lcov
'
,
'
html
'
];
}
const
reporter
=
new
istanbul
.
Reporter
(
null
,
coveragePath
);
reporter
.
addAll
(
reportTypes
);
reporter
.
write
(
collector
,
true
,
resolve
);
});
}
...
...
@@ -43,7 +122,7 @@ function loadTestModules(opts) {
}
return
new
Promise
((
resolve
,
reject
)
=>
{
glob
(
'
**/test/**/*.test.js
'
,
{
cwd
:
_out
},
(
err
,
files
)
=>
{
glob
(
_tests_glob
,
{
cwd
:
_out
},
(
err
,
files
)
=>
{
if
(
err
)
{
reject
(
err
);
return
;
...
...
@@ -107,8 +186,10 @@ function runTests(opts) {
}
const
runner
=
mocha
.
run
(()
=>
{
createCoverageReport
(
opts
).
then
(()
=>
{
ipcRenderer
.
send
(
'
done
'
);
});
});
runner
.
on
(
'
fail
'
,
function
(
test
)
{
ipcRenderer
.
send
(
'
fail
'
,
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录