mirror of
https://github.com/QwenLM/qwen-code.git
synced 2025-12-20 16:57:46 +00:00
feat: add explicit license selection and status visibility (#6751)
This commit is contained in:
@@ -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),
|
||||
|
||||
@@ -27,11 +27,18 @@ export const aboutCommand: SlashCommand = {
|
||||
const cliVersion = await getCliVersion();
|
||||
const selectedAuthType =
|
||||
context.services.settings.merged.selectedAuthType || '';
|
||||
const gcpProject = process.env['GOOGLE_CLOUD_PROJECT'] || '';
|
||||
// Only show GCP Project for auth types that actually use it
|
||||
const gcpProject =
|
||||
selectedAuthType === 'oauth-gca' ||
|
||||
selectedAuthType === 'vertex-ai' ||
|
||||
selectedAuthType === 'cloud-shell'
|
||||
? process.env['GOOGLE_CLOUD_PROJECT'] || ''
|
||||
: '';
|
||||
const ideClient =
|
||||
(context.services.config?.getIdeMode() &&
|
||||
context.services.config?.getIdeClient()?.getDetectedIdeDisplayName()) ||
|
||||
'';
|
||||
const userTier = context.services.config?.getGeminiClient()?.getUserTier();
|
||||
|
||||
const aboutItem: Omit<HistoryItemAbout, 'id'> = {
|
||||
type: MessageType.ABOUT,
|
||||
@@ -42,6 +49,7 @@ export const aboutCommand: SlashCommand = {
|
||||
selectedAuthType,
|
||||
gcpProject,
|
||||
ideClient,
|
||||
userTier,
|
||||
};
|
||||
|
||||
context.ui.addItem(aboutItem, Date.now());
|
||||
|
||||
Reference in New Issue
Block a user