Initial commit

This commit is contained in:
Zhongwei Li
2025-11-30 09:02:16 +08:00
commit 6ae6ce0730
49 changed files with 6362 additions and 0 deletions

View File

@@ -0,0 +1,69 @@
// plugin/hooks/hooks-app/__tests__/context.test.ts
import { discoverContextFile } from '../src/context';
import * as fs from 'fs/promises';
import * as path from 'path';
import * as os from 'os';
describe('Context Injection', () => {
let testDir: string;
beforeEach(async () => {
testDir = await fs.mkdtemp(path.join(os.tmpdir(), 'hooks-test-'));
});
afterEach(async () => {
await fs.rm(testDir, { recursive: true, force: true });
});
test('returns null when no context file exists', async () => {
const result = await discoverContextFile(testDir, 'test-command', 'start');
expect(result).toBeNull();
});
test('discovers flat context file', async () => {
const contextDir = path.join(testDir, '.claude', 'context');
await fs.mkdir(contextDir, { recursive: true });
await fs.writeFile(path.join(contextDir, 'test-command-start.md'), 'content');
const result = await discoverContextFile(testDir, 'test-command', 'start');
expect(result).toBe(path.join(contextDir, 'test-command-start.md'));
});
test('discovers slash-command subdirectory', async () => {
const contextDir = path.join(testDir, '.claude', 'context', 'slash-command');
await fs.mkdir(contextDir, { recursive: true });
await fs.writeFile(path.join(contextDir, 'test-command-start.md'), 'content');
const result = await discoverContextFile(testDir, 'test-command', 'start');
expect(result).toBe(path.join(contextDir, 'test-command-start.md'));
});
test('discovers nested slash-command directory', async () => {
const contextDir = path.join(testDir, '.claude', 'context', 'slash-command', 'test-command');
await fs.mkdir(contextDir, { recursive: true });
await fs.writeFile(path.join(contextDir, 'start.md'), 'content');
const result = await discoverContextFile(testDir, 'test-command', 'start');
expect(result).toBe(path.join(contextDir, 'start.md'));
});
test('discovers skill context', async () => {
const contextDir = path.join(testDir, '.claude', 'context', 'skill');
await fs.mkdir(contextDir, { recursive: true });
await fs.writeFile(path.join(contextDir, 'test-skill-start.md'), 'content');
const result = await discoverContextFile(testDir, 'test-skill', 'start');
expect(result).toBe(path.join(contextDir, 'test-skill-start.md'));
});
test('follows priority order - flat wins', async () => {
const contextBase = path.join(testDir, '.claude', 'context');
await fs.mkdir(path.join(contextBase, 'slash-command'), { recursive: true });
await fs.writeFile(path.join(contextBase, 'test-command-start.md'), 'flat');
await fs.writeFile(path.join(contextBase, 'slash-command', 'test-command-start.md'), 'subdir');
const result = await discoverContextFile(testDir, 'test-command', 'start');
expect(result).toBe(path.join(contextBase, 'test-command-start.md'));
});
});