feat: add explicit license selection and status visibility (#6751)

This commit is contained in:
jason
2025-08-23 05:01:01 +09:00
committed by GitHub
parent bb8a23ae80
commit 5030ced9e1
13 changed files with 382 additions and 40 deletions

View File

@@ -6,12 +6,12 @@
import { describe, it, expect, beforeEach, vi, afterEach } from 'vitest';
import { aboutCommand } from './aboutCommand.js';
import { type CommandContext } from './types.js';
import type { CommandContext } from './types.js';
import { createMockCommandContext } from '../../test-utils/mockCommandContext.js';
import * as versionUtils from '../../utils/version.js';
import { MessageType } from '../types.js';
import { IdeClient } from '../../../../core/src/ide/ide-client.js';
import type { IdeClient } from '@google/gemini-cli-core';
vi.mock('../../utils/version.js', () => ({
getCliVersion: vi.fn(),
@@ -29,10 +29,11 @@ describe('aboutCommand', () => {
getModel: vi.fn(),
getIdeClient: vi.fn(),
getIdeMode: vi.fn().mockReturnValue(true),
getGeminiClient: vi.fn(),
},
settings: {
merged: {
selectedAuthType: 'test-auth',
selectedAuthType: 'oauth-gca',
},
},
},
@@ -52,6 +53,11 @@ describe('aboutCommand', () => {
vi.spyOn(mockContext.services.config!, 'getIdeClient').mockReturnValue({
getDetectedIdeDisplayName: vi.fn().mockReturnValue('test-ide'),
} as Partial<IdeClient> as IdeClient);
vi.spyOn(mockContext.services.config!, 'getGeminiClient').mockReturnValue({
getUserTier: vi.fn().mockReturnValue(undefined),
} as unknown as ReturnType<
NonNullable<typeof mockContext.services.config>['getGeminiClient']
>);
});
afterEach(() => {
@@ -83,9 +89,10 @@ describe('aboutCommand', () => {
osVersion: 'test-os',
sandboxEnv: 'no sandbox',
modelVersion: 'test-model',
selectedAuthType: 'test-auth',
selectedAuthType: 'oauth-gca',
gcpProject: 'test-gcp-project',
ideClient: 'test-ide',
userTier: undefined,
},
expect.any(Number),
);
@@ -125,11 +132,14 @@ describe('aboutCommand', () => {
});
it('should not show ide client when it is not detected', async () => {
// Change to oauth type that doesn't use GCP project
mockContext.services.settings.merged.selectedAuthType = 'oauth';
vi.spyOn(mockContext.services.config!, 'getIdeClient').mockReturnValue({
getDetectedIdeDisplayName: vi.fn().mockReturnValue(undefined),
} as Partial<IdeClient> as IdeClient);
process.env.SANDBOX = '';
process.env['SANDBOX'] = '';
if (!aboutCommand.action) {
throw new Error('The about command must have an action.');
}
@@ -143,8 +153,8 @@ describe('aboutCommand', () => {
osVersion: 'test-os',
sandboxEnv: 'no sandbox',
modelVersion: 'test-model',
selectedAuthType: 'test-auth',
gcpProject: 'test-gcp-project',
selectedAuthType: 'oauth',
gcpProject: '',
ideClient: '',
}),
expect.any(Number),