find-and-run-tests について
workerd と親プロジェクトで Bazel テストを見つけて実行するためのスキルです。テストの種類、ターゲットの検索、キャッシュの扱い、失敗の調査方法を説明します。
主な機能
- 01workerd のテスト種別の把握
- 02bazel query によるターゲット検索
- 03Bazel でのテスト実行
- 04ログを使った失敗の調査
- 05機能が実行されたことの確認
活用シーン
- 01ソースファイルに対応するテストの検索
- 02workerd テストの実行とデバッグ
- 03親プロジェクトのテスト規約の把握
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ cloudflare/ workerd --skill find-and-run-testsインストール後、Claude Code で/find-and-run-testsを入力して読み込まれたか確認します。
詳細
テストの検索と実行
workerd のテスト
テストの種類
| 種類 | ファイル拡張子 | BUILD マクロ | ターゲットの接尾辞 |
|---|---|---|---|
| JS/TS 統合テスト | .wd-test | wd_test() | なし(ターゲット名 = ルール名) |
| C++ 単体テスト | *-test.c++ | kj_test() | なし |
ターゲットの検索
# Find test targets in a directory
bazel query 'kind("test", //src/workerd/api/tests:*)' --output label
# Find test targets matching a name
bazel query 'kind(".*_test", //src/workerd/...)' --output label 2>/dev/null | grep -i '<name>'
# Find tests that depend on a source file
bazel query 'rdeps(//src/..., //src/workerd/io:trace-stream, 1)' --output label 2>/dev/null | grep -i test
実行
# Stream test output (preferred for debugging)
bazel test //src/workerd/api/tests:url-test --test_output=streamed
# Run with fresh results (no cache)
bazel test //target --test_output=streamed --nocache_test_results
# Run specific test case within a kj_test
bazel test //target --test_arg='-f' --test_arg='test case name'
よく使うフラグ
| フラグ | 目的 |
|---|---|
--test_output=streamed | テスト出力をリアルタイムでターミナルに表示する |
--nocache_test_results | キャッシュされた結果を使わず、強制的に再実行する |
--test_timeout=120 | デフォルトのテストタイムアウト(秒)を上書きする |
親プロジェクトの統合テスト
workerd が親プロジェクトのサブモジュールとして使われている場合、そのプロジェクトには独自の統合テストフレームワークがあり、規約が異なることがあります。parent-project-skills スキルを読み込み、該当する規約を確認してください。
どの統合テストフレームワークにも当てはまる一般原則
バリアント接尾辞付きのターゲット名。 テストマクロによっては、1 つのソースファイルからバリアント接尾辞(例:@、@all-autogates、@force-sharding)を付けた複数のターゲットが生成されます。bazel が「is a source file, nothing will be built」または「No test targets were found」と表示する場合は、接尾辞が必要な可能性があります。bazel query 'kind("test", //path:*)' を使って、実際に実行可能なターゲット名を確認してください。
キャッシュされた結果によって変更が見えなくなることがあります。 テストファイルやソースコードを変更した後に再実行する場合は、必ず --nocache_test_results を使ってください。これを使わないと、bazel は古いログを含むキャッシュ済みの古い結果を返します。
機能が実際に実行されたことを確認してください。 テストに合格した後、テスト出力から機能固有の証拠(スクリプト名、プロセスタイプ、サブリクエスト、RPC 呼び出し)を検索してください。機能が実行された証拠のない合格テストは、有効なテストではありません。test-driven-investigation スキルを参照してください。
テスト失敗のデバッグ
- 変更後に再実行する場合は、必ず
--nocache_test_resultsを使ってください。 - bazel の出力に示されたパスにあるテストログを確認してください:
bazel-out/.../testlogs/.../test.log - 機能が実際に実行されたことを確認するため、ログ内の機能固有のキーワードを検索してください。
- サブリクエストの不一致(サブリクエストを検証するフレームワークの場合)では、通常、実際のリクエストと期待されるリクエストの詳細が表示されます。制御ヘッダーを注意深く比較してください。