0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

goのテストでファイルが削除できずにエラーになっていた件

Posted at

発生していた問題

原因のテストコード

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であるローカル環境特有の原因に気づきにくかったのも原因の一つです。
にしてもファイルぐらい勝手に閉じておいてほしいとも思わないこともないですね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?