🧊

改行コードの違いでWindowsのCIだけが失敗していた

タイトルも悩ましい。

あらすじ

ことの顛末はこう。

  • OXCでフォーマッターを実装してる
  • スナップショットテストで、CLIを実行してその結果を保存してる
  • フォーマット済みのファイルにCLIを実行して、差分が出ないことを確認してるケースがあった
  • それがWindowsでだけ、なぜか差分が生まれてしまってCIが失敗する

という事象があり。

原因

Windowsだけという時点で、まあだいたい<CRLF>のせいだろうとは思ってたけど、ズバリだった。

GitHubのCIが、Windows環境でファイルを取得してきたときに、自動的に改行コードを<CRLF>にしてしまうのが原因。

そのため、フォーマッターが動いてその<CRLF><LF>に戻してしまい、差分があるよ!となる。

解決: .gitattributesを置く

* text=auto eol=lf

これですべてのファイルが<LF>になって、余計な心配をしなくてよくなる。

Configuring Git to handle line endings - GitHub Docs https://docs.github.com/en/get-started/git-basics/configuring-git-to-handle-line-endings

特定のディレクトリだけにもできる。

foo/bar/fixtures/** text=auto eol=lf

PrettierでもBiomeでも、これがちゃんと指定されてた。

ほんと<CRLF>にはいい思い出がな〜い。