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
89 lines
2.9 KiB
Swift
89 lines
2.9 KiB
Swift
import SwiftLintCore
|
|
import Testing
|
|
|
|
@Suite
|
|
struct ConditionallySourceKitFreeTests {
|
|
@Test
|
|
func requiresSourceKitForDifferentRuleTypes() {
|
|
// SourceKitFreeRule should not require SourceKit
|
|
let sourceKitFreeRule = MockSourceKitFreeRule()
|
|
#expect(!sourceKitFreeRule.requiresSourceKit)
|
|
|
|
// ConditionallySourceKitFree rule that is effectively SourceKit-free
|
|
var conditionalRuleFree = MockConditionalRule()
|
|
conditionalRuleFree.isEffectivelySourceKitFree = true
|
|
#expect(!conditionalRuleFree.requiresSourceKit)
|
|
|
|
// ConditionallySourceKitFree rule that requires SourceKit
|
|
var conditionalRuleRequires = MockConditionalRule()
|
|
conditionalRuleRequires.isEffectivelySourceKitFree = false
|
|
#expect(conditionalRuleRequires.requiresSourceKit)
|
|
|
|
// Regular rule should require SourceKit
|
|
let regularRule = MockRegularRule()
|
|
#expect(regularRule.requiresSourceKit)
|
|
}
|
|
|
|
@Test
|
|
func typeCheckingBehavior() {
|
|
// Verify instance-level checks work correctly
|
|
let sourceKitFreeRule: any Rule = MockSourceKitFreeRule()
|
|
#expect(sourceKitFreeRule is any SourceKitFreeRule)
|
|
#expect(!(sourceKitFreeRule is any ConditionallySourceKitFree))
|
|
|
|
let conditionalRule: any Rule = MockConditionalRule()
|
|
#expect(!(conditionalRule is any SourceKitFreeRule))
|
|
#expect(conditionalRule is any ConditionallySourceKitFree)
|
|
|
|
let regularRule: any Rule = MockRegularRule()
|
|
#expect(!(regularRule is any SourceKitFreeRule))
|
|
#expect(!(regularRule is any ConditionallySourceKitFree))
|
|
}
|
|
}
|
|
|
|
private struct MockConditionalRule: Rule, ConditionallySourceKitFree {
|
|
static let description = RuleDescription(
|
|
identifier: "mock_conditional",
|
|
name: "Mock Conditional Rule",
|
|
description: "A mock rule for testing ConditionallySourceKitFree",
|
|
kind: .style
|
|
)
|
|
|
|
var configuration = SeverityConfiguration<Self>(.warning)
|
|
var isEffectivelySourceKitFree = true
|
|
|
|
func validate(file _: SwiftLintFile) -> [StyleViolation] {
|
|
[]
|
|
}
|
|
}
|
|
|
|
private struct MockSourceKitFreeRule: Rule, SourceKitFreeRule {
|
|
static let description = RuleDescription(
|
|
identifier: "mock_sourcekit_free",
|
|
name: "Mock SourceKit Free Rule",
|
|
description: "A mock rule that is always SourceKit-free",
|
|
kind: .style
|
|
)
|
|
|
|
var configuration = SeverityConfiguration<Self>(.warning)
|
|
|
|
func validate(file _: SwiftLintFile) -> [StyleViolation] {
|
|
[]
|
|
}
|
|
}
|
|
|
|
private struct MockRegularRule: Rule {
|
|
static let description = RuleDescription(
|
|
identifier: "mock_regular",
|
|
name: "Mock Regular Rule",
|
|
description: "A mock rule that requires SourceKit",
|
|
kind: .style
|
|
)
|
|
|
|
var configuration = SeverityConfiguration<Self>(.warning)
|
|
|
|
func validate(file _: SwiftLintFile) -> [StyleViolation] {
|
|
[]
|
|
}
|
|
}
|