From f7552fb74669f1f4d014b97c8f3e0e5d77466297 Mon Sep 17 00:00:00 2001 From: Lewis Sanchez <87730006+lewis-sanchez@users.noreply.github.com> Date: Tue, 11 Jul 2023 16:02:16 -0700 Subject: [PATCH] Fix flaky ADS unit tests by using DOM rendering (#23770) (#23781) * Makes use of xvfb to run unit tests * Restore test script as before, but with xvfb * Use same command that worked in CLI * Add --build CLI arg * Add coverage arg * Revert change to core unit test script * Reset core unit tests script in linux pipeline * Revert "Skip flaky vscode test suites (#23535)" This reverts commit 882bdb3aab690578428c88741194faaa21983753. * Revert "Disable failing vscode test suite (#23539)" This reverts commit 562a0ce595b86873dfc5217e92885c38d98444f4. * Revert "Disable vscode remote configuration suite (#23545)" This reverts commit 40fa1cebd83be6fbcff2e437783904ca1958374d. * Revert "Disable editor resolver service test suite (#23550)" This reverts commit cd68dca84438a7f4cb3914780f17c571a027b64c. * Revert "Disable upstream extension enablement suite (#23557)" This reverts commit faf3c6976e11490cd42930a0477388178aead075. * Revert "Skip a few more suites impacted by xterm issue (#23589)" This reverts commit 1662cedf17a632309dbe1c7f9f061663ae437bef. # Conflicts: # src/vs/workbench/contrib/experiments/test/electron-sandbox/experimentService.test.ts * Use DOM Renderer for tests * Remove extra whitespace * Update comment --- .../test/common/testConfigurationService.ts | 17 +++++++++++++++++ .../electron-sandbox/experimentService.test.ts | 2 +- .../test/browser/bufferContentTracker.test.ts | 2 +- .../test/browser/terminalLinkManager.test.ts | 2 +- .../gettingStartedMarkdownRenderer.test.ts | 2 +- .../test/browser/configuration.test.ts | 2 +- .../test/browser/configurationEditing.test.ts | 2 +- .../test/browser/configurationService.test.ts | 4 ++-- .../configurationResolverService.test.ts | 2 +- .../test/browser/editorResolverService.test.ts | 2 +- .../browser/extensionEnablementService.test.ts | 2 +- .../test/browser/extensionService.test.ts | 2 +- .../history/test/browser/historyService.test.ts | 2 +- 13 files changed, 30 insertions(+), 13 deletions(-) diff --git a/src/vs/platform/configuration/test/common/testConfigurationService.ts b/src/vs/platform/configuration/test/common/testConfigurationService.ts index f8a87c1921..4f05561fa9 100644 --- a/src/vs/platform/configuration/test/common/testConfigurationService.ts +++ b/src/vs/platform/configuration/test/common/testConfigurationService.ts @@ -18,6 +18,23 @@ export class TestConfigurationService implements IConfigurationService { readonly onDidChangeConfiguration = this.onDidChangeConfigurationEmitter.event; constructor(configuration?: any) { + // {{SQL CARBON EDIT}} - START + // Ensures that all configuration services use the DOM renderer. There's an issue + // with GPU rendering that is causing unit tests to be flaky and obscuring true failing tests. + // This is a temporary fix and should be removed once xterm GPU rendering is working again. + if (configuration) { + if (configuration.integrated) { + configuration.integrated.gpuAcceleration = 'off'; + } + else { + configuration.integrated = { gpuAcceleration: 'off' }; + } + } + else { + configuration = { integrated: { gpuAcceleration: 'off' } }; + } + // {{SQL CARBON EDIT}} - END + this.configuration = configuration || Object.create(null); } diff --git a/src/vs/workbench/contrib/experiments/test/electron-sandbox/experimentService.test.ts b/src/vs/workbench/contrib/experiments/test/electron-sandbox/experimentService.test.ts index e831d19831..7a3a3c40d5 100644 --- a/src/vs/workbench/contrib/experiments/test/electron-sandbox/experimentService.test.ts +++ b/src/vs/workbench/contrib/experiments/test/electron-sandbox/experimentService.test.ts @@ -63,7 +63,7 @@ export class TestExperimentService extends ExperimentService { } } -suite.skip('Experiment Service', () => { // {{SQL CARBON EDIT}} Tests are flaky, and have been removed in VS Code so disabling until we catch up +suite('Experiment Service', () => { let instantiationService: TestInstantiationService; let testConfigurationService: TestConfigurationService; let testObject: ExperimentService; diff --git a/src/vs/workbench/contrib/terminalContrib/accessibility/test/browser/bufferContentTracker.test.ts b/src/vs/workbench/contrib/terminalContrib/accessibility/test/browser/bufferContentTracker.test.ts index 9856dd745a..c934be8650 100644 --- a/src/vs/workbench/contrib/terminalContrib/accessibility/test/browser/bufferContentTracker.test.ts +++ b/src/vs/workbench/contrib/terminalContrib/accessibility/test/browser/bufferContentTracker.test.ts @@ -36,7 +36,7 @@ const defaultTerminalConfig: Partial = { unicodeVersion: '6' }; -suite.skip('Buffer Content Tracker', () => { // {{SQL CARBON EDIT}} skip failing suite +suite('Buffer Content Tracker', () => { let instantiationService: TestInstantiationService; let configurationService: TestConfigurationService; let themeService: TestThemeService; diff --git a/src/vs/workbench/contrib/terminalContrib/links/test/browser/terminalLinkManager.test.ts b/src/vs/workbench/contrib/terminalContrib/links/test/browser/terminalLinkManager.test.ts index a776550155..6e4c761e3a 100644 --- a/src/vs/workbench/contrib/terminalContrib/links/test/browser/terminalLinkManager.test.ts +++ b/src/vs/workbench/contrib/terminalContrib/links/test/browser/terminalLinkManager.test.ts @@ -94,7 +94,7 @@ suite('TerminalLinkManager', () => { } as Partial as any, instantiationService.createInstance(TerminalLinkResolver)); }); - suite.skip('getLinks and open recent link', () => { // {{SQL CARBON EDIT}} skip failing suite + suite('getLinks and open recent link', () => { test('should return no links', async () => { const links = await linkManager.getLinks(); equals(links.webLinks, []); diff --git a/src/vs/workbench/contrib/welcomeGettingStarted/test/browser/gettingStartedMarkdownRenderer.test.ts b/src/vs/workbench/contrib/welcomeGettingStarted/test/browser/gettingStartedMarkdownRenderer.test.ts index 9c75934fd5..0a20082efa 100644 --- a/src/vs/workbench/contrib/welcomeGettingStarted/test/browser/gettingStartedMarkdownRenderer.test.ts +++ b/src/vs/workbench/contrib/welcomeGettingStarted/test/browser/gettingStartedMarkdownRenderer.test.ts @@ -13,7 +13,7 @@ import { TestFileService } from 'vs/workbench/test/browser/workbenchTestServices import { TestExtensionService } from 'vs/workbench/test/common/workbenchTestServices'; -suite.skip('Getting Started Markdown Renderer', () => { // {{SQL CARBON EDIT}} - disable suite +suite('Getting Started Markdown Renderer', () => { test('renders theme picker markdown with images', async () => { const fileService = new TestFileService(); const languageService = new LanguageService(); diff --git a/src/vs/workbench/services/configuration/test/browser/configuration.test.ts b/src/vs/workbench/services/configuration/test/browser/configuration.test.ts index 6877f081f5..ba3e6ec622 100644 --- a/src/vs/workbench/services/configuration/test/browser/configuration.test.ts +++ b/src/vs/workbench/services/configuration/test/browser/configuration.test.ts @@ -23,7 +23,7 @@ class ConfigurationCache implements IConfigurationCache { async remove({ type, key }: ConfigurationKey): Promise { this.cache.delete(`${type}:${key}`); } } -suite.skip('DefaultConfiguration', () => { // {{SQL CARBON EDIT}} skip failing suite +suite('DefaultConfiguration', () => { const configurationRegistry = Registry.as(Extensions.Configuration); const cacheKey: ConfigurationKey = { type: 'defaults', key: 'configurationDefaultsOverrides' }; diff --git a/src/vs/workbench/services/configuration/test/browser/configurationEditing.test.ts b/src/vs/workbench/services/configuration/test/browser/configurationEditing.test.ts index bc3c3859e4..92d60dc961 100644 --- a/src/vs/workbench/services/configuration/test/browser/configurationEditing.test.ts +++ b/src/vs/workbench/services/configuration/test/browser/configurationEditing.test.ts @@ -56,7 +56,7 @@ class ConfigurationCache implements IConfigurationCache { async remove(): Promise { } } -suite.skip('ConfigurationEditing', () => { // {{SQL CARBON EDIT}} skip suite +suite('ConfigurationEditing', () => { let instantiationService: TestInstantiationService; let userDataProfileService: IUserDataProfileService; diff --git a/src/vs/workbench/services/configuration/test/browser/configurationService.test.ts b/src/vs/workbench/services/configuration/test/browser/configurationService.test.ts index a56dbea269..0fe8d0b63a 100644 --- a/src/vs/workbench/services/configuration/test/browser/configurationService.test.ts +++ b/src/vs/workbench/services/configuration/test/browser/configurationService.test.ts @@ -1518,7 +1518,7 @@ suite.skip('WorkspaceConfigurationService - Folder', () => { // {{SQL CARBON EDI })); }); -suite.skip('WorkspaceConfigurationService - Profiles', () => { // {{SQL CARBON EDIT}} - skip failing suite +suite('WorkspaceConfigurationService - Profiles', () => { let testObject: WorkspaceService, workspaceService: WorkspaceService, fileService: IFileService, environmentService: IBrowserWorkbenchEnvironmentService, userDataProfileService: IUserDataProfileService, instantiationService: TestInstantiationService; const configurationRegistry = Registry.as(ConfigurationExtensions.Configuration); @@ -2489,7 +2489,7 @@ suite.skip('WorkspaceConfigurationService-Multiroot', () => { // {{SQL CARBON ED }); -suite.skip('WorkspaceConfigurationService - Remote Folder', () => { // {{SQL CARBON EDIT}} - disable suite +suite('WorkspaceConfigurationService - Remote Folder', () => { let testObject: WorkspaceService, folder: URI, machineSettingsResource: URI, remoteSettingsResource: URI, fileSystemProvider: InMemoryFileSystemProvider, resolveRemoteEnvironment: () => void, diff --git a/src/vs/workbench/services/configurationResolver/test/electron-sandbox/configurationResolverService.test.ts b/src/vs/workbench/services/configurationResolver/test/electron-sandbox/configurationResolverService.test.ts index 808eb4cc32..e6e0c237d7 100644 --- a/src/vs/workbench/services/configurationResolver/test/electron-sandbox/configurationResolverService.test.ts +++ b/src/vs/workbench/services/configurationResolver/test/electron-sandbox/configurationResolverService.test.ts @@ -58,7 +58,7 @@ const nullContext = { getExecPath: () => undefined }; -suite.skip('Configuration Resolver Service', () => { // {{SQL CARBON EDIT}} - skip failing suite +suite('Configuration Resolver Service', () => { let configurationResolverService: IConfigurationResolverService | null; const envVariables: { [key: string]: string } = { key1: 'Value for key1', key2: 'Value for key2' }; // let environmentService: MockWorkbenchEnvironmentService; diff --git a/src/vs/workbench/services/editor/test/browser/editorResolverService.test.ts b/src/vs/workbench/services/editor/test/browser/editorResolverService.test.ts index fdbd841c80..d9a794b958 100644 --- a/src/vs/workbench/services/editor/test/browser/editorResolverService.test.ts +++ b/src/vs/workbench/services/editor/test/browser/editorResolverService.test.ts @@ -14,7 +14,7 @@ import { IEditorGroupsService } from 'vs/workbench/services/editor/common/editor import { IEditorResolverService, ResolvedStatus, RegisteredEditorPriority } from 'vs/workbench/services/editor/common/editorResolverService'; import { createEditorPart, ITestInstantiationService, TestFileEditorInput, TestServiceAccessor, workbenchInstantiationService } from 'vs/workbench/test/browser/workbenchTestServices'; -suite.skip('EditorResolverService', () => { // {{SQL CARBON EDIT}} - disable suite +suite('EditorResolverService', () => { const TEST_EDITOR_INPUT_ID = 'testEditorInputForEditorResolverService'; const disposables = new DisposableStore(); diff --git a/src/vs/workbench/services/extensionManagement/test/browser/extensionEnablementService.test.ts b/src/vs/workbench/services/extensionManagement/test/browser/extensionEnablementService.test.ts index 1ca688a1f4..8c5bb0009d 100644 --- a/src/vs/workbench/services/extensionManagement/test/browser/extensionEnablementService.test.ts +++ b/src/vs/workbench/services/extensionManagement/test/browser/extensionEnablementService.test.ts @@ -111,7 +111,7 @@ export class TestExtensionEnablementService extends ExtensionEnablementService { } } -suite.skip('ExtensionEnablementService Test', () => { +suite('ExtensionEnablementService Test', () => { let instantiationService: TestInstantiationService; let testObject: IWorkbenchExtensionEnablementService; diff --git a/src/vs/workbench/services/extensions/test/browser/extensionService.test.ts b/src/vs/workbench/services/extensions/test/browser/extensionService.test.ts index c1255ecf51..425139a984 100644 --- a/src/vs/workbench/services/extensions/test/browser/extensionService.test.ts +++ b/src/vs/workbench/services/extensions/test/browser/extensionService.test.ts @@ -128,7 +128,7 @@ suite('BrowserExtensionService', () => { }); }); -suite.skip('ExtensionService', () => { // {{SQL CARBON EDIT}} - disable failing suite +suite('ExtensionService', () => { class MyTestExtensionService extends AbstractExtensionService { diff --git a/src/vs/workbench/services/history/test/browser/historyService.test.ts b/src/vs/workbench/services/history/test/browser/historyService.test.ts index e2ec6d85cc..9def876a16 100644 --- a/src/vs/workbench/services/history/test/browser/historyService.test.ts +++ b/src/vs/workbench/services/history/test/browser/historyService.test.ts @@ -29,7 +29,7 @@ import { EditorPane } from 'vs/workbench/browser/parts/editor/editorPane'; import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; -suite.skip('HistoryService', function () { // {{SQL CARBON EDIT}} skip suite +suite('HistoryService', function () { const TEST_EDITOR_ID = 'MyTestEditorForEditorHistory'; const TEST_EDITOR_INPUT_ID = 'testEditorInputForHistoyService';