Skip to content

Show notification reaffirming Python extension still handles activation when in pythonTerminalEnvVarActivation experiment #21802

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 18 commits into from
Aug 15, 2023
Prev Previous commit
Next Next commit
Ouch
  • Loading branch information
Kartik Raj committed Aug 14, 2023
commit b3300fa4868cea1cc761c62884e2d64385cba50b
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,12 @@
import { inject, injectable } from 'inversify';
import { Uri } from 'vscode';
import { IActiveResourceService, IApplicationShell, ITerminalManager } from '../../common/application/types';
import { IDisposableRegistry, IExperimentService, IPersistentStateFactory } from '../../common/types';
import {
IConfigurationService,
IDisposableRegistry,
IExperimentService,
IPersistentStateFactory,
} from '../../common/types';
import { Common, Interpreters } from '../../common/utils/localize';
import { IExtensionSingleActivationService } from '../../activation/types';
import { ITerminalEnvVarCollectionService } from './types';
Expand All @@ -24,6 +29,7 @@ export class TerminalEnvVarCollectionPrompt implements IExtensionSingleActivatio
@inject(IActiveResourceService) private readonly activeResourceService: IActiveResourceService,
@inject(ITerminalEnvVarCollectionService)
private readonly terminalEnvVarCollectionService: ITerminalEnvVarCollectionService,
@inject(IConfigurationService) private readonly configurationService: IConfigurationService,
@inject(IExperimentService) private readonly experimentService: IExperimentService,
) {}

Expand All @@ -38,9 +44,15 @@ export class TerminalEnvVarCollectionPrompt implements IExtensionSingleActivatio
? terminal.creationOptions.cwd
: this.activeResourceService.getActiveResource();
const resource = typeof cwd === 'string' ? Uri.file(cwd) : cwd;
if (!this.terminalEnvVarCollectionService.isTerminalPromptSetCorrectly(resource)) {
await this.notifyUsers();
const settings = this.configurationService.getSettings(resource);
if (!settings.terminal.activateEnvironment) {
return;
}
if (this.terminalEnvVarCollectionService.isTerminalPromptSetCorrectly(resource)) {
// No need to show notification if terminal prompt already indicates when env is activated.
return;
}
await this.notifyUsers();
}),
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,13 @@
import { mock, when, anything, instance, verify, reset } from 'ts-mockito';
import { EventEmitter, Terminal, Uri } from 'vscode';
import { IActiveResourceService, IApplicationShell, ITerminalManager } from '../../../client/common/application/types';
import { IExperimentService, IPersistentState, IPersistentStateFactory } from '../../../client/common/types';
import {
IConfigurationService,
IExperimentService,
IPersistentState,
IPersistentStateFactory,
IPythonSettings,
} from '../../../client/common/types';
import { TerminalEnvVarCollectionPrompt } from '../../../client/interpreter/activation/terminalEnvVarCollectionPrompt';
import { ITerminalEnvVarCollectionService } from '../../../client/interpreter/activation/types';
import { Common, Interpreters } from '../../../client/common/utils/localize';
Expand All @@ -23,6 +29,7 @@ suite('Terminal Environment Variable Collection Prompt', () => {
let terminalEnvVarCollectionPrompt: TerminalEnvVarCollectionPrompt;
let terminalEventEmitter: EventEmitter<Terminal>;
let notificationEnabled: IPersistentState<boolean>;
let configurationService: IConfigurationService;
const prompts = [Common.doNotShowAgain];
const message = Interpreters.terminalEnvVarCollectionPrompt;

Expand All @@ -33,6 +40,12 @@ suite('Terminal Environment Variable Collection Prompt', () => {
activeResourceService = mock<IActiveResourceService>();
persistentStateFactory = mock<IPersistentStateFactory>();
terminalEnvVarCollectionService = mock<ITerminalEnvVarCollectionService>();
configurationService = mock<IConfigurationService>();
when(configurationService.getSettings(anything())).thenReturn(({
terminal: {
activateEnvironment: true,
},
} as unknown) as IPythonSettings);
notificationEnabled = mock<IPersistentState<boolean>>();
terminalEventEmitter = new EventEmitter<Terminal>();
when(persistentStateFactory.createGlobalPersistentState(anything(), true)).thenReturn(
Expand All @@ -47,6 +60,7 @@ suite('Terminal Environment Variable Collection Prompt', () => {
[],
instance(activeResourceService),
instance(terminalEnvVarCollectionService),
instance(configurationService),
instance(experimentService),
);
});
Expand Down