Skip to content

Commit 9414956

Browse files
authored
Lint files from sort interpreter and autoselection PRs (microsoft#16689)
* Linting changes for env sorting * Lint all files under autoSelection/
1 parent 7e91c5d commit 9414956

File tree

15 files changed

+70
-60
lines changed

15 files changed

+70
-60
lines changed

.eslintignore

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,6 @@ src/test/interpreters/mocks.ts
4141
src/test/interpreters/interpreterVersion.unit.test.ts
4242
src/test/interpreters/virtualEnvs/index.unit.test.ts
4343
src/test/interpreters/virtualEnvs/condaInheritEnvPrompt.unit.test.ts
44-
src/test/interpreters/autoSelection/rules/settings.unit.test.ts
45-
src/test/interpreters/autoSelection/rules/cached.unit.test.ts
46-
src/test/interpreters/autoSelection/rules/winRegistry.unit.test.ts
47-
src/test/interpreters/autoSelection/rules/base.unit.test.ts
48-
src/test/interpreters/autoSelection/rules/currentPath.unit.test.ts
49-
src/test/interpreters/autoSelection/rules/system.unit.test.ts
5044
src/test/interpreters/virtualEnvManager.unit.test.ts
5145
src/test/interpreters/pythonPathUpdaterFactory.unit.test.ts
5246
src/test/interpreters/activation/service.unit.test.ts
@@ -276,7 +270,6 @@ src/test/workspaceSymbols/common.ts
276270
src/test/workspaceSymbols/main.unit.test.ts
277271
src/test/workspaceSymbols/generator.unit.test.ts
278272

279-
src/client/interpreter/configuration/interpreterComparer.ts
280273
src/client/interpreter/configuration/interpreterSelector/commands/base.ts
281274
src/client/interpreter/configuration/interpreterSelector/commands/resetInterpreter.ts
282275
src/client/interpreter/configuration/interpreterSelector/commands/setShebangInterpreter.ts
@@ -288,12 +281,6 @@ src/client/interpreter/helpers.ts
288281
src/client/interpreter/virtualEnvs/condaInheritEnvPrompt.ts
289282
src/client/interpreter/virtualEnvs/types.ts
290283
src/client/interpreter/virtualEnvs/index.ts
291-
src/client/interpreter/autoSelection/rules/baseRule.ts
292-
src/client/interpreter/autoSelection/rules/winRegistry.ts
293-
src/client/interpreter/autoSelection/rules/settings.ts
294-
src/client/interpreter/autoSelection/rules/currentPath.ts
295-
src/client/interpreter/autoSelection/rules/cached.ts
296-
src/client/interpreter/autoSelection/rules/system.ts
297284
src/client/interpreter/activation/service.ts
298285
src/client/interpreter/display/shebangCodeLensProvider.ts
299286
src/client/interpreter/display/index.ts

src/client/interpreter/autoSelection/constants.ts

Lines changed: 0 additions & 10 deletions
This file was deleted.

src/client/interpreter/autoSelection/rules/baseRule.ts

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ export enum NextAction {
2323
@injectable()
2424
export abstract class BaseRuleService implements IInterpreterAutoSelectionRule {
2525
protected nextRule?: IInterpreterAutoSelectionRule;
26+
2627
private readonly stateStore: IPersistentState<PythonEnvironment | undefined>;
28+
2729
constructor(
2830
@unmanaged() protected readonly ruleName: AutoSelectionRule,
2931
@inject(IFileSystem) private readonly fs: IFileSystem,
@@ -34,9 +36,11 @@ export abstract class BaseRuleService implements IInterpreterAutoSelectionRule {
3436
undefined,
3537
);
3638
}
39+
3740
public setNextRule(rule: IInterpreterAutoSelectionRule): void {
3841
this.nextRule = rule;
3942
}
43+
4044
@traceDecorators.verbose('autoSelectInterpreter')
4145
public async autoSelectInterpreter(resource: Resource, manager?: IInterpreterAutoSelectionService): Promise<void> {
4246
await this.clearCachedInterpreterIfInvalid(resource);
@@ -53,15 +57,18 @@ export abstract class BaseRuleService implements IInterpreterAutoSelectionRule {
5357
await this.next(resource, manager);
5458
}
5559
}
60+
5661
public getPreviouslyAutoSelectedInterpreter(_resource: Resource): PythonEnvironment | undefined {
57-
const value = this.stateStore.value;
62+
const { value } = this.stateStore;
5863
traceVerbose(`Current value for rule ${this.ruleName} is ${value ? JSON.stringify(value) : 'nothing'}`);
5964
return value;
6065
}
66+
6167
protected abstract onAutoSelectInterpreter(
6268
resource: Resource,
6369
manager?: IInterpreterAutoSelectionService,
6470
): Promise<NextAction>;
71+
6572
@traceDecorators.verbose('setGlobalInterpreter')
6673
protected async setGlobalInterpreter(
6774
interpreter?: PythonEnvironment,
@@ -86,7 +93,8 @@ export abstract class BaseRuleService implements IInterpreterAutoSelectionRule {
8693

8794
return false;
8895
}
89-
protected async clearCachedInterpreterIfInvalid(resource: Resource) {
96+
97+
protected async clearCachedInterpreterIfInvalid(resource: Resource): Promise<void> {
9098
if (!this.stateStore.value || (await this.fs.fileExists(this.stateStore.value.path))) {
9199
return;
92100
}
@@ -97,13 +105,18 @@ export abstract class BaseRuleService implements IInterpreterAutoSelectionRule {
97105
);
98106
await this.cacheSelectedInterpreter(resource, undefined);
99107
}
100-
protected async cacheSelectedInterpreter(_resource: Resource, interpreter: PythonEnvironment | undefined) {
108+
109+
protected async cacheSelectedInterpreter(
110+
_resource: Resource,
111+
interpreter: PythonEnvironment | undefined,
112+
): Promise<void> {
101113
const interpreterPath = interpreter ? interpreter.path : '';
102114
const interpreterPathInCache = this.stateStore.value ? this.stateStore.value.path : '';
103115
const updated = interpreterPath === interpreterPathInCache;
104116
sendTelemetryEvent(EventName.PYTHON_INTERPRETER_AUTO_SELECTION, {}, { rule: this.ruleName, updated });
105117
await this.stateStore.updateValue(interpreter);
106118
}
119+
107120
protected async next(resource: Resource, manager?: IInterpreterAutoSelectionService): Promise<void> {
108121
traceVerbose(`Executing next rule from ${this.ruleName}`);
109122
return this.nextRule && manager ? this.nextRule.autoSelectInterpreter(resource, manager) : undefined;

src/client/interpreter/autoSelection/rules/cached.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import { BaseRuleService, NextAction } from './baseRule';
1414
@injectable()
1515
export class CachedInterpretersAutoSelectionRule extends BaseRuleService {
1616
protected readonly rules: IInterpreterAutoSelectionRule[];
17+
1718
constructor(
1819
@inject(IFileSystem) fs: IFileSystem,
1920
@inject(IInterpreterHelper) private readonly helper: IInterpreterHelper,
@@ -31,6 +32,7 @@ export class CachedInterpretersAutoSelectionRule extends BaseRuleService {
3132
super(AutoSelectionRule.cachedInterpreters, fs, stateFactory);
3233
this.rules = [systemInterpreter, currentPathInterpreter, winRegInterpreter];
3334
}
35+
3436
protected async onAutoSelectInterpreter(
3537
resource: Resource,
3638
manager?: IInterpreterAutoSelectionService,

src/client/interpreter/autoSelection/rules/currentPath.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,12 @@ export class CurrentPathInterpretersAutoSelectionRule extends BaseRuleService {
3131
) {
3232
super(AutoSelectionRule.currentPath, fs, stateFactory);
3333
}
34+
3435
protected async onAutoSelectInterpreter(
3536
resource: Resource,
3637
manager?: IInterpreterAutoSelectionService,
3738
): Promise<NextAction> {
38-
let interpreters = (await inDiscoveryExperiment(this.experimentService))
39+
const interpreters = (await inDiscoveryExperiment(this.experimentService))
3940
? await this.pyenvs.getInterpreters(resource, undefined, [PythonEnvSource.PathEnvVar])
4041
: await this.serviceContainer
4142
.get<IInterpreterLocatorService>(IInterpreterLocatorService, CURRENT_PATH_SERVICE)

src/client/interpreter/autoSelection/rules/settings.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,12 @@ export class SettingsInterpretersAutoSelectionRule extends BaseRuleService {
2222
) {
2323
super(AutoSelectionRule.settings, fs, stateFactory);
2424
}
25+
2526
protected async onAutoSelectInterpreter(
2627
_resource: Resource,
2728
_manager?: IInterpreterAutoSelectionService,
2829
): Promise<NextAction> {
29-
const pythonConfig = this.workspaceService.getConfiguration('python', null as any)!;
30+
const pythonConfig = this.workspaceService.getConfiguration('python')!;
3031
const pythonPathInConfig = this.experiments.inExperimentSync(DeprecatePythonPath.experiment)
3132
? this.interpreterPathService.inspect(undefined)
3233
: pythonConfig.inspect<string>('pythonPath')!;

src/client/interpreter/autoSelection/rules/system.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export class SystemWideInterpretersAutoSelectionRule extends BaseRuleService {
2222
) {
2323
super(AutoSelectionRule.systemWide, fs, stateFactory);
2424
}
25+
2526
protected async onAutoSelectInterpreter(
2627
resource: Resource,
2728
manager?: IInterpreterAutoSelectionService,

src/client/interpreter/autoSelection/rules/winRegistry.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ export class WindowsRegistryInterpretersAutoSelectionRule extends BaseRuleServic
3333
) {
3434
super(AutoSelectionRule.windowsRegistry, fs, stateFactory);
3535
}
36+
3637
protected async onAutoSelectInterpreter(
3738
resource: Resource,
3839
manager?: IInterpreterAutoSelectionService,

src/client/interpreter/configuration/interpreterComparer.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { IInterpreterComparer } from './types';
1212
@injectable()
1313
export class InterpreterComparer implements IInterpreterComparer {
1414
constructor(@inject(IInterpreterHelper) private readonly interpreterHelper: IInterpreterHelper) {}
15+
1516
public compare(a: PythonEnvironment, b: PythonEnvironment): number {
1617
const nameA = getSortName(a, this.interpreterHelper);
1718
const nameB = getSortName(b, this.interpreterHelper);

src/test/interpreters/autoSelection/rules/base.unit.test.ts

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,19 @@ suite('Interpreters - Auto Selection - Base Rule', () => {
3030
public async next(resource: Resource, manager?: IInterpreterAutoSelectionService): Promise<void> {
3131
return super.next(resource, manager);
3232
}
33+
3334
public async cacheSelectedInterpreter(resource: Resource, interpreter: PythonEnvironment | undefined) {
3435
return super.cacheSelectedInterpreter(resource, interpreter);
3536
}
37+
3638
public async setGlobalInterpreter(
3739
interpreter?: PythonEnvironment,
3840
manager?: IInterpreterAutoSelectionService,
3941
): Promise<boolean> {
4042
return super.setGlobalInterpreter(interpreter, manager);
4143
}
44+
45+
// eslint-disable-next-line class-methods-use-this
4246
protected async onAutoSelectInterpreter(
4347
_resource: Uri,
4448
_manager?: IInterpreterAutoSelectionService,
@@ -97,7 +101,7 @@ suite('Interpreters - Auto Selection - Base Rule', () => {
97101
});
98102
test('State store must be updated', async () => {
99103
const resource = Uri.parse('x');
100-
const interpreterInfo = { x: '1324' } as any;
104+
const interpreterInfo = ({ x: '1324' } as unknown) as PythonEnvironment;
101105
when(state.updateValue(anything())).thenResolve();
102106

103107
await rule.cacheSelectedInterpreter(resource, interpreterInfo);
@@ -106,7 +110,7 @@ suite('Interpreters - Auto Selection - Base Rule', () => {
106110
});
107111
test('State store must be cleared when file does not exist', async () => {
108112
const resource = Uri.parse('x');
109-
const interpreterInfo = { path: '1324' } as any;
113+
const interpreterInfo = ({ path: '1324' } as unknown) as PythonEnvironment;
110114
when(state.value).thenReturn(interpreterInfo);
111115
when(state.updateValue(anything())).thenResolve();
112116
when(fs.fileExists(interpreterInfo.path)).thenResolve(false);
@@ -119,7 +123,7 @@ suite('Interpreters - Auto Selection - Base Rule', () => {
119123
});
120124
test('State store must not be cleared when file exists', async () => {
121125
const resource = Uri.parse('x');
122-
const interpreterInfo = { path: '1324' } as any;
126+
const interpreterInfo = ({ path: '1324' } as unknown) as PythonEnvironment;
123127
when(state.value).thenReturn(interpreterInfo);
124128
when(state.updateValue(anything())).thenResolve();
125129
when(fs.fileExists(interpreterInfo.path)).thenResolve(true);
@@ -139,15 +143,15 @@ suite('Interpreters - Auto Selection - Base Rule', () => {
139143
});
140144
test('Get value from state store', async () => {
141145
const stateStoreValue = 'x';
142-
when(state.value).thenReturn(stateStoreValue as any);
146+
when(state.value).thenReturn((stateStoreValue as unknown) as PythonEnvironment);
143147

144148
expect(rule.getPreviouslyAutoSelectedInterpreter(Uri.parse('x'))).to.be.equal(stateStoreValue);
145149

146150
verify(state.value).atLeast(1);
147151
});
148152
test('setGlobalInterpreter should do nothing if interpreter is undefined or version is empty', async () => {
149153
const manager = mock(InterpreterAutoSelectionService);
150-
const interpreterInfo = { path: '1324' } as any;
154+
const interpreterInfo = ({ path: '1324' } as unknown) as PythonEnvironment;
151155

152156
const result1 = await rule.setGlobalInterpreter(undefined, instance(manager));
153157
const result2 = await rule.setGlobalInterpreter(interpreterInfo, instance(manager));
@@ -158,8 +162,8 @@ suite('Interpreters - Auto Selection - Base Rule', () => {
158162
});
159163
test('setGlobalInterpreter should not update manager if interpreter is not better than one stored in manager', async () => {
160164
const manager = mock(InterpreterAutoSelectionService);
161-
const interpreterInfo = { path: '1324', version: new SemVer('1.0.0') } as any;
162-
const interpreterInfoInManager = { path: '2', version: new SemVer('2.0.0') } as any;
165+
const interpreterInfo = ({ path: '1324', version: new SemVer('1.0.0') } as unknown) as PythonEnvironment;
166+
const interpreterInfoInManager = ({ path: '2', version: new SemVer('2.0.0') } as unknown) as PythonEnvironment;
163167
when(manager.getAutoSelectedInterpreter(undefined)).thenReturn(interpreterInfoInManager);
164168

165169
const result = await rule.setGlobalInterpreter(interpreterInfo, instance(manager));
@@ -170,8 +174,8 @@ suite('Interpreters - Auto Selection - Base Rule', () => {
170174
});
171175
test('setGlobalInterpreter should update manager if interpreter is better than one stored in manager', async () => {
172176
const manager = mock(InterpreterAutoSelectionService);
173-
const interpreterInfo = { path: '1324', version: new SemVer('3.0.0') } as any;
174-
const interpreterInfoInManager = { path: '2', version: new SemVer('2.0.0') } as any;
177+
const interpreterInfo = ({ path: '1324', version: new SemVer('3.0.0') } as unknown) as PythonEnvironment;
178+
const interpreterInfoInManager = ({ path: '2', version: new SemVer('2.0.0') } as unknown) as PythonEnvironment;
175179
when(manager.getAutoSelectedInterpreter(undefined)).thenReturn(interpreterInfoInManager);
176180

177181
const result = await rule.setGlobalInterpreter(interpreterInfo, instance(manager));

0 commit comments

Comments
 (0)