Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

lockファイルの完全一致テストは何もしていなくても通らなくなることがある #1503

Open
Hiroshiba opened this issue Dec 12, 2024 · 0 comments
Labels
バグ 状態:実装者募集 実装者を募集している状態 状態:必要性議論 必要性を議論している状態

Comments

@Hiroshiba
Copy link
Member

不具合の内容

Github workflowでlockが変わってないかどうかをチェックする工程があります。

https://github.com/Hiroshiba/voicevox_engine/blob/bda64e0c17eb1d7db76ee592f2033c9dee5a4145/.github/workflows/test.yml#L28-L32

そもそもlockファイルは(こちらが特に変更していなくても)勝手に変わるものっぽく、たまに無関係な状況でテストが落ちてしまいます。

これをどうすべきかを議論する・解決するissueです。

現象・ログ

wheelの追加など、pypi側の変更があるとlock内容が変わって落ちる?

その他

解決策の候補がいくつかありますが、しっくり来るものが思いついていません。

pyproject.yamlやlockが変更されたときだけテストする

これが妥当な方法な気はします。
が、このifを書くのは意外と難しい気がします。(このテストだけ別ファイルに分ければGithub workflowのトリガーを使えますが、メンテナンス性が下がってしまうので・・・。)

未検証ですが、こんな感じのコードを書けば良い・・・・・・?(ChatGPT産)

# pyproject.yamlが変更されたか判定
- name: Check if pyproject.yaml changed
  id: pyproject_check
  run: |
    # 直近のコミット間の差分を調査。必要に応じてdiff範囲を修正してください。
    if git diff --name-only HEAD~1 HEAD | grep 'pyproject.yaml'; then
      echo "changed=true" >> $GITHUB_OUTPUT
    else
      echo "changed=false" >> $GITHUB_OUTPUT
    fi

# 上記判定結果に応じて`Validate poetry.lock`実行可否を制御
- name: <Test> Validate poetry.lock
  if: steps.pyproject_check.outputs.changed == 'true'
  run: |
    poetry lock --no-update
    git diff --exit-code

lockの完全一致をやめて妥当な判定方法にする

どうやればいいんだろう・・・。

放っておく

そういうものだと割り切るのも不可能ではない気がします。
が、関係ないテストが落ちてしまってもコミッターにはわからないので、あまり良くない気がします。


ご意見募集中です 🙏

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
バグ 状態:実装者募集 実装者を募集している状態 状態:必要性議論 必要性を議論している状態
Projects
None yet
Development

No branches or pull requests

1 participant