Files
wehub-resource-sync 1d1286fadb
Build / Build and test (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:18:38 +08:00

83 lines
4.0 KiB
Swift

import XCTest
@testable import MacTools
@testable import DiskCleanPlugin
final class DiskCleanRuleCatalogTests: XCTestCase {
func testCatalogExposesExactlyFirstVersionChoices() {
let catalog = DiskCleanRuleCatalog.moleFirstVersion
XCTAssertEqual(Set(catalog.rules.map(\.choice)), Set(DiskCleanChoice.allCases))
XCTAssertEqual(DiskCleanChoice.allCases, [.cache, .developer, .browser])
}
func testCacheRulesContainRepresentativeMoleUserAppCloudAndOfficeTargets() {
let rules = DiskCleanRuleCatalog.moleFirstVersion.rules(for: .cache)
let haystack = joinedRuleContent(rules)
XCTAssertTrue(haystack.contains("~/Library/Caches/*"))
XCTAssertTrue(haystack.contains("~/Library/Logs/*"))
XCTAssertTrue(haystack.contains("~/Library/Saved Application State/*"))
XCTAssertTrue(haystack.contains("~/Library/Caches/com.dropbox.*"))
XCTAssertTrue(haystack.contains("~/Library/Caches/com.microsoft.OneDrive"))
XCTAssertTrue(haystack.contains("~/Library/Caches/com.microsoft.Word"))
XCTAssertTrue(haystack.contains("~/Library/Containers/com.apple.AppStore/Data/Library/Caches/*"))
}
func testDeveloperRulesContainMoleDeveloperToolTargets() {
let rules = DiskCleanRuleCatalog.moleFirstVersion.rules(for: .developer)
let haystack = joinedRuleContent(rules)
XCTAssertTrue(haystack.contains("xcodeDerivedData"))
XCTAssertTrue(haystack.contains("~/Library/Developer/CoreSimulator/Caches/*"))
XCTAssertTrue(haystack.contains("npmCache"))
XCTAssertTrue(haystack.contains("pnpmStore"))
XCTAssertTrue(haystack.contains("bunCache"))
XCTAssertTrue(haystack.contains("pipCache"))
XCTAssertTrue(haystack.contains("goBuildCache"))
XCTAssertTrue(haystack.contains("~/.cargo/registry/cache/*"))
XCTAssertTrue(haystack.contains("~/.docker/buildx/cache/*"))
XCTAssertTrue(haystack.contains("jetbrainsToolboxOldVersions"))
XCTAssertTrue(haystack.contains("~/Library/Caches/Cursor/*"))
XCTAssertTrue(haystack.contains("~/Library/Application Support/Codex/Cache/*"))
XCTAssertTrue(haystack.contains("~/Library/Caches/Homebrew/*"))
}
func testBrowserRulesContainMoleBrowserTargetsAndDynamicRules() {
let rules = DiskCleanRuleCatalog.moleFirstVersion.rules(for: .browser)
let haystack = joinedRuleContent(rules)
XCTAssertTrue(haystack.contains("~/Library/Caches/com.apple.Safari/*"))
XCTAssertTrue(haystack.contains("~/Library/Caches/Google/Chrome/*"))
XCTAssertTrue(haystack.contains("~/Library/Caches/company.thebrowser.Browser/*"))
XCTAssertTrue(haystack.contains("~/Library/Caches/BraveSoftware/Brave-Browser/*"))
XCTAssertTrue(haystack.contains("~/Library/Caches/com.microsoft.edgemac/*"))
XCTAssertTrue(haystack.contains("~/Library/Caches/Firefox/*"))
XCTAssertTrue(haystack.contains("~/Library/Caches/com.vivaldi.Vivaldi/*"))
XCTAssertTrue(haystack.contains("~/Library/Caches/Comet/*"))
XCTAssertTrue(haystack.contains("~/Library/Caches/com.kagi.kagimacOS/*"))
XCTAssertTrue(haystack.contains("~/Library/Caches/zen/*"))
XCTAssertTrue(haystack.contains("serviceWorkerCache"))
XCTAssertTrue(haystack.contains("oldBrowserVersions"))
}
func testFirstVersionRulesDoNotRequireAdmin() {
XCTAssertFalse(DiskCleanRuleCatalog.moleFirstVersion.rules.contains { $0.requiresAdmin })
}
private func joinedRuleContent(_ rules: [DiskCleanRule]) -> String {
rules.flatMap { rule -> [String] in
var values = [rule.id, rule.title]
values += rule.targets.map { target in
switch target {
case let .path(path):
return path
case let .dynamic(dynamicRule):
return dynamicRule.rawValue
}
}
return values
}
.joined(separator: "\n")
}
}