fix: show parent name in trust folder confirmation (#7331)

Co-authored-by: Hriday Taneja <hridayt@google.com>
This commit is contained in:
hritan
2025-08-29 19:01:06 +00:00
committed by GitHub
parent 175fc3bf03
commit 421f989faf
2 changed files with 30 additions and 5 deletions

View File

@@ -8,19 +8,23 @@ import { renderWithProviders } from '../../test-utils/render.js';
import { waitFor } from '@testing-library/react';
import { vi } from 'vitest';
import { FolderTrustDialog, FolderTrustChoice } from './FolderTrustDialog.js';
import * as process from 'node:process';
const mockedExit = vi.hoisted(() => vi.fn());
const mockedCwd = vi.hoisted(() => vi.fn());
vi.mock('process', async () => {
const actual = await vi.importActual('process');
return {
...actual,
exit: vi.fn(),
exit: mockedExit,
cwd: mockedCwd,
};
});
describe('FolderTrustDialog', () => {
beforeEach(() => {
vi.clearAllMocks();
mockedCwd.mockReturnValue('/home/user/project');
});
it('should render the dialog with title and description', () => {
@@ -78,7 +82,7 @@ describe('FolderTrustDialog', () => {
stdin.write('r');
await waitFor(() => {
expect(process.exit).toHaveBeenCalledWith(0);
expect(mockedExit).toHaveBeenCalledWith(0);
});
});
@@ -90,7 +94,25 @@ describe('FolderTrustDialog', () => {
stdin.write('r');
await waitFor(() => {
expect(process.exit).not.toHaveBeenCalled();
expect(mockedExit).not.toHaveBeenCalled();
});
});
describe('parentFolder display', () => {
it('should correctly display the parent folder name for a nested directory', () => {
mockedCwd.mockReturnValue('/home/user/project');
const { lastFrame } = renderWithProviders(
<FolderTrustDialog onSelect={vi.fn()} />,
);
expect(lastFrame()).toContain('Trust parent folder (user)');
});
it('should correctly display an empty parent folder name for a directory directly under root', () => {
mockedCwd.mockReturnValue('/project');
const { lastFrame } = renderWithProviders(
<FolderTrustDialog onSelect={vi.fn()} />,
);
expect(lastFrame()).toContain('Trust parent folder ()');
});
});
});

View File

@@ -11,6 +11,7 @@ import type { RadioSelectItem } from './shared/RadioButtonSelect.js';
import { RadioButtonSelect } from './shared/RadioButtonSelect.js';
import { useKeypress } from '../hooks/useKeypress.js';
import * as process from 'node:process';
import * as path from 'node:path';
export enum FolderTrustChoice {
TRUST_FOLDER = 'trust_folder',
@@ -45,13 +46,15 @@ export const FolderTrustDialog: React.FC<FolderTrustDialogProps> = ({
{ isActive: !!isRestarting },
);
const parentFolder = path.basename(path.dirname(process.cwd()));
const options: Array<RadioSelectItem<FolderTrustChoice>> = [
{
label: 'Trust folder',
value: FolderTrustChoice.TRUST_FOLDER,
},
{
label: 'Trust parent folder',
label: `Trust parent folder (${parentFolder})`,
value: FolderTrustChoice.TRUST_PARENT,
},
{