/** * @license * Copyright 2025 Google LLC * SPDX-License-Identifier: Apache-2.0 */ import { describe, it, expect, vi, beforeEach } from 'vitest'; import { getStartupWarnings } from './startupWarnings.js'; import * as fs from 'fs/promises'; import { getErrorMessage } from '@google/gemini-cli-core'; vi.mock('fs/promises'); vi.mock('@google/gemini-cli-core', async (importOriginal) => { const actual = await importOriginal(); return { ...actual, getErrorMessage: vi.fn(), }; }); describe.skip('startupWarnings', () => { beforeEach(() => { vi.resetAllMocks(); }); it('should return warnings from the file and delete it', async () => { const mockWarnings = 'Warning 1\nWarning 2'; vi.spyOn(fs, 'access').mockResolvedValue(); vi.spyOn(fs, 'readFile').mockResolvedValue(mockWarnings); vi.spyOn(fs, 'unlink').mockResolvedValue(); const warnings = await getStartupWarnings(); expect(fs.access).toHaveBeenCalled(); expect(fs.readFile).toHaveBeenCalled(); expect(fs.unlink).toHaveBeenCalled(); expect(warnings).toEqual(['Warning 1', 'Warning 2']); }); it('should return an empty array if the file does not exist', async () => { const error = new Error('File not found'); (error as Error & { code: string }).code = 'ENOENT'; vi.spyOn(fs, 'access').mockRejectedValue(error); const warnings = await getStartupWarnings(); expect(warnings).toEqual([]); }); it('should return an error message if reading the file fails', async () => { const error = new Error('Permission denied'); vi.spyOn(fs, 'access').mockRejectedValue(error); vi.mocked(getErrorMessage).mockReturnValue('Permission denied'); const warnings = await getStartupWarnings(); expect(warnings).toEqual([ 'Error checking/reading warnings file: Permission denied', ]); }); it('should return a warning if deleting the file fails', async () => { const mockWarnings = 'Warning 1'; vi.spyOn(fs, 'access').mockResolvedValue(); vi.spyOn(fs, 'readFile').mockResolvedValue(mockWarnings); vi.spyOn(fs, 'unlink').mockRejectedValue(new Error('Permission denied')); const warnings = await getStartupWarnings(); expect(warnings).toEqual([ 'Warning 1', 'Warning: Could not delete temporary warnings file.', ]); }); });