Files
SwiftLint/Tests/BuiltInRulesTests/FileTypesOrderRuleTests.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

155 lines
4.8 KiB
Swift

import TestHelpers
import Testing
@testable import SwiftLintBuiltInRules
@Suite(.rulesRegistered)
struct FileTypesOrderRuleTests {
@Test
func fileTypesOrderReversedOrder() { // swiftlint:disable:this function_body_length
// Test with reversed `order` entries
let nonTriggeringExamples = [
Example(FileTypesOrderRuleExamples.defaultOrderParts.reversed().joined(separator: "\n\n"))
]
let triggeringExamples = [
Example("""
// Supporting Types
↓protocol TestViewControllerDelegate {
func didPressTrackedButton()
}
class TestViewController: UIViewController {}
"""),
Example("""
↓class TestViewController: UIViewController {}
// Extensions
extension TestViewController: UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
return UITableViewCell()
}
}
"""),
Example("""
// Supporting Types
↓protocol TestViewControllerDelegate {
func didPressTrackedButton()
}
class TestViewController: UIViewController {}
// Supporting Types
protocol TestViewControllerDelegate {
func didPressTrackedButton()
}
"""),
Example("""
↓struct ContentView: View {
var body: some View {
Text("Hello, World!")
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View { ContentView() }
}
"""),
Example("""
↓struct ContentView: View {
var body: some View {
Text("Hello, World!")
}
}
struct ContentView_LibraryContent: LibraryContentProvider {
var views: [LibraryItem] {
LibraryItem(ContentView())
}
}
"""),
]
let reversedOrderDescription = FileTypesOrderRule.description
.with(triggeringExamples: triggeringExamples)
.with(nonTriggeringExamples: nonTriggeringExamples)
verifyRule(
reversedOrderDescription,
ruleConfiguration: [
"order": ["library_content_provider", "preview_provider", "extension", "main_type", "supporting_type"]
]
)
}
@Test
func fileTypesOrderGroupedOrder() {
// Test with grouped `order` entries
let nonTriggeringExamples = [
Example("""
class TestViewController: UIViewController {}
// Supporting Type
protocol TestViewControllerDelegate {
func didPressTrackedButton()
}
// Extension
extension TestViewController: UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
}
// Supporting Type
protocol TestViewControllerDelegate2 {
func didPressTrackedButton()
}
// Extension
extension TestViewController: UITableViewDelegate {
func someMethod() {}
}
"""),
]
let triggeringExamples = [
Example("""
// Supporting Types
↓protocol TestViewControllerDelegate {
func didPressTrackedButton()
}
class TestViewController: UIViewController {}
"""),
Example("""
// Extensions
↓extension TestViewController: UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
return UITableViewCell()
}
}
class TestViewController: UIViewController {}
"""),
]
let groupedOrderDescription = FileTypesOrderRule.description
.with(triggeringExamples: triggeringExamples)
.with(nonTriggeringExamples: nonTriggeringExamples)
verifyRule(
groupedOrderDescription,
ruleConfiguration: [
"order": ["main_type", ["extension", "supporting_type"] as Any, "preview_provider"] as Any
]
)
}
}