Skip to content

Commit 1e4b232

Browse files
author
Kartik Raj
committed
Refactor more stuff
1 parent e8304f3 commit 1e4b232

File tree

2 files changed

+16
-35
lines changed

2 files changed

+16
-35
lines changed

src/client/terminals/activation.ts

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44
'use strict';
55

66
import { inject, injectable } from 'inversify';
7-
import { Terminal, Uri } from 'vscode';
8-
import { IExtensionSingleActivationService } from '../activation/types';
7+
import { Terminal } from 'vscode';
8+
import { IActiveResourceService, IExtensionSingleActivationService } from '../activation/types';
99
import {
10-
ICommandManager, IDocumentManager, ITerminalManager, IWorkspaceService
10+
ICommandManager, ITerminalManager
1111
} from '../common/application/types';
1212
import { CODE_RUNNER_EXTENSION_ID } from '../common/constants';
1313
import { ITerminalActivator } from '../common/terminal/types';
@@ -49,9 +49,8 @@ export class TerminalAutoActivation implements ITerminalAutoActivation {
4949
constructor(
5050
@inject(ITerminalManager) private readonly terminalManager: ITerminalManager,
5151
@inject(IDisposableRegistry) disposableRegistry: IDisposableRegistry,
52-
@inject(IDocumentManager) private readonly documentManager: IDocumentManager,
5352
@inject(ITerminalActivator) private readonly activator: ITerminalActivator,
54-
@inject(IWorkspaceService) private readonly workspaceService: IWorkspaceService
53+
@inject(IActiveResourceService) private readonly activeResourceService: IActiveResourceService
5554
) {
5655
disposableRegistry.push(this);
5756
}
@@ -70,14 +69,6 @@ export class TerminalAutoActivation implements ITerminalAutoActivation {
7069
private async activateTerminal(terminal: Terminal): Promise<void> {
7170
// If we have just one workspace, then pass that as the resource.
7271
// Until upstream VSC issue is resolved https://github.com/Microsoft/vscode/issues/63052.
73-
await this.activator.activateEnvironmentInTerminal(terminal, this.getActiveResource());
74-
}
75-
76-
private getActiveResource(): Uri | undefined {
77-
if (this.documentManager.activeTextEditor && !this.documentManager.activeTextEditor.document.isUntitled) {
78-
return this.documentManager.activeTextEditor.document.uri;
79-
}
80-
81-
return Array.isArray(this.workspaceService.workspaceFolders) && this.workspaceService.workspaceFolders.length > 0 ? this.workspaceService.workspaceFolders[0].uri : undefined;
72+
await this.activator.activateEnvironmentInTerminal(terminal, this.activeResourceService.getActiveResource());
8273
}
8374
}

src/test/common/terminals/activation.unit.test.ts

Lines changed: 11 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ import { expect } from 'chai';
66
import { anything, instance, mock, verify, when } from 'ts-mockito';
77
import * as TypeMoq from 'typemoq';
88
import { Terminal, Uri } from 'vscode';
9-
import { DocumentManager } from '../../../client/common/application/documentManager';
9+
import { ActiveResourceService } from '../../../client/activation/activeResource';
10+
import { IActiveResourceService } from '../../../client/activation/types';
1011
import { TerminalManager } from '../../../client/common/application/terminalManager';
11-
import { IDocumentManager, ITerminalManager, IWorkspaceService } from '../../../client/common/application/types';
12-
import { WorkspaceService } from '../../../client/common/application/workspace';
12+
import { ITerminalManager } from '../../../client/common/application/types';
1313
import { TerminalActivator } from '../../../client/common/terminal/activator';
1414
import { ITerminalActivator } from '../../../client/common/terminal/types';
1515
import { IDisposable } from '../../../client/common/types';
@@ -18,23 +18,21 @@ import { ITerminalAutoActivation } from '../../../client/terminals/types';
1818

1919
suite('Terminal Auto Activation', () => {
2020
let activator: ITerminalActivator;
21-
let documentManager: IDocumentManager;
2221
let terminalManager: ITerminalManager;
2322
let terminalAutoActivation: ITerminalAutoActivation;
24-
let workspaceService: IWorkspaceService;
23+
let activeResourceService: IActiveResourceService;
24+
const resource = Uri.parse('a');
2525

2626
setup(() => {
2727
terminalManager = mock(TerminalManager);
28-
documentManager = mock(DocumentManager);
2928
activator = mock(TerminalActivator);
30-
workspaceService = mock(WorkspaceService);
29+
activeResourceService = mock(ActiveResourceService);
3130

3231
terminalAutoActivation = new TerminalAutoActivation(
3332
instance(terminalManager),
3433
[],
35-
instance(documentManager),
3634
instance(activator),
37-
instance(workspaceService)
35+
instance(activeResourceService)
3836
);
3937
});
4038

@@ -47,17 +45,17 @@ suite('Terminal Auto Activation', () => {
4745
handler = cb;
4846
return handlerDisposable.object;
4947
};
48+
when(activeResourceService.getActiveResource()).thenReturn(resource);
5049
when(terminalManager.onDidOpenTerminal).thenReturn(onDidOpenTerminal);
5150
when(activator.activateEnvironmentInTerminal(anything(), anything(), anything())).thenResolve();
52-
when(workspaceService.hasWorkspaceFolders).thenReturn(false);
5351

5452
terminalAutoActivation.register();
5553

5654
expect(handler).not.to.be.an('undefined', 'event handler not initialized');
5755

5856
handler!.bind(terminalAutoActivation)(terminal.object);
5957

60-
verify(activator.activateEnvironmentInTerminal(terminal.object, undefined)).once();
58+
verify(activator.activateEnvironmentInTerminal(terminal.object, resource)).once();
6159
});
6260
test('New Terminals should be activated with resource of single workspace', async () => {
6361
type EventHandler = (e: Terminal) => void;
@@ -68,11 +66,9 @@ suite('Terminal Auto Activation', () => {
6866
handler = cb;
6967
return handlerDisposable.object;
7068
};
71-
const resource = Uri.file(__filename);
69+
when(activeResourceService.getActiveResource()).thenReturn(resource);
7270
when(terminalManager.onDidOpenTerminal).thenReturn(onDidOpenTerminal);
7371
when(activator.activateEnvironmentInTerminal(anything(), anything(), anything())).thenResolve();
74-
when(workspaceService.hasWorkspaceFolders).thenReturn(true);
75-
when(workspaceService.workspaceFolders).thenReturn([{ index: 0, name: '', uri: resource }]);
7672

7773
terminalAutoActivation.register();
7874

@@ -91,15 +87,9 @@ suite('Terminal Auto Activation', () => {
9187
handler = cb;
9288
return handlerDisposable.object;
9389
};
94-
const resource = Uri.file(__filename);
90+
when(activeResourceService.getActiveResource()).thenReturn(resource);
9591
when(terminalManager.onDidOpenTerminal).thenReturn(onDidOpenTerminal);
9692
when(activator.activateEnvironmentInTerminal(anything(), anything(), anything())).thenResolve();
97-
when(workspaceService.hasWorkspaceFolders).thenReturn(true);
98-
when(workspaceService.workspaceFolders).thenReturn([
99-
{ index: 0, name: '', uri: resource },
100-
{ index: 2, name: '2', uri: Uri.file('1234') }
101-
]);
102-
10393
terminalAutoActivation.register();
10494

10595
expect(handler).not.to.be.an('undefined', 'event handler not initialized');

0 commit comments

Comments
 (0)