mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-14 03:58:33 -05:00
Merge from vscode 10492ba146318412cbee8b76a8c630f226914734
This commit is contained in:
@@ -416,7 +416,8 @@ export class SnippetsSynchroniser extends AbstractSynchroniser implements IUserD
|
||||
}
|
||||
for (const entry of stat.children || []) {
|
||||
const resource = entry.resource;
|
||||
if (extname(resource) === '.json') {
|
||||
const extension = extname(resource);
|
||||
if (extension === '.json' || extension === '.code-snippet') {
|
||||
const key = relativePath(this.snippetsFolder, resource)!;
|
||||
const content = await this.fileService.readFile(resource);
|
||||
snippets[key] = content;
|
||||
|
||||
@@ -33,7 +33,7 @@ export class UserDataSyncEnablementService extends Disposable implements IUserDa
|
||||
@IEnvironmentService environmentService: IEnvironmentService,
|
||||
) {
|
||||
super();
|
||||
switch (environmentService.args['sync']) {
|
||||
switch (environmentService.sync) {
|
||||
case 'on':
|
||||
this.setEnablement(true);
|
||||
break;
|
||||
|
||||
@@ -43,9 +43,7 @@ export class UserDataSyncStoreService extends Disposable implements IUserDataSyn
|
||||
const headers: IHeaders = {
|
||||
'X-Sync-Client-Id': productService.version,
|
||||
};
|
||||
if (uuid) {
|
||||
headers['X-Sync-Machine-Id'] = uuid;
|
||||
}
|
||||
headers['X-Sync-Machine-Id'] = uuid;
|
||||
return headers;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -127,6 +127,25 @@ const htmlSnippet3 = `{
|
||||
}
|
||||
}`;
|
||||
|
||||
const globalSnippet = `{
|
||||
// Place your global snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and
|
||||
// description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope
|
||||
// is left empty or omitted, the snippet gets applied to all languages. The prefix is what is
|
||||
// used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
|
||||
// $1, $2 for tab stops, $0 for the final cursor position, and {1: label}, { 2: another } for placeholders.
|
||||
// Placeholders with the same ids are connected.
|
||||
// Example:
|
||||
// "Print to console": {
|
||||
// "scope": "javascript,typescript",
|
||||
// "prefix": "log",
|
||||
// "body": [
|
||||
// "console.log('$1');",
|
||||
// "$2"
|
||||
// ],
|
||||
// "description": "Log output to console"
|
||||
// }
|
||||
}`;
|
||||
|
||||
suite('SnippetsSync', () => {
|
||||
|
||||
const disposableStore = new DisposableStore();
|
||||
@@ -577,6 +596,49 @@ suite('SnippetsSync', () => {
|
||||
assert.equal(actual2, tsSnippet1);
|
||||
});
|
||||
|
||||
test('sync global and language snippet', async () => {
|
||||
await updateSnippet('global.code-snippet', globalSnippet, client2);
|
||||
await updateSnippet('html.json', htmlSnippet1, client2);
|
||||
await client2.sync();
|
||||
|
||||
await testObject.sync();
|
||||
assert.equal(testObject.status, SyncStatus.Idle);
|
||||
assert.deepEqual(testObject.conflicts, []);
|
||||
|
||||
const actual1 = await readSnippet('html.json', testClient);
|
||||
assert.equal(actual1, htmlSnippet1);
|
||||
const actual2 = await readSnippet('global.code-snippet', testClient);
|
||||
assert.equal(actual2, globalSnippet);
|
||||
|
||||
const { content } = await testClient.read(testObject.resource);
|
||||
assert.ok(content !== null);
|
||||
const actual = parseSnippets(content!);
|
||||
assert.deepEqual(actual, { 'html.json': htmlSnippet1, 'global.code-snippet': globalSnippet });
|
||||
});
|
||||
|
||||
test('sync should ignore non snippets', async () => {
|
||||
await updateSnippet('global.code-snippet', globalSnippet, client2);
|
||||
await updateSnippet('html.html', htmlSnippet1, client2);
|
||||
await updateSnippet('typescript.json', tsSnippet1, client2);
|
||||
await client2.sync();
|
||||
|
||||
await testObject.sync();
|
||||
assert.equal(testObject.status, SyncStatus.Idle);
|
||||
assert.deepEqual(testObject.conflicts, []);
|
||||
|
||||
const actual1 = await readSnippet('typescript.json', testClient);
|
||||
assert.equal(actual1, tsSnippet1);
|
||||
const actual2 = await readSnippet('global.code-snippet', testClient);
|
||||
assert.equal(actual2, globalSnippet);
|
||||
const actual3 = await readSnippet('html.html', testClient);
|
||||
assert.equal(actual3, null);
|
||||
|
||||
const { content } = await testClient.read(testObject.resource);
|
||||
assert.ok(content !== null);
|
||||
const actual = parseSnippets(content!);
|
||||
assert.deepEqual(actual, { 'typescript.json': tsSnippet1, 'global.code-snippet': globalSnippet });
|
||||
});
|
||||
|
||||
function parseSnippets(content: string): IStringDictionary<string> {
|
||||
const syncData: ISyncData = JSON.parse(content);
|
||||
return JSON.parse(syncData.content);
|
||||
|
||||
@@ -55,8 +55,7 @@ export class UserDataSyncClient extends Disposable {
|
||||
settingsResource: joinPath(userDataDirectory, 'settings.json'),
|
||||
keybindingsResource: joinPath(userDataDirectory, 'keybindings.json'),
|
||||
snippetsHome: joinPath(userDataDirectory, 'snippets'),
|
||||
argvResource: joinPath(userDataDirectory, 'argv.json'),
|
||||
args: {}
|
||||
argvResource: joinPath(userDataDirectory, 'argv.json')
|
||||
});
|
||||
|
||||
const logService = new NullLogService();
|
||||
|
||||
Reference in New Issue
Block a user