Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
89640033
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,发现更多精彩内容 >>
提交
89640033
编写于
6月 23, 2019
作者:
S
Sandeep Somavarapu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
use user data service for writing
上级
3718e799
变更
2
展开全部
隐藏空白更改
内联
并排
Showing
2 changed file
with
402 addition
and
289 deletion
+402
-289
src/vs/workbench/services/configuration/common/configurationEditingService.ts
...vices/configuration/common/configurationEditingService.ts
+357
-261
src/vs/workbench/services/configuration/test/electron-browser/configurationEditingService.test.ts
...test/electron-browser/configurationEditingService.test.ts
+45
-28
未找到文件。
src/vs/workbench/services/configuration/common/configurationEditingService.ts
浏览文件 @
89640033
此差异已折叠。
点击以展开。
src/vs/workbench/services/configuration/test/electron-browser/configurationEditingService.test.ts
浏览文件 @
89640033
...
...
@@ -40,14 +40,17 @@ import { DiskFileSystemProvider } from 'vs/workbench/services/files/node/diskFil
import
{
IFileService
}
from
'
vs/platform/files/common/files
'
;
import
{
ConfigurationCache
}
from
'
vs/workbench/services/configuration/node/configurationCache
'
;
import
{
FileUserDataService
}
from
'
vs/workbench/services/userData/common/fileUserDataService
'
;
import
{
IUserDataService
}
from
'
vs/workbench/services/userData/common/userDataService
'
;
import
{
dirname
}
from
'
vs/base/common/resources
'
;
class
SettingsTestEnvironmentService
extends
EnvironmentService
{
constructor
(
args
:
ParsedArgs
,
_execPath
:
string
,
private
customAppSettingsHome
:
string
)
{
constructor
(
args
:
ParsedArgs
,
_execPath
:
string
,
private
_settingsPath
:
string
)
{
super
(
args
,
_execPath
);
}
get
settingsResource
():
URI
{
return
URI
.
file
(
this
.
customAppSettingsHome
);
}
get
appSettingsHome
():
URI
{
return
dirname
(
this
.
settingsResource
);
}
get
settingsResource
():
URI
{
return
URI
.
file
(
this
.
_settingsPath
);
}
}
suite
(
'
ConfigurationEditingService
'
,
()
=>
{
...
...
@@ -90,7 +93,7 @@ suite('ConfigurationEditingService', () => {
const
id
=
uuid
.
generateUuid
();
parentDir
=
path
.
join
(
os
.
tmpdir
(),
'
vsctests
'
,
id
);
workspaceDir
=
path
.
join
(
parentDir
,
'
workspaceconfig
'
,
id
);
globalSettingsFile
=
path
.
join
(
workspaceDir
,
'
config
.json
'
);
globalSettingsFile
=
path
.
join
(
workspaceDir
,
'
settings
.json
'
);
workspaceSettingsDir
=
path
.
join
(
workspaceDir
,
'
.vscode
'
);
return
await
mkdirp
(
workspaceSettingsDir
,
493
);
...
...
@@ -109,6 +112,7 @@ suite('ConfigurationEditingService', () => {
instantiationService
.
stub
(
IFileService
,
fileService
);
instantiationService
.
stub
(
IRemoteAgentService
,
remoteAgentService
);
const
userDataService
=
new
FileUserDataService
(
environmentService
,
fileService
);
instantiationService
.
stub
(
IUserDataService
,
userDataService
);
const
workspaceService
=
new
WorkspaceService
({
configurationCache
:
new
ConfigurationCache
(
environmentService
)
},
fileService
,
userDataService
,
remoteAgentService
);
instantiationService
.
stub
(
IWorkspaceContextService
,
workspaceService
);
return
workspaceService
.
initialize
(
noWorkspace
?
{
id
:
''
}
:
{
folder
:
URI
.
file
(
workspaceDir
),
id
:
createHash
(
'
md5
'
).
update
(
URI
.
file
(
workspaceDir
).
toString
()).
digest
(
'
hex
'
)
}).
then
(()
=>
{
...
...
@@ -145,6 +149,12 @@ suite('ConfigurationEditingService', () => {
}).
then
(()
=>
parentDir
=
null
!
);
}
test
(
'
errors cases - invalid key (user)
'
,
()
=>
{
return
testObject
.
writeConfiguration
(
EditableConfigurationTarget
.
USER_LOCAL
,
{
key
:
'
unknown.key
'
,
value
:
'
value
'
})
.
then
(()
=>
assert
.
fail
(
'
Should fail with ERROR_UNKNOWN_KEY
'
),
(
error
:
ConfigurationEditingError
)
=>
assert
.
equal
(
error
.
code
,
ConfigurationEditingErrorCode
.
ERROR_UNKNOWN_KEY
));
});
test
(
'
errors cases - invalid key
'
,
()
=>
{
return
testObject
.
writeConfiguration
(
EditableConfigurationTarget
.
WORKSPACE
,
{
key
:
'
unknown.key
'
,
value
:
'
value
'
})
.
then
(()
=>
assert
.
fail
(
'
Should fail with ERROR_UNKNOWN_KEY
'
),
...
...
@@ -171,31 +181,6 @@ suite('ConfigurationEditingService', () => {
(
error
:
ConfigurationEditingError
)
=>
assert
.
equal
(
error
.
code
,
ConfigurationEditingErrorCode
.
ERROR_INVALID_CONFIGURATION
));
});
test
(
'
errors cases - dirty
'
,
()
=>
{
instantiationService
.
stub
(
ITextFileService
,
'
isDirty
'
,
true
);
return
testObject
.
writeConfiguration
(
EditableConfigurationTarget
.
USER_LOCAL
,
{
key
:
'
configurationEditing.service.testSetting
'
,
value
:
'
value
'
})
.
then
(()
=>
assert
.
fail
(
'
Should fail with ERROR_CONFIGURATION_FILE_DIRTY error.
'
),
(
error
:
ConfigurationEditingError
)
=>
assert
.
equal
(
error
.
code
,
ConfigurationEditingErrorCode
.
ERROR_CONFIGURATION_FILE_DIRTY
));
});
test
(
'
dirty error is not thrown if not asked to save
'
,
()
=>
{
instantiationService
.
stub
(
ITextFileService
,
'
isDirty
'
,
true
);
return
testObject
.
writeConfiguration
(
EditableConfigurationTarget
.
USER_LOCAL
,
{
key
:
'
configurationEditing.service.testSetting
'
,
value
:
'
value
'
},
{
donotSave
:
true
})
.
then
(()
=>
null
,
error
=>
assert
.
fail
(
'
Should not fail.
'
));
});
test
(
'
do not notify error
'
,
()
=>
{
instantiationService
.
stub
(
ITextFileService
,
'
isDirty
'
,
true
);
const
target
=
sinon
.
stub
();
instantiationService
.
stub
(
INotificationService
,
<
INotificationService
>
{
prompt
:
target
,
_serviceBrand
:
null
!
,
notify
:
null
!
,
error
:
null
!
,
info
:
null
!
,
warn
:
null
!
,
status
:
null
!
});
return
testObject
.
writeConfiguration
(
EditableConfigurationTarget
.
USER_LOCAL
,
{
key
:
'
configurationEditing.service.testSetting
'
,
value
:
'
value
'
},
{
donotNotifyError
:
true
})
.
then
(()
=>
assert
.
fail
(
'
Should fail with ERROR_CONFIGURATION_FILE_DIRTY error.
'
),
(
error
:
ConfigurationEditingError
)
=>
{
assert
.
equal
(
false
,
target
.
calledOnce
);
assert
.
equal
(
error
.
code
,
ConfigurationEditingErrorCode
.
ERROR_CONFIGURATION_FILE_DIRTY
);
});
});
test
(
'
write one setting - empty file
'
,
()
=>
{
return
testObject
.
writeConfiguration
(
EditableConfigurationTarget
.
USER_LOCAL
,
{
key
:
'
configurationEditing.service.testSetting
'
,
value
:
'
value
'
})
.
then
(()
=>
{
...
...
@@ -238,6 +223,38 @@ suite('ConfigurationEditingService', () => {
});
});
test
(
'
errors cases - invalid configuration (workspace_
'
,
()
=>
{
fs
.
writeFileSync
(
globalSettingsFile
,
'
,,,,,,,,,,,,,,
'
);
return
testObject
.
writeConfiguration
(
EditableConfigurationTarget
.
USER_LOCAL
,
{
key
:
'
configurationEditing.service.testSetting
'
,
value
:
'
value
'
})
.
then
(()
=>
assert
.
fail
(
'
Should fail with ERROR_INVALID_CONFIGURATION
'
),
(
error
:
ConfigurationEditingError
)
=>
assert
.
equal
(
error
.
code
,
ConfigurationEditingErrorCode
.
ERROR_INVALID_CONFIGURATION
));
});
test
(
'
errors cases - dirty
'
,
()
=>
{
instantiationService
.
stub
(
ITextFileService
,
'
isDirty
'
,
true
);
return
testObject
.
writeConfiguration
(
EditableConfigurationTarget
.
WORKSPACE
,
{
key
:
'
tasks.service.testSetting
'
,
value
:
'
value
'
})
.
then
(()
=>
assert
.
fail
(
'
Should fail with ERROR_CONFIGURATION_FILE_DIRTY error.
'
),
(
error
:
ConfigurationEditingError
)
=>
assert
.
equal
(
error
.
code
,
ConfigurationEditingErrorCode
.
ERROR_CONFIGURATION_FILE_DIRTY
));
});
test
(
'
dirty error is not thrown if not asked to save
'
,
()
=>
{
instantiationService
.
stub
(
ITextFileService
,
'
isDirty
'
,
true
);
return
testObject
.
writeConfiguration
(
EditableConfigurationTarget
.
WORKSPACE
,
{
key
:
'
tasks.service.testSetting
'
,
value
:
'
value
'
},
{
donotSave
:
true
})
.
then
(()
=>
null
,
error
=>
assert
.
fail
(
'
Should not fail.
'
));
});
test
(
'
do not notify error
'
,
()
=>
{
instantiationService
.
stub
(
ITextFileService
,
'
isDirty
'
,
true
);
const
target
=
sinon
.
stub
();
instantiationService
.
stub
(
INotificationService
,
<
INotificationService
>
{
prompt
:
target
,
_serviceBrand
:
null
!
,
notify
:
null
!
,
error
:
null
!
,
info
:
null
!
,
warn
:
null
!
,
status
:
null
!
});
return
testObject
.
writeConfiguration
(
EditableConfigurationTarget
.
WORKSPACE
,
{
key
:
'
tasks.service.testSetting
'
,
value
:
'
value
'
},
{
donotNotifyError
:
true
})
.
then
(()
=>
assert
.
fail
(
'
Should fail with ERROR_CONFIGURATION_FILE_DIRTY error.
'
),
(
error
:
ConfigurationEditingError
)
=>
{
assert
.
equal
(
false
,
target
.
calledOnce
);
assert
.
equal
(
error
.
code
,
ConfigurationEditingErrorCode
.
ERROR_CONFIGURATION_FILE_DIRTY
);
});
});
test
(
'
write workspace standalone setting - empty file
'
,
()
=>
{
return
testObject
.
writeConfiguration
(
EditableConfigurationTarget
.
WORKSPACE
,
{
key
:
'
tasks.service.testSetting
'
,
value
:
'
value
'
})
.
then
(()
=>
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录