現在、rspec でテストを実行する際に問題が発生しています。すべてのテスト ファイル (*_spec.rb) が正常に実行される可能性があります。同じまれなケースで、エラー --Errno::EACCES
が表示され、テストの 1 つが失敗することがあります。例:
ファイル*_spec.rb
実行中のすべてのテスト:
- 成功しました。
- 成功しました。
- テストが失敗したもの。
- 成功しました。
- テストが失敗したもの (#3 とは異なります)。
- 等
次のような行から例外が発生します。
FileUtils.mv
FileUtils.mkdir_p
FileUtils.rm_r
これらのリストはすべてファイルまたはディレクトリで機能し、テストで何度も使用されます。つまり
、フォルダーの作成(サブフォルダー、ファイルなど)、フォルダーの名前の変更、何かのテスト、削除などです。
問題は「タイミング」のどこかに隠されているようです (何かがまだ行われておらず、別のアクションがその何かにアクセスしようとした場合)。その心は次のことから来ています。
begin
FileUtils.mv(a, b) # if an `Errno:EACCESS` was raised here
rescue #
FileUtils.mv(a, b) # it wouldn't be raised now
end
問題は次のとおりです。
どのように修正できますか? (Errno:EACCESS
つまり、めったに再現されず、いくつかのテストが行われることを意味します)
- ファイルを操作するたびに追加する
sleep
ことは受け入れられませんが、それは役に立ちます。 - ruby のメソッド (
FileUtils.(mv|rm_r|mkdir_p)
) は、一度リトライするように変更される可能性がありますErrno::EACCES
が、これが最善の解決策ですか?
PS
私の英語で申し訳ありませんが、できるだけ簡単に説明しようとしたので、お気軽に質問してください. 少なくともこれを最後まで読んでくれてありがとう。