From 69b7e04ec0c3aa63fd0fe9f30d68dd85290de34d Mon Sep 17 00:00:00 2001 From: Robert Date: Thu, 2 Feb 2023 10:51:36 +0000 Subject: [PATCH] Put error logging behind new secret flag --- extensions/ql-vscode/src/telemetry.ts | 5 ++++ .../no-workspace/telemetry.test.ts | 29 +++++++++++++++++-- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/extensions/ql-vscode/src/telemetry.ts b/extensions/ql-vscode/src/telemetry.ts index 69e059755..9c2dec661 100644 --- a/extensions/ql-vscode/src/telemetry.ts +++ b/extensions/ql-vscode/src/telemetry.ts @@ -196,7 +196,12 @@ export class TelemetryListener extends ConfigListener { return; } + if (!newTelemetryEnabled()) { + return; + } + const properties: { [key: string]: string } = { + isCanary: isCanary().toString(), message: error.redactedMessage, ...extraProperties, }; diff --git a/extensions/ql-vscode/test/vscode-tests/no-workspace/telemetry.test.ts b/extensions/ql-vscode/test/vscode-tests/no-workspace/telemetry.test.ts index 12f446e95..27fd097f4 100644 --- a/extensions/ql-vscode/test/vscode-tests/no-workspace/telemetry.test.ts +++ b/extensions/ql-vscode/test/vscode-tests/no-workspace/telemetry.test.ts @@ -13,6 +13,7 @@ import { UserCancellationException } from "../../../src/commandRunner"; import { ENABLE_TELEMETRY } from "../../../src/config"; import * as Config from "../../../src/config"; import { createMockExtensionContext } from "./index"; +import { redactableError } from "../../../src/pure/errors"; // setting preferences can trigger lots of background activity // so need to bump up the timeout of this test. @@ -390,13 +391,21 @@ describe("telemetry reporting", () => { }); describe("when new telementry is not enabled", () => { - it("should not send a telementry event", async () => { + it("should not send a ui-interaction telementry event", async () => { await telemetryListener.initialize(); telemetryListener.sendUIInteraction("test"); expect(sendTelemetryEventSpy).not.toBeCalled(); }); + + it("should not send an error telementry event", async () => { + await telemetryListener.initialize(); + + telemetryListener.sendError(redactableError`test`); + + expect(sendTelemetryEventSpy).not.toBeCalled(); + }); }); describe("when new telementry is enabled", () => { @@ -404,7 +413,7 @@ describe("telemetry reporting", () => { jest.spyOn(Config, "newTelemetryEnabled").mockReturnValue(true); }); - it("should not send a telementry event", async () => { + it("should send a ui-interaction telementry event", async () => { await telemetryListener.initialize(); telemetryListener.sendUIInteraction("test"); @@ -418,6 +427,22 @@ describe("telemetry reporting", () => { {}, ); }); + + it("should send an error telementry event", async () => { + await telemetryListener.initialize(); + + telemetryListener.sendError(redactableError`test`); + + expect(sendTelemetryEventSpy).toHaveBeenCalledWith( + "error", + { + message: "test", + isCanary, + stack: expect.any(String), + }, + {}, + ); + }); }); async function enableTelemetry(section: string, value: boolean | undefined) {