Files
SwiftLint/Source/SwiftLintBuiltInRules/Rules/Style/SortedImportsRuleExamples.swift

371 lines
10 KiB
Swift

internal struct SortedImportsRuleExamples {
private static let groupByAttributesConfiguration = ["grouping": "attributes"]
static let nonTriggeringExamples = [
Example("""
import AAA
import BBB
import CCC
import DDD
"""),
Example("""
import Alamofire
import API
"""),
Example("""
import labc
import Ldef
"""),
Example("""
// comment
import AAA
import BBB
import CCC
"""),
Example("""
@testable import AAA
import CCC
"""),
Example("""
import AAA
@testable import CCC
"""),
Example("""
import EEE.A
import FFF.B
#if os(Linux)
import DDD.A
import EEE.B
#else
import CCC
import DDD.B
#endif
import AAA
import BBB
"""),
Example("""
// header
import DDD
import SSS
// some comment
import FFF // a comment
""", excludeFromDocumentation: true),
Example("""
// header
import DDD
import FFF
// some comment
import AAA // a comment
import NNN
""", excludeFromDocumentation: true),
Example("""
@testable import AAA
@testable import BBB
""", configuration: groupByAttributesConfiguration, excludeFromDocumentation: true),
Example("""
@testable import BBB
import AAA
""", configuration: groupByAttributesConfiguration, excludeFromDocumentation: true),
Example("""
@_exported import BBB
@testable import AAA
""", configuration: groupByAttributesConfiguration, excludeFromDocumentation: true),
Example("""
@_exported @testable import BBB
import AAA
""", configuration: groupByAttributesConfiguration, excludeFromDocumentation: true),
Example("""
@_exported @testable import BBB
public import BBB
import AAA
""", configuration: groupByAttributesConfiguration, excludeFromDocumentation: true),
Example("""
public import FFF
package import EEE
internal import DDD
fileprivate import CCC
private import BBB
import AAA
""", configuration: groupByAttributesConfiguration, excludeFromDocumentation: true),
Example("""
@_exported @testable public import BBB
@_exported @testable private import BBB
""", configuration: groupByAttributesConfiguration, excludeFromDocumentation: true),
Example("""
@_exported public import BBB
@_exported @testable import BBB
""", configuration: groupByAttributesConfiguration, excludeFromDocumentation: true),
].skipMultiByteOffsetTests()
static let triggeringExamples = [
Example("""
import AAA
import ZZZ
import ↓BBB
import CCC
"""),
Example("""
import DDD
// comment
import ↓CCC
import ↓AAA
"""),
Example("""
@testable import CCC
import ↓AAA
"""),
Example("""
import CCC
@testable import ↓AAA
"""),
Example("""
import FFF.B
import ↓EEE.A
#if os(Linux)
import DDD.A
import EEE.B
#else
import DDD.B
import ↓CCC
#endif
import AAA
import BBB
"""),
Example("""
@testable import BBB
@testable import ↓AAA
""", configuration: groupByAttributesConfiguration, excludeFromDocumentation: true),
Example("""
import AAA
@testable import ↓BBB
""", configuration: groupByAttributesConfiguration, excludeFromDocumentation: true),
Example("""
import BBB
@testable import ↓AAA
""", configuration: groupByAttributesConfiguration, excludeFromDocumentation: true),
Example("""
@testable import AAA
@_exported import ↓BBB
""", configuration: groupByAttributesConfiguration, excludeFromDocumentation: true),
Example("""
import AAA
@_exported @testable import ↓BBB
""", configuration: groupByAttributesConfiguration, excludeFromDocumentation: true),
Example("""
import AAA
public import ↓BBB
""", configuration: groupByAttributesConfiguration, excludeFromDocumentation: true),
Example("""
import AAA
private import ↓BBB
fileprivate import ↓CCC
internal import ↓DDD
package import ↓EEE
public import ↓FFF
""", configuration: groupByAttributesConfiguration, excludeFromDocumentation: true),
]
static let corrections = [
Example("""
import AAA
import ZZZ
import BBB
import CCC
""", testMultiByteOffsets: false): Example("""
import AAA
import BBB
import CCC
import ZZZ
"""),
Example("""
import BBB // comment
import AAA
""", testMultiByteOffsets: false): Example("""
import AAA
import BBB // comment
"""),
Example("""
import BBB
// comment
import CCC
import AAA
""", testMultiByteOffsets: false): Example("""
import AAA
import BBB
// comment
import CCC
"""),
Example("""
@testable import CCC
import AAA
""", testMultiByteOffsets: false): Example("""
import AAA
@testable import CCC
"""),
Example("""
import CCC
@testable import AAA
""", testMultiByteOffsets: false): Example("""
@testable import AAA
import CCC
"""),
Example("""
import FFF.B
import EEE.A
#if os(Linux)
import DDD.A
import EEE.B
#else
import DDD.B
import CCC
#endif
import AAA
import BBB
""", testMultiByteOffsets: false): Example("""
import EEE.A
import FFF.B
#if os(Linux)
import DDD.A
import EEE.B
#else
import CCC
import DDD.B
#endif
import AAA
import BBB
"""),
Example("""
// comment
import BBB
import AAA
"""): Example("""
// comment
import AAA
import BBB
"""),
Example("""
// header
import DDD
import SSS
// some comment
import FFF // a comment
"""): Example("""
// header
import DDD
import SSS
// some comment
import FFF // a comment
"""),
Example("""
// header
// comment
import BBB
// another comment
import AAA
"""): Example("""
// header
// another comment
import AAA
// comment
import BBB
"""),
Example("""
// header
import class CCC
import BBB
import LLL
"""): Example("""
// header
import BBB
import class CCC
import LLL
"""),
Example("""
// header
import AAA
import class CCC2.View
import CCC1
"""): Example("""
// header
import AAA
import CCC1
import class CCC2.View
"""),
Example("""
@testable import BBB
@testable import AAA
""", configuration: groupByAttributesConfiguration, testMultiByteOffsets: false): Example("""
@testable import AAA
@testable import BBB
"""),
Example("""
import AAA
@testable import BBB
""", configuration: groupByAttributesConfiguration, testMultiByteOffsets: false): Example("""
@testable import BBB
import AAA
"""),
Example("""
import BBB
@testable import AAA
""", configuration: groupByAttributesConfiguration, testMultiByteOffsets: false): Example("""
@testable import AAA
import BBB
"""),
Example("""
@testable import AAA
@_exported import BBB
""", configuration: groupByAttributesConfiguration, testMultiByteOffsets: false): Example("""
@_exported import BBB
@testable import AAA
"""),
Example("""
import AAA
@_exported @testable import BBB
""", configuration: groupByAttributesConfiguration, testMultiByteOffsets: false): Example("""
@_exported @testable import BBB
import AAA
"""),
Example("""
public import AAA
@_exported @testable import BBB
""", configuration: groupByAttributesConfiguration, testMultiByteOffsets: false): Example("""
@_exported @testable import BBB
public import AAA
"""),
Example("""
import AAA
private import BBB
fileprivate import CCC
internal import DDD
package import EEE
// A comment that needs to be shifted along with the import
public import FFF
""", configuration: groupByAttributesConfiguration, testMultiByteOffsets: false): Example("""
// A comment that needs to be shifted along with the import
public import FFF
package import EEE
internal import DDD
fileprivate import CCC
private import BBB
import AAA
"""),
]
}