発生していた問題
原因のテストコード
goのテストでは、t.TempDir()というフォルダを使用するとテスト終了時に勝手に該当のフォルダを削除してくれる機能があります。
testFile, err := os.Create(t.TempDir() + "/" + fileName)
if err != nil {
t.Fatal(err)
}
実際にテストを実行したところ以下のようなエラーが出ていた。
c:\...\testing.go:1232:
TempDir RemoveAll cleanup: remove
C:\...\test_for_delete.txt:
The process cannot access the file because it is being used by another process.
解決策
os.Createで作成したファイルをCloseしていなかったことが原因でした。
testFile.Close()
最終的なコードは以下のようになりました。
testFile, err := os.Create(t.TempDir() + "/" + fileName)
if err != nil {
t.Fatal(err)
}
defer testFile.Close()
まとめ
ファイルを閉じ忘れていたというありがちなミスでしたが、気づくのにかなり時間を使ってしまいました。
LinuxなどOSによってはファイルを開いたままでも削除できたため、Windowsであるローカル環境特有の原因に気づきにくかったのも原因の一つです。
にしてもファイルぐらい勝手に閉じておいてほしいとも思わないこともないですね。