Back to Skills

run-puzzle-tests

pjt222
Updated 2 days ago
4 views
17
2
17
View on GitHub
Testingtesting

About

This skill runs the jigsawR test suite via WSL R, supporting full suites, pattern filtering, and single-file tests. It interprets pass/fail/skip counts to identify failing tests and is designed for use after code changes, before commits, or for debugging specific failures. Key features include not using the --vanilla flag to maintain renv compatibility through .Rprofile.

Quick Install

Claude Code

Recommended
Primary
npx skills add pjt222/agent-almanac -a claude-code
Plugin CommandAlternative
/plugin add https://github.com/pjt222/agent-almanac
Git CloneAlternative
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/run-puzzle-tests

Copy and paste this command in Claude Code to install this skill

Documentation


name: run-puzzle-tests description: > WSL R実行経由でjigsawRテストスイートを実行する。フルスイート、 パターンによるフィルタリング、シングルファイルをサポート。 パス/フェイル/スキップカウントを解釈し、失敗テストを特定する。 --vanillaフラグは使用しない(renvは.Rprofileが有効化に必要)。 Rソースコードの変更後、新しいパズルタイプや機能の追加後、 コミット前の破壊確認、特定のテスト失敗のデバッグに使用する。 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 locale: ja source_locale: en source_commit: 6f65f316 translator: claude-sonnet-4-6 translation_date: 2026-03-16

パズルテストの実行

jigsawRテストスイートを実行し結果を解釈する。

使用タイミング

  • パッケージのRソースコードを変更した後
  • 新しいパズルタイプや機能を追加した後
  • コミット前に何も壊れていないことを確認する場合
  • 特定のテスト失敗をデバッグする場合

入力

  • 必須: テストスコープ(fullfiltered、またはsingle
  • 任意: フィルターパターン(filteredモード用、例:"snic""rectangular"
  • 任意: 特定のテストファイルパス(singleモード用)

手順

ステップ1: テストスコープの選択

スコープ使用場面所要時間
Fullコミット前、大きな変更後約2-5分
Filtered1つのパズルタイプでの作業中約30秒
Single特定のテストファイルのデバッグ約10秒

期待結果: 現在のワークフローに基づいてテストスコープが選択される:コミット前はフルスイート、特定のパズルタイプでの作業時はfiltered、1つのテストのデバッグ時はsingle。

失敗時: どのスコープを使用するか不明な場合は、フルスイートをデフォルトにする。時間はかかるがクロスタイプのリグレッションをキャッチできる。

ステップ2: テストスクリプトの作成と実行

フルスイート:

スクリプトファイルを作成する(例:/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エラーの場合、最初にrenv::restore()を実行する
  • Exit code 5で失敗する複雑なコマンドの場合、代わりにスクリプトファイルに書く

ステップ3: 結果の解釈

サマリー行を探す:

[ FAIL 0 | WARN 0 | SKIP 7 | PASS 2042 ]
  • PASS: 成功したテスト
  • FAIL: 失敗したテスト(調査が必要)
  • SKIP: スキップされたテスト(通常snicのようなオプションパッケージの欠如による)
  • WARN: テスト中の警告(レビューするがブロッキングではない)

期待結果: PASS、FAIL、SKIP、WARNカウントを特定するためにサマリー行が解析される。クリーンなテスト実行ではFAIL = 0。

失敗時: サマリー行が見えない場合、テストランナーが完了前にクラッシュした可能性がある。サマリーの上のR レベルエラーを確認する。出力が切り捨てられている場合、ファイルにリダイレクトする:"$R_EXE" -e "devtools::test()" > test_results.txt 2>&1

ステップ4: 失敗の調査

テストが失敗した場合:

  1. 失敗メッセージを読む — ファイル、行、期待値と実際の値が含まれる
  2. 新しい失敗か既存のものか確認する
  3. アサーション失敗の場合、テストとテスト対象の関数を読む
  4. エラー失敗の場合、関数シグネチャが変更されたか確認する
# 詳細出力で失敗テストのみを実行
"$R_EXE" -e "testthat::test_file('tests/testthat/test-failing.R', reporter = 'summary')"

期待結果: 各失敗テストの根本原因が特定される。失敗は真のリグレッション(コードの修正が必要)かテスト環境の問題(依存関係の欠如、パスの問題)のいずれか。

失敗時: 失敗メッセージが不明確な場合、テストにbrowser()またはprint()ステートメントを追加し、対話的デバッグのためにtestthat::test_file()で再実行する。

ステップ5: スキップ理由の確認

オプション依存が欠落している場合のスキップされたテストは正常:

  • snicパッケージテストはskip_if_not_installed("snic")でスキップ
  • 特定のOSを必要とするテストはskip_on_os()でスキップ
  • CRAN専用スキップはskip_on_cran()

スキップ理由が正当であり、実際の失敗を隠していないことを確認する。

期待結果: すべてのスキップが正当な理由(オプション依存がインストールされていない、プラットフォーム固有のスキップ、CRAN専用スキップ)で説明される。実際のテスト失敗を隠すスキップはない。

失敗時: スキップが疑わしい場合、一時的にskip_if_*()呼び出しを削除してテストを実行し、パスするか隠れた失敗を明らかにするか確認する。

バリデーション

  • すべてのテストがパスする(FAIL = 0)
  • 予期しない警告がない
  • スキップカウントが期待値と一致する(オプション依存スキップのみ)
  • テストカウントが減少していない(テストが誤って削除されていない)

よくある落とし穴

  • --vanillaの使用: renvの有効化を破壊する。jigsawRでは絶対に使用しないこと。
  • 複雑な-e文字列: シェルエスケープの問題がExit code 5を引き起こす。スクリプトファイルを使用する。
  • 古いパッケージ状態: NAMESPACEに影響するコードを変更した場合、テスト前にdevtools::load_all()またはdevtools::document()を実行する。
  • テスト依存の欠如: 一部のテストにはsuggestedパッケージが必要。DESCRIPTIONのSuggestsフィールドを確認する。
  • 並列テストの問題: テストが干渉する場合、testthat::test_file()で順次実行する。

関連スキル

  • generate-puzzle — テストと動作が一致するか検証するためにパズルを生成する
  • add-puzzle-type — 新しいタイプには包括的なテストスイートが必要
  • write-testthat-tests — Rテスト記述の一般的なパターン
  • validate-piles-notation — フルスイートでPILES解析を独立してテストする

GitHub Repository

pjt222/agent-almanac
Path: i18n/ja/skills/run-puzzle-tests
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

Related Skills

evaluating-llms-harness

Testing

This Claude Skill runs the lm-evaluation-harness to benchmark LLMs across 60+ standardized academic tasks like MMLU and GSM8K. It's designed for developers to compare model quality, track training progress, or report academic results. The tool supports various backends including HuggingFace and vLLM models.

View skill

cloudflare-cron-triggers

Testing

This skill provides comprehensive knowledge for implementing Cloudflare Cron Triggers to schedule Workers using cron expressions. It covers setting up periodic tasks, maintenance jobs, and automated workflows while handling common issues like invalid cron expressions and timezone problems. Developers can use it for configuring scheduled handlers, testing cron triggers, and integrating with Workflows and Green Compute.

View skill

webapp-testing

Testing

This Claude Skill provides a Playwright-based toolkit for testing local web applications through Python scripts. It enables frontend verification, UI debugging, screenshot capture, and log viewing while managing server lifecycles. Use it for browser automation tasks but run scripts directly rather than reading their source code to avoid context pollution.

View skill

finishing-a-development-branch

Testing

This skill helps developers complete finished work by verifying tests pass and then presenting structured integration options. It guides the workflow for merging, creating PRs, or cleaning up branches after implementation is done. Use it when your code is ready and tested to systematically finalize the development process.

View skill