Skip to content

ci(bats): run every Linux-compatible bats file in CI #440

Closed

Description

@furedea-agent

CI の bats-tests ジョブが,bats ファイルを 3 件だけ列挙して実行しており,残り 16 件(tests/esa/format.bats を含む)が CI で走っていない.
Linux で動くものは CI に含め,macOS 専用のものは理由を明示して除外し,新しい bats ファイルが黙って漏れないようにする.

項目 before after
CI で実行する bats 3 / 19 ファイル(手書きの列挙) Linux で動くもの全件
macOS 専用テスト 暗黙に未実行 理由付きで明示的に除外
新規 bats の追加時 列挙し忘れると黙って未実行 自動で対象になる,または漏れを検出

受け入れ条件

  • 全 19 ファイルを Linux で動くもの / macOS 専用に分類し,根拠(依存ツールや OS 機能)を記録する
  • Linux で動くものはすべて CI で実行される
  • macOS 専用のものは除外理由がコードかテストから読める
  • 新しい bats ファイルを追加したとき,CI の対象から黙って漏れない仕組みがある(探索ベースの実行,または列挙漏れを検出するテスト)
  • CI の bats-tests が通る
範囲・前提・出典
  • 範囲: .github/workflows/ci.yml の bats-tests ジョブ,必要に応じて bats の skip 条件やテスト補助
  • 除外: dprint の CI 対象(別 Issue)
  • 現状: .github/workflows/ci.yml:48 は tests/esa/zsh.bats tests/moshi/update_moshi_hook.bats tests/codex/update_codex.bats のみを実行する
  • 発見の経緯: build(dprint): format Markdown with dprint instead of prettierd #438 の Claude review で,tests/esa/format.bats が CI で実行されていないことが指摘された

Activity

  1. furedea-agent commented on Nov 10, 2026

    @furedea-agent
    ContributorAuthor

    実装計画(改訂: テストごとの skip → ファイル単位のタグ)

    1 レーン.#439 とは同じ .github/workflows/ci.yml の別ジョブを触るため,#439 はこの PR のマージ後に着手する.

    方針

    項目 内容
    macOS 専用テスト 別ファイルに分け,先頭に # bats file_tags=macos と理由のコメントを 1 行ずつ置く.混在ファイルは <name>_macos.bats に分割する
    CI(ubuntu) bats --recursive --filter-tags '!macos' tests
    Mac(ローカル) 従来どおり bats --recursive tests で全件
    印の付け忘れ Linux CI で落ちるので,macOS 専用かどうかの判断が強制される
    不採用 テストごとの require_macos ヘルパー(印が散らばる),macOS ランナー(必要になったら別 Issue で実測してから判断)

    Lane C — ci/run-every-linux-compatible-bats-file(PR #441 を作り直す)

    • tests/test-helper/macos.bash と各テストの require_macos 呼び出しを削除する
    • macOS 専用のテストを特定し,ファイル単位で file_tags=macos を付ける.混在ファイル(tests/zsh/ssh_agent.bats,tests/zsh/startup.bats など)は _macos.bats に分割する
    • bats-tests ジョブを --filter-tags '!macos' 付きの探索実行にする
    • Mac で bats --recursive tests が全件通ることを確認する
    • README のテスト実行の説明に,macos タグの意味と CI での除外を追記する
    • 検証: CI の bats-tests が通り,実行件数をログで確認する.Linux で動くはずのテストを除外していないことを分類表で示す
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions