private TempFileCleanup CreateTempFileCleanup(bool isMainDom = true) { var mockMainDom = new Mock <IMainDom>(); mockMainDom.SetupGet(x => x.IsMainDom).Returns(isMainDom); _mockIOHelper = new Mock <IIOHelper>(); _mockIOHelper.Setup(x => x.GetTempFolders()) .Returns(new DirectoryInfo[] { new DirectoryInfo(_testPath) }); _mockIOHelper.Setup(x => x.CleanFolder(It.IsAny <DirectoryInfo>(), It.IsAny <TimeSpan>())) .Returns(CleanFolderResult.Success()); var mockLogger = new Mock <ILogger <TempFileCleanup> >(); var mockProfilingLogger = new Mock <IProfilingLogger>(); return(new TempFileCleanup(_mockIOHelper.Object, mockMainDom.Object, mockLogger.Object)); }
private void CleanupFolder(DirectoryInfo folder) { CleanFolderResult result = _ioHelper.CleanFolder(folder, _age); switch (result.Status) { case CleanFolderResultStatus.FailedAsDoesNotExist: _logger.LogDebug("The cleanup folder doesn't exist {Folder}", folder.FullName); break; case CleanFolderResultStatus.FailedWithException: foreach (CleanFolderResult.Error error in result.Errors !) { _logger.LogError(error.Exception, "Could not delete temp file {FileName}", error.ErroringFile.FullName); } break; } folder.Refresh(); // In case it's changed during runtime if (!folder.Exists) { _logger.LogDebug("The cleanup folder doesn't exist {Folder}", folder.FullName); return; } FileInfo[] files = folder.GetFiles("*.*", SearchOption.AllDirectories); foreach (FileInfo file in files) { if (DateTime.UtcNow - file.LastWriteTimeUtc > _age) { try { file.IsReadOnly = false; file.Delete(); } catch (Exception ex) { _logger.LogError(ex, "Could not delete temp file {FileName}", file.FullName); } } } }