diff --git a/packages/cursorless-vscode-e2e/package.json b/packages/cursorless-vscode-e2e/package.json index 972cd136d6..6c3367a587 100644 --- a/packages/cursorless-vscode-e2e/package.json +++ b/packages/cursorless-vscode-e2e/package.json @@ -30,11 +30,13 @@ "@types/js-yaml": "4.0.9", "@types/lodash-es": "4.17.12", "@types/mocha": "10.0.10", + "@types/semver": "7.7.0", "@types/sinon": "17.0.4", "@types/vscode": "1.82.0", "chai": "5.2.0", "js-yaml": "4.1.0", "mocha": "11.6.0", + "semver": "7.7.2", "sinon": "21.0.0" } } diff --git a/packages/cursorless-vscode-e2e/src/suite/recorded.vscode.test.ts b/packages/cursorless-vscode-e2e/src/suite/recorded.vscode.test.ts index 6f94847da5..7244dff658 100644 --- a/packages/cursorless-vscode-e2e/src/suite/recorded.vscode.test.ts +++ b/packages/cursorless-vscode-e2e/src/suite/recorded.vscode.test.ts @@ -13,6 +13,7 @@ import { import * as vscode from "vscode"; import { endToEndTestSetup, sleepWithBackoff } from "../endToEndTestSetup"; import { setupFake } from "./setupFake"; +import { shouldSkipRecordedTest } from "./shouldSkipTest"; suite("recorded test cases", async function () { const { getSpy } = endToEndTestSetup(this); @@ -27,19 +28,20 @@ suite("recorded test cases", async function () { getRecordedTestPaths().forEach(({ name, path }) => test( name, - asyncSafety( - async () => - await runRecordedTest({ - path, - spyIde: getSpy()!, - - openNewTestEditor, - - sleepWithBackoff, - testHelpers: (await getCursorlessApi()).testHelpers!, - runCursorlessCommand, - }), - ), + asyncSafety(async () => { + if (shouldSkipRecordedTest(name)) { + this.ctx.skip(); + } + + await runRecordedTest({ + path, + spyIde: getSpy(), + openNewTestEditor, + sleepWithBackoff, + testHelpers: (await getCursorlessApi()).testHelpers!, + runCursorlessCommand, + }); + }), ), ); }); diff --git a/packages/cursorless-vscode-e2e/src/suite/scopes.vscode.test.ts b/packages/cursorless-vscode-e2e/src/suite/scopes.vscode.test.ts index e05213868d..1121485858 100644 --- a/packages/cursorless-vscode-e2e/src/suite/scopes.vscode.test.ts +++ b/packages/cursorless-vscode-e2e/src/suite/scopes.vscode.test.ts @@ -21,6 +21,7 @@ import { serializeIterationScopeFixture, serializeScopeFixture, } from "./serializeScopeFixture"; +import { shouldSkipScopeTest } from "./shouldSkipTest"; suite("Scope test cases", async function () { endToEndTestSetup(this); @@ -53,7 +54,13 @@ suite("Scope test cases", async function () { testPaths.forEach(({ path, name, languageId, facet }) => test( name, - asyncSafety(() => runTest(path, languageId, facet)), + asyncSafety(() => { + if (shouldSkipScopeTest(languageId)) { + this.ctx.skip(); + } + + return runTest(path, languageId, facet); + }), ), ); }); diff --git a/packages/cursorless-vscode-e2e/src/suite/shouldSkipTest.ts b/packages/cursorless-vscode-e2e/src/suite/shouldSkipTest.ts new file mode 100644 index 0000000000..3f6b31930a --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/shouldSkipTest.ts @@ -0,0 +1,16 @@ +import * as semver from "semver"; +import * as vscode from "vscode"; + +/** + * FIXME: On newer vscode versions some Tree sitter parser throws memory errors + * https://github.com/cursorless-dev/cursorless/issues/2879 + */ +const isVersionProblematic = semver.gte(vscode.version, "1.98.0"); + +export function shouldSkipRecordedTest(name: string): boolean { + return isVersionProblematic && name.startsWith("recorded/languages/latex/"); +} + +export function shouldSkipScopeTest(languageId: string): boolean { + return isVersionProblematic && languageId === "latex"; +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 50d656ba89..a43ca6adcc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -744,6 +744,9 @@ importers: '@types/mocha': specifier: 10.0.10 version: 10.0.10 + '@types/semver': + specifier: 7.7.0 + version: 7.7.0 '@types/sinon': specifier: 17.0.4 version: 17.0.4 @@ -759,6 +762,9 @@ importers: mocha: specifier: 11.6.0 version: 11.6.0 + semver: + specifier: 7.7.2 + version: 7.7.2 sinon: specifier: 21.0.0 version: 21.0.0