Skip to content

test_instructions_check の test_ac18 が git の保守の一時ファイルで CI を落としうる #923

Description

@takemi-ohama

何を見つけたか

plugins/ndf/scripts/tests/test_instructions_check.py の test_ac18_check_writes_nothing(532 行付近)は、テスト用リポジトリの root.rglob("*") で全ファイルの mtime を前後で比べている。比べる範囲に .git 配下も含まれる。直前のコミットで git が背景の保守を走らせると、.git/objects/maintenance.lock が作られたり消えたりして、検査対象のスクリプトが何も書いていなくても前後が食い違う。

同じ形の test_ac44_refresh_writes_nothing は、CI(pytest (1/2)、run 35870540973)でまさにこの差(maintenance.lock の 1 件だけ)で落ちた。

どこで見つけたか

PR #918 のクロスレビュー(round 4)で出た CI の失敗を直したとき。test_ac44 のほうは #918 で .git 配下を比較から外して直した(コミット c42d3f8)。test_ac18 は同じ形のまま残っている。

なぜこの変更の範囲外なのか

#918(issue #885)は .md の文言を照合するテストを削る変更で、test_instructions_check.py の flaky は対象に入っていない。test_ac44 は実際に CI を落としたため直したが、test_ac18 はまだ落ちておらず、クロスレビューが収束した後にこの PR へ変更を足さないことにした。

直さないと何が起きるか

CI の pytest がたまに落ち、変更と関係のない失敗の調べ直しが起きる。直し方は test_ac44 と同じ(スナップショットから .git 配下を外す)。

由来

PR #918(issue #885)

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

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions