Skip to content

Commit a13ad19

Browse files
committed
modify to use clipboard object
1 parent ebf0c20 commit a13ad19

2 files changed

Lines changed: 16 additions & 11 deletions

File tree

src/client/application/importPath/copyImportPathCommand.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import * as path from 'path';
22
import * as vscode from 'vscode';
33
import { inject, injectable } from 'inversify';
44

5-
import { ICommandManager, IWorkspaceService } from '../../common/application/types';
5+
import { IClipboard, ICommandManager, IWorkspaceService } from '../../common/application/types';
66
import { IExtensionSingleActivationService } from '../../activation/types';
77
import { Commands } from '../../common/constants';
88
import { getSysPath } from '../../common/utils/pythonUtils';
@@ -14,6 +14,7 @@ export class CopyImportPathCommand implements IExtensionSingleActivationService
1414
constructor(
1515
@inject(ICommandManager) private readonly commands: ICommandManager,
1616
@inject(IWorkspaceService) private readonly workspace: IWorkspaceService,
17+
@inject(IClipboard) private readonly clipboard: IClipboard,
1718
) {}
1819

1920
async activate(): Promise<void> {
@@ -28,7 +29,8 @@ export class CopyImportPathCommand implements IExtensionSingleActivationService
2829
}
2930

3031
const importPath = this.resolveImportPath(uri.fsPath);
31-
await vscode.env.clipboard.writeText(importPath);
32+
// await vscode.env.clipboard.writeText(importPath);
33+
await this.clipboard.writeText(importPath);
3234
void vscode.window.showInformationMessage(`Copied: ${importPath}`);
3335
}
3436

src/test/application/importPath/copyImportPathCommand.unit.test.ts

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,28 +7,32 @@ import { anything, instance, mock, verify, when } from 'ts-mockito';
77
import { expect } from 'chai';
88
import * as vscode from 'vscode';
99
import { CopyImportPathCommand } from '../../../client/application/importPath/copyImportPathCommand';
10-
import { ICommandManager, IWorkspaceService } from '../../../client/common/application/types';
10+
import { IClipboard, ICommandManager, IWorkspaceService } from '../../../client/common/application/types';
1111
import * as pythonUtils from '../../../client/common/utils/pythonUtils';
12+
import { ClipboardService } from '../../../client/common/application/clipboard';
13+
import { CommandManager } from '../../../client/common/application/commandManager';
14+
import { WorkspaceService } from '../../../client/common/application/workspace';
1215

1316
suite('Copy Import Path Command', () => {
1417
let command: CopyImportPathCommand;
1518
let commandManager: ICommandManager;
1619
let workspaceService: IWorkspaceService;
20+
let clipboard: IClipboard;
1721
let originalGetSysPath: () => string[];
1822

1923
let clipboardText = '';
2024

2125
setup(() => {
22-
commandManager = mock<ICommandManager>();
23-
workspaceService = mock<IWorkspaceService>();
24-
command = new CopyImportPathCommand(instance(commandManager), instance(workspaceService));
26+
commandManager = mock(CommandManager);
27+
workspaceService = mock(WorkspaceService);
28+
clipboard = mock(ClipboardService);
29+
command = new CopyImportPathCommand(instance(commandManager), instance(workspaceService), instance(clipboard));
2530
originalGetSysPath = pythonUtils.getSysPath;
2631

2732
clipboardText = '';
28-
29-
(vscode.env.clipboard as typeof vscode.env.clipboard).writeText = async (text: string) => {
33+
when(clipboard.writeText(anything())).thenCall(async (text: string) => {
3034
clipboardText = text;
31-
};
35+
});
3236
});
3337

3438
teardown(() => {
@@ -43,8 +47,7 @@ suite('Copy Import Path Command', () => {
4347
test('execute() – sys.path match takes precedence', async () => {
4448
const absPath = '/home/user/project/src/pkg/module.py';
4549
const uri = vscode.Uri.file(absPath);
46-
((pythonUtils as unknown) as { getSysPath: () => string[] }).getSysPath = originalGetSysPath;
47-
// ((pythonUtils as unknown) as { getSysPath: () => string[] }).getSysPath = () => ['/home/user/project/src'];
50+
((pythonUtils as unknown) as { getSysPath: () => string[] }).getSysPath = () => ['/home/user/project/src'];
4851

4952
when(workspaceService.getWorkspaceFolder(anything())).thenReturn(undefined);
5053
((vscode.window as unknown) as { activeTextEditor: { document: { uri: vscode.Uri } } }).activeTextEditor = {

0 commit comments

Comments
 (0)