mirror of
https://github.com/realm/SwiftLint.git
synced 2026-05-07 20:12:49 +00:00
3f039f26d5
With the binding of configurations to their associated rule types "unknown configuration" errors can be made more specific mentioning also the rule's identifier in the printed message.
141 lines
4.9 KiB
Swift
141 lines
4.9 KiB
Swift
import SwiftLintCore
|
|
import XCTest
|
|
|
|
struct RuleWithLevelsMock: ConfigurationProviderRule {
|
|
var configuration = SeverityLevelsConfiguration<Self>(warning: 2, error: 3)
|
|
|
|
static let description = RuleDescription(identifier: "severity_level_mock",
|
|
name: "",
|
|
description: "",
|
|
kind: .style,
|
|
deprecatedAliases: ["mock"])
|
|
|
|
init() {}
|
|
init(configuration: Any) throws {
|
|
self.init()
|
|
try self.configuration.apply(configuration: configuration)
|
|
}
|
|
|
|
func validate(file: SwiftLintFile) -> [StyleViolation] { return [] }
|
|
}
|
|
|
|
class RuleTests: SwiftLintTestCase {
|
|
fileprivate struct RuleMock1: Rule {
|
|
var configurationDescription: String { return "N/A" }
|
|
static let description = RuleDescription(identifier: "RuleMock1", name: "",
|
|
description: "", kind: .style)
|
|
|
|
init() {}
|
|
init(configuration: Any) throws { self.init() }
|
|
|
|
func validate(file: SwiftLintFile) -> [StyleViolation] {
|
|
return []
|
|
}
|
|
}
|
|
|
|
fileprivate struct RuleMock2: Rule {
|
|
var configurationDescription: String { return "N/A" }
|
|
static let description = RuleDescription(identifier: "RuleMock2", name: "",
|
|
description: "", kind: .style)
|
|
|
|
init() {}
|
|
init(configuration: Any) throws { self.init() }
|
|
|
|
func validate(file: SwiftLintFile) -> [StyleViolation] {
|
|
return []
|
|
}
|
|
}
|
|
|
|
fileprivate struct RuleWithLevelsMock2: ConfigurationProviderRule {
|
|
var configuration = SeverityLevelsConfiguration<Self>(warning: 2, error: 3)
|
|
|
|
static let description = RuleDescription(identifier: "violation_level_mock2",
|
|
name: "",
|
|
description: "", kind: .style)
|
|
|
|
init() {}
|
|
init(configuration: Any) throws {
|
|
self.init()
|
|
try self.configuration.apply(configuration: configuration)
|
|
}
|
|
|
|
func validate(file: SwiftLintFile) -> [StyleViolation] { return [] }
|
|
}
|
|
|
|
func testRuleIsEqualTo() {
|
|
XCTAssertTrue(RuleMock1().isEqualTo(RuleMock1()))
|
|
}
|
|
|
|
func testRuleIsNotEqualTo() {
|
|
XCTAssertFalse(RuleMock1().isEqualTo(RuleMock2()))
|
|
}
|
|
|
|
func testRuleArraysWithDifferentCountsNotEqual() {
|
|
// swiftlint:disable:next xct_specific_matcher
|
|
XCTAssertFalse([RuleMock1(), RuleMock2()] == [RuleMock1()])
|
|
}
|
|
|
|
func testSeverityLevelRuleInitsWithConfigDictionary() {
|
|
let config = ["warning": 17, "error": 7]
|
|
let rule = try? RuleWithLevelsMock(configuration: config)
|
|
var comp = RuleWithLevelsMock()
|
|
comp.configuration.warning = 17
|
|
comp.configuration.error = 7
|
|
XCTAssertEqual(rule?.isEqualTo(comp), true)
|
|
}
|
|
|
|
func testSeverityLevelRuleInitsWithWarningOnlyConfigDictionary() {
|
|
let config = ["warning": 17]
|
|
let rule = try? RuleWithLevelsMock(configuration: config)
|
|
var comp = RuleWithLevelsMock()
|
|
comp.configuration.warning = 17
|
|
comp.configuration.error = nil
|
|
XCTAssertEqual(rule?.isEqualTo(comp), true)
|
|
}
|
|
|
|
func testSeverityLevelRuleInitsWithErrorOnlyConfigDictionary() {
|
|
let config = ["error": 17]
|
|
let rule = try? RuleWithLevelsMock(configuration: config)
|
|
var comp = RuleWithLevelsMock()
|
|
comp.configuration.error = 17
|
|
XCTAssertEqual(rule?.isEqualTo(comp), true)
|
|
}
|
|
|
|
func testSeverityLevelRuleInitsWithConfigArray() {
|
|
let config = [17, 7] as Any
|
|
let rule = try? RuleWithLevelsMock(configuration: config)
|
|
var comp = RuleWithLevelsMock()
|
|
comp.configuration.warning = 17
|
|
comp.configuration.error = 7
|
|
XCTAssertEqual(rule?.isEqualTo(comp), true)
|
|
}
|
|
|
|
func testSeverityLevelRuleInitsWithSingleValueConfigArray() {
|
|
let config = [17] as Any
|
|
let rule = try? RuleWithLevelsMock(configuration: config)
|
|
var comp = RuleWithLevelsMock()
|
|
comp.configuration.warning = 17
|
|
comp.configuration.error = nil
|
|
XCTAssertEqual(rule?.isEqualTo(comp), true)
|
|
}
|
|
|
|
func testSeverityLevelRuleInitsWithLiteral() {
|
|
let config = 17 as Any
|
|
let rule = try? RuleWithLevelsMock(configuration: config)
|
|
var comp = RuleWithLevelsMock()
|
|
comp.configuration.warning = 17
|
|
comp.configuration.error = nil
|
|
XCTAssertEqual(rule?.isEqualTo(comp), true)
|
|
}
|
|
|
|
func testSeverityLevelRuleNotEqual() {
|
|
let config = 17 as Any
|
|
let rule = try? RuleWithLevelsMock(configuration: config)
|
|
XCTAssertEqual(rule?.isEqualTo(RuleWithLevelsMock()), false)
|
|
}
|
|
|
|
func testDifferentSeverityLevelRulesNotEqual() {
|
|
XCTAssertFalse(RuleWithLevelsMock().isEqualTo(RuleWithLevelsMock2()))
|
|
}
|
|
}
|