Make merged settings non-nullable and fix all lints related to that. (#16647)

This commit is contained in:
Jacob Richman
2026-01-15 09:26:10 -08:00
committed by GitHub
parent 2b6bfe4097
commit f7f38e2b9e
59 changed files with 964 additions and 744 deletions
+33 -18
View File
@@ -82,7 +82,7 @@ vi.mock('@google/gemini-cli-core', async (importOriginal) => {
};
});
import ansiEscapes from 'ansi-escapes';
import type { LoadedSettings } from '../config/settings.js';
import { type LoadedSettings, mergeSettings } from '../config/settings.js';
import type { InitializationResult } from '../core/initializer.js';
import { useQuotaAndFallback } from './hooks/useQuotaAndFallback.js';
import { UIStateContext, type UIState } from './contexts/UIStateContext.js';
@@ -380,14 +380,17 @@ describe('AppContainer State Management', () => {
);
// Mock LoadedSettings
const defaultMergedSettings = mergeSettings({}, {}, {}, {}, true);
mockSettings = {
merged: {
...defaultMergedSettings,
hideBanner: false,
hideFooter: false,
hideTips: false,
showMemoryUsage: false,
theme: 'default',
ui: {
...defaultMergedSettings.ui,
showStatusInTitle: false,
hideWindowTitle: false,
},
@@ -507,8 +510,10 @@ describe('AppContainer State Management', () => {
describe('Settings Integration', () => {
it('handles settings with all display options disabled', async () => {
const defaultMergedSettings = mergeSettings({}, {}, {}, {}, true);
const settingsAllHidden = {
merged: {
...defaultMergedSettings,
hideBanner: true,
hideFooter: true,
hideTips: true,
@@ -526,8 +531,10 @@ describe('AppContainer State Management', () => {
});
it('handles settings with memory usage enabled', async () => {
const defaultMergedSettings = mergeSettings({}, {}, {}, {}, true);
const settingsWithMemory = {
merged: {
...defaultMergedSettings,
hideBanner: false,
hideFooter: false,
hideTips: false,
@@ -574,7 +581,7 @@ describe('AppContainer State Management', () => {
it('handles undefined settings gracefully', async () => {
const undefinedSettings = {
merged: {},
merged: mergeSettings({}, {}, {}, {}, true),
} as LoadedSettings;
let unmount: () => void;
@@ -991,12 +998,13 @@ describe('AppContainer State Management', () => {
it('should update terminal title with Working… when showStatusInTitle is false', () => {
// Arrange: Set up mock settings with showStatusInTitle disabled
const defaultMergedSettings = mergeSettings({}, {}, {}, {}, true);
const mockSettingsWithShowStatusFalse = {
...mockSettings,
merged: {
...mockSettings.merged,
...defaultMergedSettings,
ui: {
...mockSettings.merged.ui,
...defaultMergedSettings.ui,
showStatusInTitle: false,
hideWindowTitle: false,
},
@@ -1073,12 +1081,13 @@ describe('AppContainer State Management', () => {
it('should not update terminal title when hideWindowTitle is true', () => {
// Arrange: Set up mock settings with hideWindowTitle enabled
const defaultMergedSettings = mergeSettings({}, {}, {}, {}, true);
const mockSettingsWithHideTitleTrue = {
...mockSettings,
merged: {
...mockSettings.merged,
...defaultMergedSettings,
ui: {
...mockSettings.merged.ui,
...defaultMergedSettings.ui,
showStatusInTitle: true,
hideWindowTitle: true,
},
@@ -1101,12 +1110,13 @@ describe('AppContainer State Management', () => {
it('should update terminal title with thought subject when in active state', () => {
// Arrange: Set up mock settings with showStatusInTitle enabled
const defaultMergedSettings = mergeSettings({}, {}, {}, {}, true);
const mockSettingsWithTitleEnabled = {
...mockSettings,
merged: {
...mockSettings.merged,
...defaultMergedSettings,
ui: {
...mockSettings.merged.ui,
...defaultMergedSettings.ui,
showStatusInTitle: true,
hideWindowTitle: false,
},
@@ -1143,12 +1153,13 @@ describe('AppContainer State Management', () => {
it('should update terminal title with default text when in Idle state and no thought subject', () => {
// Arrange: Set up mock settings with showStatusInTitle enabled
const defaultMergedSettings = mergeSettings({}, {}, {}, {}, true);
const mockSettingsWithTitleEnabled = {
...mockSettings,
merged: {
...mockSettings.merged,
...defaultMergedSettings,
ui: {
...mockSettings.merged.ui,
...defaultMergedSettings.ui,
showStatusInTitle: true,
hideWindowTitle: false,
},
@@ -1184,12 +1195,13 @@ describe('AppContainer State Management', () => {
it('should update terminal title when in WaitingForConfirmation state with thought subject', async () => {
// Arrange: Set up mock settings with showStatusInTitle enabled
const defaultMergedSettings = mergeSettings({}, {}, {}, {}, true);
const mockSettingsWithTitleEnabled = {
...mockSettings,
merged: {
...mockSettings.merged,
...defaultMergedSettings,
ui: {
...mockSettings.merged.ui,
...defaultMergedSettings.ui,
showStatusInTitle: true,
hideWindowTitle: false,
},
@@ -1392,12 +1404,13 @@ describe('AppContainer State Management', () => {
it('should pad title to exactly 80 characters', () => {
// Arrange: Set up mock settings with showStatusInTitle enabled
const defaultMergedSettings = mergeSettings({}, {}, {}, {}, true);
const mockSettingsWithTitleEnabled = {
...mockSettings,
merged: {
...mockSettings.merged,
...defaultMergedSettings,
ui: {
...mockSettings.merged.ui,
...defaultMergedSettings.ui,
showStatusInTitle: true,
hideWindowTitle: false,
},
@@ -1435,12 +1448,13 @@ describe('AppContainer State Management', () => {
it('should use correct ANSI escape code format', () => {
// Arrange: Set up mock settings with showStatusInTitle enabled
const defaultMergedSettings = mergeSettings({}, {}, {}, {}, true);
const mockSettingsWithTitleEnabled = {
...mockSettings,
merged: {
...mockSettings.merged,
...defaultMergedSettings,
ui: {
...mockSettings.merged.ui,
...defaultMergedSettings.ui,
showStatusInTitle: true,
hideWindowTitle: false,
},
@@ -1802,12 +1816,13 @@ describe('AppContainer State Management', () => {
const setupCopyModeTest = async (isAlternateMode = false) => {
// Update settings for this test run
const defaultMergedSettings = mergeSettings({}, {}, {}, {}, true);
const testSettings = {
...mockSettings,
merged: {
...mockSettings.merged,
...defaultMergedSettings,
ui: {
...mockSettings.merged.ui,
...defaultMergedSettings.ui,
useAlternateBuffer: isAlternateMode,
},
},