mirror of
https://github.com/realm/SwiftLint.git
synced 2026-06-06 20:18:40 +00:00
47 lines
1.8 KiB
Swift
47 lines
1.8 KiB
Swift
import Foundation
|
|
import TestHelpers
|
|
import Testing
|
|
|
|
@testable import SwiftLintFramework
|
|
|
|
@Suite(.rulesRegistered)
|
|
struct SourceKitCrashTests {
|
|
@Test(.sourceKitRequestsWithoutRule)
|
|
func assertHandlerIsNotCalledOnNormalFile() {
|
|
let file = SwiftLintFile(contents: "A file didn't crash SourceKitService")
|
|
file.sourcekitdFailed = false
|
|
|
|
var assertHandlerCalled = false
|
|
file.assertHandler = { assertHandlerCalled = true }
|
|
|
|
_ = file.syntaxMap
|
|
#expect(!assertHandlerCalled, "Expects assert handler was not called on accessing SwiftLintFile.syntaxMap")
|
|
}
|
|
|
|
@Test(.sourceKitRequestsWithoutRule)
|
|
func assertHandlerIsCalledOnFileThatCrashedSourceKitService() {
|
|
let file = SwiftLintFile(contents: "A file crashed SourceKitService")
|
|
file.sourcekitdFailed = true
|
|
|
|
var assertHandlerCalled = false
|
|
file.assertHandler = { assertHandlerCalled = true }
|
|
|
|
_ = file.syntaxMap
|
|
#expect(assertHandlerCalled, "Expects assert handler was called on accessing SwiftLintFile.syntaxMap")
|
|
}
|
|
|
|
@Test(.sourceKitRequestsWithoutRule, .workingDirectory(Constants.Dir.level0))
|
|
func rulesWithFileThatCrashedSourceKitService() throws {
|
|
let file = try #require(SwiftLintFile(path: "Level0.swift".url()))
|
|
file.sourcekitdFailed = true
|
|
file.assertHandler = {
|
|
Issue.record("If this called, rule's SourceKitFreeRule is not properly configured")
|
|
}
|
|
let configuration = Configuration(rulesMode: .onlyConfiguration(allRuleIdentifiers))
|
|
let storage = RuleStorage()
|
|
_ = Linter(file: file, configuration: configuration).collect(into: storage).styleViolations(using: storage)
|
|
file.sourcekitdFailed = false
|
|
file.assertHandler = nil
|
|
}
|
|
}
|