File size: 1,568 Bytes
84aa3bf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/**
 * @license
 * Copyright 2026 Google LLC
 * SPDX-License-Identifier: Apache-2.0
 */

import { describe, it, expect, vi, beforeEach } from 'vitest';
import { loadCliConfig, type CliArgs } from './config.js';
import { ExtensionManager } from './extension-manager.js';
import { createTestMergedSettings } from './settings.js';

vi.mock('./extension-manager.js', () => ({
  ExtensionManager: vi.fn().mockImplementation(() => ({
    loadExtensions: vi.fn().mockResolvedValue([]),
    getExtensions: vi.fn().mockReturnValue([]),
  })),
}));

describe('loadCliConfig skipExtensions', () => {
  const settings = createTestMergedSettings();
  const argv = {
    query: undefined,
    model: undefined,
    sandbox: undefined,
    debug: undefined,
    prompt: undefined,
    promptInteractive: undefined,
    yolo: undefined,
    approvalMode: undefined,
    policy: undefined,
    adminPolicy: undefined,
    allowedMcpServerNames: undefined,
    allowedTools: undefined,
    extensions: undefined,
    listExtensions: undefined,
    resume: undefined,
    sessionId: undefined,
    listSessions: undefined,
  } as unknown as CliArgs;

  beforeEach(() => {
    vi.clearAllMocks();
  });

  it('should load extensions by default', async () => {
    await loadCliConfig(settings, 'session-id', argv);
    expect(ExtensionManager).toHaveBeenCalled();
  });

  it('should skip extensions when skipExtensions is true', async () => {
    await loadCliConfig(settings, 'session-id', argv, { skipExtensions: true });
    expect(ExtensionManager).not.toHaveBeenCalled();
  });
});