Skip to content

Add assertion for missing fixed source #1549

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion Tests/SwiftParserTest/Assertions.swift
Original file line number Diff line number Diff line change
Expand Up @@ -604,7 +604,9 @@ func assertParse<S: SyntaxProtocol>(
}

// Applying Fix-Its
if let expectedFixedSource = expectedFixedSource {
if expectedDiagnostics.contains(where: { !$0.fixIts.isEmpty }) && expectedFixedSource == nil {
XCTFail("Expected a fixed source if the test case produces diagnostics with Fix-Its", file: file, line: line)
} else if let expectedFixedSource = expectedFixedSource {
let fixedTree = FixItApplier.applyFixes(in: diags, withMessages: applyFixIts, to: tree)
var fixedTreeDescription = fixedTree.description
if options.contains(.normalizeNewlinesInFixedSource) {
Expand All @@ -621,6 +623,10 @@ func assertParse<S: SyntaxProtocol>(
)
}

if expectedDiagnostics.allSatisfy({ $0.fixIts.isEmpty }) && expectedFixedSource != nil {
XCTFail("A fixed source was provided but the test case produces no diagnostics with Fix-Its", file: file, line: line)
}

if expectedDiagnostics.isEmpty {
assertBasicFormat(source: source, parse: parse, file: file, line: line)
}
Expand Down
16 changes: 13 additions & 3 deletions Tests/SwiftParserTest/AttributeTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,10 @@ final class AttributeTests: XCTestCase {
DiagnosticSpec(message: "expected ':' in attribute argument", fixIts: ["insert ':'"]),
DiagnosticSpec(message: "expected ')' to end attribute", fixIts: ["insert ')'"]),
DiagnosticSpec(message: "expected declaration after attribute", fixIts: ["insert declaration"]),
]
],
fixedSource: """
@_specialize(e:) <#declaration#>
"""
)
}

Expand All @@ -76,7 +79,10 @@ final class AttributeTests: XCTestCase {
DiagnosticSpec(locationMarker: "1️⃣", message: "expected ':' in attribute argument", fixIts: ["insert ':'"]),
DiagnosticSpec(locationMarker: "2️⃣", message: "expected ': false' in attribute argument", fixIts: ["insert ': false'"]),
DiagnosticSpec(locationMarker: "3️⃣", message: "expected declaration after attribute", fixIts: ["insert declaration"]),
]
],
fixedSource: """
@_specialize(e:, exported: false) <#declaration#>
"""
)
}

Expand Down Expand Up @@ -502,7 +508,11 @@ final class AttributeTests: XCTestCase {
diagnostics: [
DiagnosticSpec(message: "expected ':' and string literal in @_unavailableFromAsync argument", fixIts: ["insert ':' and string literal"]),
DiagnosticSpec(message: #"unexpected code '= "abc"' in attribute"#),
]
],
fixedSource: """
@_unavailableFromAsync(message: ""= "abc")
func foo() {}
"""
)

assertParse(
Expand Down
25 changes: 20 additions & 5 deletions Tests/SwiftParserTest/AvailabilityTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,11 @@ final class AvailabilityTests: XCTestCase {
diagnostics: [
DiagnosticSpec(message: "expected version tuple in version restriction", fixIts: ["insert version tuple"]),
DiagnosticSpec(message: "unexpected code '10e10' in attribute"),
]
],
fixedSource: """
@available(OSX <#integer literal#>10e10)
func test() {}
"""
)

assertParse(
Expand All @@ -162,7 +166,11 @@ final class AvailabilityTests: XCTestCase {
diagnostics: [
DiagnosticSpec(message: "expected integer literal in version tuple", fixIts: ["insert integer literal"]),
DiagnosticSpec(message: "unexpected code '0e10' in attribute"),
]
],
fixedSource: """
@available(OSX 10.<#integer literal#>0e10)
func test() {}
"""
)

assertParse(
Expand All @@ -173,7 +181,11 @@ final class AvailabilityTests: XCTestCase {
diagnostics: [
DiagnosticSpec(message: "expected version tuple in version restriction", fixIts: ["insert version tuple"]),
DiagnosticSpec(message: "unexpected code '0xff' in attribute"),
]
],
fixedSource: """
@available(OSX <#integer literal#>0xff)
func test() {}
"""
)

assertParse(
Expand All @@ -184,8 +196,11 @@ final class AvailabilityTests: XCTestCase {
diagnostics: [
DiagnosticSpec(message: "expected integer literal in version tuple", fixIts: ["insert integer literal"]),
DiagnosticSpec(message: "unexpected code '0xff' in attribute"),
]
],
fixedSource: """
@available(OSX 1.0.<#integer literal#>0xff)
func test() {}
"""
)

}
}
Loading