Skip to content

Commit bc58ed4

Browse files
committed
Add frontend parseable output tests
1 parent 86e039f commit bc58ed4

File tree

3 files changed

+265
-0
lines changed

3 files changed

+265
-0
lines changed

test/Frontend/parseable_output.swift

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
// RUN: %target-swift-frontend -primary-file %s -o %t.out -emit-module -emit-module-path %t.swiftmodule -frontend-parseable-output 2>&1 | %FileCheck %s
2+
3+
// XFAIL: freebsd, openbsd, linux
4+
5+
// CHECK: {{[1-9][0-9]*}}
6+
// CHECK-NEXT: {
7+
// CHECK-NEXT: "kind": "began",
8+
// CHECK-NEXT: "name": "compile",
9+
// CHECK-NEXT: "command": "{{.*[\\/]}}swift-frontend{{(\.exe)?}}{{.*}}-primary-file {{.*[\\/]}}parseable_output.swift -o {{.*[\\/]}}parseable_output.swift.tmp.out -emit-module -emit-module-path {{.*[\\/]}}parseable_output.swift.tmp.swiftmodule -frontend-parseable-output",
10+
// CHECK-NEXT: "command_executable": "{{.*[\\/]}}swift{{(-frontend|c)?(\.exe)?}}",
11+
// CHECK-NEXT: "command_arguments": [
12+
// CHECK-NEXT: "-target",
13+
// CHECK-NEXT: "{{.*}}",
14+
// CHECK-NEXT: "-module-cache-path",
15+
// CHECK-NEXT: "{{.*[\\/]}}clang-module-cache",
16+
// CHECK-NEXT: "-sdk",
17+
// CHECK-NEXT: "{{.*}}.sdk",
18+
// CHECK-NEXT: "-swift-version",
19+
// CHECK-NEXT: "4",
20+
// CHECK-NEXT: "-ignore-module-source-info",
21+
// CHECK-NEXT: "-typo-correction-limit",
22+
// CHECK-NEXT: "10",
23+
// CHECK-NEXT: "-primary-file",
24+
// CHECK-NEXT: "{{.*[\\/]}}parseable_output.swift",
25+
// CHECK-NEXT: "-o",
26+
// CHECK-NEXT: "{{.*[\\/]}}parseable_output.swift.tmp.out",
27+
// CHECK-NEXT: "-emit-module",
28+
// CHECK-NEXT: "-emit-module-path",
29+
// CHECK-NEXT: "{{.*[\\/]}}parseable_output.swift.tmp.swiftmodule",
30+
// CHECK-NEXT: "-frontend-parseable-output"
31+
// CHECK-NEXT: ],
32+
// CHECK-NEXT: "inputs": [
33+
// CHECK-NEXT: "{{.*[\\/]}}parseable_output.swift"
34+
// CHECK-NEXT: ],
35+
// CHECK-NEXT: "outputs": [
36+
// CHECK-NEXT: {
37+
// CHECK-NEXT: "type": "image",
38+
// CHECK-NEXT: "path": "{{.*[\\/]}}parseable_output.swift.tmp.out"
39+
// CHECK-NEXT: },
40+
// CHECK-NEXT: {
41+
// CHECK-NEXT: "type": "swiftmodule",
42+
// CHECK-NEXT: "path": "{{.*[\\/]}}parseable_output.swift.tmp.swiftmodule"
43+
// CHECK-NEXT: }
44+
// CHECK-NEXT: ],
45+
// CHECK-NEXT: "pid": [[PID:[0-9]*]]
46+
// CHECK-NEXT: "process": {
47+
// CHECK-NEXT: "real_pid": [[PID]]
48+
// CHECK-NEXT: }
49+
// CHECK-NEXT: }
50+
51+
// CHECK-NEXT: {{[1-9][0-9]*}}
52+
// CHECK-NEXT: {
53+
// CHECK-NEXT: "kind": "finished",
54+
// CHECK-NEXT: "name": "compile",
55+
// CHECK-NEXT: "process": {
56+
// CHECK-NEXT: "real_pid": [[PID]]
57+
// CHECK-NEXT: },
58+
// CHECK-NEXT: "pid": [[PID]],
59+
// CHECK-NEXT: "exit-status": 0
60+
// CHECK-NEXT: }
Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
// RUN: %empty-directory(%t)
2+
// RUN: touch %t/test.swift
3+
// RUN: echo 'func foo() {}' > %t/test.swift
4+
// RUN: %target-swift-frontend -primary-file %s -primary-file %t/test.swift -o %t.out -o test.tmp.out -module-name parseable_output_batch -emit-module -emit-module-path %t.swiftmodule -module-name test -emit-module -emit-module-path test.tmp.swiftmodule -frontend-parseable-output 2>&1 | %FileCheck %s
5+
6+
// XFAIL: freebsd, openbsd, linux
7+
// Despite only one frontend invocation, two compile jobs are "begin" and "finish", using quasi-PIDs, on per-primary and its outputs.
8+
9+
// CHECK: {{[1-9][0-9]*}}
10+
// CHECK-NEXT: {
11+
// CHECK-NEXT: "kind": "began",
12+
// CHECK-NEXT: "name": "compile",
13+
// CHECK-NEXT: "command": "{{.*[\\/]}}swift-frontend{{(\.exe)?}}{{.*}}-primary-file {{.*[\\/]}}parseable_output_batch.swift -primary-file {{.*[\\/]}}test.swift -o {{.*[\\/]}}parseable_output_batch.swift.tmp.out -o test.tmp.out -module-name parseable_output_batch -emit-module -emit-module-path {{.*[\\/]}}parseable_output_batch.swift.tmp.swiftmodule -module-name test -emit-module -emit-module-path test.tmp.swiftmodule -frontend-parseable-output",
14+
// CHECK-NEXT: "command_executable": "{{.*[\\/]}}swift{{(-frontend|c)?(\.exe)?}}",
15+
// CHECK-NEXT: "command_arguments": [
16+
// CHECK-NEXT: "-target",
17+
// CHECK-NEXT: "{{.*}}",
18+
// CHECK-NEXT: "-module-cache-path",
19+
// CHECK-NEXT: "{{.*[\\/]}}clang-module-cache",
20+
// CHECK-NEXT: "-sdk",
21+
// CHECK-NEXT: "{{.*}}.sdk",
22+
// CHECK-NEXT: "-swift-version",
23+
// CHECK-NEXT: "4",
24+
// CHECK-NEXT: "-ignore-module-source-info",
25+
// CHECK-NEXT: "-typo-correction-limit",
26+
// CHECK-NEXT: "10",
27+
// CHECK-NEXT: "-primary-file",
28+
// CHECK-NEXT: "{{.*[\\/]}}parseable_output_batch.swift",
29+
// CHECK-NEXT: "-primary-file",
30+
// CHECK-NEXT: "{{.*[\\/]}}parseable_output_batch.swift.tmp\/test.swift",
31+
// CHECK-NEXT: "-o",
32+
// CHECK-NEXT: "{{.*[\\/]}}parseable_output_batch.swift.tmp.out",
33+
// CHECK-NEXT: "-o",
34+
// CHECK-NEXT: "test.tmp.out",
35+
// CHECK-NEXT: "-module-name",
36+
// CHECK-NEXT: "parseable_output_batch",
37+
// CHECK-NEXT: "-emit-module",
38+
// CHECK-NEXT: "-emit-module-path",
39+
// CHECK-NEXT: "{{.*[\\/]}}parseable_output_batch.swift.tmp.swiftmodule",
40+
// CHECK-NEXT: "-module-name",
41+
// CHECK-NEXT: "test",
42+
// CHECK-NEXT: "-emit-module",
43+
// CHECK-NEXT: "-emit-module-path",
44+
// CHECK-NEXT: "test.tmp.swiftmodule",
45+
// CHECK-NEXT: "-frontend-parseable-output"
46+
// CHECK-NEXT: ],
47+
// CHECK-NEXT: "inputs": [
48+
// CHECK-NEXT: "{{.*[\\/]}}parseable_output_batch.swift"
49+
// CHECK-NEXT: ],
50+
// CHECK-NEXT: "outputs": [
51+
// CHECK-NEXT: {
52+
// CHECK-NEXT: "type": "image",
53+
// CHECK-NEXT: "path": "{{.*[\\/]}}parseable_output_batch.swift.tmp.out"
54+
// CHECK-NEXT: },
55+
// CHECK-NEXT: {
56+
// CHECK-NEXT: "type": "swiftmodule",
57+
// CHECK-NEXT: "path": "{{.*[\\/]}}parseable_output_batch.swift.tmp.swiftmodule"
58+
// CHECK-NEXT: }
59+
// CHECK-NEXT: ],
60+
// CHECK-NEXT: "pid": -1000,
61+
// CHECK-NEXT: "process": {
62+
// CHECK-NEXT: "real_pid": [[REALPID:[0-9]*]]
63+
// CHECK-NEXT: }
64+
// CHECK-NEXT:}
65+
66+
// CHECK: {{[1-9][0-9]*}}
67+
// CHECK-NEXT: {
68+
// CHECK-NEXT: "kind": "began",
69+
// CHECK-NEXT: "name": "compile",
70+
// CHECK-NEXT: "command": "{{.*[\\/]}}swift-frontend{{(\.exe)?}}{{.*}}-primary-file {{.*[\\/]}}parseable_output_batch.swift -primary-file {{.*[\\/]}}test.swift -o {{.*[\\/]}}parseable_output_batch.swift.tmp.out -o test.tmp.out -module-name parseable_output_batch -emit-module -emit-module-path {{.*[\\/]}}parseable_output_batch.swift.tmp.swiftmodule -module-name test -emit-module -emit-module-path test.tmp.swiftmodule -frontend-parseable-output",
71+
// CHECK-NEXT: "command_executable": "{{.*[\\/]}}swift{{(-frontend|c)?(\.exe)?}}",
72+
// CHECK-NEXT: "command_arguments": [
73+
// CHECK-NEXT: "-target",
74+
// CHECK-NEXT: "{{.*}}",
75+
// CHECK-NEXT: "-module-cache-path",
76+
// CHECK-NEXT: "{{.*[\\/]}}clang-module-cache",
77+
// CHECK-NEXT: "-sdk",
78+
// CHECK-NEXT: "{{.*}}.sdk",
79+
// CHECK-NEXT: "-swift-version",
80+
// CHECK-NEXT: "4",
81+
// CHECK-NEXT: "-ignore-module-source-info",
82+
// CHECK-NEXT: "-typo-correction-limit",
83+
// CHECK-NEXT: "10",
84+
// CHECK-NEXT: "-primary-file",
85+
// CHECK-NEXT: "{{.*[\\/]}}parseable_output_batch.swift",
86+
// CHECK-NEXT: "-primary-file",
87+
// CHECK-NEXT: "{{.*[\\/]}}parseable_output_batch.swift.tmp\/test.swift",
88+
// CHECK-NEXT: "-o",
89+
// CHECK-NEXT: "{{.*[\\/]}}parseable_output_batch.swift.tmp.out",
90+
// CHECK-NEXT: "-o",
91+
// CHECK-NEXT: "test.tmp.out",
92+
// CHECK-NEXT: "-module-name",
93+
// CHECK-NEXT: "parseable_output_batch",
94+
// CHECK-NEXT: "-emit-module",
95+
// CHECK-NEXT: "-emit-module-path",
96+
// CHECK-NEXT: "{{.*[\\/]}}parseable_output_batch.swift.tmp.swiftmodule",
97+
// CHECK-NEXT: "-module-name",
98+
// CHECK-NEXT: "test",
99+
// CHECK-NEXT: "-emit-module",
100+
// CHECK-NEXT: "-emit-module-path",
101+
// CHECK-NEXT: "test.tmp.swiftmodule",
102+
// CHECK-NEXT: "-frontend-parseable-output"
103+
// CHECK-NEXT: ],
104+
// CHECK-NEXT: "inputs": [
105+
// CHECK-NEXT: "{{.*[\\/]}}test.swift"
106+
// CHECK-NEXT: ],
107+
// CHECK-NEXT: "outputs": [
108+
// CHECK-NEXT: {
109+
// CHECK-NEXT: "type": "image",
110+
// CHECK-NEXT: "path": "test.tmp.out"
111+
// CHECK-NEXT: },
112+
// CHECK-NEXT: {
113+
// CHECK-NEXT: "type": "swiftmodule",
114+
// CHECK-NEXT: "path": "test.tmp.swiftmodule"
115+
// CHECK-NEXT: }
116+
// CHECK-NEXT: ],
117+
// CHECK-NEXT: "pid": -1001,
118+
// CHECK-NEXT: "process": {
119+
// CHECK-NEXT: "real_pid": [[REALPID]]
120+
// CHECK-NEXT: }
121+
// CHECK-NEXT:}
122+
123+
// CHECK: {{[1-9][0-9]*}}
124+
// CHECK-NEXT:{
125+
// CHECK-NEXT: "kind": "finished",
126+
// CHECK-NEXT: "name": "compile",
127+
// CHECK-NEXT: "process": {
128+
// CHECK-NEXT: "real_pid": [[REALPID]]
129+
// CHECK-NEXT: },
130+
// CHECK-NEXT: "pid": -1000,
131+
// CHECK-NEXT: "exit-status": 0
132+
// CHECK-NEXT:}
133+
// CHECK: {{[1-9][0-9]*}}
134+
// CHECK-NEXT:{
135+
// CHECK-NEXT: "kind": "finished",
136+
// CHECK-NEXT: "name": "compile",
137+
// CHECK-NEXT: "process": {
138+
// CHECK-NEXT: "real_pid": [[REALPID]]
139+
// CHECK-NEXT: },
140+
// CHECK-NEXT: "pid": -1001,
141+
// CHECK-NEXT: "exit-status": 0
142+
// CHECK-NEXT:}
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
// RUN: not %target-swift-frontend -primary-file %s -o %t.out -emit-module -emit-module-path %t.swiftmodule -frontend-parseable-output 2>&1 | %FileCheck %s
2+
3+
// XFAIL: freebsd, openbsd, linux
4+
func foo() {
5+
return 11;
6+
}
7+
// CHECK: {{[1-9][0-9]*}}
8+
// CHECK-NEXT: {
9+
// CHECK-NEXT: "kind": "began",
10+
// CHECK-NEXT: "name": "compile",
11+
// CHECK-NEXT: "command": "{{.*[\\/]}}swift-frontend{{(\.exe)?}}{{.*}}-primary-file {{.*[\\/]}}parseable_output_error.swift -o {{.*[\\/]}}parseable_output_error.swift.tmp.out -emit-module -emit-module-path {{.*[\\/]}}parseable_output_error.swift.tmp.swiftmodule -frontend-parseable-output",
12+
// CHECK-NEXT: "command_executable": "{{.*[\\/]}}swift{{(-frontend|c)?(\.exe)?}}",
13+
// CHECK-NEXT: "command_arguments": [
14+
// CHECK-NEXT: "-target",
15+
// CHECK-NEXT: "{{.*}}",
16+
// CHECK-NEXT: "-module-cache-path",
17+
// CHECK-NEXT: "{{.*[\\/]}}clang-module-cache",
18+
// CHECK-NEXT: "-sdk",
19+
// CHECK-NEXT: "{{.*}}.sdk",
20+
// CHECK-NEXT: "-swift-version",
21+
// CHECK-NEXT: "4",
22+
// CHECK-NEXT: "-ignore-module-source-info",
23+
// CHECK-NEXT: "-typo-correction-limit",
24+
// CHECK-NEXT: "10",
25+
// CHECK-NEXT: "-primary-file",
26+
// CHECK-NEXT: "{{.*[\\/]}}parseable_output_error.swift",
27+
// CHECK-NEXT: "-o",
28+
// CHECK-NEXT: "{{.*[\\/]}}parseable_output_error.swift.tmp.out",
29+
// CHECK-NEXT: "-emit-module",
30+
// CHECK-NEXT: "-emit-module-path",
31+
// CHECK-NEXT: "{{.*[\\/]}}parseable_output_error.swift.tmp.swiftmodule",
32+
// CHECK-NEXT: "-frontend-parseable-output"
33+
// CHECK-NEXT: ],
34+
// CHECK-NEXT: "inputs": [
35+
// CHECK-NEXT: "{{.*[\\/]}}parseable_output_error.swift"
36+
// CHECK-NEXT: ],
37+
// CHECK-NEXT: "outputs": [
38+
// CHECK-NEXT: {
39+
// CHECK-NEXT: "type": "image",
40+
// CHECK-NEXT: "path": "{{.*[\\/]}}parseable_output_error.swift.tmp.out"
41+
// CHECK-NEXT: },
42+
// CHECK-NEXT: {
43+
// CHECK-NEXT: "type": "swiftmodule",
44+
// CHECK-NEXT: "path": "{{.*[\\/]}}parseable_output_error.swift.tmp.swiftmodule"
45+
// CHECK-NEXT: }
46+
// CHECK-NEXT: ],
47+
// CHECK-NEXT: "pid": [[PID:[0-9]*]]
48+
// CHECK-NEXT: "process": {
49+
// CHECK-NEXT: "real_pid": [[PID]]
50+
// CHECK-NEXT: }
51+
// CHECK-NEXT: }
52+
53+
// CHECK-NEXT: {{[1-9][0-9]*}}
54+
// CHECK-NEXT: {
55+
// CHECK-NEXT: "kind": "finished",
56+
// CHECK-NEXT: "name": "compile",
57+
// CHECK-NEXT: "output": "5, 12: unexpected non-void return value in void function\n5, 12: did you mean to add a return type?\n",
58+
// CHECK-NEXT: "process": {
59+
// CHECK-NEXT: "real_pid": [[PID]]
60+
// CHECK-NEXT: },
61+
// CHECK-NEXT: "pid": [[PID]],
62+
// CHECK-NEXT: "exit-status": 1
63+
// CHECK-NEXT: }

0 commit comments

Comments
 (0)