From 06669dbf8981a5b3afc48d807be1b048d0211373 Mon Sep 17 00:00:00 2001 From: Kartik Raj Date: Fri, 1 Mar 2024 15:14:40 +0530 Subject: [PATCH 1/3] Do not use readSync everytime telemetry is sent --- src/client/telemetry/index.ts | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/client/telemetry/index.ts b/src/client/telemetry/index.ts index bdb098be520e..ed0260047778 100644 --- a/src/client/telemetry/index.ts +++ b/src/client/telemetry/index.ts @@ -3,11 +3,9 @@ // Licensed under the MIT License. import TelemetryReporter from '@vscode/extension-telemetry'; - -import * as path from 'path'; -import * as fs from 'fs-extra'; +import * as vscode from 'vscode'; import { DiagnosticCodes } from '../application/diagnostics/constants'; -import { AppinsightsKey, EXTENSION_ROOT_DIR, isTestExecution, isUnitTestExecution } from '../common/constants'; +import { AppinsightsKey, isTestExecution, isUnitTestExecution, PVSC_EXTENSION_ID } from '../common/constants'; import type { TerminalShellType } from '../common/terminal/types'; import { StopWatch } from '../common/utils/stopWatch'; import { isPromise } from '../common/utils/async'; @@ -39,14 +37,19 @@ function isTelemetrySupported(): boolean { } } +// eslint-disable-next-line @typescript-eslint/no-explicit-any +let packageJSON: any; + /** * Checks if the telemetry is disabled * @returns {boolean} */ export function isTelemetryDisabled(): boolean { - const packageJsonPath = path.join(EXTENSION_ROOT_DIR, 'package.json'); - const packageJson = fs.readJSONSync(packageJsonPath); - return !packageJson.enableTelemetry; + if (!packageJSON) { + const pythonExtension = vscode.extensions.getExtension(PVSC_EXTENSION_ID)!; + packageJSON = pythonExtension.packageJSON; + } + return !packageJSON.enableTelemetry; } const sharedProperties: Record = {}; From 911030ea3f4de1f0d05fa81c7196f2e45765254c Mon Sep 17 00:00:00 2001 From: Kartik Raj Date: Fri, 1 Mar 2024 15:20:11 +0530 Subject: [PATCH 2/3] try --- src/client/telemetry/index.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/client/telemetry/index.ts b/src/client/telemetry/index.ts index ed0260047778..3237bafc224b 100644 --- a/src/client/telemetry/index.ts +++ b/src/client/telemetry/index.ts @@ -3,7 +3,7 @@ // Licensed under the MIT License. import TelemetryReporter from '@vscode/extension-telemetry'; -import * as vscode from 'vscode'; +import type * as vscodeTypes from 'vscode'; import { DiagnosticCodes } from '../application/diagnostics/constants'; import { AppinsightsKey, isTestExecution, isUnitTestExecution, PVSC_EXTENSION_ID } from '../common/constants'; import type { TerminalShellType } from '../common/terminal/types'; @@ -46,6 +46,7 @@ let packageJSON: any; */ export function isTelemetryDisabled(): boolean { if (!packageJSON) { + const vscode = require('vscode') as typeof vscodeTypes; const pythonExtension = vscode.extensions.getExtension(PVSC_EXTENSION_ID)!; packageJSON = pythonExtension.packageJSON; } From c1d3493bed1edb644046a660d13be87c4df80590 Mon Sep 17 00:00:00 2001 From: Kartik Raj Date: Fri, 1 Mar 2024 18:10:04 +0530 Subject: [PATCH 3/3] modify tests --- src/test/telemetry/index.unit.test.ts | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/src/test/telemetry/index.unit.test.ts b/src/test/telemetry/index.unit.test.ts index d369dce27855..e155ac0a2092 100644 --- a/src/test/telemetry/index.unit.test.ts +++ b/src/test/telemetry/index.unit.test.ts @@ -10,7 +10,6 @@ import * as fs from 'fs-extra'; import { _resetSharedProperties, clearTelemetryReporter, - isTelemetryDisabled, sendTelemetryEvent, setSharedProperty, } from '../../client/telemetry'; @@ -60,29 +59,6 @@ suite('Telemetry', () => { sinon.restore(); }); - const testsForisTelemetryDisabled = [ - { - testName: 'Returns true', - settings: { enableTelemetry: true }, - expectedResult: false, - }, - { - testName: 'Returns false ', - settings: { enableTelemetry: false }, - expectedResult: true, - }, - ]; - - suite('Function isTelemetryDisabled()', () => { - testsForisTelemetryDisabled.forEach((testParams) => { - test(testParams.testName, async () => { - readJSONSyncStub.returns(testParams.settings); - expect(isTelemetryDisabled()).to.equal(testParams.expectedResult); - sinon.assert.calledOnce(readJSONSyncStub); - }); - }); - }); - test('Send Telemetry', () => { rewiremock.enable(); rewiremock('@vscode/extension-telemetry').with({ default: Reporter });