Skip to content

Commit 8b3c69c

Browse files
committed
Fix tests
1 parent bfc669b commit 8b3c69c

File tree

4 files changed

+37
-28
lines changed

4 files changed

+37
-28
lines changed

src/vs/workbench/contrib/terminal/browser/terminalConfigurationService.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export class TerminalConfigurationService extends Disposable implements ITermina
1818

1919
protected _fontMetrics: TerminalFontMetrics;
2020

21-
private _config!: Readonly<ITerminalConfiguration>;
21+
protected _config!: Readonly<ITerminalConfiguration>;
2222
get config() { return this._config; }
2323

2424
private readonly _onConfigChanged = new Emitter<void>();
@@ -29,7 +29,7 @@ export class TerminalConfigurationService extends Disposable implements ITermina
2929
) {
3030
super();
3131

32-
this._fontMetrics = this._register(new TerminalFontMetrics(this, _configurationService));
32+
this._fontMetrics = this._register(new TerminalFontMetrics(this, this._configurationService));
3333

3434
this._register(Event.runAndSubscribe(this._configurationService.onDidChangeConfiguration, e => {
3535
if (!e || e.affectsConfiguration(TERMINAL_CONFIG_SECTION)) {
@@ -67,7 +67,7 @@ const enum FontConstants {
6767
MaximumFontSize = 100,
6868
}
6969

70-
class TerminalFontMetrics extends Disposable {
70+
export class TerminalFontMetrics extends Disposable {
7171
private _panelContainer: HTMLElement | undefined;
7272
private _charMeasureElement: HTMLElement | undefined;
7373
private _lastFontMeasurement: ITerminalFont | undefined;
@@ -107,8 +107,8 @@ class TerminalFontMetrics extends Disposable {
107107
getFont(w: Window, xtermCore?: IXtermCore, excludeDimensions?: boolean): ITerminalFont {
108108
const editorConfig = this._configurationService.getValue<IEditorOptions>('editor');
109109

110-
let fontFamily = this._terminalConfigurationService.config.fontFamily || editorConfig.fontFamily || EDITOR_FONT_DEFAULTS.fontFamily;
111-
let fontSize = clampInt(this._terminalConfigurationService.config.fontSize, FontConstants.MinimumFontSize, FontConstants.MaximumFontSize, EDITOR_FONT_DEFAULTS.fontSize);
110+
let fontFamily = this._terminalConfigurationService.config.fontFamily || editorConfig.fontFamily || EDITOR_FONT_DEFAULTS.fontFamily || 'monospace';
111+
let fontSize = clampInt(this._terminalConfigurationService.config.fontSize ?? 12, FontConstants.MinimumFontSize, FontConstants.MaximumFontSize, EDITOR_FONT_DEFAULTS.fontSize);
112112

113113
// Work around bad font on Fedora/Ubuntu
114114
if (!this._terminalConfigurationService.config.fontFamily) {

src/vs/workbench/contrib/terminal/test/browser/terminalConfigurationService.test.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,7 @@ import { ConfigurationTarget, IConfigurationService } from 'vs/platform/configur
1313
import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService';
1414
import { TestInstantiationService } from 'vs/platform/instantiation/test/common/instantiationServiceMock';
1515
import { ITerminalConfigurationService, LinuxDistro } from 'vs/workbench/contrib/terminal/browser/terminal';
16-
import { TerminalConfigurationService } from 'vs/workbench/contrib/terminal/browser/terminalConfigurationService';
17-
import { workbenchInstantiationService } from 'vs/workbench/test/browser/workbenchTestServices';
18-
19-
class TestTerminalConfigurationService extends TerminalConfigurationService {
20-
get fontMetrics() { return this._fontMetrics; }
21-
}
16+
import { TestTerminalConfigurationService, workbenchInstantiationService } from 'vs/workbench/test/browser/workbenchTestServices';
2217

2318
suite('Workbench - TerminalConfigurationService', () => {
2419
const store = ensureNoDisposablesAreLeakedInTestSuite();

src/vs/workbench/contrib/terminalContrib/suggest/test/browser/terminalSuggestAddon.integrationTest.ts

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import { TerminalContextKeys } from 'vs/workbench/contrib/terminal/common/termin
1717
import { parseCompletionsFromShell, SuggestAddon } from 'vs/workbench/contrib/terminalContrib/suggest/browser/terminalSuggestAddon';
1818
import { TerminalSuggestCommandId } from 'vs/workbench/contrib/terminalContrib/suggest/common/terminal.suggest';
1919
import type { ITerminalSuggestConfiguration } from 'vs/workbench/contrib/terminalContrib/suggest/common/terminalSuggestConfiguration';
20-
import { workbenchInstantiationService } from 'vs/workbench/test/browser/workbenchTestServices';
20+
import { workbenchInstantiationService, type TestTerminalConfigurationService } from 'vs/workbench/test/browser/workbenchTestServices';
2121

2222
import { events as macos_bash_echo_simple } from 'vs/workbench/contrib/terminalContrib/suggest/test/browser/recordings/macos_bash_echo_simple';
2323
import { events as macos_bash_echo_multiline } from 'vs/workbench/contrib/terminalContrib/suggest/test/browser/recordings/macos_bash_echo_multiline';
@@ -30,6 +30,7 @@ import { events as windows11_pwsh_writehost_multiline_nav_up } from 'vs/workbenc
3030
import { events as windows11_pwsh_writehost_multiline } from 'vs/workbench/contrib/terminalContrib/suggest/test/browser/recordings/windows11_pwsh_writehost_multiline';
3131
import { importAMDNodeModule } from 'vs/amdX';
3232
import { testRawPwshCompletions } from 'vs/workbench/contrib/terminalContrib/suggest/test/browser/testRawPwshCompletions';
33+
import { ITerminalConfigurationService } from 'vs/workbench/contrib/terminal/browser/terminal';
3334

3435
const recordedTestCases: { name: string; events: RecordedSessionEvent[] }[] = [
3536
{ name: 'macos_bash_echo_simple', events: macos_bash_echo_simple as any as RecordedSessionEvent[] },
@@ -70,25 +71,33 @@ suite('Terminal Contrib Suggest Recordings', () => {
7071
let suggestAddon: SuggestAddon;
7172

7273
setup(async () => {
74+
const terminalConfig = {
75+
fontFamily: 'monospace',
76+
fontSize: 12,
77+
fontWeight: 'normal',
78+
letterSpacing: 0,
79+
lineHeight: 1,
80+
integrated: {
81+
suggest: {
82+
enabled: true,
83+
quickSuggestions: true,
84+
suggestOnTriggerCharacters: true,
85+
runOnEnter: 'never',
86+
builtinCompletions: {
87+
pwshCode: true,
88+
pwshGit: true
89+
}
90+
} satisfies ITerminalSuggestConfiguration
91+
}
92+
};
7393
const instantiationService = workbenchInstantiationService({
7494
configurationService: () => new TestConfigurationService({
7595
files: { autoSave: false },
76-
terminal: {
77-
integrated: {
78-
suggest: {
79-
enabled: true,
80-
quickSuggestions: true,
81-
suggestOnTriggerCharacters: true,
82-
runOnEnter: 'never',
83-
builtinCompletions: {
84-
pwshCode: true,
85-
pwshGit: true
86-
}
87-
} satisfies ITerminalSuggestConfiguration
88-
}
89-
}
96+
terminal: terminalConfig
9097
})
9198
}, store);
99+
const terminalConfigurationService = instantiationService.get(ITerminalConfigurationService) as TestTerminalConfigurationService;
100+
terminalConfigurationService.setConfig(terminalConfig as any);
92101
const TerminalCtor = (await importAMDNodeModule<typeof import('@xterm/xterm')>('@xterm/xterm', 'lib/xterm.js')).Terminal;
93102
xterm = store.add(new TerminalCtor({ allowProposedApi: true }));
94103
const shellIntegrationAddon = store.add(new ShellIntegrationAddon('', true, undefined, new NullLogService));

src/vs/workbench/test/browser/workbenchTestServices.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ import { IWorkspaceTrustManagementService, IWorkspaceTrustRequestService } from
124124
import { IExtensionTerminalProfile, IShellLaunchConfig, ITerminalBackend, ITerminalLogService, ITerminalProfile, TerminalIcon, TerminalLocation, TerminalShellType } from 'vs/platform/terminal/common/terminal';
125125
import { ICreateTerminalOptions, IDeserializedTerminalEditorInput, ITerminalConfigurationService, ITerminalEditorService, ITerminalGroup, ITerminalGroupService, ITerminalInstance, ITerminalInstanceService, TerminalEditorLocation } from 'vs/workbench/contrib/terminal/browser/terminal';
126126
import { assertIsDefined, upcast } from 'vs/base/common/types';
127-
import { IRegisterContributedProfileArgs, IShellLaunchConfigResolveOptions, ITerminalProfileProvider, ITerminalProfileResolverService, ITerminalProfileService } from 'vs/workbench/contrib/terminal/common/terminal';
127+
import { IRegisterContributedProfileArgs, IShellLaunchConfigResolveOptions, ITerminalProfileProvider, ITerminalProfileResolverService, ITerminalProfileService, type ITerminalConfiguration } from 'vs/workbench/contrib/terminal/common/terminal';
128128
import { EditorResolverService } from 'vs/workbench/services/editor/browser/editorResolverService';
129129
import { FILE_EDITOR_INPUT_ID } from 'vs/workbench/contrib/files/common/files';
130130
import { IEditorResolverService } from 'vs/workbench/services/editor/common/editorResolverService';
@@ -351,7 +351,7 @@ export function workbenchInstantiationService(
351351
instantiationService.stub(ITerminalInstanceService, new TestTerminalInstanceService());
352352
instantiationService.stub(ITerminalProfileService, new TestTerminalProfileService());
353353
instantiationService.stub(ITerminalProfileResolverService, new TestTerminalProfileResolverService());
354-
instantiationService.stub(ITerminalConfigurationService, disposables.add(instantiationService.createInstance(TerminalConfigurationService)));
354+
instantiationService.stub(ITerminalConfigurationService, disposables.add(instantiationService.createInstance(TestTerminalConfigurationService)));
355355
instantiationService.stub(ITerminalLogService, disposables.add(instantiationService.createInstance(TerminalLogService)));
356356
instantiationService.stub(IEnvironmentVariableService, disposables.add(instantiationService.createInstance(EnvironmentVariableService)));
357357
instantiationService.stub(IElevatedFileService, new BrowserElevatedFileService());
@@ -2073,6 +2073,11 @@ export class TestTerminalProfileResolverService implements ITerminalProfileResol
20732073
createProfileFromShellAndShellArgs(shell?: unknown, shellArgs?: unknown): Promise<string | ITerminalProfile> { throw new Error('Method not implemented.'); }
20742074
}
20752075

2076+
export class TestTerminalConfigurationService extends TerminalConfigurationService {
2077+
get fontMetrics() { return this._fontMetrics; }
2078+
setConfig(config: Partial<ITerminalConfiguration>) { this._config = config as any; }
2079+
}
2080+
20762081
export class TestQuickInputService implements IQuickInputService {
20772082
declare readonly _serviceBrand: undefined;
20782083

0 commit comments

Comments
 (0)