协作头脑风暴
brainstorming
在实现前澄清需求、探索设计选择,并形成清晰的开发方向。
run-puzzle-tests【开发与工程】WSL R実行経由でjigsawRテストスイートを実行する。フルスイート、 パターンによるフィルタリング、シングルファイルをサポート。 パス/フェイル/スキップカウントを解釈し、失敗テストを特定する。 --vanillaフラグは使用しない(renvは.Rprofileが有効化に必要)。 Rソースコードの変更後、新しいパズルタイプや機能の追加後、 コミット前の破壊確認、特定のテスト失敗のデバッグに使用する。
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
jigsawRテストスイートを実行し結果を解釈する。
full、filtered、またはsingle)"snic"、"rectangular")| スコープ | 使用場面 | 所要時間 |
|---|---|---|
| Full | コミット前、大きな変更後 | 約2-5分 |
| Filtered | 1つのパズルタイプでの作業中 | 約30秒 |
| Single | 特定のテストファイルのデバッグ | 約10秒 |
期待結果: 現在のワークフローに基づいてテストスコープが選択される:コミット前はフルスイート、特定のパズルタイプでの作業時はfiltered、1つのテストのデバッグ時はsingle。
失敗時: どのスコープを使用するか不明な場合は、フルスイートをデフォルトにする。時間はかかるがクロスタイプのリグレッションをキャッチできる。
フルスイート:
スクリプトファイルを作成する(例:/tmp/run_tests.R):
devtools::test()
R_EXE="/mnt/c/Program Files/R/R-4.5.0/bin/Rscript.exe"
cd /mnt/d/dev/p/jigsawR && "$R_EXE" -e "devtools::test()"
パターンによるフィルタリング:
"$R_EXE" -e "devtools::test(filter = 'snic')"
シングルファイル:
"$R_EXE" -e "testthat::test_file('tests/testthat/test-snic-puzzles.R')"
期待結果: パス/フェイル/スキップカウントを含むテスト出力。
失敗時:
--vanillaフラグを使用しないこと。renvは.Rprofileが有効化に必要renv::restore()を実行するサマリー行を探す:
[ FAIL 0 | WARN 0 | SKIP 7 | PASS 2042 ]
snicのようなオプションパッケージの欠如による)期待結果: PASS、FAIL、SKIP、WARNカウントを特定するためにサマリー行が解析される。クリーンなテスト実行ではFAIL = 0。
失敗時: サマリー行が見えない場合、テストランナーが完了前にクラッシュした可能性がある。サマリーの上のR レベルエラーを確認する。出力が切り捨てられている場合、ファイルにリダイレクトする:"$R_EXE" -e "devtools::test()" > test_results.txt 2>&1。
テストが失敗した場合:
# Run just the failing test with verbose output
"$R_EXE" -e "testthat::test_file('tests/testthat/test-failing.R', reporter = 'summary')"
期待結果: 各失敗テストの根本原因が特定される。失敗は真のリグレッション(コードの修正が必要)かテスト環境の問題(依存関係の欠如、パスの問題)のいずれか。
失敗時: 失敗メッセージが不明確な場合、テストにbrowser()またはprint()ステートメントを追加し、対話的デバッグのためにtestthat::test_file()で再実行する。
オプション依存が欠落している場合のスキップされたテストは正常:
snicパッケージテストはskip_if_not_installed("snic")でスキップskip_on_os()でスキップskip_on_cran()スキップ理由が正当であり、実際の失敗を隠していないことを確認する。
期待結果: すべてのスキップが正当な理由(オプション依存がインストールされていない、プラットフォーム固有のスキップ、CRAN専用スキップ)で説明される。実際のテスト失敗を隠すスキップはない。
失敗時: スキップが疑わしい場合、一時的にskip_if_*()呼び出しを削除してテストを実行し、パスするか隠れた失敗を明らかにするか確認する。
--vanillaの使用: renvの有効化を破壊する。jigsawRでは絶対に使用しないこと。-e文字列: シェルエスケープの問題がExit code 5を引き起こす。スクリプトファイルを使用する。devtools::load_all()またはdevtools::document()を実行する。DESCRIPTIONのSuggestsフィールドを確認する。testthat::test_file()で順次実行する。generate-puzzle — テストと動作が一致するか検証するためにパズルを生成するadd-puzzle-type — 新しいタイプには包括的なテストスイートが必要write-testthat-tests — Rテスト記述の一般的なパターンvalidate-piles-notation — フルスイートでPILES解析を独立してテストする