Rationalize different Extension typings (#10435)

This commit is contained in:
Zack Birkenbuel
2025-10-08 07:31:41 -07:00
committed by GitHub
parent 5d09ab7eb3
commit 8980276b20
19 changed files with 300 additions and 256 deletions
@@ -9,7 +9,7 @@ import fs from 'node:fs';
import os from 'node:os';
import { afterEach, beforeEach, describe, expect, it } from 'vitest';
import { ExtensionEnablementManager, Override } from './extensionEnablement.js';
import type { Extension } from '../extension.js';
import type { GeminiCLIExtension } from '@google/gemini-cli-core';
// Helper to create a temporary directory for testing
function createTestDir() {
@@ -286,9 +286,9 @@ describe('ExtensionEnablementManager', () => {
'ext-two',
]);
const extensions = [
{ config: { name: 'ext-one' } },
{ config: { name: 'ext-two' } },
] as Extension[];
{ name: 'ext-one' },
{ name: 'ext-two' },
] as GeminiCLIExtension[];
manager.validateExtensionOverrides(extensions);
expect(consoleErrorSpy).not.toHaveBeenCalled();
});
@@ -300,9 +300,9 @@ describe('ExtensionEnablementManager', () => {
'ext-another-invalid',
]);
const extensions = [
{ config: { name: 'ext-one' } },
{ config: { name: 'ext-two' } },
] as Extension[];
{ name: 'ext-one' },
{ name: 'ext-two' },
] as GeminiCLIExtension[];
manager.validateExtensionOverrides(extensions);
expect(consoleErrorSpy).toHaveBeenCalledTimes(2);
expect(consoleErrorSpy).toHaveBeenCalledWith(
@@ -6,7 +6,7 @@
import fs from 'node:fs';
import path from 'node:path';
import { type Extension } from '../extension.js';
import type { GeminiCLIExtension } from '@google/gemini-cli-core';
export interface ExtensionEnablementConfig {
overrides: string[];
@@ -119,13 +119,11 @@ export class ExtensionEnablementManager {
enabledExtensionNames?.map((name) => name.toLowerCase()) ?? [];
}
validateExtensionOverrides(extensions: Extension[]) {
validateExtensionOverrides(extensions: GeminiCLIExtension[]) {
for (const name of this.enabledExtensionNamesOverride) {
if (name === 'none') continue;
if (
!extensions.some(
(ext) => ext.config.name.toLowerCase() === name.toLowerCase(),
)
!extensions.some((ext) => ext.name.toLowerCase() === name.toLowerCase())
) {
console.error(`Extension not found: ${name}`);
}
@@ -137,6 +137,7 @@ describe('git extension helpers', () => {
type: 'link',
source: '',
},
contextFiles: [],
};
const result = await checkForExtensionUpdate(extension);
expect(result).toBe(ExtensionUpdateState.NOT_UPDATABLE);
@@ -152,6 +153,7 @@ describe('git extension helpers', () => {
type: 'git',
source: '',
},
contextFiles: [],
};
mockGit.getRemotes.mockResolvedValue([]);
const result = await checkForExtensionUpdate(extension);
@@ -168,6 +170,7 @@ describe('git extension helpers', () => {
type: 'git',
source: 'my/ext',
},
contextFiles: [],
};
mockGit.getRemotes.mockResolvedValue([
{ name: 'origin', refs: { fetch: 'http://my-repo.com' } },
@@ -189,6 +192,7 @@ describe('git extension helpers', () => {
type: 'git',
source: 'my/ext',
},
contextFiles: [],
};
mockGit.getRemotes.mockResolvedValue([
{ name: 'origin', refs: { fetch: 'http://my-repo.com' } },
@@ -210,6 +214,7 @@ describe('git extension helpers', () => {
type: 'git',
source: 'my/ext',
},
contextFiles: [],
};
mockGit.getRemotes.mockRejectedValue(new Error('git error'));
+1 -1
View File
@@ -134,7 +134,7 @@ export async function checkForExtensionUpdate(
);
return ExtensionUpdateState.ERROR;
}
if (newExtension.config.version !== extension.version) {
if (newExtension.version !== extension.version) {
return ExtensionUpdateState.UPDATE_AVAILABLE;
}
return ExtensionUpdateState.UP_TO_DATE;
+1 -1
View File
@@ -90,7 +90,7 @@ export async function updateExtension(
});
throw new Error('Updated extension not found after installation.');
}
const updatedVersion = updatedExtension.config.version;
const updatedVersion = updatedExtension.version;
dispatchExtensionStateUpdate({
type: 'SET_STATE',
payload: {