brainstorming
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).
run-puzzle-tests通过 WSL R 执行运行 jigsawR 测试套件。支持完整套件、按模式过滤或单文件运行。 解读通过/失败/跳过计数并定位失败测试。绝不使用 --vanilla 标志(renv 需要 .Rprofile 激活)。适用于修改 R 源代码后、添加新拼图类型或功能后、提交更改前 验证无破坏,以及调试特定测试失败时。
Independent GitHub snapshot · Automated classification · Original documentation governs
运行 jigsawR 测试套件并解读结果。
full、filtered 或 single)"snic"、"rectangular")| 范围 | 使用时机 | 耗时 |
|---|---|---|
| 完整 | 提交前、重大更改后 | ~2-5 分钟 |
| 过滤 | 处理某个拼图类型时 | ~30 秒 |
| 单文件 | 调试特定测试文件 | ~10 秒 |
预期结果: 根据当前工作流选择测试范围:提交前选完整套件,处理特定拼图类型时选过滤,调试单个测试时选单文件。
失败处理: 如果不确定选哪个范围,默认使用完整套件。耗时更长但能捕获跨类型回归。
完整套件:
创建脚本文件(如 /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 字符串:shell 转义问题导致退出码 5。使用脚本文件。devtools::load_all() 或 devtools::document()。DESCRIPTION 的 Suggests 字段。testthat::test_file() 顺序运行。generate-puzzle — 生成拼图以验证行为是否与测试一致add-puzzle-type — 新类型需要全面的测试套件write-testthat-tests — 编写 R 测试的通用模式validate-piles-notation — 独立测试 PILES 解析