diff --git a/CHANGELOG.md b/CHANGELOG.md index 8d7ed09ca57..a6da588e30b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ - Clarify FramesTracker log message (#3570) - Fix rare battery breadcrumbs crash (#3582) - Fix synchronization issue in FramesTracker (#3571) +- Fix FileManager logs info instead of error when a path doesn't exist (#3594) ## 8.19.0 diff --git a/Sources/Sentry/SentryFileManager.m b/Sources/Sentry/SentryFileManager.m index 59773dcb2a7..5cd5b2f3650 100644 --- a/Sources/Sentry/SentryFileManager.m +++ b/Sources/Sentry/SentryFileManager.m @@ -225,11 +225,16 @@ - (void)deleteAllEnvelopes - (NSArray *)allFilesInFolder:(NSString *)path { NSFileManager *fileManager = [NSFileManager defaultManager]; + if (![fileManager fileExistsAtPath:path]) { + SENTRY_LOG_INFO(@"Returning empty files list, as folder doesn't exist at path: %@", path); + return @[]; + } + NSError *error = nil; NSArray *storedFiles = [fileManager contentsOfDirectoryAtPath:path error:&error]; - if (nil != error) { + if (error != nil) { SENTRY_LOG_ERROR(@"Couldn't load files in folder %@: %@", path, error); - return [NSArray new]; + return @[]; } return [storedFiles sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)]; } diff --git a/Tests/SentryTests/Helper/SentryFileManagerTests.swift b/Tests/SentryTests/Helper/SentryFileManagerTests.swift index 6bb724bd8b4..94d5c1f44bb 100644 --- a/Tests/SentryTests/Helper/SentryFileManagerTests.swift +++ b/Tests/SentryTests/Helper/SentryFileManagerTests.swift @@ -1,3 +1,4 @@ +import Nimble import Sentry import SentryTestUtils import XCTest @@ -473,6 +474,22 @@ class SentryFileManagerTests: XCTestCase { XCTAssertEqual(0, sut.getAllEnvelopes().count) } + func testGetAllEnvelopesWhenNoEnvelopesPath_LogsInfoMessage() { + let logOutput = TestLogOutput() + SentryLog.setLogOutput(logOutput) + SentryLog.configure(true, diagnosticLevel: .debug) + + sut.deleteAllFolders() + sut.getAllEnvelopes() + + let debugLogMessages = logOutput.loggedMessages.filter { $0.contains("[Sentry] [info]") && $0.contains("Returning empty files list, as folder doesn't exist at path:") } + expect(debugLogMessages.count) == 1 + + let errorMessages = logOutput.loggedMessages.filter { $0.contains("[Sentry] [error]") } + + expect(errorMessages.count) == 0 + } + func testReadStoreDeleteAppState() { sut.store(TestData.appState)