|
14 | 14 |
|
15 | 15 | import * as vscode from "vscode";
|
16 | 16 | import * as assert from "assert";
|
17 |
| -import * as swiftExtension from "../../src/extension"; |
| 17 | +import { Api } from "../../src/extension"; |
18 | 18 | import { WorkspaceContext } from "../../src/WorkspaceContext";
|
19 | 19 | import { getBuildAllTask } from "../../src/tasks/SwiftTaskProvider";
|
20 | 20 | import { SwiftExecution } from "../../src/tasks/SwiftExecution";
|
21 | 21 | import { testAssetUri } from "../fixtures";
|
22 | 22 | import { FolderContext } from "../../src/FolderContext";
|
23 | 23 |
|
24 |
| -export const rootWorkspaceFolder = vscode.workspace.workspaceFolders?.values().next().value; |
25 |
| -export const globalWorkspaceContextPromise = new Promise<WorkspaceContext>(resolve => { |
26 |
| - const workspaceFolder = vscode.workspace.workspaceFolders?.values().next().value; |
27 |
| - if (!workspaceFolder) { |
28 |
| - throw new Error("No workspace folders found in workspace"); |
| 24 | +function getRootWorkspaceFolder(): vscode.WorkspaceFolder { |
| 25 | + const result = vscode.workspace.workspaceFolders?.at(0); |
| 26 | + assert(result, "No workspace folders were opened for the tests to use"); |
| 27 | + return result; |
| 28 | +} |
| 29 | + |
| 30 | +export const globalWorkspaceContextPromise: Promise<WorkspaceContext> = (async () => { |
| 31 | + const workspaceFolder = getRootWorkspaceFolder(); |
| 32 | + const ext = vscode.extensions.getExtension<Api>("sswg.swift-lang"); |
| 33 | + if (!ext) { |
| 34 | + throw new Error(`Unable to find extension "sswg.swift-lang"`); |
29 | 35 | }
|
30 |
| - const ext = vscode.extensions.getExtension<swiftExtension.Api>("sswg.swift-lang")!; |
31 |
| - ext.activate().then(api => { |
32 |
| - const packageFolder = testAssetUri("defaultPackage"); |
33 |
| - api.workspaceContext |
34 |
| - .addPackageFolder(packageFolder, rootWorkspaceFolder) |
35 |
| - .then(() => resolve(api.workspaceContext)); |
36 |
| - }); |
37 |
| -}); |
| 36 | + const api = await ext.activate(); |
| 37 | + const packageFolder = testAssetUri("defaultPackage"); |
| 38 | + await api.workspaceContext.addPackageFolder(packageFolder, workspaceFolder); |
| 39 | + return api.workspaceContext; |
| 40 | +})(); |
| 41 | + |
38 | 42 | export const folderContextPromise = async (name: string): Promise<FolderContext> => {
|
| 43 | + const workspaceFolder = getRootWorkspaceFolder(); |
39 | 44 | const workspaceContext = await globalWorkspaceContextPromise;
|
40 | 45 | let folder = workspaceContext.folders.find(f => f.workspaceFolder.name === `test/${name}`);
|
41 | 46 | if (!folder) {
|
42 |
| - folder = await workspaceContext.addPackageFolder(testAssetUri(name), rootWorkspaceFolder); |
| 47 | + folder = await workspaceContext.addPackageFolder(testAssetUri(name), workspaceFolder); |
43 | 48 | }
|
44 | 49 | return folder;
|
45 | 50 | };
|
|
0 commit comments