Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
722a6664
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,发现更多精彩内容 >>
提交
722a6664
编写于
1月 11, 2021
作者:
S
Sandeep Somavarapu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
use in-mem fsp - workspace editing tests
上级
a2efefd3
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
139 addition
and
164 deletion
+139
-164
src/vs/workbench/services/configuration/test/electron-browser/configurationService.test.ts
...ration/test/electron-browser/configurationService.test.ts
+139
-164
未找到文件。
src/vs/workbench/services/configuration/test/electron-browser/configurationService.test.ts
浏览文件 @
722a6664
...
...
@@ -30,7 +30,7 @@ import { IJSONEditingService } from 'vs/workbench/services/configuration/common/
import
{
JSONEditingService
}
from
'
vs/workbench/services/configuration/common/jsonEditingService
'
;
import
{
createHash
}
from
'
crypto
'
;
import
{
Schemas
}
from
'
vs/base/common/network
'
;
import
{
originalFSPath
,
joinPath
,
dirname
}
from
'
vs/base/common/resources
'
;
import
{
originalFSPath
,
joinPath
,
dirname
,
basename
}
from
'
vs/base/common/resources
'
;
import
{
isLinux
,
isMacintosh
}
from
'
vs/base/common/platform
'
;
import
{
RemoteAgentService
}
from
'
vs/workbench/services/remote/electron-browser/remoteAgentServiceImpl
'
;
import
{
RemoteAuthorityResolverService
}
from
'
vs/platform/remote/electron-sandbox/remoteAuthorityResolverService
'
;
...
...
@@ -219,142 +219,125 @@ suite('WorkspaceContextService - Workspace', () => {
suite
(
'
WorkspaceContextService - Workspace Editing
'
,
()
=>
{
let
parentResource
:
string
,
testObject
:
WorkspaceService
,
instantiationService
:
TestInstantiation
Service
;
let
testObject
:
WorkspaceService
,
fileService
:
IFile
Service
;
const
disposables
=
new
DisposableStore
();
setup
(()
=>
{
return
setUpWorkspace
([
'
a
'
,
'
b
'
])
.
then
(({
parentDir
,
configPath
})
=>
{
setup
(
async
()
=>
{
const
logService
=
new
NullLogService
();
fileService
=
disposables
.
add
(
new
FileService
(
logService
));
const
fileSystemProvider
=
disposables
.
add
(
new
InMemoryFileSystemProvider
());
fileService
.
registerProvider
(
Schemas
.
file
,
fileSystemProvider
);
parentResource
=
parentDir
;
const
appSettingsHome
=
URI
.
file
(
'
user
'
);
const
folderA
=
URI
.
file
(
'
a
'
);
const
folderB
=
URI
.
file
(
'
b
'
);
const
configResource
=
URI
.
file
(
'
vsctests.code-workspace
'
);
const
workspace
=
{
folders
:
[{
path
:
folderA
.
path
},
{
path
:
folderB
.
path
}]
};
instantiationService
=
<
TestInstantiationService
>
workbenchInstantiationService
();
const
environmentService
=
new
TestWorkbenchEnvironmentService
(
URI
.
file
(
parentDir
));
const
remoteAgentService
=
instantiationService
.
createInstance
(
RemoteAgentService
);
instantiationService
.
stub
(
IRemoteAgentService
,
remoteAgentService
);
const
fileService
=
disposables
.
add
(
new
FileService
(
new
NullLogService
()));
const
diskFileSystemProvider
=
disposables
.
add
(
new
DiskFileSystemProvider
(
new
NullLogService
()));
fileService
.
registerProvider
(
Schemas
.
file
,
diskFileSystemProvider
);
fileService
.
registerProvider
(
Schemas
.
userData
,
disposables
.
add
(
new
FileUserDataProvider
(
Schemas
.
file
,
diskFileSystemProvider
,
Schemas
.
userData
,
new
NullLogService
())));
const
workspaceService
=
disposables
.
add
(
new
WorkspaceService
({
configurationCache
:
new
ConfigurationCache
(
environmentService
,
fileService
)
},
environmentService
,
fileService
,
remoteAgentService
,
new
UriIdentityService
(
fileService
),
new
NullLogService
()));
await
fileService
.
createFolder
(
appSettingsHome
);
await
fileService
.
createFolder
(
folderA
);
await
fileService
.
createFolder
(
folderB
);
await
fileService
.
writeFile
(
configResource
,
VSBuffer
.
fromString
(
JSON
.
stringify
(
workspace
,
null
,
'
\t
'
)));
instantiationService
.
stub
(
IWorkspaceContextService
,
workspaceService
);
instantiationService
.
stub
(
IConfigurationService
,
workspaceService
);
instantiationService
.
stub
(
IEnvironmentService
,
environmentService
);
const
instantiationService
=
<
TestInstantiationService
>
workbenchInstantiationService
();
const
environmentService
=
new
TestWorkbenchEnvironmentService
(
appSettingsHome
);
const
remoteAgentService
=
instantiationService
.
createInstance
(
RemoteAgentService
);
instantiationService
.
stub
(
IRemoteAgentService
,
remoteAgentService
);
fileService
.
registerProvider
(
Schemas
.
userData
,
disposables
.
add
(
new
FileUserDataProvider
(
Schemas
.
file
,
fileSystemProvider
,
Schemas
.
userData
,
new
NullLogService
())));
testObject
=
disposables
.
add
(
new
WorkspaceService
({
configurationCache
:
new
ConfigurationCache
(
environmentService
,
fileService
)
},
environmentService
,
fileService
,
remoteAgentService
,
new
UriIdentityService
(
fileService
),
new
NullLogService
()));
return
workspaceService
.
initialize
(
getWorkspaceIdentifier
(
configPath
)).
then
(()
=>
{
instantiationService
.
stub
(
IFileService
,
fileService
);
instantiationService
.
stub
(
ITextFileService
,
instantiationService
.
createInstance
(
TestTextFileService
));
instantiationService
.
stub
(
ITextModelService
,
<
ITextModelService
>
instantiationService
.
createInstance
(
TextModelResolverService
));
workspaceService
.
acquireInstantiationService
(
instantiationService
);
instantiationService
.
stub
(
IFileService
,
fileService
);
instantiationService
.
stub
(
IWorkspaceContextService
,
testObject
);
instantiationService
.
stub
(
IConfigurationService
,
testObject
);
instantiationService
.
stub
(
IEnvironmentService
,
environmentService
);
testObject
=
workspaceService
;
});
});
await
testObject
.
initialize
(
getWorkspaceIdentifier
(
configResource
));
instantiationService
.
stub
(
ITextFileService
,
disposables
.
add
(
instantiationService
.
createInstance
(
TestTextFileService
)));
instantiationService
.
stub
(
ITextModelService
,
disposables
.
add
(
instantiationService
.
createInstance
(
TextModelResolverService
)));
testObject
.
acquireInstantiationService
(
instantiationService
);
});
teardown
(()
=>
{
disposables
.
clear
();
if
(
parentResource
)
{
return
pfs
.
rimraf
(
parentResource
);
}
return
undefined
;
});
teardown
(()
=>
disposables
.
clear
());
test
(
'
add folders
'
,
()
=>
{
const
workspaceDir
=
path
.
dirname
(
testObject
.
getWorkspace
().
folders
[
0
].
uri
.
fsPath
);
return
testObject
.
addFolders
([{
uri
:
URI
.
file
(
path
.
join
(
workspaceDir
,
'
d
'
))
},
{
uri
:
URI
.
file
(
path
.
join
(
workspaceDir
,
'
c
'
))
}])
.
then
(()
=>
{
const
actual
=
testObject
.
getWorkspace
().
folders
;
test
(
'
add folders
'
,
async
()
=>
{
await
testObject
.
addFolders
([{
uri
:
URI
.
file
(
'
d
'
)
},
{
uri
:
URI
.
file
(
'
c
'
)
}]);
const
actual
=
testObject
.
getWorkspace
().
folders
;
assert
.
equal
(
actual
.
length
,
4
);
assert
.
equal
(
path
.
basename
(
actual
[
0
].
uri
.
fsPath
),
'
a
'
);
assert
.
equal
(
path
.
basename
(
actual
[
1
].
uri
.
fsPath
),
'
b
'
);
assert
.
equal
(
path
.
basename
(
actual
[
2
].
uri
.
fsPath
),
'
d
'
);
assert
.
equal
(
path
.
basename
(
actual
[
3
].
uri
.
fsPath
),
'
c
'
);
});
assert
.
equal
(
actual
.
length
,
4
);
assert
.
equal
(
basename
(
actual
[
0
].
uri
),
'
a
'
);
assert
.
equal
(
basename
(
actual
[
1
].
uri
),
'
b
'
);
assert
.
equal
(
basename
(
actual
[
2
].
uri
),
'
d
'
);
assert
.
equal
(
basename
(
actual
[
3
].
uri
),
'
c
'
);
});
test
(
'
add folders (at specific index)
'
,
()
=>
{
const
workspaceDir
=
path
.
dirname
(
testObject
.
getWorkspace
().
folders
[
0
].
uri
.
fsPath
);
return
testObject
.
addFolders
([{
uri
:
URI
.
file
(
path
.
join
(
workspaceDir
,
'
d
'
))
},
{
uri
:
URI
.
file
(
path
.
join
(
workspaceDir
,
'
c
'
))
}],
0
)
.
then
(()
=>
{
const
actual
=
testObject
.
getWorkspace
().
folders
;
test
(
'
add folders (at specific index)
'
,
async
()
=>
{
await
testObject
.
addFolders
([{
uri
:
URI
.
file
(
'
d
'
)
},
{
uri
:
URI
.
file
(
'
c
'
)
}],
0
);
const
actual
=
testObject
.
getWorkspace
().
folders
;
assert
.
equal
(
actual
.
length
,
4
);
assert
.
equal
(
path
.
basename
(
actual
[
0
].
uri
.
fsPath
),
'
d
'
);
assert
.
equal
(
path
.
basename
(
actual
[
1
].
uri
.
fsPath
),
'
c
'
);
assert
.
equal
(
path
.
basename
(
actual
[
2
].
uri
.
fsPath
),
'
a
'
);
assert
.
equal
(
path
.
basename
(
actual
[
3
].
uri
.
fsPath
),
'
b
'
);
});
assert
.
equal
(
actual
.
length
,
4
);
assert
.
equal
(
basename
(
actual
[
0
].
uri
),
'
d
'
);
assert
.
equal
(
basename
(
actual
[
1
].
uri
),
'
c
'
);
assert
.
equal
(
basename
(
actual
[
2
].
uri
),
'
a
'
);
assert
.
equal
(
basename
(
actual
[
3
].
uri
),
'
b
'
);
});
test
(
'
add folders (at specific wrong index)
'
,
()
=>
{
const
workspaceDir
=
path
.
dirname
(
testObject
.
getWorkspace
().
folders
[
0
].
uri
.
fsPath
);
return
testObject
.
addFolders
([{
uri
:
URI
.
file
(
path
.
join
(
workspaceDir
,
'
d
'
))
},
{
uri
:
URI
.
file
(
path
.
join
(
workspaceDir
,
'
c
'
))
}],
10
)
.
then
(()
=>
{
const
actual
=
testObject
.
getWorkspace
().
folders
;
test
(
'
add folders (at specific wrong index)
'
,
async
()
=>
{
await
testObject
.
addFolders
([{
uri
:
URI
.
file
(
'
d
'
)
},
{
uri
:
URI
.
file
(
'
c
'
)
}],
10
);
const
actual
=
testObject
.
getWorkspace
().
folders
;
assert
.
equal
(
actual
.
length
,
4
);
assert
.
equal
(
path
.
basename
(
actual
[
0
].
uri
.
fsPath
),
'
a
'
);
assert
.
equal
(
path
.
basename
(
actual
[
1
].
uri
.
fsPath
),
'
b
'
);
assert
.
equal
(
path
.
basename
(
actual
[
2
].
uri
.
fsPath
),
'
d
'
);
assert
.
equal
(
path
.
basename
(
actual
[
3
].
uri
.
fsPath
),
'
c
'
);
});
assert
.
equal
(
actual
.
length
,
4
);
assert
.
equal
(
basename
(
actual
[
0
].
uri
),
'
a
'
);
assert
.
equal
(
basename
(
actual
[
1
].
uri
),
'
b
'
);
assert
.
equal
(
basename
(
actual
[
2
].
uri
),
'
d
'
);
assert
.
equal
(
basename
(
actual
[
3
].
uri
),
'
c
'
);
});
test
(
'
add folders (with name)
'
,
()
=>
{
const
workspaceDir
=
path
.
dirname
(
testObject
.
getWorkspace
().
folders
[
0
].
uri
.
fsPath
);
return
testObject
.
addFolders
([{
uri
:
URI
.
file
(
path
.
join
(
workspaceDir
,
'
d
'
)),
name
:
'
DDD
'
},
{
uri
:
URI
.
file
(
path
.
join
(
workspaceDir
,
'
c
'
)),
name
:
'
CCC
'
}])
.
then
(()
=>
{
const
actual
=
testObject
.
getWorkspace
().
folders
;
assert
.
equal
(
actual
.
length
,
4
);
assert
.
equal
(
path
.
basename
(
actual
[
0
].
uri
.
fsPath
),
'
a
'
);
assert
.
equal
(
path
.
basename
(
actual
[
1
].
uri
.
fsPath
),
'
b
'
);
assert
.
equal
(
path
.
basename
(
actual
[
2
].
uri
.
fsPath
),
'
d
'
);
assert
.
equal
(
path
.
basename
(
actual
[
3
].
uri
.
fsPath
),
'
c
'
);
assert
.
equal
(
actual
[
2
].
name
,
'
DDD
'
);
assert
.
equal
(
actual
[
3
].
name
,
'
CCC
'
);
});
test
(
'
add folders (with name)
'
,
async
()
=>
{
await
testObject
.
addFolders
([{
uri
:
URI
.
file
(
'
d
'
),
name
:
'
DDD
'
},
{
uri
:
URI
.
file
(
'
c
'
),
name
:
'
CCC
'
}]);
const
actual
=
testObject
.
getWorkspace
().
folders
;
assert
.
equal
(
actual
.
length
,
4
);
assert
.
equal
(
basename
(
actual
[
0
].
uri
),
'
a
'
);
assert
.
equal
(
basename
(
actual
[
1
].
uri
),
'
b
'
);
assert
.
equal
(
basename
(
actual
[
2
].
uri
),
'
d
'
);
assert
.
equal
(
basename
(
actual
[
3
].
uri
),
'
c
'
);
assert
.
equal
(
actual
[
2
].
name
,
'
DDD
'
);
assert
.
equal
(
actual
[
3
].
name
,
'
CCC
'
);
});
test
(
'
add folders triggers change event
'
,
()
=>
{
test
(
'
add folders triggers change event
'
,
async
()
=>
{
const
target
=
sinon
.
spy
();
testObject
.
onDidChangeWorkspaceFolders
(
target
);
const
workspaceDir
=
path
.
dirname
(
testObject
.
getWorkspace
().
folders
[
0
].
uri
.
fsPath
);
const
addedFolders
=
[{
uri
:
URI
.
file
(
path
.
join
(
workspaceDir
,
'
d
'
))
},
{
uri
:
URI
.
file
(
path
.
join
(
workspaceDir
,
'
c
'
))
}];
return
testObject
.
addFolders
(
addedFolders
)
.
then
(()
=>
{
assert
.
equal
(
target
.
callCount
,
1
,
`Should be called only once but called
${
target
.
callCount
}
times`
);
const
actual
=
<
IWorkspaceFoldersChangeEvent
>
target
.
args
[
0
][
0
];
assert
.
deepEqual
(
actual
.
added
.
map
(
r
=>
r
.
uri
.
toString
()),
addedFolders
.
map
(
a
=>
a
.
uri
.
toString
()));
assert
.
deepEqual
(
actual
.
removed
,
[]);
assert
.
deepEqual
(
actual
.
changed
,
[]);
});
const
addedFolders
=
[{
uri
:
URI
.
file
(
'
d
'
)
},
{
uri
:
URI
.
file
(
'
c
'
)
}];
await
testObject
.
addFolders
(
addedFolders
);
assert
.
equal
(
target
.
callCount
,
1
,
`Should be called only once but called
${
target
.
callCount
}
times`
);
const
actual_1
=
(
<
IWorkspaceFoldersChangeEvent
>
target
.
args
[
0
][
0
]);
assert
.
deepEqual
(
actual_1
.
added
.
map
(
r
=>
r
.
uri
.
toString
()),
addedFolders
.
map
(
a
=>
a
.
uri
.
toString
()));
assert
.
deepEqual
(
actual_1
.
removed
,
[]);
assert
.
deepEqual
(
actual_1
.
changed
,
[]);
});
test
(
'
remove folders
'
,
()
=>
{
return
testObject
.
removeFolders
([
testObject
.
getWorkspace
().
folders
[
0
].
uri
])
.
then
(()
=>
{
const
actual
=
testObject
.
getWorkspace
().
folders
;
assert
.
equal
(
actual
.
length
,
1
);
assert
.
equal
(
path
.
basename
(
actual
[
0
].
uri
.
fsPath
),
'
b
'
);
});
test
(
'
remove folders
'
,
async
()
=>
{
await
testObject
.
removeFolders
([
testObject
.
getWorkspace
().
folders
[
0
].
uri
]);
const
actual
=
testObject
.
getWorkspace
().
folders
;
assert
.
equal
(
actual
.
length
,
1
);
assert
.
equal
(
basename
(
actual
[
0
].
uri
),
'
b
'
);
});
test
(
'
remove folders triggers change event
'
,
()
=>
{
test
(
'
remove folders triggers change event
'
,
async
()
=>
{
const
target
=
sinon
.
spy
();
testObject
.
onDidChangeWorkspaceFolders
(
target
);
const
removedFolder
=
testObject
.
getWorkspace
().
folders
[
0
];
return
testObject
.
removeFolders
([
removedFolder
.
uri
])
.
then
(()
=>
{
assert
.
equal
(
target
.
callCount
,
1
,
`Should be called only once but called
${
target
.
callCount
}
times`
);
const
actual
=
<
IWorkspaceFoldersChangeEvent
>
target
.
args
[
0
][
0
];
assert
.
deepEqual
(
actual
.
added
,
[]);
assert
.
deepEqual
(
actual
.
removed
.
map
(
r
=>
r
.
uri
.
toString
()),
[
removedFolder
.
uri
.
toString
()]);
assert
.
deepEqual
(
actual
.
changed
.
map
(
c
=>
c
.
uri
.
toString
()),
[
testObject
.
getWorkspace
().
folders
[
0
].
uri
.
toString
()]);
});
await
testObject
.
removeFolders
([
removedFolder
.
uri
]);
assert
.
equal
(
target
.
callCount
,
1
,
`Should be called only once but called
${
target
.
callCount
}
times`
);
const
actual_1
=
(
<
IWorkspaceFoldersChangeEvent
>
target
.
args
[
0
][
0
]);
assert
.
deepEqual
(
actual_1
.
added
,
[]);
assert
.
deepEqual
(
actual_1
.
removed
.
map
(
r
=>
r
.
uri
.
toString
()),
[
removedFolder
.
uri
.
toString
()]);
assert
.
deepEqual
(
actual_1
.
changed
.
map
(
c
=>
c
.
uri
.
toString
()),
[
testObject
.
getWorkspace
().
folders
[
0
].
uri
.
toString
()]);
});
test
(
'
remove folders and add them back by writing into the file
'
,
async
()
=>
{
...
...
@@ -372,88 +355,80 @@ suite('WorkspaceContextService - Workspace Editing', () => {
});
});
const
workspace
=
{
folders
:
[{
path
:
folders
[
0
].
uri
.
fsPath
},
{
path
:
folders
[
1
].
uri
.
fsP
ath
}]
};
await
instantiationService
.
get
(
ITextFileService
).
write
(
testObject
.
getWorkspace
().
configuration
!
,
JSON
.
stringify
(
workspace
,
null
,
'
\t
'
));
const
workspace
=
{
folders
:
[{
path
:
folders
[
0
].
uri
.
path
},
{
path
:
folders
[
1
].
uri
.
p
ath
}]
};
await
fileService
.
writeFile
(
testObject
.
getWorkspace
().
configuration
!
,
VSBuffer
.
fromString
(
JSON
.
stringify
(
workspace
,
null
,
'
\t
'
)
));
await
promise
;
});
test
(
'
update folders (remove last and add to end)
'
,
()
=>
{
test
(
'
update folders (remove last and add to end)
'
,
async
()
=>
{
const
target
=
sinon
.
spy
();
testObject
.
onDidChangeWorkspaceFolders
(
target
);
const
workspaceDir
=
path
.
dirname
(
testObject
.
getWorkspace
().
folders
[
0
].
uri
.
fsPath
);
const
addedFolders
=
[{
uri
:
URI
.
file
(
path
.
join
(
workspaceDir
,
'
d
'
))
},
{
uri
:
URI
.
file
(
path
.
join
(
workspaceDir
,
'
c
'
))
}];
const
addedFolders
=
[{
uri
:
URI
.
file
(
'
d
'
)
},
{
uri
:
URI
.
file
(
'
c
'
)
}];
const
removedFolders
=
[
testObject
.
getWorkspace
().
folders
[
1
]].
map
(
f
=>
f
.
uri
);
return
testObject
.
updateFolders
(
addedFolders
,
removedFolders
)
.
then
(()
=>
{
assert
.
equal
(
target
.
callCount
,
1
,
`Should be called only once but called
${
target
.
callCount
}
times`
);
const
actual
=
<
IWorkspaceFoldersChangeEvent
>
target
.
args
[
0
][
0
];
assert
.
deepEqual
(
actual
.
added
.
map
(
r
=>
r
.
uri
.
toString
()),
addedFolders
.
map
(
a
=>
a
.
uri
.
toString
()));
assert
.
deepEqual
(
actual
.
removed
.
map
(
r
=>
r
.
uri
.
toString
()),
removedFolders
.
map
(
a
=>
a
.
toString
()));
assert
.
deepEqual
(
actual
.
changed
,
[]);
});
await
testObject
.
updateFolders
(
addedFolders
,
removedFolders
);
assert
.
equal
(
target
.
callCount
,
1
,
`Should be called only once but called
${
target
.
callCount
}
times`
);
const
actual_1
=
(
<
IWorkspaceFoldersChangeEvent
>
target
.
args
[
0
][
0
]);
assert
.
deepEqual
(
actual_1
.
added
.
map
(
r
=>
r
.
uri
.
toString
()),
addedFolders
.
map
(
a
=>
a
.
uri
.
toString
()));
assert
.
deepEqual
(
actual_1
.
removed
.
map
(
r_1
=>
r_1
.
uri
.
toString
()),
removedFolders
.
map
(
a_1
=>
a_1
.
toString
()));
assert
.
deepEqual
(
actual_1
.
changed
,
[]);
});
test
(
'
update folders (rename first via add and remove)
'
,
()
=>
{
test
(
'
update folders (rename first via add and remove)
'
,
async
()
=>
{
const
target
=
sinon
.
spy
();
testObject
.
onDidChangeWorkspaceFolders
(
target
);
const
workspaceDir
=
path
.
dirname
(
testObject
.
getWorkspace
().
folders
[
0
].
uri
.
fsPath
);
const
addedFolders
=
[{
uri
:
URI
.
file
(
path
.
join
(
workspaceDir
,
'
a
'
)),
name
:
'
The Folder
'
}];
const
addedFolders
=
[{
uri
:
URI
.
file
(
'
a
'
),
name
:
'
The Folder
'
}];
const
removedFolders
=
[
testObject
.
getWorkspace
().
folders
[
0
]].
map
(
f
=>
f
.
uri
);
return
testObject
.
updateFolders
(
addedFolders
,
removedFolders
,
0
)
.
then
(()
=>
{
assert
.
equal
(
target
.
callCount
,
1
,
`Should be called only once but called
${
target
.
callCount
}
times`
);
const
actual
=
<
IWorkspaceFoldersChangeEvent
>
target
.
args
[
0
][
0
];
assert
.
deepEqual
(
actual
.
added
,
[]);
assert
.
deepEqual
(
actual
.
removed
,
[]);
assert
.
deepEqual
(
actual
.
changed
.
map
(
r
=>
r
.
uri
.
toString
()),
removedFolders
.
map
(
a
=>
a
.
toString
()));
});
await
testObject
.
updateFolders
(
addedFolders
,
removedFolders
,
0
);
assert
.
equal
(
target
.
callCount
,
1
,
`Should be called only once but called
${
target
.
callCount
}
times`
);
const
actual_1
=
(
<
IWorkspaceFoldersChangeEvent
>
target
.
args
[
0
][
0
]);
assert
.
deepEqual
(
actual_1
.
added
,
[]);
assert
.
deepEqual
(
actual_1
.
removed
,
[]);
assert
.
deepEqual
(
actual_1
.
changed
.
map
(
r
=>
r
.
uri
.
toString
()),
removedFolders
.
map
(
a
=>
a
.
toString
()));
});
test
(
'
update folders (remove first and add to end)
'
,
()
=>
{
test
(
'
update folders (remove first and add to end)
'
,
async
()
=>
{
const
target
=
sinon
.
spy
();
testObject
.
onDidChangeWorkspaceFolders
(
target
);
const
workspaceDir
=
path
.
dirname
(
testObject
.
getWorkspace
().
folders
[
0
].
uri
.
fsPath
);
const
addedFolders
=
[{
uri
:
URI
.
file
(
path
.
join
(
workspaceDir
,
'
d
'
))
},
{
uri
:
URI
.
file
(
path
.
join
(
workspaceDir
,
'
c
'
))
}];
const
addedFolders
=
[{
uri
:
URI
.
file
(
'
d
'
)
},
{
uri
:
URI
.
file
(
'
c
'
)
}];
const
removedFolders
=
[
testObject
.
getWorkspace
().
folders
[
0
]].
map
(
f
=>
f
.
uri
);
const
changedFolders
=
[
testObject
.
getWorkspace
().
folders
[
1
]].
map
(
f
=>
f
.
uri
);
return
testObject
.
updateFolders
(
addedFolders
,
removedFolders
)
.
then
(()
=>
{
assert
.
equal
(
target
.
callCount
,
1
,
`Should be called only once but called
${
target
.
callCount
}
times`
);
const
actual
=
<
IWorkspaceFoldersChangeEvent
>
target
.
args
[
0
][
0
];
assert
.
deepEqual
(
actual
.
added
.
map
(
r
=>
r
.
uri
.
toString
()),
addedFolders
.
map
(
a
=>
a
.
uri
.
toString
()));
assert
.
deepEqual
(
actual
.
removed
.
map
(
r
=>
r
.
uri
.
toString
()),
removedFolders
.
map
(
a
=>
a
.
toString
()));
assert
.
deepEqual
(
actual
.
changed
.
map
(
r
=>
r
.
uri
.
toString
()),
changedFolders
.
map
(
a
=>
a
.
toString
()));
});
await
testObject
.
updateFolders
(
addedFolders
,
removedFolders
);
assert
.
equal
(
target
.
callCount
,
1
,
`Should be called only once but called
${
target
.
callCount
}
times`
);
const
actual_1
=
(
<
IWorkspaceFoldersChangeEvent
>
target
.
args
[
0
][
0
]);
assert
.
deepEqual
(
actual_1
.
added
.
map
(
r
=>
r
.
uri
.
toString
()),
addedFolders
.
map
(
a
=>
a
.
uri
.
toString
()));
assert
.
deepEqual
(
actual_1
.
removed
.
map
(
r_1
=>
r_1
.
uri
.
toString
()),
removedFolders
.
map
(
a_1
=>
a_1
.
toString
()));
assert
.
deepEqual
(
actual_1
.
changed
.
map
(
r_2
=>
r_2
.
uri
.
toString
()),
changedFolders
.
map
(
a_2
=>
a_2
.
toString
()));
});
test
(
'
reorder folders trigger change event
'
,
()
=>
{
test
(
'
reorder folders trigger change event
'
,
async
()
=>
{
const
target
=
sinon
.
spy
();
testObject
.
onDidChangeWorkspaceFolders
(
target
);
const
workspace
=
{
folders
:
[{
path
:
testObject
.
getWorkspace
().
folders
[
1
].
uri
.
fsPath
},
{
path
:
testObject
.
getWorkspace
().
folders
[
0
].
uri
.
fsPath
}]
};
fs
.
writeFileSync
(
testObject
.
getWorkspace
().
configuration
!
.
fsPath
,
JSON
.
stringify
(
workspace
,
null
,
'
\t
'
));
return
testObject
.
reloadConfiguration
()
.
then
(()
=>
{
assert
.
equal
(
target
.
callCount
,
1
,
`Should be called only once but called
${
target
.
callCount
}
times`
);
const
actual
=
<
IWorkspaceFoldersChangeEvent
>
target
.
args
[
0
][
0
];
assert
.
deepEqual
(
actual
.
added
,
[]);
assert
.
deepEqual
(
actual
.
removed
,
[]);
assert
.
deepEqual
(
actual
.
changed
.
map
(
c
=>
c
.
uri
.
toString
()),
testObject
.
getWorkspace
().
folders
.
map
(
f
=>
f
.
uri
.
toString
()).
reverse
());
});
const
workspace
=
{
folders
:
[{
path
:
testObject
.
getWorkspace
().
folders
[
1
].
uri
.
path
},
{
path
:
testObject
.
getWorkspace
().
folders
[
0
].
uri
.
path
}]
};
await
fileService
.
writeFile
(
testObject
.
getWorkspace
().
configuration
!
,
VSBuffer
.
fromString
(
JSON
.
stringify
(
workspace
,
null
,
'
\t
'
)));
await
testObject
.
reloadConfiguration
();
assert
.
equal
(
target
.
callCount
,
1
,
`Should be called only once but called
${
target
.
callCount
}
times`
);
const
actual_1
=
(
<
IWorkspaceFoldersChangeEvent
>
target
.
args
[
0
][
0
]);
assert
.
deepEqual
(
actual_1
.
added
,
[]);
assert
.
deepEqual
(
actual_1
.
removed
,
[]);
assert
.
deepEqual
(
actual_1
.
changed
.
map
(
c
=>
c
.
uri
.
toString
()),
testObject
.
getWorkspace
().
folders
.
map
(
f
=>
f
.
uri
.
toString
()).
reverse
());
});
test
(
'
rename folders trigger change event
'
,
()
=>
{
test
(
'
rename folders trigger change event
'
,
async
()
=>
{
const
target
=
sinon
.
spy
();
testObject
.
onDidChangeWorkspaceFolders
(
target
);
const
workspace
=
{
folders
:
[{
path
:
testObject
.
getWorkspace
().
folders
[
0
].
uri
.
fsPath
,
name
:
'
1
'
},
{
path
:
testObject
.
getWorkspace
().
folders
[
1
].
uri
.
fsPath
}]
};
fs
.
writeFileSync
(
testObject
.
getWorkspace
().
configuration
!
.
fsPath
,
JSON
.
stringify
(
workspace
,
null
,
'
\t
'
));
return
testObject
.
reloadConfiguration
()
.
then
(()
=>
{
assert
.
equal
(
target
.
callCount
,
1
,
`Should be called only once but called
${
target
.
callCount
}
times`
);
const
actual
=
<
IWorkspaceFoldersChangeEvent
>
target
.
args
[
0
][
0
];
assert
.
deepEqual
(
actual
.
added
,
[]);
assert
.
deepEqual
(
actual
.
removed
,
[]);
assert
.
deepEqual
(
actual
.
changed
.
map
(
c
=>
c
.
uri
.
toString
()),
[
testObject
.
getWorkspace
().
folders
[
0
].
uri
.
toString
()]);
});
const
workspace
=
{
folders
:
[{
path
:
testObject
.
getWorkspace
().
folders
[
0
].
uri
.
path
,
name
:
'
1
'
},
{
path
:
testObject
.
getWorkspace
().
folders
[
1
].
uri
.
path
}]
};
fileService
.
writeFile
(
testObject
.
getWorkspace
().
configuration
!
,
VSBuffer
.
fromString
(
JSON
.
stringify
(
workspace
,
null
,
'
\t
'
)));
await
testObject
.
reloadConfiguration
();
assert
.
equal
(
target
.
callCount
,
1
,
`Should be called only once but called
${
target
.
callCount
}
times`
);
const
actual_1
=
(
<
IWorkspaceFoldersChangeEvent
>
target
.
args
[
0
][
0
]);
assert
.
deepEqual
(
actual_1
.
added
,
[]);
assert
.
deepEqual
(
actual_1
.
removed
,
[]);
assert
.
deepEqual
(
actual_1
.
changed
.
map
(
c
=>
c
.
uri
.
toString
()),
[
testObject
.
getWorkspace
().
folders
[
0
].
uri
.
toString
()]);
});
});
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录