Skip to content

Commit 689bdea

Browse files
authored
Reorganize utilities and add tests (#1003)
Reorganize utilities into filesystem utilities and general utilities. Add more tests.
1 parent 0e39568 commit 689bdea

15 files changed

+328
-171
lines changed

src/BackgroundCompilation.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
import * as vscode from "vscode";
1616
import * as path from "path";
17-
import { isPathInsidePath } from "./utilities/utilities";
17+
import { isPathInsidePath } from "./utilities/filesystem";
1818
import { getBuildAllTask } from "./tasks/SwiftTaskProvider";
1919
import configuration from "./configuration";
2020
import { FolderContext } from "./FolderContext";

src/FolderContext.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import { TestExplorer } from "./TestExplorer/TestExplorer";
2121
import { WorkspaceContext, FolderEvent } from "./WorkspaceContext";
2222
import { BackgroundCompilation } from "./BackgroundCompilation";
2323
import { TaskQueue } from "./tasks/TaskQueue";
24-
import { isPathInsidePath } from "./utilities/utilities";
24+
import { isPathInsidePath } from "./utilities/filesystem";
2525

2626
export class FolderContext implements vscode.Disposable {
2727
private packageWatcher: PackageWatcher;

src/LinuxMain.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
//===----------------------------------------------------------------------===//
1414

1515
import * as vscode from "vscode";
16-
import { pathExists } from "./utilities/utilities";
16+
import { pathExists } from "./utilities/filesystem";
1717

1818
/**
1919
* Cache the existence of `Tests/LinuxMain.swift`.

src/SwiftPackage.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,8 @@
1515
import * as vscode from "vscode";
1616
import * as fs from "fs/promises";
1717
import * as path from "path";
18-
import {
19-
execSwift,
20-
getErrorDescription,
21-
hashString,
22-
isPathInsidePath,
23-
} from "./utilities/utilities";
18+
import { execSwift, getErrorDescription, hashString } from "./utilities/utilities";
19+
import { isPathInsidePath } from "./utilities/filesystem";
2420
import { SwiftToolchain } from "./toolchain/toolchain";
2521
import { BuildFlags } from "./toolchain/BuildFlags";
2622

src/TestExplorer/TestExplorer.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414

1515
import * as vscode from "vscode";
1616
import { FolderContext } from "../FolderContext";
17-
import { getErrorDescription, isPathInsidePath } from "../utilities/utilities";
17+
import { getErrorDescription } from "../utilities/utilities";
18+
import { isPathInsidePath } from "../utilities/filesystem";
1819
import { FolderEvent, WorkspaceContext } from "../WorkspaceContext";
1920
import { TestRunProxy, TestRunner } from "./TestRunner";
2021
import { LSPTestDiscovery } from "./LSPTestDiscovery";

src/WorkspaceContext.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,8 @@ import * as path from "path";
1717
import { FolderContext } from "./FolderContext";
1818
import { StatusItem } from "./ui/StatusItem";
1919
import { SwiftOutputChannel } from "./ui/SwiftOutputChannel";
20-
import {
21-
pathExists,
22-
isPathInsidePath,
23-
swiftLibraryPathKey,
24-
getErrorDescription,
25-
} from "./utilities/utilities";
20+
import { swiftLibraryPathKey, getErrorDescription } from "./utilities/utilities";
21+
import { pathExists, isPathInsidePath } from "./utilities/filesystem";
2622
import { getLLDBLibPath } from "./debugger/lldb";
2723
import { LanguageClientManager } from "./sourcekit-lsp/LanguageClientManager";
2824
import { TemporaryFolder } from "./utilities/tempFolder";

src/debugger/debugAdapter.ts

Lines changed: 11 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,11 @@
1313
//===----------------------------------------------------------------------===//
1414

1515
import * as vscode from "vscode";
16-
import * as fs from "fs";
17-
import { WorkspaceContext } from "../WorkspaceContext";
1816
import configuration from "../configuration";
1917
import contextKeys from "../contextKeys";
20-
import { SwiftToolchain } from "../toolchain/toolchain";
18+
import { fileExists } from "../utilities/filesystem";
2119
import { Version } from "../utilities/version";
20+
import { WorkspaceContext } from "../WorkspaceContext";
2221

2322
/**
2423
* Class managing which debug adapter we are using. Will only setup lldb-vscode/lldb-dap if it is available.
@@ -27,36 +26,34 @@ export class DebugAdapter {
2726
private static debugAdapaterExists = false;
2827

2928
/** Debug adapter name */
30-
static get adapterName(): string {
29+
public static get adapterName(): string {
3130
return configuration.debugger.useDebugAdapterFromToolchain && this.debugAdapaterExists
3231
? "swift-lldb"
3332
: "lldb";
3433
}
3534

3635
/** Return debug adapter for toolchain */
37-
static getDebugAdapter(toolchain: SwiftToolchain): string {
38-
if (toolchain.swiftVersion.isLessThan(new Version(6, 0, 0))) {
39-
return "lldb-vscode";
40-
} else {
41-
return "lldb-dap";
42-
}
36+
public static getDebugAdapter(swiftVersion: Version): string {
37+
return swiftVersion.isLessThan(new Version(6, 0, 0)) ? "lldb-vscode" : "lldb-dap";
4338
}
39+
4440
/**
4541
* Verify that the toolchain debug adapter exists
4642
* @param workspace WorkspaceContext
4743
* @param quiet Should dialog be displayed
4844
* @returns Is debugger available
4945
*/
50-
static async verifyDebugAdapterExists(
46+
public static async verifyDebugAdapterExists(
5147
workspace: WorkspaceContext,
5248
quiet = false
5349
): Promise<boolean> {
5450
const useCustom = configuration.debugger.debugAdapterPath.length > 0;
55-
const debugAdapter = DebugAdapter.getDebugAdapter(workspace.toolchain);
51+
const debugAdapter = DebugAdapter.getDebugAdapter(workspace.toolchain.swiftVersion);
5652
const lldbDebugAdapterPath = useCustom
5753
? configuration.debugger.debugAdapterPath
5854
: workspace.toolchain.getToolchainExecutable(debugAdapter);
59-
if (!(await this.doesFileExist(lldbDebugAdapterPath))) {
55+
56+
if (!(await fileExists(lldbDebugAdapterPath))) {
6057
if (!quiet) {
6158
vscode.window.showErrorMessage(
6259
useCustom
@@ -69,16 +66,9 @@ export class DebugAdapter {
6966
contextKeys.lldbVSCodeAvailable = false;
7067
return false;
7168
}
69+
7270
this.debugAdapaterExists = true;
7371
contextKeys.lldbVSCodeAvailable = true;
7472
return true;
7573
}
76-
77-
private static async doesFileExist(path: string): Promise<boolean> {
78-
try {
79-
return (await fs.promises.stat(path)).isFile();
80-
} catch (e) {
81-
return false;
82-
}
83-
}
8474
}

src/debugger/debugAdapterFactory.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ export function registerLLDBDebugAdapter(workspaceContext: WorkspaceContext): vs
2424
executable: vscode.DebugAdapterExecutable | undefined
2525
): vscode.ProviderResult<vscode.DebugAdapterDescriptor> {
2626
// use the executable specified in the settings or use version in toolchain
27-
const debugAdapter = DebugAdapter.getDebugAdapter(workspaceContext.toolchain);
27+
const debugAdapter = DebugAdapter.getDebugAdapter(
28+
workspaceContext.toolchain.swiftVersion
29+
);
2830
if (!executable) {
2931
const lldbDebugAdapterPath =
3032
configuration.debugger.debugAdapterPath.length > 0

src/sourcekit-lsp/LanguageClientManager.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ import * as vscode from "vscode";
1616
import * as path from "path";
1717
import * as langclient from "vscode-languageclient/node";
1818
import configuration from "../configuration";
19-
import { isPathInsidePath, swiftRuntimeEnv } from "../utilities/utilities";
19+
import { swiftRuntimeEnv } from "../utilities/utilities";
20+
import { isPathInsidePath } from "../utilities/filesystem";
2021
import { Version } from "../utilities/version";
2122
import { FolderEvent, WorkspaceContext } from "../WorkspaceContext";
2223
import { activateLegacyInlayHints } from "./inlayHints";

src/toolchain/toolchain.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ import * as plist from "plist";
1919
import * as vscode from "vscode";
2020
import configuration from "../configuration";
2121
import { SwiftOutputChannel } from "../ui/SwiftOutputChannel";
22-
import { execFile, execSwift, expandFilePathTilda, pathExists } from "../utilities/utilities";
22+
import { execFile, execSwift } from "../utilities/utilities";
23+
import { expandFilePathTilda, pathExists } from "../utilities/filesystem";
2324
import { Version } from "../utilities/version";
2425
import { BuildFlags } from "./BuildFlags";
2526
import { Sanitizer } from "./Sanitizer";

0 commit comments

Comments
 (0)