Skip to content

migrate 系 spec が同一 __mock__ ディレクトリを共有し並列実行時に flaky 失敗する #377

Description

@YusukeHirao

現象

packages/@nitpicker/crawler/src/archive/ 配下の複数の migrate 系 spec ファイル(例: migrate-info-main-content-selector.spec.tsmigrate-list-reconcile-runs-invalid-skipped.spec.ts)が、同一ディレクトリ内の __mock__path.resolve(__dirname, '__mock__')、実体は __mock__/mock.sqlite)を共有している。

vitest の並列実行時に、この共有ファイルへの同時アクセスが原因と見られる disk I/O error / attempt to write a readonly database で偶発的にテストが失敗することを確認した(yarn test を連続実行して2回失敗 → 3回目で全通過、というケースあり)。該当ファイル自体に変更を加えていなくても、他の無関係なファイル追加でテストファイル数・並列度の配分が変わるだけで顕在化する。

対処案

__mock__ ディレクトリをファイルごとに固有の名前にする(例: spec ファイル名を含んだディレクトリ名にする、または beforeEach/afterEach で一時ディレクトリを都度生成する)。

影響範囲

該当する migrate 系 spec の setup/teardown ロジックのみ。プロダクションコードへの影響なし。

Activity

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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions