mirror of
https://github.com/realm/SwiftLint.git
synced 2026-06-06 20:18:40 +00:00
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.
146 lines
5.9 KiB
Swift
146 lines
5.9 KiB
Swift
@testable import SwiftLintBuiltInRules
|
|
import XCTest
|
|
|
|
class DeploymentTargetConfigurationTests: SwiftLintTestCase {
|
|
private typealias Version = DeploymentTargetConfiguration.Version
|
|
|
|
// swiftlint:disable:next function_body_length
|
|
func testAppliesConfigurationFromDictionary() throws {
|
|
var configuration = DeploymentTargetConfiguration()
|
|
|
|
try configuration.apply(configuration: ["iOS_deployment_target": "10.1", "severity": "error"])
|
|
XCTAssertEqual(
|
|
configuration.iOSDeploymentTarget,
|
|
Version(platform: .iOS, major: 10, minor: 1)
|
|
)
|
|
XCTAssertEqual(
|
|
configuration.iOSAppExtensionDeploymentTarget,
|
|
Version(platform: .iOSApplicationExtension, major: 10, minor: 1)
|
|
)
|
|
XCTAssertEqual(configuration.severityConfiguration.severity, .error)
|
|
|
|
try configuration.apply(configuration: ["iOSApplicationExtension_deployment_target": "13.0"])
|
|
XCTAssertEqual(
|
|
configuration.iOSDeploymentTarget,
|
|
Version(platform: .iOS, major: 10, minor: 1)
|
|
)
|
|
XCTAssertEqual(
|
|
configuration.iOSAppExtensionDeploymentTarget,
|
|
Version(platform: .iOSApplicationExtension, major: 13, minor: 0)
|
|
)
|
|
XCTAssertEqual(configuration.severityConfiguration.severity, .error)
|
|
|
|
try configuration.apply(configuration: ["macOS_deployment_target": "10.11.3"])
|
|
XCTAssertEqual(
|
|
configuration.iOSDeploymentTarget,
|
|
Version(platform: .iOS, major: 10, minor: 1)
|
|
)
|
|
XCTAssertEqual(
|
|
configuration.iOSAppExtensionDeploymentTarget,
|
|
Version(platform: .iOSApplicationExtension, major: 13, minor: 0)
|
|
)
|
|
XCTAssertEqual(
|
|
configuration.macOSDeploymentTarget,
|
|
Version(platform: .macOS, major: 10, minor: 11, patch: 3)
|
|
)
|
|
XCTAssertEqual(
|
|
configuration.macOSAppExtensionDeploymentTarget,
|
|
Version(platform: .macOSApplicationExtension, major: 10, minor: 11, patch: 3)
|
|
)
|
|
XCTAssertEqual(configuration.severityConfiguration.severity, .error)
|
|
|
|
try configuration.apply(configuration: ["macOSApplicationExtension_deployment_target": "12.4"])
|
|
XCTAssertEqual(
|
|
configuration.iOSDeploymentTarget,
|
|
Version(platform: .iOS, major: 10, minor: 1)
|
|
)
|
|
XCTAssertEqual(
|
|
configuration.iOSAppExtensionDeploymentTarget,
|
|
Version(platform: .iOSApplicationExtension, major: 13, minor: 0)
|
|
)
|
|
XCTAssertEqual(
|
|
configuration.macOSDeploymentTarget,
|
|
Version(platform: .macOS, major: 10, minor: 11, patch: 3)
|
|
)
|
|
XCTAssertEqual(
|
|
configuration.macOSAppExtensionDeploymentTarget,
|
|
Version(platform: .macOSApplicationExtension, major: 12, minor: 4)
|
|
)
|
|
XCTAssertEqual(configuration.severityConfiguration.severity, .error)
|
|
|
|
try configuration.apply(configuration: ["severity": "warning"])
|
|
XCTAssertEqual(
|
|
configuration.iOSDeploymentTarget,
|
|
Version(platform: .iOS, major: 10, minor: 1)
|
|
)
|
|
XCTAssertEqual(
|
|
configuration.iOSAppExtensionDeploymentTarget,
|
|
Version(platform: .iOSApplicationExtension, major: 13, minor: 0)
|
|
)
|
|
XCTAssertEqual(
|
|
configuration.macOSDeploymentTarget,
|
|
Version(platform: .macOS, major: 10, minor: 11, patch: 3)
|
|
)
|
|
XCTAssertEqual(
|
|
configuration.macOSAppExtensionDeploymentTarget,
|
|
Version(platform: .macOSApplicationExtension, major: 12, minor: 4)
|
|
)
|
|
XCTAssertEqual(configuration.severityConfiguration.severity, .warning)
|
|
|
|
try configuration.apply(configuration: ["tvOS_deployment_target": 10.2,
|
|
"tvOSApplicationExtension_deployment_target": 9.1,
|
|
"watchOS_deployment_target": 5,
|
|
"watchOSApplicationExtension_deployment_target": 2.2])
|
|
XCTAssertEqual(
|
|
configuration.iOSDeploymentTarget,
|
|
Version(platform: .iOS, major: 10, minor: 1)
|
|
)
|
|
XCTAssertEqual(
|
|
configuration.iOSAppExtensionDeploymentTarget,
|
|
Version(platform: .iOSApplicationExtension, major: 13, minor: 0)
|
|
)
|
|
XCTAssertEqual(
|
|
configuration.macOSDeploymentTarget,
|
|
Version(platform: .macOS, major: 10, minor: 11, patch: 3)
|
|
)
|
|
XCTAssertEqual(
|
|
configuration.macOSAppExtensionDeploymentTarget,
|
|
Version(platform: .macOSApplicationExtension, major: 12, minor: 4)
|
|
)
|
|
XCTAssertEqual(
|
|
configuration.tvOSDeploymentTarget,
|
|
Version(platform: .tvOS, major: 10, minor: 2)
|
|
)
|
|
XCTAssertEqual(
|
|
configuration.tvOSAppExtensionDeploymentTarget,
|
|
Version(platform: .tvOSApplicationExtension, major: 9, minor: 1)
|
|
)
|
|
XCTAssertEqual(
|
|
configuration.watchOSDeploymentTarget,
|
|
Version(platform: .watchOS, major: 5)
|
|
)
|
|
XCTAssertEqual(
|
|
configuration.watchOSAppExtensionDeploymentTarget,
|
|
Version(platform: .watchOSApplicationExtension, major: 2, minor: 2)
|
|
)
|
|
XCTAssertEqual(configuration.severityConfiguration.severity, .warning)
|
|
}
|
|
|
|
func testThrowsOnBadConfig() {
|
|
let badConfigs: [[String: Any]] = [
|
|
["iOS_deployment_target": "foo"],
|
|
["iOS_deployment_target": ""],
|
|
["iOS_deployment_target": "5.x"],
|
|
["iOS_deployment_target": true],
|
|
["invalid": true]
|
|
]
|
|
|
|
for badConfig in badConfigs {
|
|
var configuration = DeploymentTargetConfiguration()
|
|
checkError(Issue.unknownConfiguration(ruleID: DeploymentTargetRule.description.identifier)) {
|
|
try configuration.apply(configuration: badConfig)
|
|
}
|
|
}
|
|
}
|
|
}
|