PrevPrevious commit
Next Next commit
Fix tests so don't need root "test" folder
  • Loading branch information
@award999
award999 committedJun 13, 2025
commit 1ba5b68fb871ca5b7aed45de78b8cb5fb7ac23dd
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
{
"folders": [
{
"name": "test",
"path": "./test"
},
{
"name": "diagnostics",
"path": "./test/diagnostics"
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -51,7 +51,7 @@ import { reduceTestItemChildren } from "./TestUtils";
import { CompositeCancellationToken } from "../utilities/cancellation";
// eslint-disable-next-line @typescript-eslint/no-require-imports
import stripAnsi = require("strip-ansi");
import { packageName } from "../utilities/tasks";
import { packageName, resolveScope } from "../utilities/tasks";

export enum TestLibrary {
xctest = "XCTest",
Expand DownExpand Up@@ -774,7 +774,7 @@ export class TestRunner {
`Building and Running Tests${kindLabel}`,
{
cwd: this.folderContext.folder,
scope: this.folderContext.workspaceFolder,
scope: resolveScope(this.folderContext.workspaceFolder),
packageName: packageName(this.folderContext),
presentationOptions: { reveal: vscode.TaskRevealKind.Never },
},
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -24,7 +24,7 @@ import { swiftRuntimeEnv } from "../utilities/utilities";
import { Version } from "../utilities/version";
import { SwiftToolchain } from "../toolchain/toolchain";
import { SwiftExecution } from "../tasks/SwiftExecution";
import { packageName, resolveTaskCwd } from "../utilities/tasks";
import { packageName, resolveScope, resolveTaskCwd } from "../utilities/tasks";
import { BuildConfigurationFactory } from "../debugger/buildConfig";

/**
Expand DownExpand Up@@ -161,7 +161,7 @@ export async function createBuildAllTask(
{
group: vscode.TaskGroup.Build,
cwd: folderContext.folder,
scope: folderContext.workspaceFolder,
scope: resolveScope(folderContext.workspaceFolder),
presentationOptions: {
reveal: getBuildRevealOption(),
},
Expand DownExpand Up@@ -246,7 +246,7 @@ function createBuildTasks(product: Product, folderContext: FolderContext): vscod
{
group: vscode.TaskGroup.Build,
cwd: folderContext.folder,
scope: folderContext.workspaceFolder,
scope: resolveScope(folderContext.workspaceFolder),
presentationOptions: {
reveal: getBuildRevealOption(),
},
Expand DownExpand Up@@ -404,7 +404,7 @@ export class SwiftTaskProvider implements vscode.TaskProvider {
type: "swift",
args: [],
},
folderContext.workspaceFolder,
resolveScope(folderContext.workspaceFolder),
buildTaskName,
"swift",
new vscode.CustomExecution(() => {
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -67,3 +67,10 @@ export function packageName(folderContext: FolderContext): string | undefined {
return folderContext.relativePath;
}
}

export function resolveScope(scope: vscode.WorkspaceFolder | vscode.TaskScope) {
if (vscode.workspace.workspaceFile) {
return vscode.TaskScope.Workspace;
}
return scope;
}
Original file line numberDiff line numberDiff line change
Expand Up@@ -27,6 +27,7 @@ import {
} from "./utilities/testutilities";
import { FolderContext } from "../../src/FolderContext";
import { assertContains } from "./testexplorer/utilities";
import { resolveScope } from "../../src/utilities/tasks";

function assertContainsArg(execution: SwiftExecution, arg: string) {
assert(execution?.args.find(a => a === arg));
Expand DownExpand Up@@ -124,7 +125,7 @@ suite("WorkspaceContext Test Suite", () => {
assertContainsArg(execution, "--build-tests");
assertContainsArg(execution, "-Xswiftc");
assertContainsArg(execution, "-diagnostic-style=llvm");
assert.strictEqual(buildAllTask.scope, folder.workspaceFolder);
assert.strictEqual(buildAllTask.scope, resolveScope(folder.workspaceFolder));
});

test('"default" diagnosticsStyle', async () => {
Expand All@@ -142,7 +143,7 @@ suite("WorkspaceContext Test Suite", () => {
assertContainsArg(execution, "build");
assertContainsArg(execution, "--build-tests");
assertNotContainsArg(execution, "-diagnostic-style");
assert.strictEqual(buildAllTask.scope, folder.workspaceFolder);
assert.strictEqual(buildAllTask.scope, resolveScope(folder.workspaceFolder));
});

test('"swift" diagnosticsStyle', async () => {
Expand All@@ -161,7 +162,7 @@ suite("WorkspaceContext Test Suite", () => {
assertContainsArg(execution, "--build-tests");
assertContainsArg(execution, "-Xswiftc");
assertContainsArg(execution, "-diagnostic-style=swift");
assert.strictEqual(buildAllTask.scope, folder.workspaceFolder);
assert.strictEqual(buildAllTask.scope, resolveScope(folder.workspaceFolder));
});

test("Build Settings", async () => {
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -27,10 +27,8 @@ import { SwiftOutputChannel } from "../../../src/ui/SwiftOutputChannel";
import configuration from "../../../src/configuration";
import { resetBuildAllTaskCache } from "../../../src/tasks/SwiftTaskProvider";

// const codeWorkspaceFolders = ["defaultPackage", "diagnostics", "command-plugin"];

export function getRootWorkspaceFolder(): vscode.WorkspaceFolder {
const result = vscode.workspace.workspaceFolders?.find(f => f.name === "test");
const result = vscode.workspace.workspaceFolders?.at(0);
assert(result, "No workspace folders were opened for the tests to use");
return result;
}
Expand Down