Files
CleanMM/Packages/AtlasCoreAdapters/Tests/AtlasCoreAdaptersTests/MoleSmartCleanAdapterTests.swift

50 lines
3.0 KiB
Swift

import XCTest
@testable import AtlasCoreAdapters
final class MoleSmartCleanAdapterTests: XCTestCase {
func testParseFindingsBuildsStructuredSmartCleanItems() {
let sample = """
➤ Browsers
→ Chrome old versions, 2 dirs, 1.37GB dry
➤ Developer tools
→ npm cache · would clean
→ Xcode runtime volumes · 2 unused, 1 in use
• Runtime volumes total: 3.50GB (unused 2.25GB, in-use 1.25GB)
→ JetBrains Toolbox · would remove 3 old versions (4.00GB), keeping 1 most recent
➤ Orphaned data
→ Would remove 4 orphaned launch agent(s), 12MB
"""
let findings = MoleSmartCleanAdapter.parseFindings(from: sample)
XCTAssertEqual(findings.first?.title, "JetBrains Toolbox")
XCTAssertEqual(findings.first?.bytes, Int64(4.0 * 1024 * 1024 * 1024))
XCTAssertTrue(findings.contains(where: { $0.title == "Chrome old versions" && $0.category == "Browsers" }))
XCTAssertTrue(findings.contains(where: { $0.title == "Xcode runtime volumes" && $0.bytes == Int64(2.25 * 1024 * 1024 * 1024) }))
XCTAssertTrue(findings.contains(where: { $0.category == "Orphaned data" && $0.risk.rawValue == "advanced" }))
}
func testParseDetailedFindingsBuildsExecutableTargets() throws {
let fileURL = FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString).appendingPathExtension("tsv")
try FileManager.default.createDirectory(at: fileURL.deletingLastPathComponent(), withIntermediateDirectories: true)
try """
Developer tools /Users/test/Library/Developer/Xcode/DerivedData/ProjectA 1024
Developer tools /Users/test/Library/Developer/Xcode/DerivedData/ProjectB 2048
Browsers /Users/test/Library/Caches/Google/Chrome/Default/Cache_Data 512
Developer tools /Users/test/Library/pnpm/store/v3/files/atlas-fixture/package.tgz 256
Developer tools /Users/test/Library/Containers/com.example.preview/Data/Library/Caches/cache.db 128
Developer tools /Users/test/Library/Containers/com.example.preview/Data/Library/Logs/runtime.log 64
""".write(to: fileURL, atomically: true, encoding: .utf8)
let findings = MoleSmartCleanAdapter.parseDetailedFindings(from: fileURL)
XCTAssertTrue(findings.contains(where: { $0.title == "Xcode DerivedData" && ($0.targetPaths?.count ?? 0) == 2 }))
XCTAssertTrue(findings.contains(where: { $0.title == "Chrome cache" && ($0.targetPaths?.first?.contains("Chrome/Default") ?? false) }))
XCTAssertTrue(findings.contains(where: { $0.title == "pnpm store" && ($0.targetPaths?.first?.contains("/Library/pnpm/store") ?? false) }))
XCTAssertTrue(findings.contains(where: { $0.title == "com.example.preview container cache" && ($0.targetPaths?.first?.contains("/Data/Library/Caches") ?? false) }))
XCTAssertTrue(findings.contains(where: { $0.title == "com.example.preview container logs" && ($0.targetPaths?.first?.contains("/Data/Library/Logs") ?? false) }))
}
}