Files
SwiftLint/Tests/BuiltInRulesTests/NameConfigurationTests.swift
Danny Mösch ac2eda6732 Adopt Swift Testing
# 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
2026-06-06 11:07:04 +02:00

109 lines
3.4 KiB
Swift

import TestHelpers
import Testing
@testable import SwiftLintBuiltInRules
@Suite(.rulesRegistered)
struct NameConfigurationTests {
typealias TesteeType = NameConfiguration<MockRule>
@Test
func nameConfigurationSetsCorrectly() {
let config: [String: any Sendable] = [
"min_length": ["warning": 17, "error": 7],
"max_length": ["warning": 170, "error": 700],
"excluded": "id",
"allowed_symbols": ["$"],
"validates_start_with_lowercase": "warning",
]
var nameConfig = TesteeType(minLengthWarning: 0,
minLengthError: 0,
maxLengthWarning: 0,
maxLengthError: 0)
let comp = TesteeType(minLengthWarning: 17,
minLengthError: 7,
maxLengthWarning: 170,
maxLengthError: 700,
excluded: ["id"],
allowedSymbols: ["$"],
validatesStartWithLowercase: .warning)
do {
try nameConfig.apply(configuration: config)
#expect(nameConfig == comp)
} catch {
Testing.Issue.record("Did not configure correctly")
}
}
@Test
func caseCheck() throws {
var nameConfig = TesteeType(
minLengthWarning: 0,
minLengthError: 0,
maxLengthWarning: 0,
maxLengthError: 0
)
#expect(nameConfig.validatesStartWithLowercase == .error)
try nameConfig.apply(configuration: ["validates_start_with_lowercase": "off"])
#expect(nameConfig.validatesStartWithLowercase == .off)
try nameConfig.apply(configuration: ["validates_start_with_lowercase": "warning"])
#expect(nameConfig.validatesStartWithLowercase == .warning)
}
@Test
func nameConfigurationThrowsOnBadConfig() {
let config = 17
var nameConfig = TesteeType(
minLengthWarning: 0,
minLengthError: 0,
maxLengthWarning: 0,
maxLengthError: 0
)
#expect(throws: Issue.invalidConfiguration(ruleID: MockRule.identifier)) {
try nameConfig.apply(configuration: config)
}
}
@Test
func nameConfigurationMinLengthThreshold() {
let nameConfig = TesteeType(
minLengthWarning: 7,
minLengthError: 17,
maxLengthWarning: 0,
maxLengthError: 0,
excluded: []
)
#expect(nameConfig.minLengthThreshold == 17)
}
@Test
func nameConfigurationMaxLengthThreshold() {
let nameConfig = TesteeType(
minLengthWarning: 0,
minLengthError: 0,
maxLengthWarning: 17,
maxLengthError: 7,
excluded: []
)
#expect(nameConfig.maxLengthThreshold == 7)
}
@Test
func unallowedSymbolsSeverity() throws {
var nameConfig = TesteeType(
minLengthWarning: 3,
minLengthError: 1,
maxLengthWarning: 17,
maxLengthError: 22,
unallowedSymbolsSeverity: .warning
)
#expect(nameConfig.unallowedSymbolsSeverity == .warning)
try nameConfig.apply(configuration: ["unallowed_symbols_severity": "error"])
#expect(nameConfig.unallowedSymbolsSeverity == .error)
}
}