mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-07-13 03:20:33 -07:00
feat: launch Gemini 3 in Gemini CLI 🚀🚀🚀 (in main) (#13287)
Co-authored-by: Adam Weidman <65992621+adamfweidman@users.noreply.github.com> Co-authored-by: Sehoon Shon <sshon@google.com> Co-authored-by: Adib234 <30782825+Adib234@users.noreply.github.com> Co-authored-by: Sandy Tao <sandytao520@icloud.com> Co-authored-by: Abhi <43648792+abhipatel12@users.noreply.github.com> Co-authored-by: Aishanee Shah <aishaneeshah@gmail.com> Co-authored-by: gemini-cli-robot <gemini-cli-robot@google.com> Co-authored-by: Gal Zahavi <38544478+galz10@users.noreply.github.com> Co-authored-by: Jacob Richman <jacob314@gmail.com> Co-authored-by: joshualitt <joshualitt@google.com> Co-authored-by: Jenna Inouye <jinouye@google.com>
This commit is contained in:
@@ -160,11 +160,16 @@ vi.mock('../utils/fetch.js', () => ({
|
||||
import { BaseLlmClient } from '../core/baseLlmClient.js';
|
||||
import { tokenLimit } from '../core/tokenLimits.js';
|
||||
import { uiTelemetryService } from '../telemetry/index.js';
|
||||
import { getCodeAssistServer } from '../code_assist/codeAssist.js';
|
||||
import { getExperiments } from '../code_assist/experiments/experiments.js';
|
||||
import type { CodeAssistServer } from '../code_assist/server.js';
|
||||
|
||||
vi.mock('../core/baseLlmClient.js');
|
||||
vi.mock('../core/tokenLimits.js', () => ({
|
||||
tokenLimit: vi.fn(),
|
||||
}));
|
||||
vi.mock('../code_assist/codeAssist.js');
|
||||
vi.mock('../code_assist/experiments/experiments.js');
|
||||
|
||||
describe('Server Config (config.ts)', () => {
|
||||
const MODEL = 'gemini-pro';
|
||||
@@ -362,6 +367,23 @@ describe('Server Config (config.ts)', () => {
|
||||
).toHaveBeenCalledWith();
|
||||
});
|
||||
|
||||
it('should strip thoughts when switching from GenAI to Vertex AI', async () => {
|
||||
const config = new Config(baseParams);
|
||||
|
||||
vi.mocked(createContentGeneratorConfig).mockImplementation(
|
||||
async (_: Config, authType: AuthType | undefined) =>
|
||||
({ authType }) as unknown as ContentGeneratorConfig,
|
||||
);
|
||||
|
||||
await config.refreshAuth(AuthType.USE_GEMINI);
|
||||
|
||||
await config.refreshAuth(AuthType.USE_VERTEX_AI);
|
||||
|
||||
expect(
|
||||
config.getGeminiClient().stripThoughtsFromHistory,
|
||||
).toHaveBeenCalledWith();
|
||||
});
|
||||
|
||||
it('should not strip thoughts when switching from Vertex to GenAI', async () => {
|
||||
const config = new Config(baseParams);
|
||||
|
||||
@@ -380,6 +402,78 @@ describe('Server Config (config.ts)', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('Preview Features Logic in refreshAuth', () => {
|
||||
beforeEach(() => {
|
||||
// Set up default mock behavior for these functions before each test
|
||||
vi.mocked(getCodeAssistServer).mockReturnValue(undefined);
|
||||
vi.mocked(getExperiments).mockResolvedValue({
|
||||
flags: {},
|
||||
experimentIds: [],
|
||||
});
|
||||
});
|
||||
|
||||
it('should enable preview features for Google auth when remote flag is true', async () => {
|
||||
// Override the default mock for this specific test
|
||||
vi.mocked(getCodeAssistServer).mockReturnValue({} as CodeAssistServer); // Simulate Google auth by returning a truthy value
|
||||
vi.mocked(getExperiments).mockResolvedValue({
|
||||
flags: {
|
||||
[ExperimentFlags.ENABLE_PREVIEW]: { boolValue: true },
|
||||
},
|
||||
experimentIds: [],
|
||||
});
|
||||
const config = new Config({ ...baseParams, previewFeatures: undefined });
|
||||
await config.refreshAuth(AuthType.LOGIN_WITH_GOOGLE);
|
||||
expect(config.getPreviewFeatures()).toBe(true);
|
||||
});
|
||||
|
||||
it('should disable preview features for Google auth when remote flag is false', async () => {
|
||||
// Override the default mock
|
||||
vi.mocked(getCodeAssistServer).mockReturnValue({} as CodeAssistServer);
|
||||
vi.mocked(getExperiments).mockResolvedValue({
|
||||
flags: {
|
||||
[ExperimentFlags.ENABLE_PREVIEW]: { boolValue: false },
|
||||
},
|
||||
experimentIds: [],
|
||||
});
|
||||
const config = new Config({ ...baseParams, previewFeatures: undefined });
|
||||
await config.refreshAuth(AuthType.LOGIN_WITH_GOOGLE);
|
||||
expect(config.getPreviewFeatures()).toBe(undefined);
|
||||
});
|
||||
|
||||
it('should disable preview features for Google auth when remote flag is missing', async () => {
|
||||
// Override the default mock for getCodeAssistServer, the getExperiments mock is already correct
|
||||
vi.mocked(getCodeAssistServer).mockReturnValue({} as CodeAssistServer);
|
||||
const config = new Config({ ...baseParams, previewFeatures: undefined });
|
||||
await config.refreshAuth(AuthType.LOGIN_WITH_GOOGLE);
|
||||
expect(config.getPreviewFeatures()).toBe(undefined);
|
||||
});
|
||||
|
||||
it('should not change preview features or model if it is already set to true', async () => {
|
||||
const initialModel = 'some-other-model';
|
||||
const config = new Config({
|
||||
...baseParams,
|
||||
previewFeatures: true,
|
||||
model: initialModel,
|
||||
});
|
||||
// It doesn't matter which auth method we use here, the logic should exit early
|
||||
await config.refreshAuth(AuthType.USE_GEMINI);
|
||||
expect(config.getPreviewFeatures()).toBe(true);
|
||||
expect(config.getModel()).toBe(initialModel);
|
||||
});
|
||||
|
||||
it('should not change preview features or model if it is already set to false', async () => {
|
||||
const initialModel = 'some-other-model';
|
||||
const config = new Config({
|
||||
...baseParams,
|
||||
previewFeatures: false,
|
||||
model: initialModel,
|
||||
});
|
||||
await config.refreshAuth(AuthType.USE_GEMINI);
|
||||
expect(config.getPreviewFeatures()).toBe(false);
|
||||
expect(config.getModel()).toBe(initialModel);
|
||||
});
|
||||
});
|
||||
|
||||
it('Config constructor should store userMemory correctly', () => {
|
||||
const config = new Config(baseParams);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user