From e53d06b4e5fb79e5f9aa7bd4f71283b5b75c97c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danny=20M=C3=B6sch?= Date: Mon, 30 Dec 2024 15:09:10 +0100 Subject: [PATCH] Remove explicit framework dependency (#5928) --- Package.swift | 1 - .../ExpiringTodoRuleTests.swift | 93 +++++++------------ 2 files changed, 34 insertions(+), 60 deletions(-) diff --git a/Package.swift b/Package.swift index 04dbb1f31a..8e5ca12135 100644 --- a/Package.swift +++ b/Package.swift @@ -118,7 +118,6 @@ let package = Package( name: "BuiltInRulesTests", dependencies: [ "SwiftLintBuiltInRules", - "SwiftLintFramework", "TestHelpers", ], exclude: [ diff --git a/Tests/BuiltInRulesTests/ExpiringTodoRuleTests.swift b/Tests/BuiltInRulesTests/ExpiringTodoRuleTests.swift index b0dc3015f1..bfbe34d150 100644 --- a/Tests/BuiltInRulesTests/ExpiringTodoRuleTests.swift +++ b/Tests/BuiltInRulesTests/ExpiringTodoRuleTests.swift @@ -1,11 +1,8 @@ @testable import SwiftLintBuiltInRules -import SwiftLintFramework import TestHelpers import XCTest final class ExpiringTodoRuleTests: SwiftLintTestCase { - private lazy var config: Configuration = makeConfiguration() - func testExpiringTodo() { verifyRule(ExpiringTodoRule.description, commentDoesntViolate: false) } @@ -37,38 +34,34 @@ final class ExpiringTodoRuleTests: SwiftLintTestCase { } func testExpiredCustomDelimiters() { - let ruleConfig: ExpiringTodoConfiguration = .init( + let ruleConfig = ExpiringTodoConfiguration( dateDelimiters: .init(opening: "<", closing: ">") ) - config = makeConfiguration(with: ruleConfig) - let example = Example("fatalError() // TODO: <\(dateString(for: .expired))> Implement") - let violations = self.violations(example) + let violations = self.violations(example, ruleConfig) XCTAssertEqual(violations.count, 1) XCTAssertEqual(violations.first!.reason, "TODO/FIXME has expired and must be resolved") } func testExpiredCustomSeparator() { - let ruleConfig: ExpiringTodoConfiguration = .init( + let ruleConfig = ExpiringTodoConfiguration( dateFormat: "MM-dd-yyyy", dateSeparator: "-" ) - config = makeConfiguration(with: ruleConfig) - - let example = Example("fatalError() // TODO: [\(dateString(for: .expired))] Implement") - let violations = self.violations(example) + let example = Example( + "fatalError() // TODO: [\(dateString(for: .expired, format: ruleConfig.dateFormat))] Implement" + ) + let violations = self.violations(example, ruleConfig) XCTAssertEqual(violations.count, 1) XCTAssertEqual(violations.first!.reason, "TODO/FIXME has expired and must be resolved") } func testExpiredCustomFormat() { - let ruleConfig: ExpiringTodoConfiguration = .init( - dateFormat: "yyyy/MM/dd" + let ruleConfig = ExpiringTodoConfiguration(dateFormat: "yyyy/MM/dd") + let example = Example( + "fatalError() // TODO: [\(dateString(for: .expired, format: ruleConfig.dateFormat))] Implement" ) - config = makeConfiguration(with: ruleConfig) - - let example = Example("fatalError() // TODO: [\(dateString(for: .expired))] Implement") - let violations = self.violations(example) + let violations = self.violations(example, ruleConfig) XCTAssertEqual(violations.count, 1) XCTAssertEqual(violations.first!.reason, "TODO/FIXME has expired and must be resolved") } @@ -131,30 +124,40 @@ final class ExpiringTodoRuleTests: SwiftLintTestCase { } func testBadExpiryTodoFormat() throws { - let ruleConfig: ExpiringTodoConfiguration = .init( + let ruleConfig = ExpiringTodoConfiguration( dateFormat: "dd/yyyy/MM" ) - config = makeConfiguration(with: ruleConfig) - let example = Example("fatalError() // TODO: [31/01/2020] Implement") - let violations = self.violations(example) + let violations = self.violations(example, ruleConfig) XCTAssertEqual(violations.count, 1) XCTAssertEqual(violations.first?.reason, "Expiring TODO/FIXME is incorrectly formatted") } - private func violations(_ example: Example) -> [StyleViolation] { - TestHelpers.violations(example, config: config) - } - - private func dateString(for status: ExpiringTodoRule.ExpiryViolationLevel) -> String { - let formatter: DateFormatter = .init() - formatter.dateFormat = config.ruleConfiguration.dateFormat - + private func violations(_ example: Example, _ config: ExpiringTodoConfiguration? = nil) -> [StyleViolation] { + let config = config ?? ExpiringTodoConfiguration() + let serializedConfig = [ + "expired_severity": config.expiredSeverity.severity.rawValue, + "approaching_expiry_severity": config.approachingExpirySeverity.severity.rawValue, + "bad_formatting_severity": config.badFormattingSeverity.severity.rawValue, + "approaching_expiry_threshold": config.approachingExpiryThreshold, + "date_format": config.dateFormat, + "date_delimiters": [ + "opening": config.dateDelimiters.opening, + "closing": config.dateDelimiters.closing, + ], + "date_separator": config.dateSeparator, + ] as [String: Any] + return TestHelpers.violations(example, config: makeConfig(serializedConfig, ExpiringTodoRule.identifier)!) + } + + private func dateString(for status: ExpiringTodoRule.ExpiryViolationLevel, format: String? = nil) -> String { + let formatter = DateFormatter() + formatter.dateFormat = format ?? ExpiringTodoConfiguration().dateFormat return formatter.string(from: date(for: status)) } private func date(for status: ExpiringTodoRule.ExpiryViolationLevel) -> Date { - let ruleConfiguration = config.ruleConfiguration + let ruleConfiguration = ExpiringTodoRule().configuration let daysToAdvance: Int @@ -174,32 +177,4 @@ final class ExpiringTodoRuleTests: SwiftLintTestCase { to: .init() )! } - - private func makeConfiguration(with ruleConfiguration: ExpiringTodoConfiguration? = nil) -> Configuration { - var serializedConfig: [String: Any]? - - if let config = ruleConfiguration { - serializedConfig = [ - "expired_severity": config.expiredSeverity.severity.rawValue, - "approaching_expiry_severity": config.approachingExpirySeverity.severity.rawValue, - "bad_formatting_severity": config.badFormattingSeverity.severity.rawValue, - "approaching_expiry_threshold": config.approachingExpiryThreshold, - "date_format": config.dateFormat, - "date_delimiters": [ - "opening": config.dateDelimiters.opening, - "closing": config.dateDelimiters.closing, - ], - "date_separator": config.dateSeparator, - ] - } - - return makeConfig(serializedConfig, ExpiringTodoRule.identifier)! - } -} - -fileprivate extension Configuration { - var ruleConfiguration: ExpiringTodoConfiguration { - // swiftlint:disable:next force_cast - (rules.first(where: { $0 is ExpiringTodoRule }) as! ExpiringTodoRule).configuration - } }