diff options
| author | matt korwel <[email protected]> | 2025-06-11 13:34:35 -0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-06-11 20:34:35 +0000 |
| commit | 4160d904da8328eb7168b5b652d4c0f17682546c (patch) | |
| tree | d73968337c4b1f241ab2165f40bafe7fbbd6cea8 /packages/cli/src/config/extension.test.ts | |
| parent | 24c61147b839b3173fa1ad79781f3c4c0f4144fa (diff) | |
Extensibility: Gemini.md files (#944)
Diffstat (limited to 'packages/cli/src/config/extension.test.ts')
| -rw-r--r-- | packages/cli/src/config/extension.test.ts | 55 |
1 files changed, 42 insertions, 13 deletions
diff --git a/packages/cli/src/config/extension.test.ts b/packages/cli/src/config/extension.test.ts index 462024bf..6e0d1658 100644 --- a/packages/cli/src/config/extension.test.ts +++ b/packages/cli/src/config/extension.test.ts @@ -41,28 +41,47 @@ describe('loadExtensions', () => { fs.rmSync(tempHomeDir, { recursive: true, force: true }); }); - it('should deduplicate extensions, prioritizing the workspace directory', () => { - // Create extensions in the workspace + it('should load context file path when gemini.md is present', () => { const workspaceExtensionsDir = path.join( tempWorkspaceDir, EXTENSIONS_DIRECTORY_NAME, ); fs.mkdirSync(workspaceExtensionsDir, { recursive: true }); - createExtension(workspaceExtensionsDir, 'ext1', '1.0.0'); + createExtension(workspaceExtensionsDir, 'ext1', '1.0.0', true); createExtension(workspaceExtensionsDir, 'ext2', '2.0.0'); - // Create extensions in the home directory - const homeExtensionsDir = path.join(tempHomeDir, EXTENSIONS_DIRECTORY_NAME); - fs.mkdirSync(homeExtensionsDir, { recursive: true }); - createExtension(homeExtensionsDir, 'ext1', '1.1.0'); // Duplicate that should be ignored - createExtension(homeExtensionsDir, 'ext3', '3.0.0'); + const extensions = loadExtensions(tempWorkspaceDir); + + expect(extensions).toHaveLength(2); + const ext1 = extensions.find((e) => e.name === 'ext1'); + const ext2 = extensions.find((e) => e.name === 'ext2'); + expect(ext1?.contextFileName).toBe( + path.join(workspaceExtensionsDir, 'ext1', 'gemini.md'), + ); + expect(ext2?.contextFileName).toBeUndefined(); + }); + + it('should load context file path from the extension config', () => { + const workspaceExtensionsDir = path.join( + tempWorkspaceDir, + EXTENSIONS_DIRECTORY_NAME, + ); + fs.mkdirSync(workspaceExtensionsDir, { recursive: true }); + createExtension( + workspaceExtensionsDir, + 'ext1', + '1.0.0', + false, + 'my-context.md', + ); const extensions = loadExtensions(tempWorkspaceDir); - expect(extensions).toHaveLength(3); - expect(extensions.find((e) => e.name === 'ext1')?.version).toBe('1.0.0'); // Workspace version should be kept - expect(extensions.find((e) => e.name === 'ext2')?.version).toBe('2.0.0'); - expect(extensions.find((e) => e.name === 'ext3')?.version).toBe('3.0.0'); + expect(extensions).toHaveLength(1); + const ext1 = extensions.find((e) => e.name === 'ext1'); + expect(ext1?.contextFileName).toBe( + path.join(workspaceExtensionsDir, 'ext1', 'my-context.md'), + ); }); }); @@ -70,11 +89,21 @@ function createExtension( extensionsDir: string, name: string, version: string, + addContextFile = false, + contextFileName?: string, ): void { const extDir = path.join(extensionsDir, name); fs.mkdirSync(extDir); fs.writeFileSync( path.join(extDir, EXTENSIONS_CONFIG_FILENAME), - JSON.stringify({ name, version }), + JSON.stringify({ name, version, contextFileName }), ); + + if (addContextFile) { + fs.writeFileSync(path.join(extDir, 'gemini.md'), 'context'); + } + + if (contextFileName) { + fs.writeFileSync(path.join(extDir, contextFileName), 'context'); + } } |
