Skip to content

Commit 8001a7f

Browse files
committed
It reports if command failed with an error
1 parent 6a461e9 commit 8001a7f

File tree

3 files changed

+12
-1
lines changed

3 files changed

+12
-1
lines changed

src/lib/command-wrapper.ts

+1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ export default class CommandWrapper {
2727
}
2828

2929
private handleError(e: Error) {
30+
this.telemetryReporter.logCommandErrored(this.name);
3031
this.logger.error(e.stack);
3132
}
3233
}

src/lib/telemetry-reporter.ts

+8
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import * as vscode from 'vscode';
33

44
export interface TelemetryReporter extends vscode.Disposable {
55
logCommandTrigger(commandName: string): void;
6+
logCommandErrored(commandName: string): void;
67
}
78

89
export const createTelemetryReporter = (reporter?: VsTelemetryReporter) =>
@@ -19,6 +20,10 @@ class TelemetryReporterImpl implements TelemetryReporter {
1920
this.reporter.sendTelemetryEvent('commandTriggered', {commandName});
2021
}
2122

23+
logCommandErrored(commandName: string): void {
24+
this.reporter.sendTelemetryEvent('commandErrored', {commandName});
25+
}
26+
2227
dispose(): void {
2328
this.reporter.dispose();
2429
}
@@ -28,6 +33,9 @@ class NullTelemetryReporter implements TelemetryReporter {
2833
logCommandTrigger(_commandName: string): void {
2934
}
3035

36+
logCommandErrored(_commandName: string): void {
37+
}
38+
3139
dispose(): void {
3240
}
3341
}

src/test/lib/command-wrapper.test.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ suite('CommandWrapper', () => {
3232

3333
setup(() => {
3434
logger = mockMethods<Logger>(['error']);
35-
telemetryReporter = mockMethods<TelemetryReporter>(['logCommandTrigger']);
35+
telemetryReporter = mockMethods<TelemetryReporter>(['logCommandTrigger', 'logCommandErrored']);
3636
commandWrapper = new CommandWrapper('COMMAND_NAME', command, telemetryReporter, logger);
3737
});
3838

@@ -43,11 +43,13 @@ suite('CommandWrapper', () => {
4343
test('it logs a synchronously thrown error', async () => {
4444
await commandWrapper.execute(badSyncEditor);
4545
verify(logger.error(contains('Sync ERROR')));
46+
verify(telemetryReporter.logCommandErrored('COMMAND_NAME'));
4647
});
4748

4849
test('it logs an asynchronously thrown error', async () => {
4950
await commandWrapper.execute(badAsyncEditor);
5051
verify(logger.error(contains('Async ERROR')));
52+
verify(telemetryReporter.logCommandErrored('COMMAND_NAME'));
5153
});
5254

5355
test('it reports command invocation', async () => {

0 commit comments

Comments
 (0)