diff --git a/packages/cli/src/ui/components/FolderTrustDialog.test.tsx b/packages/cli/src/ui/components/FolderTrustDialog.test.tsx
index 362e9b3c05..c583617aae 100644
--- a/packages/cli/src/ui/components/FolderTrustDialog.test.tsx
+++ b/packages/cli/src/ui/components/FolderTrustDialog.test.tsx
@@ -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(
+ ,
+ );
+ 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(
+ ,
+ );
+ expect(lastFrame()).toContain('Trust parent folder ()');
});
});
});
diff --git a/packages/cli/src/ui/components/FolderTrustDialog.tsx b/packages/cli/src/ui/components/FolderTrustDialog.tsx
index 3b82727910..0060187925 100644
--- a/packages/cli/src/ui/components/FolderTrustDialog.tsx
+++ b/packages/cli/src/ui/components/FolderTrustDialog.tsx
@@ -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 = ({
{ isActive: !!isRestarting },
);
+ const parentFolder = path.basename(path.dirname(process.cwd()));
+
const options: Array> = [
{
label: 'Trust folder',
value: FolderTrustChoice.TRUST_FOLDER,
},
{
- label: 'Trust parent folder',
+ label: `Trust parent folder (${parentFolder})`,
value: FolderTrustChoice.TRUST_PARENT,
},
{