-
Notifications
You must be signed in to change notification settings - Fork 10.4k
/
Copy pathCrashingTests.swift
168 lines (145 loc) · 5.06 KB
/
CrashingTests.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
// RUN: %target-run-simple-swift 2>&1 | FileCheck %s
// REQUIRES: executable_test
import StdlibUnittest
_setOverrideOSVersion(.osx(major: 10, minor: 9, bugFix: 3))
_setTestSuiteFailedCallback() { print("abort()") }
//
// Test that harness aborts when a test crashes
//
var TestSuiteCrashes = TestSuite("TestSuiteCrashes")
TestSuiteCrashes.test("crashesUnexpectedly1") {
print("crashesUnexpectedly1")
fatalError("this should crash")
}
// CHECK: stdout>>> crashesUnexpectedly1
// CHECK: stderr>>> fatal error: this should crash:
// CHECK: stderr>>> CRASHED: SIG
// CHECK: [ FAIL ] TestSuiteCrashes.crashesUnexpectedly1
TestSuiteCrashes.test("passes1") {
print("passes1")
expectEqual(1, 1)
}
// CHECK: stdout>>> passes1
// CHECK: [ OK ] TestSuiteCrashes.passes1
TestSuiteCrashes.test("fails1") {
print("fails1")
expectEqual(1, 2)
}
// CHECK: stdout>>> fails1
// CHECK: stdout>>> check failed
// CHECK: [ FAIL ] TestSuiteCrashes.fails1
TestSuiteCrashes.test("crashesUnexpectedly2") {
print("crashesUnexpectedly2")
fatalError("this should crash")
}
// CHECK: stdout>>> crashesUnexpectedly2
// CHECK: stderr>>> fatal error: this should crash:
// CHECK: stderr>>> CRASHED: SIG
// CHECK: [ FAIL ] TestSuiteCrashes.crashesUnexpectedly2
TestSuiteCrashes.test("passes2") {
print("passes2")
expectEqual(1, 1)
}
// CHECK: stdout>>> passes2
// CHECK: [ OK ] TestSuiteCrashes.passes2
TestSuiteCrashes.test("fails2") {
print("fails2")
expectEqual(1, 2)
}
// CHECK: stdout>>> fails2
// CHECK: stdout>>> check failed
// CHECK: [ FAIL ] TestSuiteCrashes.fails2
TestSuiteCrashes.test("crashesAsExpected1") {
print("crashesAsExpected1")
expectCrashLater()
fatalError("this should crash")
}
// CHECK: stdout>>> crashesAsExpected1
// CHECK: stderr>>> fatal error: this should crash:
// CHECK: stderr>>> OK: saw expected "crashed: sig
// CHECK: [ OK ] TestSuiteCrashes.crashesAsExpected1
TestSuiteCrashes.test("passes3") {
print("passes3")
expectEqual(1, 1)
}
// CHECK: stdout>>> passes3
// CHECK: [ OK ] TestSuiteCrashes.passes3
TestSuiteCrashes.test("fails3") {
print("fails3")
expectEqual(1, 2)
}
// CHECK: stdout>>> fails3
// CHECK: stdout>>> check failed
// CHECK: [ FAIL ] TestSuiteCrashes.fails3
TestSuiteCrashes.test("crashesUnexpectedlyXfail")
.xfail(.osxBugFix(10, 9, 3, reason: "")).code {
print("crashesUnexpectedlyXfail")
fatalError("this should crash")
}
// CHECK: stdout>>> crashesUnexpectedlyXfail
// CHECK: stderr>>> fatal error: this should crash:
// CHECK: stderr>>> CRASHED: SIG
// CHECK: [ XFAIL ] TestSuiteCrashes.crashesUnexpectedlyXfail
TestSuiteCrashes.test("crashesAsExpectedXfail")
.xfail(.osxBugFix(10, 9, 3, reason: "")).code {
print("crashesAsExpectedXfail")
expectCrashLater()
fatalError("this should crash")
}
// CHECK: stdout>>> crashesAsExpectedXfail
// CHECK: stderr>>> fatal error: this should crash:
// CHECK: stderr>>> OK: saw expected "crashed: sig
// CHECK: [ UXPASS ] TestSuiteCrashes.crashesAsExpectedXfail
TestSuiteCrashes.test("crashesWithMessagePasses")
.crashOutputMatches("this should crash").code {
print("abcd")
expectCrashLater()
fatalError("this should crash")
}
// CHECK: stdout>>> abcd
// CHECK: stderr>>> fatal error: this should crash:
// CHECK: stderr>>> OK: saw expected "crashed: sig
// CHECK: [ OK ] TestSuiteCrashes.crashesWithMessagePasses
TestSuiteCrashes.test("crashesWithMessageFails")
.crashOutputMatches("this should crash").code {
print("this should crash")
expectCrashLater()
fatalError("unexpected message")
}
// CHECK: stdout>>> this should crash
// CHECK: stderr>>> fatal error: unexpected message:
// CHECK: stderr>>> OK: saw expected "crashed: sig
// CHECK: did not find expected string after crash: "this should crash"
// CHECK: [ FAIL ] TestSuiteCrashes.crashesWithMessageFails
TestSuiteCrashes.test("crashesWithMultipleMessagesPasses")
.crashOutputMatches("little dog")
.crashOutputMatches("this should crash")
.crashOutputMatches("too")
.code {
print("abcd")
expectCrashLater()
fatalError("this should crash and your little dog too")
}
// CHECK: stdout>>> abcd
// CHECK: stderr>>> fatal error: this should crash and your little dog too:
// CHECK: stderr>>> OK: saw expected "crashed: sig
// CHECK: [ OK ] TestSuiteCrashes.crashesWithMultipleMessagesPasses
TestSuiteCrashes.test("crashesWithMultipleMessagesFails")
.crashOutputMatches("unexpected message")
.crashOutputMatches("this should crash")
.crashOutputMatches("big dog")
.crashOutputMatches("and your little dog too")
.code {
print("this should crash")
expectCrashLater()
fatalError("unexpected message and your little dog too")
}
// CHECK: stdout>>> this should crash
// CHECK: stderr>>> fatal error: unexpected message and your little dog too:
// CHECK: stderr>>> OK: saw expected "crashed: sig
// CHECK: did not find expected string after crash: "this should crash"
// CHECK: did not find expected string after crash: "big dog"
// CHECK: [ FAIL ] TestSuiteCrashes.crashesWithMultipleMessagesFails
// CHECK: TestSuiteCrashes: Some tests failed, aborting
// CHECK: abort()
runAllTests()