Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save pokey/fd21867c185306b553676953a1558d05 to your computer and use it in GitHub Desktop.
Save pokey/fd21867c185306b553676953a1558d05 to your computer and use it in GitHub Desktop.
Cursorless monorepo DX experiments
From ce4f530318564957f13b3451412e9e8259e680a7 Mon Sep 17 00:00:00 2001
From: Pokey Rule <755842+pokey@users.noreply.github.com>
Date: Wed, 15 Mar 2023 15:48:56 +0000
Subject: [PATCH] [DX experiment] Import / auto-import tests
---
.../cursorless-engine/src/autoImportTest.ts | 17 ++++++++++
packages/cursorless-engine/src/importTest.ts | 34 +++++++++++++++++++
.../cursorless-vscode/src/autoImportTest.ts | 8 +++++
packages/cursorless-vscode/src/importTest.ts | 30 ++++++++++++++++
4 files changed, 89 insertions(+)
create mode 100644 packages/cursorless-engine/src/autoImportTest.ts
create mode 100644 packages/cursorless-engine/src/importTest.ts
create mode 100644 packages/cursorless-vscode/src/autoImportTest.ts
create mode 100644 packages/cursorless-vscode/src/importTest.ts
diff --git a/packages/cursorless-engine/src/autoImportTest.ts b/packages/cursorless-engine/src/autoImportTest.ts
new file mode 100644
index 000000000..6a97c2de4
--- /dev/null
+++ b/packages/cursorless-engine/src/autoImportTest.ts
@@ -0,0 +1,17 @@
+// D7.1: Should not get vscode
+// window
+
+// D7.2: Should not get vscode-uri
+// URI
+
+// D8.2: Should get lodash
+// sortBy
+
+// D9: Should get @cursorless/common
+// textFormatters
+
+// D10: Should not get @cursorless/vscode-common
+// openNewEditor
+
+// D11.2: Should not get @cursorless/cursorless-vscode-e2e
+// skipIfWindowsCi
diff --git a/packages/cursorless-engine/src/importTest.ts b/packages/cursorless-engine/src/importTest.ts
new file mode 100644
index 000000000..8fd1eb1f4
--- /dev/null
+++ b/packages/cursorless-engine/src/importTest.ts
@@ -0,0 +1,34 @@
+// D1.1: Disallow vscode if not listed in package.json
+// import { TextEditor } from "vscode";
+
+// D1.1: Disallow vscode if not listed in package.json
+// import * as vscode from "vscode";
+
+// D1.2: Disallow external imports if not listed in package.json
+// import { URI } from "vscode-uri";
+
+// D1.2: Disallow external imports if not listed in package.json
+// import { v4 as uuid } from "uuid";
+
+// D2: Allow imports from internal packages listed in package.json
+// import { textFormatters } from "@cursorless/common";
+
+// D3 Disallow importing internal packages using non-preferred syntax
+// import { Range } from "../../common";
+
+// D4.1: Disallow internal imports not listed in package.json using
+// non-preferred syntax
+// import { openNewEditor } from "../../vscode-common";
+
+// D4.2: Disallow internal imports not listed in package.json using preferred
+// syntax
+// import { runCursorlessCommand } from "@cursorless/vscode-common";
+
+// D5.2: Disallow internal relative imports outside of package
+// import { skipIfWindowsCi } from "../../cursorless-vscode-e2e/src/suite/skipIfWindowsCi";
+
+// D5.2: Disallow internal relative imports outside of package
+// import vscodeEdit from "../../cursorless-vscode-core/src/ide/vscode/VscodeEdit";
+
+// D6.2: Allow imports from external packages listed in package.json (not vscode)
+// import { sortBy } from "lodash";
diff --git a/packages/cursorless-vscode/src/autoImportTest.ts b/packages/cursorless-vscode/src/autoImportTest.ts
new file mode 100644
index 000000000..012b3afa6
--- /dev/null
+++ b/packages/cursorless-vscode/src/autoImportTest.ts
@@ -0,0 +1,8 @@
+// D7.2: Should not get lodash
+// sortBy
+
+// D8.1: Should get vscode
+// window
+
+// D11.1: Should not get @cursorless/cursorless-vscode-core/ide/vscode/VscodeMessages
+// VscodeMessages
diff --git a/packages/cursorless-vscode/src/importTest.ts b/packages/cursorless-vscode/src/importTest.ts
new file mode 100644
index 000000000..15652ed00
--- /dev/null
+++ b/packages/cursorless-vscode/src/importTest.ts
@@ -0,0 +1,30 @@
+// D1.2: Disallow external imports if not listed in package.json
+// import { URI } from "vscode-uri";
+
+// D1.2: Disallow external imports if not listed in package.json
+// import { v4 as uuid } from "uuid";
+
+// D2: Allow imports from internal packages listed in package.json
+// import { runCursorlessCommand } from "@cursorless/vscode-common";
+
+// D2: Allow imports from internal packages listed in package.json
+// import { textFormatters } from "@cursorless/common";
+
+// D2: Allow imports from internal packages listed in package.json
+// import { VscodeIDE } from "@cursorless/cursorless-vscode-core";
+
+// D5.1a: Disallow internal relative imports outside of package
+// import vscodeEdit from "@cursorless/cursorless-vscode-core/ide/vscode/VscodeEdit";
+
+// D5.1a: Disallow internal relative imports outside of package
+// import vscodeEdit from "@cursorless/cursorless-vscode-core/src/ide/vscode/VscodeEdit";
+
+// D5.2: Disallow internal relative imports outside of package
+// import { skipIfWindowsCi } from "../../cursorless-vscode-e2e/src/suite/skipIfWindowsCi";
+
+// D5.2a: Disallow internal relative imports outside of package even if you
+// depend on the module
+// import VscodeMessages from "../../cursorless-vscode-core/src/ide/vscode/VscodeMessages";
+
+// D6.1: Allow imports from external packages listed in package.json (vscode)
+// import * as vscode from "vscode";
--
2.39.2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment