run-puzzle-tests
关于
This skill runs the jigsawR test suite via WSL-R execution, supporting full tests, pattern-filtered tests, or individual files. It interprets pass/fail/skip counts and identifies failing tests while avoiding the --vanilla flag for renv compatibility. Use it after modifying R source code, adding new puzzle types, before committing changes, or when debugging specific test failures.
快速安装
Claude Code
推荐npx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/run-puzzle-tests在 Claude Code 中复制并粘贴此命令以安装该技能
技能文档
name: run-puzzle-tests locale: de source_locale: en source_commit: 6f65f316 translator: claude translation_date: "2026-03-17" description: > Die jigsawR-Testsuite ueber WSL-R-Ausfuehrung starten. Unterstuetzt vollstaendige Suite, nach Muster gefiltert oder einzelne Datei. Interpretiert Bestanden/Fehlgeschlagen/Uebersprungen-Zaehler und identifiziert fehlschlagende Tests. Verwendet niemals das --vanilla-Flag (renv braucht .Rprofile fuer die Aktivierung). Anwenden nach Aenderung von R-Quellcode, nach Hinzufuegen eines neuen Puzzle-Typs oder Features, vor dem Committen von Aenderungen zur Verifikation dass nichts kaputt ist, oder beim Debuggen eines spezifischen Testfehlers. license: MIT allowed-tools: Read Write Edit Bash Grep Glob metadata: author: Philipp Thoss version: "1.0" domain: jigsawr complexity: basic language: R tags: jigsawr, testing, testthat, renv, wsl
Puzzle-Tests ausfuehren
Die jigsawR-Testsuite ausfuehren und Ergebnisse interpretieren.
Wann verwenden
- Nach Aenderung von R-Quellcode im Paket
- Nach Hinzufuegen eines neuen Puzzle-Typs oder Features
- Vor dem Committen von Aenderungen zur Verifikation dass nichts kaputt ist
- Beim Debuggen eines spezifischen Testfehlers
Eingaben
- Erforderlich: Testumfang (
full,filteredodersingle) - Optional: Filtermuster (fuer gefilterten Modus, z.B.
"snic","rectangular") - Optional: Spezifischer Testdateipfad (fuer Einzelmodus)
Vorgehensweise
Schritt 1: Testumfang waehlen
| Umfang | Verwenden wenn | Dauer |
|---|---|---|
| Voll | Vor Commits, nach grossen Aenderungen | ~2-5 Min |
| Gefiltert | Arbeit an einem Puzzle-Typ | ~30s |
| Einzeln | Debuggen einer spezifischen Testdatei | ~10s |
Erwartet: Testumfang basierend auf dem aktuellen Arbeitsablauf ausgewaehlt: vollstaendige Suite vor Commits, gefiltert bei Arbeit an einem bestimmten Puzzle-Typ, einzelne Datei beim Debuggen eines Tests.
Bei Fehler: Im Zweifelsfall welcher Umfang zu verwenden ist, standardmaessig die vollstaendige Suite ausfuehren. Es dauert laenger, faengt aber typuebergreifende Regressionen ab.
Schritt 2: Testskript erstellen und ausfuehren
Vollstaendige Suite:
Eine Skriptdatei erstellen (z.B. /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()"
Nach Muster gefiltert:
"$R_EXE" -e "devtools::test(filter = 'snic')"
Einzelne Datei:
"$R_EXE" -e "testthat::test_file('tests/testthat/test-snic-puzzles.R')"
Erwartet: Testausgabe mit Bestanden/Fehlgeschlagen/Uebersprungen-Zaehlern.
Bei Fehler:
- NICHT das
--vanilla-Flag verwenden; renv braucht.Rprofilefuer die Aktivierung - Bei renv-Fehlern zuerst
renv::restore()ausfuehren - Bei komplexen Befehlen die mit Exit-Code 5 fehlschlagen, stattdessen in eine Skriptdatei schreiben
Schritt 3: Ergebnisse interpretieren
Die Zusammenfassungszeile suchen:
[ FAIL 0 | WARN 0 | SKIP 7 | PASS 2042 ]
- PASS: Tests die bestanden haben
- FAIL: Tests die fehlgeschlagen sind (muessen untersucht werden)
- SKIP: Uebersprungene Tests (meist wegen fehlender optionaler Pakete wie
snic) - WARN: Warnungen waehrend der Tests (pruefen aber nicht blockierend)
Erwartet: Die Zusammenfassungszeile geparst um PASS-, FAIL-, SKIP- und WARN-Zaehler zu identifizieren. FAIL = 0 fuer einen sauberen Testlauf.
Bei Fehler: Wenn die Zusammenfassungszeile nicht sichtbar ist, ist der Test-Runner moeglicherweise vor Abschluss abgestuerzt. Auf R-Fehler oberhalb der Zusammenfassung pruefen. Wenn die Ausgabe abgeschnitten ist, in eine Datei umleiten: "$R_EXE" -e "devtools::test()" > test_results.txt 2>&1.
Schritt 4: Fehlschlaege untersuchen
Wenn Tests fehlschlagen:
- Die Fehlermeldung lesen — sie enthaelt Datei, Zeile und Erwartetes vs. Tatsaechliches
- Pruefen ob es ein neuer Fehler oder ein bereits bestehender ist
- Bei Assertionsfehlerern den Test und die getestete Funktion lesen
- Bei Fehlererrors pruefen ob sich eine Funktionssignatur geaendert hat
# Nur den fehlschlagenden Test mit ausfuehrlicher Ausgabe ausfuehren
"$R_EXE" -e "testthat::test_file('tests/testthat/test-failing.R', reporter = 'summary')"
Erwartet: Grundursache jedes fehlschlagenden Tests identifiziert. Der Fehler ist entweder eine echte Regression (Code muss korrigiert werden) oder ein Testumgebungsproblem (fehlende Abhaengigkeit, Pfadproblem).
Bei Fehler: Wenn die Fehlermeldung unklar ist, browser()- oder print()-Anweisungen zum Test hinzufuegen und mit testthat::test_file() fuer interaktives Debugging erneut ausfuehren.
Schritt 5: Gruende fuer Uebersprungene pruefen
Uebersprungene Tests sind normal wenn optionale Abhaengigkeiten fehlen:
snic-Pakettests ueberspringen mitskip_if_not_installed("snic")- Tests die ein bestimmtes Betriebssystem erfordern ueberspringen mit
skip_on_os() - Nur-CRAN-Tests ueberspringen mit
skip_on_cran()
Bestaetigen dass die Gruende fuer das Ueberspringen berechtigt sind und keine echten Fehler verbergen.
Erwartet: Alle uebersprungenen Tests sind durch berechtigte Gruende abgedeckt (optionale Abhaengigkeit nicht installiert, plattformspezifisches Ueberspringen, Nur-CRAN-Ueberspringen). Keine uebersprungenen Tests verbergen tatsaechliche Testfehler.
Bei Fehler: Wenn ein Ueberspringen verdaechtig erscheint, den skip_if_*()-Aufruf voruebergehend entfernen und den Test ausfuehren um zu sehen ob er besteht oder einen versteckten Fehler offenbart.
Validierung
- Alle Tests bestehen (FAIL = 0)
- Keine unerwarteten Warnungen
- Zaehler der Uebersprungenen entspricht den Erwartungen (nur uebersprungene fuer optionale Abhaengigkeiten)
- Testanzahl hat sich nicht verringert (keine Tests versehentlich entfernt)
Haeufige Stolperfallen
--vanillaverwenden: Bricht die renv-Aktivierung ab. Niemals mit jigsawR verwenden.- Komplexe
-e-Zeichenketten: Shell-Escaping-Probleme verursachen Exit-Code 5. Skriptdateien verwenden. - Veralteter Paketzustand:
devtools::load_all()oderdevtools::document()vor dem Testen ausfuehren wenn NAMESPACE-beeinflussender Code geaendert wurde. - Fehlende Testabhaengigkeiten: Manche Tests brauchen vorgeschlagene Pakete. Das
Suggests-Feld inDESCRIPTIONpruefen. - Probleme mit parallelen Tests: Wenn Tests sich gegenseitig stoeren, sequentiell mit
testthat::test_file()ausfuehren.
Verwandte Skills
generate-puzzle— Puzzles generieren um zu verifizieren dass das Verhalten den Tests entsprichtadd-puzzle-type— neue Typen brauchen umfassende Testsuitenwrite-testthat-tests— allgemeine Muster zum Schreiben von R-Testsvalidate-piles-notation— PILES-Parsing unabhaengig testen
GitHub 仓库
相关推荐技能
evaluating-llms-harness
测试该Skill通过60+个学术基准测试(如MMLU、GSM8K等)评估大语言模型质量,适用于模型对比、学术研究及训练进度追踪。它支持HuggingFace、vLLM和API接口,被EleutherAI等行业领先机构广泛采用。开发者可通过简单命令行快速对模型进行多任务批量评估。
cloudflare-cron-triggers
测试这个Claude Skill提供了关于Cloudflare Cron Triggers的完整知识库,用于通过cron表达式定时执行Workers。它支持配置周期性任务、维护作业和自动化工作流,并能处理常见的cron触发错误。开发者可以用它来设置定时任务、测试cron处理器,并集成Workflows和Green Compute功能。
webapp-testing
测试该Skill为开发者提供了基于Playwright的本地Web应用测试工具集,支持自动化测试前端功能、调试UI行为、捕获屏幕截图和查看浏览器日志。它包含管理服务器生命周期的辅助脚本,可直接作为黑盒工具运行而无需阅读源码。适用于需要快速验证本地Web应用界面和交互功能的开发场景。
finishing-a-development-branch
测试这个Skill用于开发分支完成后的集成决策,当代码实现完成且测试通过时,它会引导开发者选择合适的工作流。它首先验证测试状态,然后提供合并、创建PR或清理等结构化选项。核心价值在于确保代码质量的同时,标准化分支收尾流程。
