diff --git "a/docs/03_PLAN/PLAN_02_\351\226\213\347\231\272\343\202\271\343\203\206\343\203\203\343\203\227.md" "b/docs/03_PLAN/PLAN_02_\351\226\213\347\231\272\343\202\271\343\203\206\343\203\203\343\203\227.md" index 693a718..f7dd922 100644 --- "a/docs/03_PLAN/PLAN_02_\351\226\213\347\231\272\343\202\271\343\203\206\343\203\203\343\203\227.md" +++ "b/docs/03_PLAN/PLAN_02_\351\226\213\347\231\272\343\202\271\343\203\206\343\203\203\343\203\227.md" @@ -11,7 +11,7 @@ 5. **基準設計でキャリブレーション** 6. **設計バリエーションを比較** -各ステップ完了時に [GUIDE_04](../01_GUIDE/GUIDE_04_Git運用ルール.md) に従ってコミット・PR を作成する.`/implement <ステップ>` でコーディング → テスト → リファクタの自動パイプラインを通す. +各ステップ完了時に [git-conventions](../../.claude/rules/git-conventions.md) に従ってコミット・PR を作成する.`/implement <ステップ>` でコーディング → テスト → リファクタの自動パイプラインを通す. ## ステップ一覧 (Steps) @@ -30,7 +30,7 @@ ## 人間の確認ポイント (Human Checkpoints) 各ステップは `/implement ` で実装する.`/implement` 内の確認ポイント -([GUIDE_05](../01_GUIDE/GUIDE_05_エージェント運用ルール.md) 準拠)に加え,Step 固有の人間関与は以下のとおり. +([GUIDE_02 エージェント運用ルール](../01_GUIDE/GUIDE_02_エージェント運用ルール.md) 準拠)に加え,Step 固有の人間関与は以下のとおり. | Step | 事前準備(人間) | Phase 1 後の確認 | Step 完了の判断 | | --- | --- | --- | --- | diff --git a/docs/05_TECH/README.md b/docs/05_TECH/README.md index c279bf0..222ff3c 100644 --- a/docs/05_TECH/README.md +++ b/docs/05_TECH/README.md @@ -86,4 +86,4 @@ 1. **どのカテゴリか判断**: 🟢 結論集約 / 🔵 過程記録 2. **連番を継続**: TECH_10, TECH_11, ... 3. **本 README に追記**: 該当カテゴリのリストに 1 行追加 -4. **GUIDE_03 ファイル命名規則** に従う ([../01_GUIDE/GUIDE_03_ファイル命名規則.md](../01_GUIDE/GUIDE_03_ファイル命名規則.md)) +4. **ファイル命名規則** に従う ([../../.claude/rules/docs-naming.md](../../.claude/rules/docs-naming.md)) diff --git a/src/sm_tias_lightsim/cli/render.py b/src/sm_tias_lightsim/cli/render.py index bba312a..c29f659 100644 --- a/src/sm_tias_lightsim/cli/render.py +++ b/src/sm_tias_lightsim/cli/render.py @@ -1,6 +1,6 @@ # pyright: reportCallIssue=none # Mitsuba 3 は variant ベースの動的属性解決を行うため Pylance/Pyright が -# mi.* を object 型と推論し reportCallIssue を誤検知する(GUIDE_06 の方針). +# mi.* を object 型と推論し reportCallIssue を誤検知する(coding-style.md の方針). # 下記の Mitsuba 依存 import(load_scene_yaml / render_scene / save_png / save_luminance)を # main() 内で遅延 import しているのは,--help だけ使う場面(Mitsuba 不在の軽量環境)でも # 起動できるようにするためである. diff --git a/src/sm_tias_lightsim/cli/visualize.py b/src/sm_tias_lightsim/cli/visualize.py index 5092611..04a9dc3 100644 --- a/src/sm_tias_lightsim/cli/visualize.py +++ b/src/sm_tias_lightsim/cli/visualize.py @@ -1,6 +1,6 @@ # pyright: reportCallIssue=none # Mitsuba 3 は variant ベースの動的属性解決を行うため Pylance/Pyright が -# mi.* を object 型と推論し reportCallIssue を誤検知する(GUIDE_06 の方針). +# mi.* を object 型と推論し reportCallIssue を誤検知する(coding-style.md の方針). """sm-visualize コマンドラインエントリポイント. YAML シーン定義を読み込み,3D 照度ベイクと PyVista インタラクティブビューアを提供する. diff --git a/src/sm_tias_lightsim/render/runner.py b/src/sm_tias_lightsim/render/runner.py index 1221ff6..59bffea 100644 --- a/src/sm_tias_lightsim/render/runner.py +++ b/src/sm_tias_lightsim/render/runner.py @@ -1,6 +1,6 @@ # pyright: reportCallIssue=none # Mitsuba 3 は variant ベースの動的属性解決を行うため Pylance/Pyright が -# mi.* を object 型と推論し reportCallIssue を誤検知する(GUIDE_06 の方針). +# mi.* を object 型と推論し reportCallIssue を誤検知する(coding-style.md の方針). """Mitsuba レンダリング実行モジュール. variant 設定と mi.render() の実行を担う. diff --git a/src/sm_tias_lightsim/scene/builder.py b/src/sm_tias_lightsim/scene/builder.py index 5d473b4..259b26c 100644 --- a/src/sm_tias_lightsim/scene/builder.py +++ b/src/sm_tias_lightsim/scene/builder.py @@ -1,6 +1,6 @@ # pyright: reportCallIssue=none # Mitsuba 3 は variant ベースの動的属性解決を行うため Pylance/Pyright が -# mi.* を object 型と推論し reportCallIssue を誤検知する(GUIDE_06 の方針). +# mi.* を object 型と推論し reportCallIssue を誤検知する(coding-style.md の方針). """SceneConfig 全体を Mitsuba load_dict 互換 dict に変換する統合モジュール.""" from __future__ import annotations diff --git a/src/sm_tias_lightsim/scene/lights.py b/src/sm_tias_lightsim/scene/lights.py index c80ed03..d37d83b 100644 --- a/src/sm_tias_lightsim/scene/lights.py +++ b/src/sm_tias_lightsim/scene/lights.py @@ -1,6 +1,6 @@ # pyright: reportCallIssue=none # Mitsuba 3 は variant ベースの動的属性解決を行うため Pylance/Pyright が -# mi.* を object 型と推論し reportCallIssue を誤検知する(GUIDE_06 の方針). +# mi.* を object 型と推論し reportCallIssue を誤検知する(coding-style.md の方針). """YAML 光源定義 → Mitsuba emitter dict 変換モジュール.""" from __future__ import annotations diff --git a/src/sm_tias_lightsim/scene/sensors.py b/src/sm_tias_lightsim/scene/sensors.py index 24de308..fe42ba3 100644 --- a/src/sm_tias_lightsim/scene/sensors.py +++ b/src/sm_tias_lightsim/scene/sensors.py @@ -1,6 +1,6 @@ # pyright: reportCallIssue=none # Mitsuba 3 は variant ベースの動的属性解決を行うため Pylance/Pyright が -# mi.* を object 型と推論し reportCallIssue を誤検知する(GUIDE_06 の方針). +# mi.* を object 型と推論し reportCallIssue を誤検知する(coding-style.md の方針). """YAML センサ定義 → Mitsuba sensor dict 変換モジュール.""" from __future__ import annotations diff --git a/src/sm_tias_lightsim/visualize/baker.py b/src/sm_tias_lightsim/visualize/baker.py index 5b7bb82..189c625 100644 --- a/src/sm_tias_lightsim/visualize/baker.py +++ b/src/sm_tias_lightsim/visualize/baker.py @@ -1,6 +1,6 @@ # pyright: reportCallIssue=none # Mitsuba 3 は variant ベースの動的属性解決を行うため Pylance/Pyright が -# mi.* を object 型と推論し reportCallIssue を誤検知する(GUIDE_06 の方針). +# mi.* を object 型と推論し reportCallIssue を誤検知する(coding-style.md の方針). """各メッシュ face 中心での照度ベイクモジュール. 2 つのモードを提供する: diff --git a/tests/cli/test_evaluate.py b/tests/cli/test_evaluate.py index c603b80..fb1bce5 100644 --- a/tests/cli/test_evaluate.py +++ b/tests/cli/test_evaluate.py @@ -4,7 +4,7 @@ - docs/04_SPEC/SPEC_01_アーキテクチャ設計.md(evaluate パイプライン・CLI エントリポイント) - docs/04_SPEC/SPEC_02_シーン定義仕様.md(evaluation セクション) - docs/03_PLAN/PLAN_02_開発ステップ.md(Step 6 完了条件) -- docs/01_GUIDE/GUIDE_08_テスト方針.md(テスト方針) +- .claude/rules/testing.md(テスト方針) Step 6 完了条件: シミュ PNG と実測 PNG の両方で同じ指標 CSV が出ること @@ -12,8 +12,8 @@ テスト方針: - subprocess ではなく main() を直接呼ぶ(速度・カバレッジのため) - - ファイル I/O はモックせず tmp_path フィクスチャで実ファイルを使う (GUIDE_08) - - 乱数を使う場合は seed を必ず固定する (GUIDE_08) + - ファイル I/O はモックせず tmp_path フィクスチャで実ファイルを使う (testing.md) + - 乱数を使う場合は seed を必ず固定する (testing.md) 注意: matplotlib の Agg バックエンドは evaluate.py 内部で設定される. @@ -49,7 +49,7 @@ def _make_luminance_array(seed: int = 0, size: int = 256) -> numpy.ndarray: """ゼロを含まない合成輝度配列を返す(seed 固定). - max/min 計算が走るようゼロを含まない値にする (GUIDE_08 補助ガイダンス) + max/min 計算が走るようゼロを含まない値にする (testing.md 補助ガイダンス) """ rng = numpy.random.RandomState(seed) return numpy.full((size, size), 100.0) + rng.normal(0, 5, (size, size)) diff --git a/tests/cli/test_evaluate_normalization.py b/tests/cli/test_evaluate_normalization.py index 3af432a..b1312b8 100644 --- a/tests/cli/test_evaluate_normalization.py +++ b/tests/cli/test_evaluate_normalization.py @@ -4,12 +4,12 @@ - 実装サマリー(CLI 後方互換・ログ出力・metrics.csv mean 一致・形状指標不変性) - docs/04_SPEC/SPEC_04_評価仕様.md(評価パイプライン Step 6: normalization) - docs/04_SPEC/SPEC_03_基準設計の物理構成.md(「形状指標への影響(重要)」節) -- docs/01_GUIDE/GUIDE_08_テスト方針.md(テスト方針) +- .claude/rules/testing.md(テスト方針) テスト方針: - subprocess ではなく main() を直接呼ぶ(速度・カバレッジのため) - - ファイル I/O はモックせず tmp_path フィクスチャで実ファイルを使う (GUIDE_08) - - 乱数を使う場合は seed を必ず固定する (GUIDE_08) + - ファイル I/O はモックせず tmp_path フィクスチャで実ファイルを使う (testing.md) + - 乱数を使う場合は seed を必ず固定する (testing.md) - CLI 統合テストとして「パイプライン全体を通した振る舞い」を検証する 注意: @@ -69,7 +69,7 @@ def _make_luminance_array(seed: int = 0, size: int = 256) -> numpy.ndarray: """ゼロを含まない合成輝度配列を返す(seed 固定). - max/min 計算が走るようゼロを含まない値にする (GUIDE_08 補助ガイダンス) + max/min 計算が走るようゼロを含まない値にする (testing.md 補助ガイダンス) """ rng = numpy.random.RandomState(seed) return numpy.full((size, size), 100.0) + rng.normal(0, 5, (size, size)) diff --git a/tests/cli/test_evaluate_radial_min_max.py b/tests/cli/test_evaluate_radial_min_max.py index f32b20b..155b511 100644 --- a/tests/cli/test_evaluate_radial_min_max.py +++ b/tests/cli/test_evaluate_radial_min_max.py @@ -8,8 +8,8 @@ テスト方針: - subprocess ではなく main() / _run_radial_min_max() を直接呼ぶ(速度・カバレッジのため) - - ファイル I/O はモックせず tmp_path フィクスチャで実ファイルを使う (GUIDE_08) - - 乱数を使う場合は seed を必ず固定する (GUIDE_08) + - ファイル I/O はモックせず tmp_path フィクスチャで実ファイルを使う (testing.md) + - 乱数を使う場合は seed を必ず固定する (testing.md) - monkeypatch で calc_radial_profile の呼び出し有無を検証する 注意: diff --git a/tests/cli/test_evaluate_shape_metrics.py b/tests/cli/test_evaluate_shape_metrics.py index 72342bd..6e6fe97 100644 --- a/tests/cli/test_evaluate_shape_metrics.py +++ b/tests/cli/test_evaluate_shape_metrics.py @@ -8,8 +8,8 @@ テスト方針: - subprocess ではなく main() / _run_shape_metrics() を直接呼ぶ(速度・カバレッジのため) - - ファイル I/O はモックせず tmp_path フィクスチャで実ファイルを使う (GUIDE_08) - - 乱数を使う場合は seed を必ず固定する (GUIDE_08) + - ファイル I/O はモックせず tmp_path フィクスチャで実ファイルを使う (testing.md) + - 乱数を使う場合は seed を必ず固定する (testing.md) 注意: matplotlib の Agg バックエンドは evaluate.py 内部で設定される. diff --git a/tests/cli/test_render.py b/tests/cli/test_render.py index 32969db..49e449f 100644 --- a/tests/cli/test_render.py +++ b/tests/cli/test_render.py @@ -3,7 +3,7 @@ 仕様出典: - docs/03_PLAN/PLAN_02_開発ステップ.md(Step 5: render CLI 完了条件) - docs/04_SPEC/SPEC_01_アーキテクチャ設計.md(CLI 層の責務) -- docs/01_GUIDE/GUIDE_08_テスト方針.md(テスト方針) +- .claude/rules/testing.md(テスト方針) Step 5 完了条件: `sm-render --scene --output ` で PNG と luminance.npy が生成されること diff --git a/tests/cli/test_visualize_cli.py b/tests/cli/test_visualize_cli.py index b688e01..aa044ff 100644 --- a/tests/cli/test_visualize_cli.py +++ b/tests/cli/test_visualize_cli.py @@ -3,11 +3,11 @@ 仕様出典: - Phase 1 実装サマリー(sm-visualize CLI 仕様) - docs/04_SPEC/SPEC_01_アーキテクチャ設計.md(CLI 層の責務) -- docs/01_GUIDE/GUIDE_08_テスト方針.md(テスト方針) +- .claude/rules/testing.md(テスト方針) テスト方針: - main() を直接呼び出す(subprocess 不使用:速度・カバレッジのため) -- ファイル I/O は tmp_path で実ファイルを使う(GUIDE_08) +- ファイル I/O は tmp_path で実ファイルを使う(testing.md) - PyVista は off_screen=True 相当(screenshot 指定 or --off-screen)で実行 CLI 仕様(sm-visualize): diff --git a/tests/conftest.py b/tests/conftest.py index edcf257..c41f2c7 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -16,7 +16,7 @@ to_world 生成で内部的に mi.ScalarTransform4f を使うため, セッション開始時に variant を設定しておく必要がある. - GUIDE_08: Mitsuba をモックしない方針に従い実ライブラリを使用する. + testing.md: Mitsuba をモックしない方針に従い実ライブラリを使用する. """ import mitsuba as mi diff --git a/tests/evaluation/test_dng_loader.py b/tests/evaluation/test_dng_loader.py index b5490ad..4fe8f31 100644 --- a/tests/evaluation/test_dng_loader.py +++ b/tests/evaluation/test_dng_loader.py @@ -3,7 +3,7 @@ 仕様出典: - docs/05_TECH/TECH_06_MiniTias-Evaluation引き継ぎ受領.md - docs/05_TECH/TECH_05_MiniTiasEvaluation_DNG対応要求仕様.md -- docs/01_GUIDE/GUIDE_08_テスト方針.md +- .claude/rules/testing.md テスト対象: A. load_image_dng() — DNG 読み込み I/F の仕様検証 @@ -13,7 +13,7 @@ テスト方針: - 実 DNG ファイル必須のテスト(A5〜A8, V4)は DNG 未存在時にスキップ - A5〜A8 / V4 は @pytest.mark.slow を付ける(DNG 処理は数秒かかる) - - ファイル I/O はモックしない(GUIDE_08) + - ファイル I/O はモックしない(testing.md) - 乱数不使用のため seed 固定不要 """ diff --git a/tests/evaluation/test_normalize.py b/tests/evaluation/test_normalize.py index b618427..68d80ca 100644 --- a/tests/evaluation/test_normalize.py +++ b/tests/evaluation/test_normalize.py @@ -4,15 +4,15 @@ - 実装サマリー(apply_mean_anchor 関数仕様) - docs/04_SPEC/SPEC_03_基準設計の物理構成.md(「形状指標への影響(重要)」節) - docs/04_SPEC/SPEC_04_評価仕様.md(評価パイプライン・メトリクス定義) -- docs/01_GUIDE/GUIDE_08_テスト方針.md(テスト方針) +- .claude/rules/testing.md(テスト方針) テスト対象: apply_mean_anchor(values, target_mean) -> (normalized, alpha) テスト方針: - 既知の入力・出力で数値精度を検証する(実装詳細でなく振る舞いを検証) - - ファイル I/O はモックせず実 ndarray を使う (GUIDE_08) - - 乱数を使う場合は seed を必ず固定する (GUIDE_08) + - ファイル I/O はモックせず実 ndarray を使う (testing.md) + - 乱数を使う場合は seed を必ず固定する (testing.md) """ from __future__ import annotations diff --git a/tests/evaluation/test_oetf.py b/tests/evaluation/test_oetf.py index 95689f3..bfc83a7 100644 --- a/tests/evaluation/test_oetf.py +++ b/tests/evaluation/test_oetf.py @@ -3,7 +3,7 @@ 仕様出典: - docs/04_SPEC/SPEC_03_基準設計の物理構成.md(「手法訂正」「luma vs luminance」節) - output/sweep_reflectance/apply_oetf.py(検証済み参照実装) -- docs/01_GUIDE/GUIDE_08_テスト方針.md(テスト方針) +- .claude/rules/testing.md(テスト方針) - IEC 61966-2-1(sRGB 規格) テスト対象: @@ -13,8 +13,8 @@ テスト方針: - 既知の入力・出力で数値精度を検証する(実装詳細でなく振る舞いを検証) - - ファイル I/O はモックせず実 ndarray を使う (GUIDE_08) - - 乱数を使う場合は seed を必ず固定する (GUIDE_08) + - ファイル I/O はモックせず実 ndarray を使う (testing.md) + - 乱数を使う場合は seed を必ず固定する (testing.md) """ from __future__ import annotations diff --git a/tests/evaluation/test_roi.py b/tests/evaluation/test_roi.py index 18f7cd6..feb6d12 100644 --- a/tests/evaluation/test_roi.py +++ b/tests/evaluation/test_roi.py @@ -3,7 +3,7 @@ 仕様出典: - docs/04_SPEC/SPEC_01_アーキテクチャ設計.md(evaluation/roi 層の責務) - docs/04_SPEC/SPEC_02_シーン定義仕様.md(evaluation.roi スキーマ) -- docs/01_GUIDE/GUIDE_08_テスト方針.md(テスト方針) +- .claude/rules/testing.md(テスト方針) evaluation/roi の責務: 画像 + ROI 定義 → ROI 内の輝度配列 @@ -11,7 +11,7 @@ テスト方針: - RoiConfig を直接構築して extract_roi の振る舞いを検証する - - ファイル I/O はモックせず実 ndarray を使う (GUIDE_08) + - ファイル I/O はモックせず実 ndarray を使う (testing.md) - numpy.testing.assert_array_equal で配列値の一致を確認する """ diff --git a/tests/evaluation/test_shape_metrics.py b/tests/evaluation/test_shape_metrics.py index 9b26bf2..6df2de2 100644 --- a/tests/evaluation/test_shape_metrics.py +++ b/tests/evaluation/test_shape_metrics.py @@ -7,7 +7,7 @@ - src/sm_tias_lightsim/evaluation/shape_metrics.py(docstring) テスト方針: - - 純関数 A〜E は乱数固定で確定的テストとする(GUIDE_08) + - 純関数 A〜E は乱数固定で確定的テストとする(testing.md) - 既知の合成画像に対して期待される振る舞いをテストする(実装詳細ではない) - NaN/inf 境界条件もカバーする """ diff --git a/tests/evaluation/test_visualize.py b/tests/evaluation/test_visualize.py index 9f502f6..1314ffd 100644 --- a/tests/evaluation/test_visualize.py +++ b/tests/evaluation/test_visualize.py @@ -2,9 +2,9 @@ 仕様出典: - docs/04_SPEC/SPEC_01_アーキテクチャ設計.md(evaluation/visualize 層の責務) -- docs/01_GUIDE/GUIDE_08_テスト方針.md(可視化は smoke テストで十分) +- .claude/rules/testing.md(可視化は smoke テストで十分) -テスト方針 (GUIDE_08): +テスト方針 (testing.md): 可視化の smoke テストは「ファイルが生成されたか」「ファイルサイズが 0 でないか」程度で十分. 図の見栄えはテストしない. matplotlib.use("Agg") を pyplot の import より前に呼ぶこと. @@ -36,7 +36,7 @@ def _make_luminance(size: int = 16) -> numpy.ndarray: """テスト用の合成輝度配列(全画素 100.0 ± 小さなノイズ)を返す. - 乱数 seed を固定して再現性を保証する (GUIDE_08: seed を必ず固定する) + 乱数 seed を固定して再現性を保証する (testing.md: seed を必ず固定する) """ rng = numpy.random.RandomState(0) return numpy.full((size, size), 100.0) + rng.normal(0, 5, (size, size)) diff --git a/tests/geometry/conftest.py b/tests/geometry/conftest.py index 260fbc8..d819509 100644 --- a/tests/geometry/conftest.py +++ b/tests/geometry/conftest.py @@ -1,7 +1,7 @@ """geometry テスト共通フィクスチャ. テスト用 STL ファイルを tmp_path に生成して返す. -モックは使わず実ファイルで検証する(GUIDE_08 モック方針). +モックは使わず実ファイルで検証する(testing.md モック方針). """ import pathlib diff --git a/tests/geometry/test_subdivide.py b/tests/geometry/test_subdivide.py index 3f9eb5a..a3e4331 100644 --- a/tests/geometry/test_subdivide.py +++ b/tests/geometry/test_subdivide.py @@ -4,7 +4,7 @@ - src/sm_tias_lightsim/geometry/subdivide.py (subdivide_mesh_to_max_edge docstring) - CLAUDE.md 実装サマリー(--bake-subdivide 機能) -テスト方針(GUIDE_08 準拠): +テスト方針(testing.md 準拠): - 純関数の単体テスト(pyvista / Mitsuba 不要) - trimesh 依存のため trimesh をインポートしてテスト - 決定論性・dtype・インデックス整合性を必ず検証する diff --git a/tests/geometry/test_transforms.py b/tests/geometry/test_transforms.py index 47c7b50..72d42bf 100644 --- a/tests/geometry/test_transforms.py +++ b/tests/geometry/test_transforms.py @@ -3,7 +3,7 @@ 仕様出典: - docs/04_SPEC/SPEC_01_アーキテクチャ設計.md(geometry 層の責務) - docs/03_PLAN/PLAN_02_開発ステップ.md(Step 3 完了条件: 単位変換が可逆) -- docs/01_GUIDE/GUIDE_08_テスト方針.md(Mandatory: データ変換「変換が可逆であること」) +- .claude/rules/testing.md(Mandatory: データ変換「変換が可逆であること」) """ import pathlib @@ -179,7 +179,7 @@ """mm → m → mm で元の頂点とほぼ一致すること(単位変換の可逆性). 仕様: 単位変換が可逆 (PLAN_02_開発ステップ.md Step 3 完了条件) - GUIDE_08 Mandatory: 「データ変換: 変換が可逆であること」 + testing.md Mandatory: 「データ変換: 変換が可逆であること」 """ vertices_mm = numpy.array( [ diff --git a/tests/render/test_runner.py b/tests/render/test_runner.py index 7051605..99962ee 100644 --- a/tests/render/test_runner.py +++ b/tests/render/test_runner.py @@ -4,7 +4,7 @@ - docs/04_SPEC/SPEC_01_アーキテクチャ設計.md(render/runner 層の責務) - docs/03_PLAN/PLAN_02_開発ステップ.md(Step 4 完了条件: 64×64 の合成シーンを最後まで レンダリングできる) -- docs/01_GUIDE/GUIDE_08_テスト方針.md(重いテストは @pytest.mark.slow 必須) +- .claude/rules/testing.md(重いテストは @pytest.mark.slow 必須) このテストは実レンダリングを伴うため @pytest.mark.slow を付ける. 通常実行(uv run pytest -m "not slow")ではスキップされる. diff --git a/tests/scene/test_loader.py b/tests/scene/test_loader.py index fb4da9a..37c939f 100644 --- a/tests/scene/test_loader.py +++ b/tests/scene/test_loader.py @@ -1,7 +1,7 @@ """scene/schema.py の load_scene_yaml 関数の仕様ベーステスト. 仕様出典: docs/04_SPEC/SPEC_02_シーン定義仕様.md -モック方針: ファイル I/O はモックせず tmp_path フィクスチャで実ファイルを使う (GUIDE_08) +モック方針: ファイル I/O はモックせず tmp_path フィクスチャで実ファイルを使う (testing.md) """ from pathlib import Path diff --git a/tests/scene/test_normalization_schema.py b/tests/scene/test_normalization_schema.py index 542d5e1..701293a 100644 --- a/tests/scene/test_normalization_schema.py +++ b/tests/scene/test_normalization_schema.py @@ -9,12 +9,12 @@ - 実装サマリー(NormalizationConfig クラス,EvaluationConfig.normalization フィールド, OETF + normalization 同時有効化禁止 model_validator) - docs/04_SPEC/SPEC_04_評価仕様.md(評価パイプライン) -- docs/01_GUIDE/GUIDE_08_テスト方針.md(テスト方針) +- .claude/rules/testing.md(テスト方針) - src/sm_tias_lightsim/scene/schema.py(NormalizationConfig, EvaluationConfig 定義) テスト方針: - Pydantic モデルを直接構築して振る舞いを検証する(YAML パースは不要) - - ファイル I/O はモックしない (GUIDE_08) + - ファイル I/O はモックしない (testing.md) - 後方互換性(normalization キーなし = 正規化無効)を重点的に検証する """ diff --git a/tests/scene/test_oetf_schema.py b/tests/scene/test_oetf_schema.py index aca01a5..564b208 100644 --- a/tests/scene/test_oetf_schema.py +++ b/tests/scene/test_oetf_schema.py @@ -3,12 +3,12 @@ 仕様出典: - docs/04_SPEC/SPEC_03_基準設計の物理構成.md(「手法訂正」「既知の差分 item 5」節) - docs/04_SPEC/SPEC_02_シーン定義仕様.md(evaluation セクション) -- docs/01_GUIDE/GUIDE_08_テスト方針.md(テスト方針) +- .claude/rules/testing.md(テスト方針) - src/sm_tias_lightsim/scene/schema.py(OetfConfig, OetfExposureConfig 定義) テスト方針: - Pydantic モデルを直接構築して振る舞いを検証する(YAML パースは不要) - - ファイル I/O はモックしない (GUIDE_08) + - ファイル I/O はモックしない (testing.md) - 後方互換性(oetf キーなし = OETF 無効)を重点的に検証する """ diff --git a/tests/scripts/test_sweep_blend_bsdf.py b/tests/scripts/test_sweep_blend_bsdf.py index b0eb128..614648b 100644 --- a/tests/scripts/test_sweep_blend_bsdf.py +++ b/tests/scripts/test_sweep_blend_bsdf.py @@ -9,7 +9,7 @@ テスト戦略: - subprocess(sm-render 実行)は含まない._generate_tmp_yaml の純変換ロジックのみをテストする - 実際の TEMPLATE_YAML(configs/scene_baseline_blend.yaml)を使用する -- 出力先は tmp_path フィクスチャ(実ファイル)を使用する(GUIDE_08 ファイル I/O はモックしない方針) +- 出力先は tmp_path フィクスチャ(実ファイル)を使用する(testing.md のモック方針) """ from __future__ import annotations diff --git a/tests/visualize/conftest.py b/tests/visualize/conftest.py index 800120f..28a37ae 100644 --- a/tests/visualize/conftest.py +++ b/tests/visualize/conftest.py @@ -1,7 +1,7 @@ """visualize テスト共通フィクスチャ. 照度ベイクテスト・ビューアテストで使用する SceneConfig と STL ファイルを提供する. -Mitsuba をモックせず実オブジェクトを使う(GUIDE_08 モック方針). +Mitsuba をモックせず実オブジェクトを使う(testing.md モック方針). """ from __future__ import annotations diff --git a/tests/visualize/test_baker.py b/tests/visualize/test_baker.py index 43321b0..39b550d 100644 --- a/tests/visualize/test_baker.py +++ b/tests/visualize/test_baker.py @@ -3,10 +3,10 @@ 仕様出典: - Phase 1 実装サマリー(bake_irradiance 仕様) - docs/04_SPEC/SPEC_02_シーン定義仕様.md(lights セクション) -- docs/01_GUIDE/GUIDE_08_テスト方針.md(テスト方針) +- .claude/rules/testing.md(テスト方針) テスト方針: -- Mitsuba をモックせず実行する(GUIDE_08) +- Mitsuba をモックせず実行する(testing.md) - ファイル I/O は tmp_path フィクスチャで実ファイルを使う - 光源タイプ別の解析解(E = I·cosθ/r² 等)と数値比較 diff --git a/tests/visualize/test_baker_max_depth.py b/tests/visualize/test_baker_max_depth.py index fcf8274..6ebd818 100644 --- a/tests/visualize/test_baker_max_depth.py +++ b/tests/visualize/test_baker_max_depth.py @@ -13,7 +13,7 @@ bake_irradiance(..., max_depth: int | None = None) _bake_path(..., max_depth: int | None = None) -テスト方針(GUIDE_08): +テスト方針(testing.md): - path 実レンダは重く Mitsuba/LLVM 依存 → ロジック検証は純関数・モック優先 - max_depth が integrator dict に反映される純ロジック: 内部ロジックを直接テスト - None フォールバックは scene_config.render.max_depth を使うことを確認 diff --git a/tests/visualize/test_projection.py b/tests/visualize/test_projection.py index 3c12a59..87bf52c 100644 --- a/tests/visualize/test_projection.py +++ b/tests/visualize/test_projection.py @@ -5,13 +5,13 @@ - docs/04_SPEC/SPEC_02_シーン定義仕様.md(sensor orthographic 節) - src/sm_tias_lightsim/scene/sensors.py(look_at + scale 規約) - src/sm_tias_lightsim/visualize/projection.py(投影規約 docstring) -- docs/01_GUIDE/GUIDE_08_テスト方針.md +- .claude/rules/testing.md テスト方針: - PyVista 実描画は使用しない(投影・正規化・CLI のロジックを純関数レベルで重点検証) - 投影関数(project_luminance_to_vertices・find_eval_board_mesh_id)は純関数のため Mitsuba 不要・高速(slow マーカーなし) -- ファイル I/O は tmp_path フィクスチャで実ファイルを使う(GUIDE_08) +- ファイル I/O は tmp_path フィクスチャで実ファイルを使う(testing.md) テスト対象: find_eval_board_mesh_id(scene_config) -> str diff --git a/tests/visualize/test_projection_inward_mask.py b/tests/visualize/test_projection_inward_mask.py index 286ffbd..de5d272 100644 --- a/tests/visualize/test_projection_inward_mask.py +++ b/tests/visualize/test_projection_inward_mask.py @@ -9,7 +9,7 @@ テスト対象: compute_inward_face_mask(vertices_m, faces, scene_center) -> bool (N_f,) -テスト方針(GUIDE_08): +テスト方針(testing.md): - 純関数のため Mitsuba 不要・高速 (slow マーカーなし) - 合成ジオメトリで巻き順と中心が既知のケースを検証 - 縮退面・境界ケースを明示テスト diff --git a/tests/visualize/test_slide_features.py b/tests/visualize/test_slide_features.py index 3335804..3a845b2 100644 --- a/tests/visualize/test_slide_features.py +++ b/tests/visualize/test_slide_features.py @@ -8,7 +8,7 @@ 5. --bake-smooth-radius MM 6. --backface-cull -テスト方針(GUIDE_08 準拠): +テスト方針(testing.md 準拠): - 純関数の単体テスト: pyvista 不要(高速) - CLI 引数パース: _parse_args() で直接確認 - smoke テスト: @pytest.mark.slow + off_screen @@ -914,7 +914,7 @@ class TestSmokeNewArgs: """新引数を渡した show_scene / CLI の smoke テスト. - GUIDE_08: 可視化は「ファイルが生成されたか」程度の smoke テストで十分. + testing.md: 可視化は「ファイルが生成されたか」程度の smoke テストで十分. """ @pytest.mark.slow diff --git a/tests/visualize/test_viewer.py b/tests/visualize/test_viewer.py index 68c218e..53d5017 100644 --- a/tests/visualize/test_viewer.py +++ b/tests/visualize/test_viewer.py @@ -2,12 +2,12 @@ 仕様出典: - Phase 1 実装サマリー(show_scene 仕様) -- docs/01_GUIDE/GUIDE_08_テスト方針.md(可視化テストは smoke テスト) +- .claude/rules/testing.md(可視化テストは smoke テスト) テスト方針: - PyVista は必ず off_screen=True で実行する(GUI を開かない) -- 「ファイルが生成されたか」程度の smoke テストで十分(GUIDE_08) -- Mitsuba をモックしない(GUIDE_08) +- 「ファイルが生成されたか」程度の smoke テストで十分(testing.md) +- Mitsuba をモックしない(testing.md) テスト対象: show_scene(scene_config, project_root, irradiance=None, *, off_screen=False, screenshot=None) diff --git a/tests/visualize/test_viewer_new_args.py b/tests/visualize/test_viewer_new_args.py index 0d5ada9..6ed258d 100644 --- a/tests/visualize/test_viewer_new_args.py +++ b/tests/visualize/test_viewer_new_args.py @@ -10,7 +10,7 @@ --cull-outward / --no-cull-outward --no-sensor-marker / --no-led-markers / --no-markers (OR 論理) -テスト方針(GUIDE_08): +テスト方針(testing.md): - show_scene の引数シグネチャ・デフォルト値は Mitsuba 不要で純関数的に確認 - CLI 引数パーズは _parse_args() で直接確認 - 実描画テスト(smoke)は @pytest.mark.slow @@ -313,7 +313,7 @@ """show_scene に新引数を渡した smoke テスト. 仕様: 新 keyword 引数デフォルトで既存 show_scene 呼び出しが動くこと. - GUIDE_08: 可視化は「ファイルが生成されたか」程度の smoke テストで十分. + testing.md: 可視化は「ファイルが生成されたか」程度の smoke テストで十分. """ @pytest.mark.slow