Skip to content

Commit

Permalink
feat: allow customizing the PORT for the test server (#176)
Browse files Browse the repository at this point in the history
  • Loading branch information
mikavilpas authored Dec 4, 2024
1 parent 51cf250 commit a07a1ae
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 16 deletions.
13 changes: 8 additions & 5 deletions packages/library/src/scripts/tui.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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 },
Expand All @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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<TestDirectory> {
export async function createTempDir(config: DirectoriesConfig): Promise<TestDirectory> {
try {
const dir = await createUniqueDirectory(config.testEnvironmentPath)

Expand Down
6 changes: 3 additions & 3 deletions packages/library/src/server/neovim/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -53,7 +53,7 @@ export async function start(
options: StartNeovimGenericArguments,
terminalDimensions: TerminalDimensions,
tabId: TabId,
config: TestServerConfig
config: DirectoriesConfig
): Promise<TestDirectory> {
const neovim = neovims.get(tabId.tabId)
assert(neovim, `Neovim instance not found for client id ${tabId.tabId}`)
Expand All @@ -64,7 +64,7 @@ export async function start(
return testDirectory
}

export async function prepareNewTestDirectory(config: TestServerConfig): Promise<TestDirectory> {
export async function prepareNewTestDirectory(config: DirectoriesConfig): Promise<TestDirectory> {
await removeTestDirectories(config.testEnvironmentPath)
const testDirectory = await createTempDir(config)
return testDirectory
Expand Down
8 changes: 4 additions & 4 deletions packages/library/src/server/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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"

Expand Down Expand Up @@ -35,7 +35,7 @@ export type ExCommandInput = z.infer<typeof exCommandInputSchema>

/** @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).")
}
Expand Down Expand Up @@ -99,9 +99,9 @@ export type RouterInput = inferRouterInputs<AppRouter>

export async function startTestServer(config: TestServerConfig): Promise<TestServer> {
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
Expand Down
9 changes: 7 additions & 2 deletions packages/library/src/server/updateTestdirectorySchemaFile.ts
Original file line number Diff line number Diff line change
@@ -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<UpdateTestdirectorySchemaFileResult> {
}: DirectoriesConfig): Promise<UpdateTestdirectorySchemaFileResult> {
const newSchema: string = await buildTestDirectorySchema(testEnvironmentPath)
let oldSchema = ""

Expand Down

0 comments on commit a07a1ae

Please sign in to comment.