Skip to content

Commit

Permalink
Add tests and improve behavior
Browse files Browse the repository at this point in the history
  • Loading branch information
marcelofabri committed Jul 18, 2017
1 parent 04c4879 commit 799a438
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 6 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@

* Add support for optional `error` severity level configuration.
[Jamie Edge](https://github.com/JamieEdge)
[Marcelo Fabri](https://github.com/marcelofabri)
[#1647](https://github.com/realm/SwiftLint/issues/1647)

##### Bug Fixes
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,14 @@ public struct SeverityLevelsConfiguration: RuleConfiguration, Equatable {
if let configurationArray = [Int].array(of: configuration), !configurationArray.isEmpty {
warning = configurationArray[0]
error = (configurationArray.count > 1) ? configurationArray[1] : nil
} else if let configDict = configuration as? [String: Any?],
!configDict.isEmpty &&
Set(configDict.keys).isSubset(of: ["warning", "error"]) &&
(configDict["warning"] == nil || configDict["warning"] is Int) &&
(configDict["error"] == nil || configDict["error"] is Int || configDict["error"] is NSNull) {
} else if let configDict = configuration as? [String: Int?],
!configDict.isEmpty, Set(configDict.keys).isSubset(of: ["warning", "error"]) {
warning = (configDict["warning"] as? Int) ?? warning
error = configDict["error"] as? Int
if configDict.keys.contains("error") {
error = configDict["error"] as? Int
} else {
error = configDict["error"] as? Int ?? error
}
} else {
throw ConfigurationError.unknownConfiguration
}
Expand Down
2 changes: 2 additions & 0 deletions Tests/LinuxMain.swift
Original file line number Diff line number Diff line change
Expand Up @@ -271,6 +271,8 @@ extension RuleConfigurationsTests {
("testSeverityConfigurationThrowsOnBadConfig", testSeverityConfigurationThrowsOnBadConfig),
("testSeverityLevelConfigParams", testSeverityLevelConfigParams),
("testSeverityLevelConfigPartialParams", testSeverityLevelConfigPartialParams),
("testSeverityLevelConfigApplyNilErrorValue", testSeverityLevelConfigApplyNilErrorValue),
("testSeverityLevelConfigApplyMissingErrorValue", testSeverityLevelConfigApplyMissingErrorValue),
("testRegexConfigurationThrows", testRegexConfigurationThrows),
("testRegexRuleDescription", testRegexRuleDescription),
("testTrailingWhitespaceConfigurationThrowsOnBadConfig", testTrailingWhitespaceConfigurationThrowsOnBadConfig),
Expand Down
13 changes: 13 additions & 0 deletions Tests/SwiftLintFrameworkTests/RuleConfigurationTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,19 @@ class RuleConfigurationsTests: XCTestCase {
XCTAssertEqual(severityConfig.params, [RuleParameter(severity: .warning, value: 17)])
}

func testSeverityLevelConfigApplyNilErrorValue() throws {
var severityConfig = SeverityLevelsConfiguration(warning: 17, error: 20)
try severityConfig.apply(configuration: ["error": nil, "warning": 18])
XCTAssertEqual(severityConfig.params, [RuleParameter(severity: .warning, value: 18)])
}

func testSeverityLevelConfigApplyMissingErrorValue() throws {
var severityConfig = SeverityLevelsConfiguration(warning: 17, error: 20)
try severityConfig.apply(configuration: ["warning": 18])
XCTAssertEqual(severityConfig.params, [RuleParameter(severity: .error, value: 20),
RuleParameter(severity: .warning, value: 18)])
}

func testRegexConfigurationThrows() {
let config = 17
var regexConfig = RegexConfiguration(identifier: "")
Expand Down

0 comments on commit 799a438

Please sign in to comment.