beutl-test
GitHub运行 Beutl 项目的 NUnit 测试套件,支持全量、单项目或按名称过滤。执行前需确认范围以避免耗时,失败时报告错误详情并等待指令。
Trigger Scenarios
Install
npx skills add b-editor/beutl --skill beutl-test -g -y
SKILL.md
Frontmatter
{
"name": "beutl-test",
"description": "Run Beutl's NUnit test suite (full or scoped). Use when the user asks to run tests, verify a fix,\nreproduce a failure, or check coverage of a specific module. Triggers on \"テスト走らせて\",\n\"run tests\", \"verify this\", \"is this green?\". Always confirm the test scope before running —\nthe full suite is slow.\n",
"allowed-tools": "Bash(dotnet test:*) Bash(dotnet build:*)",
"argument-hint": "[FullyQualifiedName-substring|project-path]"
}
Run Beutl tests
The full Beutl test suite is slow (minutes). Always confirm scope with the user before running unless they have specified one in this turn or $ARGUMENTS is non-empty. Use AskUserQuestion with these defaults:
- Scope: full suite (
Beutl.slnx) / single project (e.g.tests/Beutl.UnitTests/Beutl.UnitTests.csproj) / filter by FullyQualifiedName substring (e.g.Beutl.UnitTests.Engine.Animation) - Verbosity:
normal(default) /detailed(when chasing a flaky failure)
Once scope is decided, run the matching command:
# Full suite (only when truly needed)
dotnet test Beutl.slnx -f net10.0 --settings coverlet.runsettings \
--logger "console;verbosity=normal"
# Single project
dotnet test <path/to/Tests.csproj> -f net10.0 --settings coverlet.runsettings \
--logger "console;verbosity=normal"
# Filter by FQN substring
dotnet test Beutl.slnx -f net10.0 --settings coverlet.runsettings \
--logger "console;verbosity=normal" \
--filter "FullyQualifiedName~<substring>"
If $ARGUMENTS is provided, treat it as the FQN substring and skip the prompt.
Notes
- Framework
net10.0matches.github/workflows/dotnet.yml. There is also anet10.0-windowstarget for Windows-specific tests; do not switch without reason. - Coverlet settings live in
coverlet.runsettings. - Test framework: NUnit + Moq. Tests live under
tests/in per-area projects (e.g.tests/Beutl.UnitTests/,tests/Beutl.Graphics3DTests/,tests/SourceGeneratorTest/,tests/Beutl.FFmpegIpc.Tests/). Notetests/Beutl.Graphics3DTests/is a Vulkan-gated NUnit suite (GPU rendering checks; self-skips viaAssert.Ignorewhen no Vulkan device is available); GPU-free Graphics3D logic tests live undertests/Beutl.UnitTests/Engine/Graphics3D/. - Benchmark projects (
tests/Beutl.Benchmarks,tests/Beutl.FFmpegBenchmarks) use BenchmarkDotNet; exclude them by selecting a single test project rather than the whole solution when iterating. - For deeper debugging without polluting the working tree, prefer the
beutl-test-runnersubagent (it runs in an isolated worktree).
On failure
Report up to 10 failing FullyQualifiedName entries with the first line of each error message, then stop and wait for direction. Do NOT loop attempting fixes without checking in.
Version History
- db01de7 Current 2026-08-20 13:43


