基本方針は、以下のサイトのコメントをもとにパスを減らす方法を模索。
https://zig.news/jarredsumner/setting-up-visual-studio-code-for-writing-zig-kcj#comment-66
unit test
のビルドのみを行うようbuild.zig
を構成する。
const unit_tests = b.addTest(.{
.root_source_file = .{ .path = "src/main.zig" },
.target = target,
.optimize = optimize,
});
const test_build_step = b.step("test-build", "Build unit tests");
test_build_step.dependOn(&unit_tests.step);
zig-cache
に作成されたビルド成果物のパスをlaunch.json
に渡せるようにする。
以下はvscode
の機能拡張、Tasks Shell Input
を使用した一例。
{
"version": "0.2.0",
"configurations": [
{
"type": "lldb",
"request": "launch",
"name": "Debug unit test test",
"program": "${input:findTestPath}",
"args": [],
}
],
"inputs": [
{
"id": "findTestPath",
"type": "command",
"command": "shellCommand.execute",
"args": {
// マルチルートワークスペースのためルートパスを明示的に指定
"command": "ls -1t ${workspaceFolder[3]}/zig-cache/o/*/test | head -n 1",
}
}
]
}
- ユニットテストのビルドを行う
zig build build-test
vscode
でデバッグプロセスを開始する
見つかった成果物のパスがプロンプトとして表示されるため、Enter
キー押して先に進める