Add try catch logging to parameter hints in tests

This commit is contained in:
Matt Bierner 2019-10-18 14:22:53 -07:00
parent abca16d16a
commit 34e6f94afa

View file

@ -96,24 +96,29 @@ suite('ParameterHintsModel', () => {
provideSignatureHelp(_model: ITextModel, _position: Position, _token: CancellationToken, context: modes.SignatureHelpContext): modes.SignatureHelpResult | Promise<modes.SignatureHelpResult> {
++invokeCount;
if (invokeCount === 1) {
assert.strictEqual(context.triggerKind, modes.SignatureHelpTriggerKind.TriggerCharacter);
assert.strictEqual(context.triggerCharacter, triggerChar);
assert.strictEqual(context.isRetrigger, false);
assert.strictEqual(context.activeSignatureHelp, undefined);
try {
if (invokeCount === 1) {
assert.strictEqual(context.triggerKind, modes.SignatureHelpTriggerKind.TriggerCharacter);
assert.strictEqual(context.triggerCharacter, triggerChar);
assert.strictEqual(context.isRetrigger, false);
assert.strictEqual(context.activeSignatureHelp, undefined);
// Retrigger
setTimeout(() => editor.trigger('keyboard', Handler.Type, { text: triggerChar }), 50);
} else {
assert.strictEqual(invokeCount, 2);
assert.strictEqual(context.triggerKind, modes.SignatureHelpTriggerKind.TriggerCharacter);
assert.strictEqual(context.isRetrigger, true);
assert.strictEqual(context.triggerCharacter, triggerChar);
assert.strictEqual(context.activeSignatureHelp, emptySigHelp);
// Retrigger
setTimeout(() => editor.trigger('keyboard', Handler.Type, { text: triggerChar }), 50);
} else {
assert.strictEqual(invokeCount, 2);
assert.strictEqual(context.triggerKind, modes.SignatureHelpTriggerKind.TriggerCharacter);
assert.strictEqual(context.isRetrigger, true);
assert.strictEqual(context.triggerCharacter, triggerChar);
assert.strictEqual(context.activeSignatureHelp, emptySigHelp);
done();
done();
}
return emptySigHelpResult;
} catch (err) {
console.error(err);
throw err;
}
return emptySigHelpResult;
}
}));
@ -133,25 +138,30 @@ suite('ParameterHintsModel', () => {
signatureHelpRetriggerCharacters = [];
provideSignatureHelp(_model: ITextModel, _position: Position, _token: CancellationToken, context: modes.SignatureHelpContext): modes.SignatureHelpResult | Promise<modes.SignatureHelpResult> {
++invokeCount;
if (invokeCount === 1) {
assert.strictEqual(context.triggerKind, modes.SignatureHelpTriggerKind.TriggerCharacter);
assert.strictEqual(context.triggerCharacter, triggerChar);
assert.strictEqual(context.isRetrigger, false);
assert.strictEqual(context.activeSignatureHelp, undefined);
try {
++invokeCount;
if (invokeCount === 1) {
assert.strictEqual(context.triggerKind, modes.SignatureHelpTriggerKind.TriggerCharacter);
assert.strictEqual(context.triggerCharacter, triggerChar);
assert.strictEqual(context.isRetrigger, false);
assert.strictEqual(context.activeSignatureHelp, undefined);
// Cancel and retrigger
hintModel.cancel();
editor.trigger('keyboard', Handler.Type, { text: triggerChar });
} else {
assert.strictEqual(invokeCount, 2);
assert.strictEqual(context.triggerKind, modes.SignatureHelpTriggerKind.TriggerCharacter);
assert.strictEqual(context.triggerCharacter, triggerChar);
assert.strictEqual(context.isRetrigger, true);
assert.strictEqual(context.activeSignatureHelp, undefined);
done();
// Cancel and retrigger
hintModel.cancel();
editor.trigger('keyboard', Handler.Type, { text: triggerChar });
} else {
assert.strictEqual(invokeCount, 2);
assert.strictEqual(context.triggerKind, modes.SignatureHelpTriggerKind.TriggerCharacter);
assert.strictEqual(context.triggerCharacter, triggerChar);
assert.strictEqual(context.isRetrigger, true);
assert.strictEqual(context.activeSignatureHelp, undefined);
done();
}
return emptySigHelpResult;
} catch (err) {
console.error(err);
throw err;
}
return emptySigHelpResult;
}
}));
@ -168,19 +178,24 @@ suite('ParameterHintsModel', () => {
signatureHelpRetriggerCharacters = [];
provideSignatureHelp(_model: ITextModel, _position: Position, _token: CancellationToken, context: modes.SignatureHelpContext) {
++invokeCount;
try {
++invokeCount;
assert.strictEqual(context.triggerKind, modes.SignatureHelpTriggerKind.TriggerCharacter);
assert.strictEqual(context.isRetrigger, false);
assert.strictEqual(context.triggerCharacter, 'c');
assert.strictEqual(context.triggerKind, modes.SignatureHelpTriggerKind.TriggerCharacter);
assert.strictEqual(context.isRetrigger, false);
assert.strictEqual(context.triggerCharacter, 'c');
// Give some time to allow for later triggers
setTimeout(() => {
assert.strictEqual(invokeCount, 1);
// Give some time to allow for later triggers
setTimeout(() => {
assert.strictEqual(invokeCount, 1);
done();
}, 50);
return undefined;
done();
}, 50);
return undefined;
} catch (err) {
console.error(err);
throw err;
}
}
}));
@ -199,23 +214,28 @@ suite('ParameterHintsModel', () => {
signatureHelpRetriggerCharacters = [];
provideSignatureHelp(_model: ITextModel, _position: Position, _token: CancellationToken, context: modes.SignatureHelpContext): modes.SignatureHelpResult | Promise<modes.SignatureHelpResult> {
++invokeCount;
if (invokeCount === 1) {
assert.strictEqual(context.triggerKind, modes.SignatureHelpTriggerKind.TriggerCharacter);
assert.strictEqual(context.triggerCharacter, 'a');
try {
++invokeCount;
if (invokeCount === 1) {
assert.strictEqual(context.triggerKind, modes.SignatureHelpTriggerKind.TriggerCharacter);
assert.strictEqual(context.triggerCharacter, 'a');
// retrigger after delay for widget to show up
setTimeout(() => editor.trigger('keyboard', Handler.Type, { text: 'b' }), 50);
} else if (invokeCount === 2) {
assert.strictEqual(context.triggerKind, modes.SignatureHelpTriggerKind.TriggerCharacter);
assert.ok(context.isRetrigger);
assert.strictEqual(context.triggerCharacter, 'b');
done();
} else {
assert.fail('Unexpected invoke');
// retrigger after delay for widget to show up
setTimeout(() => editor.trigger('keyboard', Handler.Type, { text: 'b' }), 50);
} else if (invokeCount === 2) {
assert.strictEqual(context.triggerKind, modes.SignatureHelpTriggerKind.TriggerCharacter);
assert.ok(context.isRetrigger);
assert.strictEqual(context.triggerCharacter, 'b');
done();
} else {
assert.fail('Unexpected invoke');
}
return emptySigHelpResult;
} catch (err) {
console.error(err);
throw err;
}
return emptySigHelpResult;
}
}));
@ -234,29 +254,34 @@ suite('ParameterHintsModel', () => {
provideSignatureHelp(_model: ITextModel, _position: Position, token: CancellationToken): modes.SignatureHelpResult | Promise<modes.SignatureHelpResult> {
const count = invokeCount++;
token.onCancellationRequested(() => { didRequestCancellationOf = count; });
try {
const count = invokeCount++;
token.onCancellationRequested(() => { didRequestCancellationOf = count; });
// retrigger on first request
if (count === 0) {
hintsModel.trigger({ triggerKind: modes.SignatureHelpTriggerKind.Invoke }, 0);
// retrigger on first request
if (count === 0) {
hintsModel.trigger({ triggerKind: modes.SignatureHelpTriggerKind.Invoke }, 0);
}
return new Promise<modes.SignatureHelpResult>(resolve => {
setTimeout(() => {
resolve({
value: {
signatures: [{
label: '' + count,
parameters: []
}],
activeParameter: 0,
activeSignature: 0
},
dispose: () => { }
});
}, 100);
});
} catch (err) {
console.error(err);
throw err;
}
return new Promise<modes.SignatureHelpResult>(resolve => {
setTimeout(() => {
resolve({
value: {
signatures: [{
label: '' + count,
parameters: []
}],
activeParameter: 0,
activeSignature: 0
},
dispose: () => { }
});
}, 100);
});
}
};
@ -290,23 +315,28 @@ suite('ParameterHintsModel', () => {
signatureHelpRetriggerCharacters = [retriggerChar];
provideSignatureHelp(_model: ITextModel, _position: Position, _token: CancellationToken, context: modes.SignatureHelpContext): modes.SignatureHelpResult | Promise<modes.SignatureHelpResult> {
++invokeCount;
if (invokeCount === 1) {
assert.strictEqual(context.triggerKind, modes.SignatureHelpTriggerKind.TriggerCharacter);
assert.strictEqual(context.triggerCharacter, triggerChar);
try {
++invokeCount;
if (invokeCount === 1) {
assert.strictEqual(context.triggerKind, modes.SignatureHelpTriggerKind.TriggerCharacter);
assert.strictEqual(context.triggerCharacter, triggerChar);
// retrigger after delay for widget to show up
setTimeout(() => editor.trigger('keyboard', Handler.Type, { text: retriggerChar }), 50);
} else if (invokeCount === 2) {
assert.strictEqual(context.triggerKind, modes.SignatureHelpTriggerKind.TriggerCharacter);
assert.ok(context.isRetrigger);
assert.strictEqual(context.triggerCharacter, retriggerChar);
done();
} else {
assert.fail('Unexpected invoke');
// retrigger after delay for widget to show up
setTimeout(() => editor.trigger('keyboard', Handler.Type, { text: retriggerChar }), 50);
} else if (invokeCount === 2) {
assert.strictEqual(context.triggerKind, modes.SignatureHelpTriggerKind.TriggerCharacter);
assert.ok(context.isRetrigger);
assert.strictEqual(context.triggerCharacter, retriggerChar);
done();
} else {
assert.fail('Unexpected invoke');
}
return emptySigHelpResult;
} catch (err) {
console.error(err);
throw err;
}
return emptySigHelpResult;
}
}));
@ -332,26 +362,31 @@ suite('ParameterHintsModel', () => {
signatureHelpRetriggerCharacters = [];
async provideSignatureHelp(_model: ITextModel, _position: Position, _token: CancellationToken, context: modes.SignatureHelpContext): Promise<modes.SignatureHelpResult | undefined> {
if (!context.isRetrigger) {
// retrigger after delay for widget to show up
setTimeout(() => editor.trigger('keyboard', Handler.Type, { text: triggerChar }), 50);
try {
if (!context.isRetrigger) {
// retrigger after delay for widget to show up
setTimeout(() => editor.trigger('keyboard', Handler.Type, { text: triggerChar }), 50);
return {
value: {
activeParameter: 0,
activeSignature: 0,
signatures: [{
label: firstProviderId,
parameters: [
{ label: paramterLabel }
]
}]
},
dispose: () => { }
};
return {
value: {
activeParameter: 0,
activeSignature: 0,
signatures: [{
label: firstProviderId,
parameters: [
{ label: paramterLabel }
]
}]
},
dispose: () => { }
};
}
return undefined;
} catch (err) {
console.error(err);
throw err;
}
return undefined;
}
}));