mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-04-23 03:24:42 -07:00
Pass whole extensions rather than just context files (#10910)
Co-authored-by: Jake Macdonald <jakemac@google.com>
This commit is contained in:
@@ -8,21 +8,18 @@ import { vi } from 'vitest';
|
||||
import * as fs from 'node:fs';
|
||||
import * as os from 'node:os';
|
||||
import * as path from 'node:path';
|
||||
import {
|
||||
annotateActiveExtensions,
|
||||
loadExtension,
|
||||
} from '../../config/extension.js';
|
||||
import { loadExtension } from '../../config/extension.js';
|
||||
import { createExtension } from '../../test-utils/createExtension.js';
|
||||
import { useExtensionUpdates } from './useExtensionUpdates.js';
|
||||
import { GEMINI_DIR, type GeminiCLIExtension } from '@google/gemini-cli-core';
|
||||
import { renderHook, waitFor } from '@testing-library/react';
|
||||
import { MessageType } from '../types.js';
|
||||
import { ExtensionEnablementManager } from '../../config/extensions/extensionEnablement.js';
|
||||
import {
|
||||
checkForAllExtensionUpdates,
|
||||
updateExtension,
|
||||
} from '../../config/extensions/update.js';
|
||||
import { ExtensionUpdateState } from '../state/extensions.js';
|
||||
import { ExtensionEnablementManager } from '../../config/extensions/extensionEnablement.js';
|
||||
|
||||
vi.mock('os', async (importOriginal) => {
|
||||
const mockedOs = await importOriginal<typeof os>();
|
||||
@@ -76,7 +73,7 @@ describe('useExtensionUpdates', () => {
|
||||
const cwd = '/test/cwd';
|
||||
|
||||
vi.mocked(checkForAllExtensionUpdates).mockImplementation(
|
||||
async (_extensions, dispatch, _cwd) => {
|
||||
async (_extensions, _extensionEnablementManager, dispatch, _cwd) => {
|
||||
dispatch({
|
||||
type: 'SET_STATE',
|
||||
payload: {
|
||||
@@ -88,7 +85,12 @@ describe('useExtensionUpdates', () => {
|
||||
);
|
||||
|
||||
renderHook(() =>
|
||||
useExtensionUpdates(extensions as GeminiCLIExtension[], addItem, cwd),
|
||||
useExtensionUpdates(
|
||||
extensions as GeminiCLIExtension[],
|
||||
new ExtensionEnablementManager(),
|
||||
addItem,
|
||||
cwd,
|
||||
),
|
||||
);
|
||||
|
||||
await waitFor(() => {
|
||||
@@ -113,16 +115,17 @@ describe('useExtensionUpdates', () => {
|
||||
autoUpdate: true,
|
||||
},
|
||||
});
|
||||
const extension = annotateActiveExtensions(
|
||||
[loadExtension({ extensionDir, workspaceDir: tempHomeDir })!],
|
||||
tempHomeDir,
|
||||
new ExtensionEnablementManager(),
|
||||
)[0];
|
||||
const extensionEnablementManager = new ExtensionEnablementManager();
|
||||
const extension = loadExtension({
|
||||
extensionDir,
|
||||
workspaceDir: tempHomeDir,
|
||||
extensionEnablementManager,
|
||||
})!;
|
||||
|
||||
const addItem = vi.fn();
|
||||
|
||||
vi.mocked(checkForAllExtensionUpdates).mockImplementation(
|
||||
async (_extensions, dispatch, _cwd) => {
|
||||
async (_extensions, _extensionEnablementManager, dispatch, _cwd) => {
|
||||
dispatch({
|
||||
type: 'SET_STATE',
|
||||
payload: {
|
||||
@@ -139,7 +142,14 @@ describe('useExtensionUpdates', () => {
|
||||
name: '',
|
||||
});
|
||||
|
||||
renderHook(() => useExtensionUpdates([extension], addItem, tempHomeDir));
|
||||
renderHook(() =>
|
||||
useExtensionUpdates(
|
||||
[extension],
|
||||
extensionEnablementManager,
|
||||
addItem,
|
||||
tempHomeDir,
|
||||
),
|
||||
);
|
||||
|
||||
await waitFor(
|
||||
() => {
|
||||
@@ -177,25 +187,24 @@ describe('useExtensionUpdates', () => {
|
||||
},
|
||||
});
|
||||
|
||||
const extensions = annotateActiveExtensions(
|
||||
[
|
||||
loadExtension({
|
||||
extensionDir: extensionDir1,
|
||||
workspaceDir: tempHomeDir,
|
||||
})!,
|
||||
loadExtension({
|
||||
extensionDir: extensionDir2,
|
||||
workspaceDir: tempHomeDir,
|
||||
})!,
|
||||
],
|
||||
tempHomeDir,
|
||||
new ExtensionEnablementManager(),
|
||||
);
|
||||
const extensionEnablementManager = new ExtensionEnablementManager();
|
||||
const extensions = [
|
||||
loadExtension({
|
||||
extensionDir: extensionDir1,
|
||||
workspaceDir: tempHomeDir,
|
||||
extensionEnablementManager,
|
||||
})!,
|
||||
loadExtension({
|
||||
extensionDir: extensionDir2,
|
||||
workspaceDir: tempHomeDir,
|
||||
extensionEnablementManager,
|
||||
})!,
|
||||
];
|
||||
|
||||
const addItem = vi.fn();
|
||||
|
||||
vi.mocked(checkForAllExtensionUpdates).mockImplementation(
|
||||
async (_extensions, dispatch, _cwd) => {
|
||||
async (_extensions, _extensionEnablementManager, dispatch, _cwd) => {
|
||||
dispatch({
|
||||
type: 'SET_STATE',
|
||||
payload: {
|
||||
@@ -225,7 +234,14 @@ describe('useExtensionUpdates', () => {
|
||||
name: '',
|
||||
});
|
||||
|
||||
renderHook(() => useExtensionUpdates(extensions, addItem, tempHomeDir));
|
||||
renderHook(() =>
|
||||
useExtensionUpdates(
|
||||
extensions,
|
||||
extensionEnablementManager,
|
||||
addItem,
|
||||
tempHomeDir,
|
||||
),
|
||||
);
|
||||
|
||||
await waitFor(
|
||||
() => {
|
||||
@@ -282,7 +298,7 @@ describe('useExtensionUpdates', () => {
|
||||
const cwd = '/test/cwd';
|
||||
|
||||
vi.mocked(checkForAllExtensionUpdates).mockImplementation(
|
||||
async (_extensions, dispatch, _cwd) => {
|
||||
async (_extensions, _extensionEnablementManager, dispatch, _cwd) => {
|
||||
dispatch({ type: 'BATCH_CHECK_START' });
|
||||
dispatch({
|
||||
type: 'SET_STATE',
|
||||
@@ -303,8 +319,14 @@ describe('useExtensionUpdates', () => {
|
||||
},
|
||||
);
|
||||
|
||||
const extensionEnablementManager = new ExtensionEnablementManager();
|
||||
renderHook(() =>
|
||||
useExtensionUpdates(extensions as GeminiCLIExtension[], addItem, cwd),
|
||||
useExtensionUpdates(
|
||||
extensions as GeminiCLIExtension[],
|
||||
extensionEnablementManager,
|
||||
addItem,
|
||||
cwd,
|
||||
),
|
||||
);
|
||||
|
||||
await waitFor(() => {
|
||||
|
||||
Reference in New Issue
Block a user