diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index c8ff4249f4..da5e377b59 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -3,14 +3,7 @@ "image": "mcr.microsoft.com/devcontainers/go:1-bookworm", "customizations": { "vscode": { - "extensions": [ - "golang.go", - "GitHub.copilot-chat", - "GitHub.copilot", - "github.vscode-github-actions", - "astro-build.astro-vscode", - "DavidAnson.vscode-markdownlint" - ] + "extensions": ["golang.go", "GitHub.copilot-chat", "GitHub.copilot", "github.vscode-github-actions", "astro-build.astro-vscode", "DavidAnson.vscode-markdownlint"] }, "codespaces": { "repositories": { diff --git a/Makefile b/Makefile index 06e4b1d635..d78d1b029c 100644 --- a/Makefile +++ b/Makefile @@ -153,8 +153,13 @@ security-trivy: test-js: build-js cd actions/setup/js && npm run test:js -- --no-file-parallelism +# Install JavaScript dependencies +.PHONY: deps-js +deps-js: check-node-version + cd actions/setup/js && npm ci + .PHONY: build-js -build-js: +build-js: deps-js cd actions/setup/js && npm run typecheck # Bundle JavaScript files with local requires diff --git a/actions/setup/js/check_membership.test.cjs b/actions/setup/js/check_membership.test.cjs index 6d5fa85310..1518f88ddb 100644 --- a/actions/setup/js/check_membership.test.cjs +++ b/actions/setup/js/check_membership.test.cjs @@ -1,4 +1,4 @@ -import { describe, it, expect, beforeEach, vi } from "vitest"; +import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; describe("check_membership.cjs", () => { let mockCore; @@ -62,14 +62,27 @@ describe("check_membership.cjs", () => { const utilsPath = path.join(import.meta.dirname, "check_permissions_utils.cjs"); const utilsContent = fs.readFileSync(utilsPath, "utf8"); + // Load error helpers module + const errorHelpersPath = path.join(import.meta.dirname, "error_helpers.cjs"); + const errorHelpersContent = fs.readFileSync(errorHelpersPath, "utf8"); + // Create a mock require function const mockRequire = modulePath => { + if (modulePath === "./error_helpers.cjs") { + // Execute the error helpers module and return its exports + const errorHelpersFunction = new Function("module", "exports", errorHelpersContent); + const errorHelpersModuleExports = {}; + const errorHelpersMockModule = { exports: errorHelpersModuleExports }; + errorHelpersFunction(errorHelpersMockModule, errorHelpersModuleExports); + return errorHelpersMockModule.exports; + } if (modulePath === "./check_permissions_utils.cjs") { // Execute the utility module and return its exports - const utilsFunction = new Function("core", "github", "context", "process", "module", "exports", utilsContent); + // Need to pass mockRequire to handle error_helpers require + const utilsFunction = new Function("core", "github", "context", "process", "module", "exports", "require", utilsContent); const moduleExports = {}; const mockModule = { exports: moduleExports }; - utilsFunction(mockCore, mockGithub, mockContext, process, mockModule, moduleExports); + utilsFunction(mockCore, mockGithub, mockContext, process, mockModule, moduleExports, mockRequire); return mockModule.exports; } throw new Error(`Module not found: ${modulePath}`);