From 2684d08ec94312dd9efb005dd83b03716b7adc24 Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Sun, 31 May 2026 03:57:13 +0900 Subject: [PATCH] ci(publish): prepare lsp runtime for release checks --- .github/workflows/publish.yml | 20 ++++++++++++++ script/publish-workflow.test.ts | 26 +++++++++++++++++++ .../install-codex/codex-hook-trust.test.ts | 3 ++- 3 files changed, 48 insertions(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index c0300f030..34b92a640 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -40,6 +40,16 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + with: + submodules: recursive + + - uses: actions/setup-node@v4 + with: + node-version: "24" + + - name: Build lsp-tools-mcp submodule + run: npm ci && npm run build + working-directory: packages/lsp-tools-mcp - uses: oven-sh/setup-bun@v2 with: @@ -57,6 +67,16 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + with: + submodules: recursive + + - uses: actions/setup-node@v4 + with: + node-version: "24" + + - name: Build lsp-tools-mcp submodule + run: npm ci && npm run build + working-directory: packages/lsp-tools-mcp - uses: oven-sh/setup-bun@v2 with: diff --git a/script/publish-workflow.test.ts b/script/publish-workflow.test.ts index 5a53eedac..40ef3e912 100644 --- a/script/publish-workflow.test.ts +++ b/script/publish-workflow.test.ts @@ -48,6 +48,32 @@ describe("test workflows", () => { } }) + test("prepares lsp-tools-mcp before publish workflow tests and typecheck", () => { + // #given + const workflow = readFileSync(publishWorkflowPath, "utf8") + const testJob = sliceWorkflowSection(workflow, " test:", " typecheck:") + const typecheckJob = sliceWorkflowSection(workflow, " typecheck:", " preflight-trust:") + + // #when + const testHasRecursiveCheckout = testJob.includes("submodules: recursive") + const testHasNodeSetup = testJob.includes('node-version: "24"') + const testBuildsLspToolsMcp = testJob.includes("name: Build lsp-tools-mcp submodule") && + testJob.includes("working-directory: packages/lsp-tools-mcp") + + const typecheckHasRecursiveCheckout = typecheckJob.includes("submodules: recursive") + const typecheckHasNodeSetup = typecheckJob.includes('node-version: "24"') + const typecheckBuildsLspToolsMcp = typecheckJob.includes("name: Build lsp-tools-mcp submodule") && + typecheckJob.includes("working-directory: packages/lsp-tools-mcp") + + // #then + expect(testHasRecursiveCheckout, "publish test job must checkout submodules recursively").toBe(true) + expect(testHasNodeSetup, "publish test job must setup Node for MCP submodule builds").toBe(true) + expect(testBuildsLspToolsMcp, "publish test job must build lsp-tools-mcp before bun test").toBe(true) + expect(typecheckHasRecursiveCheckout, "publish typecheck job must checkout submodules recursively").toBe(true) + expect(typecheckHasNodeSetup, "publish typecheck job must setup Node for MCP submodule builds").toBe(true) + expect(typecheckBuildsLspToolsMcp, "publish typecheck job must build lsp-tools-mcp before bun run typecheck").toBe(true) + }) + test("exercise root checks across linux macos and windows", () => { // #given const workflow = readFileSync(ciWorkflowPath, "utf8") diff --git a/src/cli/install-codex/codex-hook-trust.test.ts b/src/cli/install-codex/codex-hook-trust.test.ts index 3e9a11f09..23f617a73 100644 --- a/src/cli/install-codex/codex-hook-trust.test.ts +++ b/src/cli/install-codex/codex-hook-trust.test.ts @@ -1,4 +1,5 @@ import { describe, expect, test } from "bun:test" +import { fileURLToPath } from "node:url" import { join } from "node:path" import { trustedHookStatesForPlugin } from "./codex-hook-trust" @@ -6,7 +7,7 @@ describe("codex-hook-trust", () => { test("computes trusted hook hashes for vendored plugin", async () => { // given const pluginRoot = join( - "/Users/yeongyu/local-workspaces/omodex", + fileURLToPath(new URL("../../../", import.meta.url)), "packages", "omo-codex", "plugin",