mirror of
https://github.com/realm/SwiftLint.git
synced 2026-06-06 20:18:40 +00:00
# Conflicts: # Tests/BuiltInRulesTests/FileHeaderRuleTests.swift # Tests/BuiltInRulesTests/FileNameNoSpaceRuleTests.swift # Tests/BuiltInRulesTests/IndentationWidthRuleTests.swift # Tests/CoreTests/RegexConfigurationTests.swift # Tests/CoreTests/SwiftLintFileTests.swift # Tests/FileSystemAccessTests/BaselineTests.swift # Tests/FileSystemAccessTests/ConfigurationTests+Mock.swift # Tests/FileSystemAccessTests/ConfigurationTests.swift # Tests/FileSystemAccessTests/GlobTests.swift # Tests/FileSystemAccessTests/MultipleConfigurationsTests.swift # Tests/FileSystemAccessTests/ReporterTests.swift # Tests/FileSystemAccessTests/SourceKitCrashTests.swift # Tests/FrameworkTests/CustomRulesTests.swift # Tests/FrameworkTests/LinterCacheTests.swift # Tests/FrameworkTests/RuleConfigurationTests.swift # Tests/FrameworkTests/SwiftVersionTests.swift # Tests/GeneratedTests/GeneratedTests_02.swift # Tests/GeneratedTests/GeneratedTests_03.swift # Tests/GeneratedTests/GeneratedTests_04.swift # Tests/GeneratedTests/GeneratedTests_05.swift # Tests/GeneratedTests/GeneratedTests_06.swift # Tests/GeneratedTests/GeneratedTests_07.swift # Tests/GeneratedTests/GeneratedTests_08.swift # Tests/GeneratedTests/GeneratedTests_09.swift # Tests/GeneratedTests/GeneratedTests_10.swift # Tests/IntegrationTests/ConfigPathResolutionTests.swift # Tests/IntegrationTests/IntegrationTests.swift # Tests/TestHelpers/TestHelpers.swift
77 lines
2.3 KiB
Swift
77 lines
2.3 KiB
Swift
import TestHelpers
|
|
import Testing
|
|
|
|
@testable import SwiftLintBuiltInRules
|
|
|
|
@Suite(.rulesRegistered)
|
|
struct FunctionBodyLengthRuleTests {
|
|
@Test
|
|
func warning() {
|
|
let example = Example(
|
|
"""
|
|
func f() {
|
|
let x = 0
|
|
let y = 1
|
|
let z = 2
|
|
}
|
|
""")
|
|
|
|
#expect(
|
|
violations(example, configuration: ["warning": 2, "error": 4]) == [
|
|
StyleViolation(
|
|
ruleDescription: FunctionBodyLengthRule.description,
|
|
severity: .warning,
|
|
location: Location(file: nil, line: 1, character: 1),
|
|
reason: """
|
|
Function body should span 2 lines or less excluding comments and \
|
|
whitespace: currently spans 3 lines
|
|
"""
|
|
),
|
|
]
|
|
)
|
|
}
|
|
|
|
@Test
|
|
func error() {
|
|
let example = Example("""
|
|
func f() {
|
|
let x = 0
|
|
let y = 1
|
|
let z = 2
|
|
}
|
|
""")
|
|
|
|
#expect(
|
|
violations(example, configuration: ["warning": 1, "error": 2]) == [
|
|
StyleViolation(
|
|
ruleDescription: FunctionBodyLengthRule.description,
|
|
severity: .error,
|
|
location: Location(file: nil, line: 1, character: 1),
|
|
reason: """
|
|
Function body should span 2 lines or less excluding comments and \
|
|
whitespace: currently spans 3 lines
|
|
"""
|
|
),
|
|
]
|
|
)
|
|
}
|
|
|
|
@Test
|
|
func violationMessages() {
|
|
let types = FunctionBodyLengthRule.description.triggeringExamples.flatMap {
|
|
violations($0, configuration: ["warning": 2])
|
|
}.compactMap {
|
|
$0.reason.split(separator: " ", maxSplits: 1).first
|
|
}
|
|
|
|
#expect(
|
|
types == ["Function", "Deinitializer", "Initializer", "Subscript", "Accessor", "Accessor", "Accessor"]
|
|
)
|
|
}
|
|
|
|
private func violations(_ example: Example, configuration: Any? = nil) -> [StyleViolation] {
|
|
let config = makeConfig(configuration, FunctionBodyLengthRule.identifier)!
|
|
return TestHelpers.violations(example, config: config)
|
|
}
|
|
}
|