Skip to content

Commit 32e1d8f

Browse files
authored
Add TargetType enum for SwiftPackage.getTargets (#713)
1 parent b547f90 commit 32e1d8f

File tree

6 files changed

+27
-13
lines changed

6 files changed

+27
-13
lines changed

src/FolderContext.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import * as vscode from "vscode";
1616
import * as path from "path";
1717
import { LinuxMain } from "./LinuxMain";
1818
import { PackageWatcher } from "./PackageWatcher";
19-
import { SwiftPackage, Target } from "./SwiftPackage";
19+
import { SwiftPackage, Target, TargetType } from "./SwiftPackage";
2020
import { TestExplorer } from "./TestExplorer/TestExplorer";
2121
import { WorkspaceContext, FolderEvent } from "./WorkspaceContext";
2222
import { BackgroundCompilation } from "./BackgroundCompilation";
@@ -179,11 +179,11 @@ export class FolderContext implements vscode.Disposable {
179179
* @param uri URI to find target for
180180
* @returns Target
181181
*/
182-
getTestTarget(uri: vscode.Uri): Target | undefined {
182+
getTestTarget(uri: vscode.Uri, type?: TargetType): Target | undefined {
183183
if (!isPathInsidePath(uri.fsPath, this.folder.fsPath)) {
184184
return undefined;
185185
}
186-
const testTargets = this.swiftPackage.getTargets("test");
186+
const testTargets = this.swiftPackage.getTargets(type);
187187
const target = testTargets.find(element => {
188188
const relativeUri = path.relative(
189189
path.join(this.folder.fsPath, element.path),

src/SwiftPackage.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -363,8 +363,12 @@ export class SwiftPackage implements PackageContents {
363363
* @param type Type of target
364364
* @returns Array of targets
365365
*/
366-
getTargets(type: "executable" | "library" | "test"): Target[] {
367-
return this.targets.filter(target => target.type === type);
366+
getTargets(type?: TargetType): Target[] {
367+
if (type === undefined) {
368+
return this.targets;
369+
} else {
370+
return this.targets.filter(target => target.type === type);
371+
}
368372
}
369373

370374
/**
@@ -375,3 +379,9 @@ export class SwiftPackage implements PackageContents {
375379
return this.targets.find(target => isPathInsidePath(filePath, target.path));
376380
}
377381
}
382+
383+
export enum TargetType {
384+
executable = "executable",
385+
library = "library",
386+
test = "test",
387+
}

src/SwiftTaskProvider.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import * as vscode from "vscode";
1616
import * as path from "path";
1717
import { WorkspaceContext } from "./WorkspaceContext";
1818
import { FolderContext } from "./FolderContext";
19-
import { Product } from "./SwiftPackage";
19+
import { Product, TargetType } from "./SwiftPackage";
2020
import configuration from "./configuration";
2121
import { swiftRuntimeEnv } from "./utilities/utilities";
2222
import { Version } from "./utilities/version";
@@ -110,7 +110,7 @@ function getBuildRevealOption(): vscode.TaskRevealKind {
110110
*/
111111
export function createBuildAllTask(folderContext: FolderContext): vscode.Task {
112112
let additionalArgs = buildOptions(folderContext.workspaceContext.toolchain);
113-
if (folderContext.swiftPackage.getTargets("test").length > 0) {
113+
if (folderContext.swiftPackage.getTargets(TargetType.test).length > 0) {
114114
additionalArgs.push(...testDiscoveryFlag(folderContext));
115115
}
116116
let buildTaskName = SwiftTaskProvider.buildAllName;

src/TestExplorer/TestDiscovery.ts

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

1515
import * as vscode from "vscode";
1616
import { FolderContext } from "../FolderContext";
17+
import { TargetType } from "../SwiftPackage";
1718

1819
/** Test function definition */
1920
export interface TestFunction {
@@ -49,7 +50,7 @@ export function updateTestsFromClasses(folderContext: FolderContext, testClasses
4950
if (!testExplorer) {
5051
return;
5152
}
52-
const targets = folderContext.swiftPackage.getTargets("test").map(target => {
53+
const targets = folderContext.swiftPackage.getTargets(TargetType.test).map(target => {
5354
const classes = testClasses.filter(
5455
testClass =>
5556
testClass.location &&

src/TestExplorer/TestExplorer.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import configuration from "../configuration";
2323
import { buildOptions, getBuildAllTask } from "../SwiftTaskProvider";
2424
import { SwiftExecOperation, TaskOperation } from "../TaskQueue";
2525
import * as TestDiscovery from "./TestDiscovery";
26+
import { TargetType } from "../SwiftPackage";
2627

2728
/** Build test explorer UI */
2829
export class TestExplorer {
@@ -67,7 +68,7 @@ export class TestExplorer {
6768
) {
6869
this.testFileEdited = false;
6970
// only run discover tests if the library has tests
70-
if (this.folderContext.swiftPackage.getTargets("test").length > 0) {
71+
if (this.folderContext.swiftPackage.getTargets(TargetType.test).length > 0) {
7172
this.discoverTestsInWorkspace();
7273
}
7374
}
@@ -97,7 +98,7 @@ export class TestExplorer {
9798
switch (event) {
9899
case FolderEvent.add:
99100
if (folder) {
100-
if (folder.swiftPackage.getTargets("test").length > 0) {
101+
if (folder.swiftPackage.getTargets(TargetType.test).length > 0) {
101102
folder.addTestExplorer();
102103
// discover tests in workspace but only if disableAutoResolve is not on.
103104
// discover tests will kick off a resolve if required
@@ -109,7 +110,8 @@ export class TestExplorer {
109110
break;
110111
case FolderEvent.packageUpdated:
111112
if (folder) {
112-
const hasTestTargets = folder.swiftPackage.getTargets("test").length > 0;
113+
const hasTestTargets =
114+
folder.swiftPackage.getTargets(TargetType.test).length > 0;
113115
if (hasTestTargets && !folder.hasTestExplorer()) {
114116
folder.addTestExplorer();
115117
// discover tests in workspace but only if disableAutoResolve is not on.

src/debugger/launch.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import { FolderContext } from "../FolderContext";
2020
import { BuildFlags } from "../toolchain/BuildFlags";
2121
import { stringArrayInEnglish, swiftLibraryPathKey, swiftRuntimeEnv } from "../utilities/utilities";
2222
import { DebugAdapter } from "./debugAdapter";
23+
import { TargetType } from "../SwiftPackage";
2324

2425
/**
2526
* Edit launch.json based on contents of Swift Package.
@@ -178,7 +179,7 @@ export function createTestConfiguration(
178179
ctx: FolderContext,
179180
expandEnvVariables = false
180181
): vscode.DebugConfiguration | null {
181-
if (ctx.swiftPackage.getTargets("test").length === 0) {
182+
if (ctx.swiftPackage.getTargets(TargetType.test).length === 0) {
182183
return null;
183184
}
184185

@@ -265,7 +266,7 @@ export function createDarwinTestConfiguration(
265266
ctx: FolderContext,
266267
args: string
267268
): vscode.DebugConfiguration | null {
268-
if (ctx.swiftPackage.getTargets("test").length === 0) {
269+
if (ctx.swiftPackage.getTargets(TargetType.test).length === 0) {
269270
return null;
270271
}
271272
if (process.platform !== "darwin") {

0 commit comments

Comments
 (0)