---
generated_at: 2026-03-01 10:30:00
metrics:
  claims_total: 122
  claims_with_evidence: 118
  claims_without_evidence: 4
confidence_derived: 0.97
---

# 根拠レポート：nu-path 単体テストケース一覧

## 本レポートについて

### 目的
本レポートは、生成された設計書・ドキュメントの信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.97**
  - 根拠あり：118 / 122、根拠なし：4
- 優先レビュー（高）
  1. **UT-PTH-029 (home_dir)**: dirs crateの動作に依存するため実行環境による
  2. **UT-PTH-030-033 (data_dir/cache_dir/nu_config_dir)**: 環境変数とdirsクレートの組み合わせ
  3. **UT-PTH-062-064 (locate_in_dirs)**: ファイルシステム操作を伴うため実行環境に依存

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `crates/nu-path/src/lib.rs` - モジュール構造とパブリックAPI定義
- E-02: `crates/nu-path/src/dots.rs` - expand_ndots, expand_dots, expand_ndots_safe関数の実装とテスト
- E-03: `crates/nu-path/src/tilde.rs` - expand_tilde関数の実装とテスト
- E-04: `crates/nu-path/src/helpers.rs` - home_dir, data_dir, cache_dir, nu_config_dir, is_windows_device_path関数の実装とテスト
- E-05: `crates/nu-path/src/trailing_slash.rs` - has_trailing_slash, strip_trailing_slash関数の実装とテスト
- E-06: `crates/nu-path/src/components.rs` - components関数の実装とテスト
- E-07: `crates/nu-path/src/expansions.rs` - canonicalize_with, absolute_with, expand_path, expand_path_with, expand_to_real_path, locate_in_dirs関数の実装
- E-08: `crates/nu-path/src/path.rs` - Path, PathBuf, RelativePath, AbsolutePath, CanonicalPath構造体とメソッドの実装
- E-09: `crates/nu-path/src/form.rs` - PathForm, Any, Relative, Absolute, Canonical型の定義
- E-10: `crates/nu-path/src/assert_path_eq.rs` - assert_path_eq!, assert_path_ne!マクロの実装とテスト
- E-11: `crates/nu-path/Cargo.toml` - パッケージ依存関係（dirs, omnipath, pwd）

## 3) Claims と根拠の対応（レビューの主戦場）

### dots.rs関連テストケース
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 (UT-PTH-001) | expand_ndots: 空パス処理 | E-02 (test_expand_ndots::empty_path) | ○ |
| C-02 (UT-PTH-002) | expand_ndots: ルートディレクトリ処理 | E-02 (test_expand_ndots::root_dir) | ○ |
| C-03 (UT-PTH-003) | expand_ndots: 2ドット維持 | E-02 (test_expand_ndots::two_dots) | ○ |
| C-04 (UT-PTH-004) | expand_ndots: 3ドット展開 | E-02 (test_expand_ndots::three_dots) | ○ |
| C-05 (UT-PTH-005) | expand_ndots: 5ドット展開 | E-02 (test_expand_ndots::five_dots) | ○ |
| C-06 (UT-PTH-006) | expand_ndots: パス内n-dots | E-02 (test_expand_ndots::three_dots_with_trailing_slash) | ○ |
| C-07 (UT-PTH-007) | expand_ndots: ファイル名のドット維持 | E-02 (test_expand_ndots::filenames_with_dots) | ○ |
| C-08 (UT-PTH-008) | expand_ndots: 複数n-dots | E-02 (test_expand_ndots::multiple_ndots) | ○ |
| C-09 (UT-PTH-009) | expand_ndots: 末尾.. | E-02 (test_expand_ndots::trailing_dots) | ○ |
| C-10 (UT-PTH-010) | expand_ndots: UNCパス | E-02 (test_expand_ndots::unc_share_no_dots) | ○ |
| C-11 (UT-PTH-011) | expand_dots: 空パス処理 | E-02 (test_expand_dots::empty_path) | ○ |
| C-12 (UT-PTH-012) | expand_dots: 単一ドット | E-02 (test_expand_dots::single_dot) | ○ |
| C-13 (UT-PTH-013) | expand_dots: 複数単一ドット | E-02 (test_expand_dots::more_single_dots) | ○ |
| C-14 (UT-PTH-014) | expand_dots: ダブルドット | E-02 (test_expand_dots::double_dots) | ○ |
| C-15 (UT-PTH-015) | expand_dots: バックトラック | E-02 (test_expand_dots::backtrack_once) | ○ |
| C-16 (UT-PTH-016) | expand_dots: ルート境界 | E-02 (test_expand_dots::backtrack_to_root) | ○ |
| C-17 (UT-PTH-017) | expand_ndots_safe: ./で始まるパス | E-02 (test_expand_ndots::leading_dot_slash) | ○ |
| C-18 (UT-PTH-018) | expand_ndots_safe: URL形式 | E-02 (expand_ndots_safe関数実装、L118) | ○ |
| C-19 (UT-PTH-019) | expand_ndots_safe: 通常パス | E-02 (expand_ndots_safe関数実装) | ○ |

### tilde.rs関連テストケース
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-20 (UT-PTH-020) | expand_tilde: チルダのみ | E-03 (tests::string_with_tilde) | ○ |
| C-21 (UT-PTH-021) | expand_tilde: ~/パス | E-03 (tests::string_with_tilde_forward_slash) | ○ |
| C-22 (UT-PTH-022) | expand_tilde: ~//パス | E-03 (tests::string_with_tilde_double_forward_slash) | ○ |
| C-23 (UT-PTH-023) | expand_tilde: 別ユーザー | E-03 (tests::string_with_tilde_other_user) | ○ |
| C-24 (UT-PTH-024) | expand_tilde: マルチバイト文字 | E-03 (tests::string_with_multi_byte_chars) | ○ |
| C-25 (UT-PTH-025) | expand_tilde: 先頭以外のチルダ | E-03 (tests::does_not_expand_tilde_if_tilde_is_not_first_character) | ○ |
| C-26 (UT-PTH-026) | expand_tilde: ホームがルート | E-03 (check_expanded関数内の特殊ケース) | ○ |
| C-27 (UT-PTH-027) | expand_tilde: 末尾スラッシュ保持 | E-03 (tests::expand_tilde_preserve_trailing_slash) | ○ |
| C-28 (UT-PTH-028) | user_home_dir: 存在しないユーザー | E-03 (tests::user_home_dir_fallback) | ○ |

### helpers.rs関連テストケース
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-29 (UT-PTH-029) | home_dir: 取得成功 | E-04 (home_dir関数実装、L7-9) | △ |
| C-30 (UT-PTH-030) | data_dir: XDG未設定 | E-04 (data_dir関数実装、L12-13) | △ |
| C-31 (UT-PTH-031) | data_dir: XDG設定済み | E-04 (configurable_dir_path関数実装) | ○ |
| C-32 (UT-PTH-032) | cache_dir: XDG未設定 | E-04 (cache_dir関数実装、L17-18) | ○ |
| C-33 (UT-PTH-033) | nu_config_dir: 取得 | E-04 (nu_config_dir関数実装、L22-26) | ○ |
| C-34 (UT-PTH-034) | is_windows_device_path: デバイス名前空間 | E-04 (test_is_windows_device_path::device_namespace) | ○ |
| C-35 (UT-PTH-035) | is_windows_device_path: 予約デバイス名 | E-04 (test_is_windows_device_path::reserved_device_name) | ○ |
| C-36 (UT-PTH-036) | is_windows_device_path: 通常パス | E-04 (test_is_windows_device_path::normal_path) | ○ |
| C-37 (UT-PTH-037) | is_windows_device_path: UNCパス | E-04 (test_is_windows_device_path::unc_path) | ○ |

### trailing_slash.rs関連テストケース
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-38 (UT-PTH-038) | has_trailing_slash: あり | E-05 (has_trailing_slash関数実装) | ○ |
| C-39 (UT-PTH-039) | has_trailing_slash: なし | E-05 (has_trailing_slash関数実装) | ○ |
| C-40 (UT-PTH-040) | has_trailing_slash: ルート | E-05 (has_trailing_slash関数実装) | ○ |
| C-41 (UT-PTH-041) | strip_trailing_slash: ルート維持 | E-05 (tests::strip_root_unix) | ○ |
| C-42 (UT-PTH-042) | strip_trailing_slash: スラッシュなし | E-05 (tests::strip_non_trailing_unix) | ○ |
| C-43 (UT-PTH-043) | strip_trailing_slash: スラッシュあり | E-05 (tests::strip_trailing_unix) | ○ |

### components.rs関連テストケース
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-44 (UT-PTH-044) | components: 空パス | E-06 (test::empty_path) | ○ |
| C-45 (UT-PTH-045) | components: ルートディレクトリ | E-06 (test::root) | ○ |
| C-46 (UT-PTH-046) | components: カレントディレクトリ | E-06 (test::cur_dir_only) | ○ |
| C-47 (UT-PTH-047) | components: カレント+末尾スラッシュ | E-06 (test::cur_dir_with_trailing_slash) | ○ |
| C-48 (UT-PTH-048) | components: 親ディレクトリ | E-06 (test::parent_dir_only) | ○ |
| C-49 (UT-PTH-049) | components: 通常ファイル名 | E-06 (test::normal_only) | ○ |
| C-50 (UT-PTH-050) | components: ファイル名+末尾スラッシュ | E-06 (test::normal_with_trailing_slash) | ○ |
| C-51 (UT-PTH-051) | components: パス再構築（Unix） | E-06 (test::reconstruct_unix_only) | ○ |
| C-52 (UT-PTH-052) | components: パス再構築+末尾スラッシュ | E-06 (test::reconstruct_unix_with_trailing_slash) | ○ |

### expansions.rs関連テストケース
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-53 (UT-PTH-053) | canonicalize_with: 相対パス正規化 | E-07 (canonicalize_with関数実装、L55-63) | ○ |
| C-54 (UT-PTH-054) | canonicalize_with: チルダ展開+正規化 | E-07 (canonicalize関数でexpand_tildeを呼び出し) | ○ |
| C-55 (UT-PTH-055) | canonicalize_with: 存在しないパス | E-07 (canonicalize_path関数がio::Resultを返す) | ○ |
| C-56 (UT-PTH-056) | absolute_with: 絶対パス変換 | E-07 (absolute_with関数実装、L73-82) | ○ |
| C-57 (UT-PTH-057) | absolute_with: チルダ展開 | E-07 (absolute_with関数でexpand_tildeを呼び出し) | ○ |
| C-58 (UT-PTH-058) | expand_path: チルダ展開有効 | E-07 (expand_path関数実装、L87-95) | ○ |
| C-59 (UT-PTH-059) | expand_path: チルダ展開無効 | E-07 (expand_path関数実装、need_expand_tildeパラメータ) | ○ |
| C-60 (UT-PTH-060) | expand_path_with: 相対パス展開 | E-07 (expand_path_with関数実装、L106-114) | ○ |
| C-61 (UT-PTH-061) | expand_to_real_path: 最小展開 | E-07 (expand_to_real_path関数実装、L122-128) | ○ |
| C-62 (UT-PTH-062) | locate_in_dirs: cwdで検索成功 | E-07 (locate_in_dirs関数実装、L133-160) | △ |
| C-63 (UT-PTH-063) | locate_in_dirs: dirsで検索成功 | E-07 (locate_in_dirs関数のフォールバック処理) | ○ |
| C-64 (UT-PTH-064) | locate_in_dirs: 検索失敗 | E-07 (locate_in_dirs関数がio::Resultを返す) | ○ |

### path.rs関連テストケース（Path構造体）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-65 (UT-PTH-065) | Path::new | E-08 (Path::new関数実装、L636-639) | ○ |
| C-66 (UT-PTH-066) | Path::as_os_str | E-08 (Path::as_os_str関数実装、L206-209) | ○ |
| C-67 (UT-PTH-067) | Path::to_str | E-08 (Path::to_str関数実装、L221-224) | ○ |
| C-68 (UT-PTH-068) | Path::to_string_lossy | E-08 (Path::to_string_lossy関数実装、L243-246) | ○ |
| C-69 (UT-PTH-069) | Path::to_path_buf | E-08 (Path::to_path_buf関数実装、L258-261) | ○ |
| C-70 (UT-PTH-070) | Path::parent: 親あり | E-08 (Path::parent関数実装、L291-295) | ○ |
| C-71 (UT-PTH-071) | Path::parent: ルート | E-08 (docコメントの例) | ○ |
| C-72 (UT-PTH-072) | Path::parent: 1コンポーネント | E-08 (docコメントの例) | ○ |
| C-73 (UT-PTH-073) | Path::ancestors | E-08 (Path::ancestors関数実装、L323-329) | ○ |
| C-74 (UT-PTH-074) | Path::file_name | E-08 (Path::file_name関数実装、L351-355) | ○ |
| C-75 (UT-PTH-075) | Path::file_name: ..終端 | E-08 (docコメントの例) | ○ |
| C-76 (UT-PTH-076) | Path::strip_prefix: 成功 | E-08 (Path::strip_prefix関数実装、L378-383) | ○ |
| C-77 (UT-PTH-077) | Path::strip_prefix: 失敗 | E-08 (docコメントの例) | ○ |
| C-78 (UT-PTH-078) | Path::starts_with: 一致 | E-08 (Path::starts_with関数実装、L407-411) | ○ |
| C-79 (UT-PTH-079) | Path::starts_with: 部分一致 | E-08 (docコメントの例) | ○ |
| C-80 (UT-PTH-080) | Path::ends_with: 一致 | E-08 (Path::ends_with関数実装、L432-435) | ○ |
| C-81 (UT-PTH-081) | Path::ends_with: 拡張子のみ | E-08 (docコメントの例) | ○ |
| C-82 (UT-PTH-082) | Path::file_stem | E-08 (Path::file_stem関数実装、L454-458) | ○ |
| C-83 (UT-PTH-083) | Path::file_stem: 複数拡張子 | E-08 (docコメントの例) | ○ |
| C-84 (UT-PTH-084) | Path::extension | E-08 (Path::extension関数実装、L478-482) | ○ |
| C-85 (UT-PTH-085) | Path::extension: 複数拡張子 | E-08 (docコメントの例) | ○ |
| C-86 (UT-PTH-086) | Path::is_absolute | E-08 (Path::is_absolute関数実装、L677-681) | ○ |
| C-87 (UT-PTH-087) | Path::is_absolute: 相対 | E-08 (docコメントの例) | ○ |
| C-88 (UT-PTH-088) | Path::is_relative | E-08 (Path::is_relative関数実装、L694-698) | ○ |
| C-89 (UT-PTH-089) | Path::try_absolute | E-08 (Path::try_absolute関数実装、L710-717) | ○ |
| C-90 (UT-PTH-090) | Path::try_absolute: 相対 | E-08 (try_absolute関数実装) | ○ |
| C-91 (UT-PTH-091) | Path::try_relative | E-08 (Path::try_relative関数実装、L729-736) | ○ |
| C-92 (UT-PTH-092) | Path::join: 相対パス | E-08 (Path::join関数実装、L754-758) | ○ |
| C-93 (UT-PTH-093) | Path::join: 絶対パス | E-08 (docコメントの例) | ○ |
| C-94 (UT-PTH-094) | Path::with_file_name | E-08 (Path::with_file_name関数実装、L778-781) | ○ |
| C-95 (UT-PTH-095) | Path::with_extension | E-08 (Path::with_extension関数実装、L800-803) | ○ |
| C-96 (UT-PTH-096) | Path::with_extension: 削除 | E-08 (docコメントの例) | ○ |
| C-97 (UT-PTH-097) | RelativePath::try_new: 成功 | E-08 (Path::try_new関数実装、L186-193) | ○ |
| C-98 (UT-PTH-098) | RelativePath::try_new: 失敗 | E-08 (Relative::invariants_satisfied) | ○ |
| C-99 (UT-PTH-099) | AbsolutePath::try_new: 成功 | E-08 (Path::try_new関数実装) | ○ |
| C-100 (UT-PTH-100) | AbsolutePath::try_new: 失敗 | E-08 (Absolute::invariants_satisfied) | ○ |
| C-101 (UT-PTH-101) | AbsolutePath::canonicalize: 成功 | E-08 (AbsolutePath::canonicalize関数実装、L1028-1034) | ○ |
| C-102 (UT-PTH-102) | AbsolutePath::canonicalize: 失敗 | E-08 (canonicalize関数がio::Resultを返す) | ○ |
| C-103 (UT-PTH-103) | AbsolutePath::metadata | E-08 (AbsolutePath::metadata関数実装、L903-906) | ○ |
| C-104 (UT-PTH-104) | AbsolutePath::exists: 存在 | E-08 (AbsolutePath::exists関数実装、L951-954) | ○ |
| C-105 (UT-PTH-105) | AbsolutePath::exists: 非存在 | E-08 (exists関数実装) | ○ |
| C-106 (UT-PTH-106) | AbsolutePath::is_file | E-08 (AbsolutePath::is_file関数実装、L981-985) | ○ |
| C-107 (UT-PTH-107) | AbsolutePath::is_dir | E-08 (AbsolutePath::is_dir関数実装、L1006-1009) | ○ |
| C-108 (UT-PTH-108) | CanonicalPath::as_absolute | E-08 (CanonicalPath::as_absolute関数実装、L1164-1167) | ○ |
| C-109 (UT-PTH-109) | PathBuf::from | E-08 (PathBuf構造体とFrom実装) | ○ |
| C-110 (UT-PTH-110) | PathBuf::as_path | E-08 (PathBuf::as_path関数実装、L1438-1442) | ○ |
| C-111 (UT-PTH-111) | PathBuf::pop: 成功 | E-08 (PathBuf::pop関数実装、L1461-1464) | ○ |
| C-112 (UT-PTH-112) | PathBuf::pop: ルート | E-08 (pop関数の戻り値) | ○ |
| C-113 (UT-PTH-113) | PathBuf::push | E-08 (PathBuf構造体) | ○ |
| C-114 (UT-PTH-114) | PathBuf::set_extension | E-08 (PathBuf構造体) | ○ |
| C-115 (UT-PTH-115) | PathBuf::into_os_string | E-08 (PathBuf::into_os_string関数実装、L1476-1479) | ○ |

### form.rs関連テストケース
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-116 (UT-PTH-116) | Any::invariants_satisfied | E-09 (Any::Sealed実装、L35-38) | ○ |
| C-117 (UT-PTH-117) | Relative::invariants_satisfied: 成功 | E-09 (Relative::Sealed実装、L47-51) | ○ |
| C-118 (UT-PTH-118) | Relative::invariants_satisfied: 失敗 | E-09 (Relative::Sealed実装) | ○ |
| C-119 (UT-PTH-119) | Absolute::invariants_satisfied: 成功 | E-09 (Absolute::Sealed実装、L59-63) | ○ |
| C-120 (UT-PTH-120) | Absolute::invariants_satisfied: 失敗 | E-09 (Absolute::Sealed実装) | ○ |

### assert_path_eq.rs関連テストケース
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-121 (UT-PTH-121) | assert_path_eq!マクロ | E-10 (test::assert_path_eq_works) | ○ |
| C-122 (UT-PTH-122) | assert_path_ne!マクロ | E-10 (test::assert_path_eq_works) | ○ |

## 4) 不足情報（Unknown / Missing）
- **UT-PTH-029 (home_dir)**: dirs crateの内部動作に依存し、環境によって結果が変わる可能性がある
  - 候補：dirs crateのドキュメント / プラットフォーム固有の設定
- **UT-PTH-030 (data_dir)**: XDG_DATA_HOME未設定時のdirs crateの挙動に依存
  - 候補：XDG Base Directory仕様 / dirs crateのドキュメント
- **UT-PTH-062 (locate_in_dirs)**: ファイルシステム操作を伴い、実行時の状態に依存
  - 候補：テスト実行時のファイルシステム状態 / モックの使用

## 5) リスクフラグ（レビュー観点）
- **1: 中リスク** - プラットフォーム依存テスト（Windows/Unix固有）
  - 多くのテストケースがプラットフォーム固有の動作をテストしており、クロスプラットフォームでのテスト実行が必要
- **0: 低リスク** - 既存テストコードとの整合性
  - ほとんどのテストケースは既存のRustテストコードから導出されており、信頼性が高い
- **1: 中リスク** - 環境変数依存テスト（XDG_*）
  - 環境変数に依存するテストは、CI/CD環境での再現性に注意が必要

## 6) レビュアーチェックリスト（最小）
- [ ] プラットフォーム固有テスト（#[cfg(windows)], #[cfg(unix)]）が適切に分類されているか確認
- [ ] ファイルシステム操作を伴うテスト（canonicalize, locate_in_dirs）のテスト環境が整備されているか確認
- [ ] 環境変数に依存するテスト（XDG_DATA_HOME等）のセットアップ手順が明確か確認
- [ ] Unicode/マルチバイト文字のテストケースがプラットフォーム間で一貫しているか確認
- [ ] 境界値テスト（空パス、ルートディレクトリ、単一コンポーネント）の網羅性を確認
