From a07a1ae52d4ae67b323305891c3f9b2019f01bd4 Mon Sep 17 00:00:00 2001 From: Mika Vilpas Date: Wed, 4 Dec 2024 21:48:17 +0200 Subject: [PATCH] feat: allow customizing the PORT for the test server (#176) --- packages/library/src/scripts/tui.ts | 13 ++++++++----- .../src/server/neovim/environment/createTempDir.ts | 4 ++-- packages/library/src/server/neovim/index.ts | 6 +++--- packages/library/src/server/server.ts | 8 ++++---- .../src/server/updateTestdirectorySchemaFile.ts | 9 +++++++-- 5 files changed, 24 insertions(+), 16 deletions(-) diff --git a/packages/library/src/scripts/tui.ts b/packages/library/src/scripts/tui.ts index b996b60..ac3b382 100755 --- a/packages/library/src/scripts/tui.ts +++ b/packages/library/src/scripts/tui.ts @@ -18,8 +18,11 @@ const outputFileName = "MyTestDirectory.ts" * cwd of the script itself. */ const cwd = process.cwd() const config = { - testEnvironmentPath: path.join(cwd, "test-environment/"), - outputFilePath: path.join(cwd, outputFileName), + directories: { + testEnvironmentPath: path.join(cwd, "test-environment/"), + outputFilePath: path.join(cwd, outputFileName), + }, + port: process.env["PORT"] ? parseInt(process.env["PORT"]) : 3000, } satisfies TestServerConfig // the arguments passed to this script start at index 2 @@ -35,11 +38,11 @@ if (args[0] === "neovim") { { // automatically dispose of the neovim instance when done - await using app = new NeovimApplication(config.testEnvironmentPath) + await using app = new NeovimApplication(config.directories.testEnvironmentPath) app.events.on("stdout" satisfies StdoutOrStderrMessage, data => { console.log(` neovim output: ${data}`) }) - const testDirectory = await prepareNewTestDirectory(config) + const testDirectory = await prepareNewTestDirectory(config.directories) await app.startNextAndKillCurrent( testDirectory, { filename: "empty.txt", headlessCmd: command }, @@ -62,7 +65,7 @@ try { cypressSupportDirectoryPath: path.join(cwd, "cypress", "support"), supportFileName: "tui-sandbox.ts", }) - await updateTestdirectorySchemaFile(config) + await updateTestdirectorySchemaFile(config.directories) await startTestServer(config) } catch (e) { console.error(e) diff --git a/packages/library/src/server/neovim/environment/createTempDir.ts b/packages/library/src/server/neovim/environment/createTempDir.ts index d93c166..65b1fdd 100644 --- a/packages/library/src/server/neovim/environment/createTempDir.ts +++ b/packages/library/src/server/neovim/environment/createTempDir.ts @@ -6,10 +6,10 @@ import { access, mkdir, mkdtemp } from "fs/promises" import path from "path" import { convertDree, getDirectoryTree } from "../../dirtree/index.js" import type { TestDirectory } from "../../types.js" -import type { TestServerConfig } from "../../updateTestdirectorySchemaFile.js" +import type { DirectoriesConfig } from "../../updateTestdirectorySchemaFile.js" import { updateTestdirectorySchemaFile } from "../../updateTestdirectorySchemaFile.js" -export async function createTempDir(config: TestServerConfig): Promise { +export async function createTempDir(config: DirectoriesConfig): Promise { try { const dir = await createUniqueDirectory(config.testEnvironmentPath) diff --git a/packages/library/src/server/neovim/index.ts b/packages/library/src/server/neovim/index.ts index 83fd051..24dab10 100644 --- a/packages/library/src/server/neovim/index.ts +++ b/packages/library/src/server/neovim/index.ts @@ -10,7 +10,7 @@ import type { StartNeovimGenericArguments, TestDirectory, } from "../types.js" -import type { TestServerConfig } from "../updateTestdirectorySchemaFile.js" +import type { DirectoriesConfig } from "../updateTestdirectorySchemaFile.js" import { convertEventEmitterToAsyncGenerator } from "../utilities/generator.js" import { Lazy } from "../utilities/Lazy.js" import type { TabId } from "../utilities/tabId.js" @@ -53,7 +53,7 @@ export async function start( options: StartNeovimGenericArguments, terminalDimensions: TerminalDimensions, tabId: TabId, - config: TestServerConfig + config: DirectoriesConfig ): Promise { const neovim = neovims.get(tabId.tabId) assert(neovim, `Neovim instance not found for client id ${tabId.tabId}`) @@ -64,7 +64,7 @@ export async function start( return testDirectory } -export async function prepareNewTestDirectory(config: TestServerConfig): Promise { +export async function prepareNewTestDirectory(config: DirectoriesConfig): Promise { await removeTestDirectories(config.testEnvironmentPath) const testDirectory = await createTempDir(config) return testDirectory diff --git a/packages/library/src/server/server.ts b/packages/library/src/server/server.ts index cf0a060..e66bb20 100644 --- a/packages/library/src/server/server.ts +++ b/packages/library/src/server/server.ts @@ -5,7 +5,7 @@ import { z } from "zod" import { trpc } from "./connection/trpc.js" import * as neovim from "./neovim/index.js" import { TestServer } from "./TestServer.js" -import type { TestServerConfig } from "./updateTestdirectorySchemaFile.js" +import type { DirectoriesConfig, TestServerConfig } from "./updateTestdirectorySchemaFile.js" import { applicationAvailable } from "./utilities/applicationAvailable.js" import { tabIdSchema } from "./utilities/tabId.js" @@ -35,7 +35,7 @@ export type ExCommandInput = z.infer /** @private */ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types -export async function createAppRouter(config: TestServerConfig) { +export async function createAppRouter(config: DirectoriesConfig) { if (!(await applicationAvailable("nvim"))) { throw new Error("Neovim is not installed. Please install Neovim (nvim).") } @@ -99,9 +99,9 @@ export type RouterInput = inferRouterInputs export async function startTestServer(config: TestServerConfig): Promise { const testServer = new TestServer({ - port: 3000, + port: config.port, }) - const appRouter = await createAppRouter(config) + const appRouter = await createAppRouter(config.directories) await testServer.startAndRun(appRouter) return testServer diff --git a/packages/library/src/server/updateTestdirectorySchemaFile.ts b/packages/library/src/server/updateTestdirectorySchemaFile.ts index 1e3653d..0d9bd2b 100644 --- a/packages/library/src/server/updateTestdirectorySchemaFile.ts +++ b/packages/library/src/server/updateTestdirectorySchemaFile.ts @@ -1,17 +1,22 @@ import { readFileSync, writeFileSync } from "fs" import { buildTestDirectorySchema } from "./dirtree/index.js" -export type TestServerConfig = { +export type DirectoriesConfig = { testEnvironmentPath: string outputFilePath: string } +export type TestServerConfig = { + directories: DirectoriesConfig + port: number +} + export type UpdateTestdirectorySchemaFileResult = "updated" | "did-nothing" export async function updateTestdirectorySchemaFile({ testEnvironmentPath, outputFilePath, -}: TestServerConfig): Promise { +}: DirectoriesConfig): Promise { const newSchema: string = await buildTestDirectorySchema(testEnvironmentPath) let oldSchema = ""