File tree Expand file tree Collapse file tree 2 files changed +11
-5
lines changed Expand file tree Collapse file tree 2 files changed +11
-5
lines changed Original file line number Diff line number Diff line change 3
3
// REQUIRES: OS=macosx
4
4
// REQUIRES: objc_interop
5
5
6
- // FIXME: This test fails occassionally in CI with invalid json.
7
- // REQUIRES: disabled
8
-
9
6
import StdlibUnittest
10
7
import Foundation
11
8
import SwiftSyntax
@@ -38,4 +35,4 @@ VisitorTests.test("Basic") {
38
35
} )
39
36
}
40
37
41
- runAllTests ( )
38
+ runAllTests ( )
Original file line number Diff line number Diff line change @@ -25,6 +25,7 @@ import Glibc
25
25
public enum ParserError : Error {
26
26
case swiftcFailed( Int , String )
27
27
case invalidFile
28
+ case jsonDecodeError( input: String , originalError: Error ) ;
28
29
}
29
30
30
31
extension Syntax {
@@ -42,8 +43,16 @@ extension Syntax {
42
43
guard result. wasSuccessful else {
43
44
throw ParserError . swiftcFailed ( result. exitCode, result. stderr)
44
45
}
46
+ let jsonData = result. stdoutData
45
47
let decoder = JSONDecoder ( )
46
- let raw = try decoder. decode ( RawSyntax . self, from: result. stdoutData)
48
+ let raw : RawSyntax
49
+ do {
50
+ raw = try decoder. decode ( RawSyntax . self, from: jsonData)
51
+ } catch let err {
52
+ throw ParserError . jsonDecodeError (
53
+ input: String ( data: jsonData, encoding: . utf8) ?? jsonData. base64EncodedString ( ) ,
54
+ originalError: err)
55
+ }
47
56
guard let file = Syntax . fromRaw ( raw) as? SourceFileSyntax else {
48
57
throw ParserError . invalidFile
49
58
}
You can’t perform that action at this time.
0 commit comments