From f54769023f142117b1d053c82c692c6cc47422cf Mon Sep 17 00:00:00 2001 From: hkobew Date: Mon, 11 Nov 2024 13:23:16 -0500 Subject: [PATCH 01/11] focus on flaky test --- .../initMessageHandler.test.ts | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/packages/core/src/test/applicationcomposer/messageHandlers/initMessageHandler.test.ts b/packages/core/src/test/applicationcomposer/messageHandlers/initMessageHandler.test.ts index b47d4ab9d68..cf7c5c98661 100644 --- a/packages/core/src/test/applicationcomposer/messageHandlers/initMessageHandler.test.ts +++ b/packages/core/src/test/applicationcomposer/messageHandlers/initMessageHandler.test.ts @@ -8,19 +8,19 @@ import sinon from 'sinon' import { initMessageHandler } from '../../../applicationcomposer/messageHandlers/initMessageHandler' import { createTemplate, createWebviewContext } from '../utils' -describe('initMessageHandler', function () { - afterEach(() => { - sinon.restore() - }) - - it('not connected to codewhisperer', async () => { - const panel = await createTemplate() - const postMessageSpy = sinon.spy(panel.webview, 'postMessage') - const context = await createWebviewContext({ - panel, +//eslint-disable-next-line aws-toolkits/no-only-in-tests +describe.only('initMessageHandler', function () { + for (const _ of Array.from({ length: 1000 }, (i) => i)) { + it('not connected to codewhisperer', async function () { + const panel = await createTemplate() + const postMessageSpy = sinon.spy(panel.webview, 'postMessage') + const context = await createWebviewContext({ + panel, + }) + await initMessageHandler(context) + assert.ok(postMessageSpy.calledOnce) + assert.deepStrictEqual(postMessageSpy.getCall(0).args[0].isConnectedToCodeWhisperer, false) + postMessageSpy.restore() }) - await initMessageHandler(context) - assert.ok(postMessageSpy.calledOnce) - assert.deepStrictEqual(postMessageSpy.getCall(0).args[0].isConnectedToCodeWhisperer, false) - }) + } }) From a3731c40a64df368ae454afc523601a44d76d3c1 Mon Sep 17 00:00:00 2001 From: hkobew Date: Mon, 11 Nov 2024 13:36:48 -0500 Subject: [PATCH 02/11] skip test on minimum --- .../initMessageHandler.test.ts | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/packages/core/src/test/applicationcomposer/messageHandlers/initMessageHandler.test.ts b/packages/core/src/test/applicationcomposer/messageHandlers/initMessageHandler.test.ts index cf7c5c98661..8ed08970603 100644 --- a/packages/core/src/test/applicationcomposer/messageHandlers/initMessageHandler.test.ts +++ b/packages/core/src/test/applicationcomposer/messageHandlers/initMessageHandler.test.ts @@ -7,20 +7,21 @@ import assert from 'assert' import sinon from 'sinon' import { initMessageHandler } from '../../../applicationcomposer/messageHandlers/initMessageHandler' import { createTemplate, createWebviewContext } from '../utils' +import { env } from '../../../shared' -//eslint-disable-next-line aws-toolkits/no-only-in-tests -describe.only('initMessageHandler', function () { - for (const _ of Array.from({ length: 1000 }, (i) => i)) { - it('not connected to codewhisperer', async function () { - const panel = await createTemplate() - const postMessageSpy = sinon.spy(panel.webview, 'postMessage') - const context = await createWebviewContext({ - panel, - }) - await initMessageHandler(context) - assert.ok(postMessageSpy.calledOnce) - assert.deepStrictEqual(postMessageSpy.getCall(0).args[0].isConnectedToCodeWhisperer, false) - postMessageSpy.restore() +describe('initMessageHandler', function () { + it('not connected to codewhisperer', async function () { + if (env.isMinVscode('1.89.0')) { + this.skip() + } + const panel = await createTemplate() + const postMessageSpy = sinon.spy(panel.webview, 'postMessage') + const context = await createWebviewContext({ + panel, }) - } + await initMessageHandler(context) + assert.ok(postMessageSpy.calledOnce) + assert.deepStrictEqual(postMessageSpy.getCall(0).args[0].isConnectedToCodeWhisperer, false) + postMessageSpy.restore() + }) }) From a12730e9c1396b0505ca9e3f0f0dfb24e6d43cf8 Mon Sep 17 00:00:00 2001 From: hkobew Date: Mon, 11 Nov 2024 13:55:26 -0500 Subject: [PATCH 03/11] factor out shared logic into utility function --- .../messageHandlers/generateResourceHandler.test.ts | 6 ++---- .../messageHandlers/initMessageHandler.test.ts | 6 ++---- packages/core/src/test/testUtil.ts | 7 +++++++ 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/packages/core/src/test/applicationcomposer/messageHandlers/generateResourceHandler.test.ts b/packages/core/src/test/applicationcomposer/messageHandlers/generateResourceHandler.test.ts index 3521f777379..f44fbd77692 100644 --- a/packages/core/src/test/applicationcomposer/messageHandlers/generateResourceHandler.test.ts +++ b/packages/core/src/test/applicationcomposer/messageHandlers/generateResourceHandler.test.ts @@ -8,13 +8,11 @@ import sinon from 'sinon' import { createTemplate, createWebviewContext } from '../utils' import { generateResourceHandler } from '../../../applicationcomposer/messageHandlers/generateResourceHandler' import { Command, MessageType } from '../../../applicationcomposer/types' -import * as env from '../../../shared/vscode/env' +import { disableIfVscodeBelow } from '../../testUtil' describe('generateResourceHandler', function () { it('amazon q is not installed', async function () { - if (env.isMinVscode('1.89.0')) { - this.skip() - } + disableIfVscodeBelow(this, '1.89.0') const panel = await createTemplate() const postMessageSpy = sinon.spy(panel.webview, 'postMessage') const context = await createWebviewContext({ diff --git a/packages/core/src/test/applicationcomposer/messageHandlers/initMessageHandler.test.ts b/packages/core/src/test/applicationcomposer/messageHandlers/initMessageHandler.test.ts index 8ed08970603..5f24d254ef4 100644 --- a/packages/core/src/test/applicationcomposer/messageHandlers/initMessageHandler.test.ts +++ b/packages/core/src/test/applicationcomposer/messageHandlers/initMessageHandler.test.ts @@ -7,13 +7,11 @@ import assert from 'assert' import sinon from 'sinon' import { initMessageHandler } from '../../../applicationcomposer/messageHandlers/initMessageHandler' import { createTemplate, createWebviewContext } from '../utils' -import { env } from '../../../shared' +import { disableIfVscodeBelow } from '../../testUtil' describe('initMessageHandler', function () { it('not connected to codewhisperer', async function () { - if (env.isMinVscode('1.89.0')) { - this.skip() - } + disableIfVscodeBelow(this, '1.89.0') const panel = await createTemplate() const postMessageSpy = sinon.spy(panel.webview, 'postMessage') const context = await createWebviewContext({ diff --git a/packages/core/src/test/testUtil.ts b/packages/core/src/test/testUtil.ts index d45a0b1ad20..21c62da6855 100644 --- a/packages/core/src/test/testUtil.ts +++ b/packages/core/src/test/testUtil.ts @@ -19,6 +19,7 @@ import { mkdirSync, existsSync } from 'fs' // eslint-disable-line no-restricted- import { randomBytes } from 'crypto' import request from '../shared/request' import { stub } from 'sinon' +import { isMinVscode } from '../shared/vscode/env' const testTempDirs: string[] = [] @@ -634,3 +635,9 @@ export function getFetchStubWithResponse(response: Partial) { export function copyEnv(): NodeJS.ProcessEnv { return { ...process.env } } + +export function disableIfVscodeBelow(context: Mocha.Context, version: string) { + if (isMinVscode(version)) { + context.skip() + } +} From 14fba92615e6491da8c8ce1364afb9c1b2815e19 Mon Sep 17 00:00:00 2001 From: hkobew Date: Mon, 11 Nov 2024 13:59:19 -0500 Subject: [PATCH 04/11] rename param --- packages/core/src/test/testUtil.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/core/src/test/testUtil.ts b/packages/core/src/test/testUtil.ts index 21c62da6855..c1e9c876b7c 100644 --- a/packages/core/src/test/testUtil.ts +++ b/packages/core/src/test/testUtil.ts @@ -636,8 +636,8 @@ export function copyEnv(): NodeJS.ProcessEnv { return { ...process.env } } -export function disableIfVscodeBelow(context: Mocha.Context, version: string) { +export function disableIfVscodeBelow(testContext: Mocha.Context, version: string) { if (isMinVscode(version)) { - context.skip() + testContext.skip() } } From fc6cc6c393519d6cc596f4ae4e91c20d40687c42 Mon Sep 17 00:00:00 2001 From: hkobew Date: Mon, 11 Nov 2024 15:00:18 -0500 Subject: [PATCH 05/11] refactor shared method to be clearer --- .../messageHandlers/generateResourceHandler.test.ts | 4 ++-- .../messageHandlers/initMessageHandler.test.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/core/src/test/applicationcomposer/messageHandlers/generateResourceHandler.test.ts b/packages/core/src/test/applicationcomposer/messageHandlers/generateResourceHandler.test.ts index f44fbd77692..1253af6a559 100644 --- a/packages/core/src/test/applicationcomposer/messageHandlers/generateResourceHandler.test.ts +++ b/packages/core/src/test/applicationcomposer/messageHandlers/generateResourceHandler.test.ts @@ -8,11 +8,11 @@ import sinon from 'sinon' import { createTemplate, createWebviewContext } from '../utils' import { generateResourceHandler } from '../../../applicationcomposer/messageHandlers/generateResourceHandler' import { Command, MessageType } from '../../../applicationcomposer/types' -import { disableIfVscodeBelow } from '../../testUtil' +import { skipIfVscodeBelow } from '../../testUtil' describe('generateResourceHandler', function () { it('amazon q is not installed', async function () { - disableIfVscodeBelow(this, '1.89.0') + skipIfVscodeBelow(this, '1.89.0') const panel = await createTemplate() const postMessageSpy = sinon.spy(panel.webview, 'postMessage') const context = await createWebviewContext({ diff --git a/packages/core/src/test/applicationcomposer/messageHandlers/initMessageHandler.test.ts b/packages/core/src/test/applicationcomposer/messageHandlers/initMessageHandler.test.ts index 5f24d254ef4..cc3d7b8a7b5 100644 --- a/packages/core/src/test/applicationcomposer/messageHandlers/initMessageHandler.test.ts +++ b/packages/core/src/test/applicationcomposer/messageHandlers/initMessageHandler.test.ts @@ -7,11 +7,11 @@ import assert from 'assert' import sinon from 'sinon' import { initMessageHandler } from '../../../applicationcomposer/messageHandlers/initMessageHandler' import { createTemplate, createWebviewContext } from '../utils' -import { disableIfVscodeBelow } from '../../testUtil' +import { skipIfVscodeBelow } from '../../testUtil' describe('initMessageHandler', function () { it('not connected to codewhisperer', async function () { - disableIfVscodeBelow(this, '1.89.0') + skipIfVscodeBelow(this, '1.89.0') const panel = await createTemplate() const postMessageSpy = sinon.spy(panel.webview, 'postMessage') const context = await createWebviewContext({ From 89abb729b8836b73e72a1de7bb16fffa26a0b60f Mon Sep 17 00:00:00 2001 From: hkobew Date: Mon, 11 Nov 2024 15:04:08 -0500 Subject: [PATCH 06/11] redo change --- packages/core/src/test/testUtil.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/src/test/testUtil.ts b/packages/core/src/test/testUtil.ts index c1e9c876b7c..1c4f8fb7719 100644 --- a/packages/core/src/test/testUtil.ts +++ b/packages/core/src/test/testUtil.ts @@ -636,7 +636,7 @@ export function copyEnv(): NodeJS.ProcessEnv { return { ...process.env } } -export function disableIfVscodeBelow(testContext: Mocha.Context, version: string) { +export function skipIfVscodeBelow(testContext: Mocha.Context, version: string) { if (isMinVscode(version)) { testContext.skip() } From 1e88ae57db519228c1f9f493a787788bf047533e Mon Sep 17 00:00:00 2001 From: hkobew Date: Mon, 11 Nov 2024 15:05:08 -0500 Subject: [PATCH 07/11] redo change pt2 --- packages/core/src/test/testUtil.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/core/src/test/testUtil.ts b/packages/core/src/test/testUtil.ts index 1c4f8fb7719..6372a6e223e 100644 --- a/packages/core/src/test/testUtil.ts +++ b/packages/core/src/test/testUtil.ts @@ -6,6 +6,7 @@ import assert from 'assert' import * as path from 'path' import * as vscode from 'vscode' +import * as semver from 'semver' import * as FakeTimers from '@sinonjs/fake-timers' import * as pathutil from '../shared/utilities/pathUtils' import { makeTemporaryToolkitFolder, tryRemoveFolder } from '../shared/filesystemUtilities' @@ -19,7 +20,6 @@ import { mkdirSync, existsSync } from 'fs' // eslint-disable-line no-restricted- import { randomBytes } from 'crypto' import request from '../shared/request' import { stub } from 'sinon' -import { isMinVscode } from '../shared/vscode/env' const testTempDirs: string[] = [] @@ -636,8 +636,8 @@ export function copyEnv(): NodeJS.ProcessEnv { return { ...process.env } } -export function skipIfVscodeBelow(testContext: Mocha.Context, version: string) { - if (isMinVscode(version)) { +export function skipIfVscodeBelow(testContext: Mocha.Context, targetVersion: string) { + if (semver.lt(vscode.version, targetVersion)) { testContext.skip() } } From c21e01359df2a24c09803b69dd48617f00b88f95 Mon Sep 17 00:00:00 2001 From: hkobew Date: Tue, 12 Nov 2024 10:41:24 -0500 Subject: [PATCH 08/11] refactor shared logic into another helper --- packages/core/src/shared/vscode/env.ts | 12 +++++++++--- packages/core/src/test/testUtil.ts | 2 ++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/core/src/shared/vscode/env.ts b/packages/core/src/shared/vscode/env.ts index 7001ae6eadb..8c703cb547b 100644 --- a/packages/core/src/shared/vscode/env.ts +++ b/packages/core/src/shared/vscode/env.ts @@ -68,13 +68,19 @@ export { extensionVersion } * @param throwWhen Throw if minimum vscode is equal or later than this version. */ export function isMinVscode(throwWhen?: string): boolean { - const minVscode = getMinVscodeVersion() - if (throwWhen && semver.gte(minVscode, throwWhen)) { - throw Error(`Min vscode ${minVscode} >= ${throwWhen}. Delete or update the code that called this.`) + if (throwWhen) { + throwIfMinVscodeGte(throwWhen) } return vscode.version.startsWith(getMinVscodeVersion()) } +export function throwIfMinVscodeGte(targetVersion: string): void | never { + const minVscode = getMinVscodeVersion() + if (semver.gte(minVscode, targetVersion)) { + throw Error(`Min vscode ${minVscode} >= ${targetVersion}. Delete or update the code that called this.`) + } +} + /** * Returns the minimum vscode "engine" version declared in `package.json`. */ diff --git a/packages/core/src/test/testUtil.ts b/packages/core/src/test/testUtil.ts index 6372a6e223e..06be20ee48a 100644 --- a/packages/core/src/test/testUtil.ts +++ b/packages/core/src/test/testUtil.ts @@ -20,6 +20,7 @@ import { mkdirSync, existsSync } from 'fs' // eslint-disable-line no-restricted- import { randomBytes } from 'crypto' import request from '../shared/request' import { stub } from 'sinon' +import { throwIfMinVscodeGte } from '../shared/vscode/env' const testTempDirs: string[] = [] @@ -637,6 +638,7 @@ export function copyEnv(): NodeJS.ProcessEnv { } export function skipIfVscodeBelow(testContext: Mocha.Context, targetVersion: string) { + throwIfMinVscodeGte(targetVersion) if (semver.lt(vscode.version, targetVersion)) { testContext.skip() } From 19b7b2c25cecd5c9463050098e0f993d831155bd Mon Sep 17 00:00:00 2001 From: hkobew Date: Tue, 12 Nov 2024 10:58:24 -0500 Subject: [PATCH 09/11] move afterEach back --- .../messageHandlers/initMessageHandler.test.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/core/src/test/applicationcomposer/messageHandlers/initMessageHandler.test.ts b/packages/core/src/test/applicationcomposer/messageHandlers/initMessageHandler.test.ts index cc3d7b8a7b5..66a119572d1 100644 --- a/packages/core/src/test/applicationcomposer/messageHandlers/initMessageHandler.test.ts +++ b/packages/core/src/test/applicationcomposer/messageHandlers/initMessageHandler.test.ts @@ -10,6 +10,10 @@ import { createTemplate, createWebviewContext } from '../utils' import { skipIfVscodeBelow } from '../../testUtil' describe('initMessageHandler', function () { + afterEach(function () { + sinon.restore() + }) + it('not connected to codewhisperer', async function () { skipIfVscodeBelow(this, '1.89.0') const panel = await createTemplate() @@ -20,6 +24,5 @@ describe('initMessageHandler', function () { await initMessageHandler(context) assert.ok(postMessageSpy.calledOnce) assert.deepStrictEqual(postMessageSpy.getCall(0).args[0].isConnectedToCodeWhisperer, false) - postMessageSpy.restore() }) }) From 068241a21c8a18730dd5a6ae4de361527547629f Mon Sep 17 00:00:00 2001 From: hkobew Date: Tue, 12 Nov 2024 14:16:37 -0500 Subject: [PATCH 10/11] use dict version of isMinVscode --- packages/core/src/shared/vscode/env.ts | 14 ++++---------- .../generateResourceHandler.test.ts | 6 ++++-- .../messageHandlers/initMessageHandler.test.ts | 6 ++++-- packages/core/src/test/testUtil.ts | 9 --------- 4 files changed, 12 insertions(+), 23 deletions(-) diff --git a/packages/core/src/shared/vscode/env.ts b/packages/core/src/shared/vscode/env.ts index 8c703cb547b..9d313346ae3 100644 --- a/packages/core/src/shared/vscode/env.ts +++ b/packages/core/src/shared/vscode/env.ts @@ -67,18 +67,12 @@ export { extensionVersion } * * @param throwWhen Throw if minimum vscode is equal or later than this version. */ -export function isMinVscode(throwWhen?: string): boolean { - if (throwWhen) { - throwIfMinVscodeGte(throwWhen) - } - return vscode.version.startsWith(getMinVscodeVersion()) -} - -export function throwIfMinVscodeGte(targetVersion: string): void | never { +export function isMinVscode(options: { throwWhen: string }): boolean { const minVscode = getMinVscodeVersion() - if (semver.gte(minVscode, targetVersion)) { - throw Error(`Min vscode ${minVscode} >= ${targetVersion}. Delete or update the code that called this.`) + if (options.throwWhen && semver.gte(minVscode, options.throwWhen)) { + throw Error(`Min vscode ${minVscode} >= ${options.throwWhen}. Delete or update the code that called this.`) } + return vscode.version.startsWith(getMinVscodeVersion()) } /** diff --git a/packages/core/src/test/applicationcomposer/messageHandlers/generateResourceHandler.test.ts b/packages/core/src/test/applicationcomposer/messageHandlers/generateResourceHandler.test.ts index 1253af6a559..72a3a03e15d 100644 --- a/packages/core/src/test/applicationcomposer/messageHandlers/generateResourceHandler.test.ts +++ b/packages/core/src/test/applicationcomposer/messageHandlers/generateResourceHandler.test.ts @@ -8,11 +8,13 @@ import sinon from 'sinon' import { createTemplate, createWebviewContext } from '../utils' import { generateResourceHandler } from '../../../applicationcomposer/messageHandlers/generateResourceHandler' import { Command, MessageType } from '../../../applicationcomposer/types' -import { skipIfVscodeBelow } from '../../testUtil' +import { isMinVscode } from '../../../shared/vscode/env' describe('generateResourceHandler', function () { it('amazon q is not installed', async function () { - skipIfVscodeBelow(this, '1.89.0') + if (isMinVscode({ throwWhen: '1.89.0' })) { + this.skip() + } const panel = await createTemplate() const postMessageSpy = sinon.spy(panel.webview, 'postMessage') const context = await createWebviewContext({ diff --git a/packages/core/src/test/applicationcomposer/messageHandlers/initMessageHandler.test.ts b/packages/core/src/test/applicationcomposer/messageHandlers/initMessageHandler.test.ts index 66a119572d1..8c2013a2da6 100644 --- a/packages/core/src/test/applicationcomposer/messageHandlers/initMessageHandler.test.ts +++ b/packages/core/src/test/applicationcomposer/messageHandlers/initMessageHandler.test.ts @@ -7,7 +7,7 @@ import assert from 'assert' import sinon from 'sinon' import { initMessageHandler } from '../../../applicationcomposer/messageHandlers/initMessageHandler' import { createTemplate, createWebviewContext } from '../utils' -import { skipIfVscodeBelow } from '../../testUtil' +import { isMinVscode } from '../../../shared/vscode/env' describe('initMessageHandler', function () { afterEach(function () { @@ -15,7 +15,9 @@ describe('initMessageHandler', function () { }) it('not connected to codewhisperer', async function () { - skipIfVscodeBelow(this, '1.89.0') + if (isMinVscode({ throwWhen: '1.89.0' })) { + this.skip() + } const panel = await createTemplate() const postMessageSpy = sinon.spy(panel.webview, 'postMessage') const context = await createWebviewContext({ diff --git a/packages/core/src/test/testUtil.ts b/packages/core/src/test/testUtil.ts index ada8eb741fc..eac5ffc2a2b 100644 --- a/packages/core/src/test/testUtil.ts +++ b/packages/core/src/test/testUtil.ts @@ -6,7 +6,6 @@ import assert from 'assert' import * as path from 'path' import * as vscode from 'vscode' -import * as semver from 'semver' import * as FakeTimers from '@sinonjs/fake-timers' import * as pathutil from '../shared/utilities/pathUtils' import { makeTemporaryToolkitFolder, tryRemoveFolder } from '../shared/filesystemUtilities' @@ -20,7 +19,6 @@ import { mkdirSync, existsSync } from 'fs' // eslint-disable-line no-restricted- import { randomBytes } from 'crypto' import request from '../shared/request' import { stub } from 'sinon' -import { throwIfMinVscodeGte } from '../shared/vscode/env' const testTempDirs: string[] = [] @@ -636,10 +634,3 @@ export function getFetchStubWithResponse(response: Partial) { export function copyEnv(): NodeJS.ProcessEnv { return { ...process.env } } - -export function skipIfVscodeBelow(testContext: Mocha.Context, targetVersion: string) { - throwIfMinVscodeGte(targetVersion) - if (semver.lt(vscode.version, targetVersion)) { - testContext.skip() - } -} From 9d14980e9f9205d4b4762b88ac0077a062dd3d9f Mon Sep 17 00:00:00 2001 From: hkobew Date: Tue, 12 Nov 2024 15:07:29 -0500 Subject: [PATCH 11/11] make options an optional param --- packages/core/src/shared/vscode/env.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/core/src/shared/vscode/env.ts b/packages/core/src/shared/vscode/env.ts index 9d313346ae3..952284b6e2c 100644 --- a/packages/core/src/shared/vscode/env.ts +++ b/packages/core/src/shared/vscode/env.ts @@ -67,9 +67,9 @@ export { extensionVersion } * * @param throwWhen Throw if minimum vscode is equal or later than this version. */ -export function isMinVscode(options: { throwWhen: string }): boolean { +export function isMinVscode(options?: { throwWhen: string }): boolean { const minVscode = getMinVscodeVersion() - if (options.throwWhen && semver.gte(minVscode, options.throwWhen)) { + if (options?.throwWhen && semver.gte(minVscode, options.throwWhen)) { throw Error(`Min vscode ${minVscode} >= ${options.throwWhen}. Delete or update the code that called this.`) } return vscode.version.startsWith(getMinVscodeVersion())