Forgejo-patched claude-code-gitea-action (View-job URL uses per-repo run index)
Some checks failed
Test Custom Executables / test-custom-executables (push) Has been cancelled
CI / test (push) Has been cancelled
CI / prettier (push) Has been cancelled
CI / typecheck (push) Has been cancelled
Sync Base Action to claude-code-base-action / Sync base-action to claude-code-base-action repository (push) Has been cancelled
Test Claude Code Action / test-inline-prompt (push) Has been cancelled
Test Claude Code Action / test-prompt-file (push) Has been cancelled
Test Claude Env Feature / test-claude-env-with-comments (push) Has been cancelled
Test MCP Servers / test-mcp-integration (push) Has been cancelled
Test MCP Servers / test-mcp-config-flag (push) Has been cancelled
Test Settings Feature / test-settings-inline-allow (push) Has been cancelled
Test Settings Feature / test-settings-inline-deny (push) Has been cancelled
Test Settings Feature / test-settings-file-allow (push) Has been cancelled
Test Settings Feature / test-settings-file-deny (push) Has been cancelled
Some checks failed
Test Custom Executables / test-custom-executables (push) Has been cancelled
CI / test (push) Has been cancelled
CI / prettier (push) Has been cancelled
CI / typecheck (push) Has been cancelled
Sync Base Action to claude-code-base-action / Sync base-action to claude-code-base-action repository (push) Has been cancelled
Test Claude Code Action / test-inline-prompt (push) Has been cancelled
Test Claude Code Action / test-prompt-file (push) Has been cancelled
Test Claude Env Feature / test-claude-env-with-comments (push) Has been cancelled
Test MCP Servers / test-mcp-integration (push) Has been cancelled
Test MCP Servers / test-mcp-config-flag (push) Has been cancelled
Test Settings Feature / test-settings-inline-allow (push) Has been cancelled
Test Settings Feature / test-settings-inline-deny (push) Has been cancelled
Test Settings Feature / test-settings-file-allow (push) Has been cancelled
Test Settings Feature / test-settings-file-deny (push) Has been cancelled
Fork of markwylde/claude-code-gitea-action@b744372 (v1.0.21) with the 'View job' link fixed to use GITHUB_RUN_NUMBER (per-repo index) instead of GITHUB_RUN_ID (global id), because Forgejo routes run pages by per-repo index. See VENDOR.txt.
This commit is contained in:
commit
32685a740f
151 changed files with 23555 additions and 0 deletions
150
base-action/test/setup-claude-code-settings.test.ts
Normal file
150
base-action/test/setup-claude-code-settings.test.ts
Normal file
|
|
@ -0,0 +1,150 @@
|
|||
#!/usr/bin/env bun
|
||||
|
||||
import { describe, test, expect, beforeEach, afterEach } from "bun:test";
|
||||
import { setupClaudeCodeSettings } from "../src/setup-claude-code-settings";
|
||||
import { tmpdir } from "os";
|
||||
import { mkdir, writeFile, readFile, rm } from "fs/promises";
|
||||
import { join } from "path";
|
||||
|
||||
const testHomeDir = join(
|
||||
tmpdir(),
|
||||
"claude-code-test-home",
|
||||
Date.now().toString(),
|
||||
);
|
||||
const settingsPath = join(testHomeDir, ".claude", "settings.json");
|
||||
const testSettingsDir = join(testHomeDir, ".claude-test");
|
||||
const testSettingsPath = join(testSettingsDir, "test-settings.json");
|
||||
|
||||
describe("setupClaudeCodeSettings", () => {
|
||||
beforeEach(async () => {
|
||||
// Create test home directory and test settings directory
|
||||
await mkdir(testHomeDir, { recursive: true });
|
||||
await mkdir(testSettingsDir, { recursive: true });
|
||||
});
|
||||
|
||||
afterEach(async () => {
|
||||
// Clean up test home directory
|
||||
await rm(testHomeDir, { recursive: true, force: true });
|
||||
});
|
||||
|
||||
test("should always set enableAllProjectMcpServers to true when no input", async () => {
|
||||
await setupClaudeCodeSettings(undefined, testHomeDir);
|
||||
|
||||
const settingsContent = await readFile(settingsPath, "utf-8");
|
||||
const settings = JSON.parse(settingsContent);
|
||||
|
||||
expect(settings.enableAllProjectMcpServers).toBe(true);
|
||||
});
|
||||
|
||||
test("should merge settings from JSON string input", async () => {
|
||||
const inputSettings = JSON.stringify({
|
||||
model: "claude-sonnet-4-20250514",
|
||||
env: { API_KEY: "test-key" },
|
||||
});
|
||||
|
||||
await setupClaudeCodeSettings(inputSettings, testHomeDir);
|
||||
|
||||
const settingsContent = await readFile(settingsPath, "utf-8");
|
||||
const settings = JSON.parse(settingsContent);
|
||||
|
||||
expect(settings.enableAllProjectMcpServers).toBe(true);
|
||||
expect(settings.model).toBe("claude-sonnet-4-20250514");
|
||||
expect(settings.env).toEqual({ API_KEY: "test-key" });
|
||||
});
|
||||
|
||||
test("should merge settings from file path input", async () => {
|
||||
const testSettings = {
|
||||
hooks: {
|
||||
PreToolUse: [
|
||||
{
|
||||
matcher: "Bash",
|
||||
hooks: [{ type: "command", command: "echo test" }],
|
||||
},
|
||||
],
|
||||
},
|
||||
permissions: {
|
||||
allow: ["Bash", "Read"],
|
||||
},
|
||||
};
|
||||
|
||||
await writeFile(testSettingsPath, JSON.stringify(testSettings, null, 2));
|
||||
|
||||
await setupClaudeCodeSettings(testSettingsPath, testHomeDir);
|
||||
|
||||
const settingsContent = await readFile(settingsPath, "utf-8");
|
||||
const settings = JSON.parse(settingsContent);
|
||||
|
||||
expect(settings.enableAllProjectMcpServers).toBe(true);
|
||||
expect(settings.hooks).toEqual(testSettings.hooks);
|
||||
expect(settings.permissions).toEqual(testSettings.permissions);
|
||||
});
|
||||
|
||||
test("should override enableAllProjectMcpServers even if false in input", async () => {
|
||||
const inputSettings = JSON.stringify({
|
||||
enableAllProjectMcpServers: false,
|
||||
model: "test-model",
|
||||
});
|
||||
|
||||
await setupClaudeCodeSettings(inputSettings, testHomeDir);
|
||||
|
||||
const settingsContent = await readFile(settingsPath, "utf-8");
|
||||
const settings = JSON.parse(settingsContent);
|
||||
|
||||
expect(settings.enableAllProjectMcpServers).toBe(true);
|
||||
expect(settings.model).toBe("test-model");
|
||||
});
|
||||
|
||||
test("should throw error for invalid JSON string", async () => {
|
||||
expect(() =>
|
||||
setupClaudeCodeSettings("{ invalid json", testHomeDir),
|
||||
).toThrow();
|
||||
});
|
||||
|
||||
test("should throw error for non-existent file path", async () => {
|
||||
expect(() =>
|
||||
setupClaudeCodeSettings("/non/existent/file.json", testHomeDir),
|
||||
).toThrow();
|
||||
});
|
||||
|
||||
test("should handle empty string input", async () => {
|
||||
await setupClaudeCodeSettings("", testHomeDir);
|
||||
|
||||
const settingsContent = await readFile(settingsPath, "utf-8");
|
||||
const settings = JSON.parse(settingsContent);
|
||||
|
||||
expect(settings.enableAllProjectMcpServers).toBe(true);
|
||||
});
|
||||
|
||||
test("should handle whitespace-only input", async () => {
|
||||
await setupClaudeCodeSettings(" \n\t ", testHomeDir);
|
||||
|
||||
const settingsContent = await readFile(settingsPath, "utf-8");
|
||||
const settings = JSON.parse(settingsContent);
|
||||
|
||||
expect(settings.enableAllProjectMcpServers).toBe(true);
|
||||
});
|
||||
|
||||
test("should merge with existing settings", async () => {
|
||||
// First, create some existing settings
|
||||
await setupClaudeCodeSettings(
|
||||
JSON.stringify({ existingKey: "existingValue" }),
|
||||
testHomeDir,
|
||||
);
|
||||
|
||||
// Then, add new settings
|
||||
const newSettings = JSON.stringify({
|
||||
newKey: "newValue",
|
||||
model: "claude-opus-4-20250514",
|
||||
});
|
||||
|
||||
await setupClaudeCodeSettings(newSettings, testHomeDir);
|
||||
|
||||
const settingsContent = await readFile(settingsPath, "utf-8");
|
||||
const settings = JSON.parse(settingsContent);
|
||||
|
||||
expect(settings.enableAllProjectMcpServers).toBe(true);
|
||||
expect(settings.existingKey).toBe("existingValue");
|
||||
expect(settings.newKey).toBe("newValue");
|
||||
expect(settings.model).toBe("claude-opus-4-20250514");
|
||||
});
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue