Skip to content

Commit

Permalink
Remove explicit framework dependency (#5928)
Browse files Browse the repository at this point in the history
  • Loading branch information
SimplyDanny authored Dec 30, 2024
1 parent 6a1569f commit e53d06b
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 60 deletions.
1 change: 0 additions & 1 deletion Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,6 @@ let package = Package(
name: "BuiltInRulesTests",
dependencies: [
"SwiftLintBuiltInRules",
"SwiftLintFramework",
"TestHelpers",
],
exclude: [
Expand Down
93 changes: 34 additions & 59 deletions Tests/BuiltInRulesTests/ExpiringTodoRuleTests.swift
Original file line number Diff line number Diff line change
@@ -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)
}
Expand Down Expand Up @@ -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")
}
Expand Down Expand Up @@ -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

Expand All @@ -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
}
}

0 comments on commit e53d06b

Please sign in to comment.