Skip to content

Commit c86ff1b

Browse files
committed
Add a regression test for the failure messages of the XCTAssert functions
1 parent da629e6 commit c86ff1b

File tree

2 files changed

+214
-7
lines changed

2 files changed

+214
-7
lines changed
Lines changed: 197 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,197 @@
1+
// RUN: %{swiftc} %s -o %{built_tests_dir}/FailureMessagesTestCase
2+
// RUN: %{built_tests_dir}/FailureMessagesTestCase > %t || true
3+
// RUN: %{xctest_checker} %t %s
4+
// CHECK: Test Case 'FailureMessagesTestCase.testAssert' started.
5+
// CHECK: test.swift:109: error: FailureMessagesTestCase.testAssert : XCTAssertTrue failed - message
6+
// CHECK: Test Case 'FailureMessagesTestCase.testAssert' failed \(\d+\.\d+ seconds\).
7+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertEqualOptionals' started.
8+
// CHECK: test.swift:113: error: FailureMessagesTestCase.testAssertEqualOptionals : XCTAssertEqual failed: \("Optional\(1\)"\) is not equal to \("Optional\(2\)"\) - message
9+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertEqualOptionals' failed \(\d+\.\d+ seconds\).
10+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertEqualArraySlices' started.
11+
// CHECK: test.swift:117: error: FailureMessagesTestCase.testAssertEqualArraySlices : XCTAssertEqual failed: \("\[1\]"\) is not equal to \("\[2\]"\) - message
12+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertEqualArraySlices' failed \(\d+\.\d+ seconds\).
13+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertEqualContiguousArrays' started.
14+
// CHECK: test.swift:121: error: FailureMessagesTestCase.testAssertEqualContiguousArrays : XCTAssertEqual failed: \("\[1\]"\) is not equal to \("\[2\]"\) - message
15+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertEqualContiguousArrays' failed \(\d+\.\d+ seconds\).
16+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertEqualArrays' started.
17+
// CHECK: test.swift:125: error: FailureMessagesTestCase.testAssertEqualArrays : XCTAssertEqual failed: \("\[1\]"\) is not equal to \("\[2\]"\) - message
18+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertEqualArrays' failed \(\d+\.\d+ seconds\).
19+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertEqualDictionaries' started.
20+
// CHECK: test.swift:129: error: FailureMessagesTestCase.testAssertEqualDictionaries : XCTAssertEqual failed: \("\[1: 2\]"\) is not equal to \("\[3: 4\]"\) - message
21+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertEqualDictionaries' failed \(\d+\.\d+ seconds\).
22+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertEqualWithAccuracy' started.
23+
// CHECK: test.swift:133: error: FailureMessagesTestCase.testAssertEqualWithAccuracy : XCTAssertEqualWithAccuracy failed: \("1\.0"\) is not equal to \("2\.0"\) \+/- \("0\.1"\) - message
24+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertEqualWithAccuracy' failed \(\d+\.\d+ seconds\).
25+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertFalse' started.
26+
// CHECK: test.swift:137: error: FailureMessagesTestCase.testAssertFalse : XCTAssertFalse failed - message
27+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertFalse' failed \(\d+\.\d+ seconds\).
28+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertGreaterThan' started.
29+
// CHECK: test.swift:141: error: FailureMessagesTestCase.testAssertGreaterThan : XCTAssertGreaterThan failed: \("0"\) is not greater than \("0"\) - message
30+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertGreaterThan' failed \(\d+\.\d+ seconds\).
31+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertGreaterThanOrEqual' started.
32+
// CHECK: test.swift:145: error: FailureMessagesTestCase.testAssertGreaterThanOrEqual : XCTAssertGreaterThanOrEqual failed: \("-1"\) is less than \("0"\) - message
33+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertGreaterThanOrEqual' failed \(\d+\.\d+ seconds\).
34+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertLessThan' started.
35+
// CHECK: test.swift:149: error: FailureMessagesTestCase.testAssertLessThan : XCTAssertLessThan failed: \("0"\) is not less than \("0"\) - message
36+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertLessThan' failed \(\d+\.\d+ seconds\).
37+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertLessThanOrEqual' started.
38+
// CHECK: test.swift:153: error: FailureMessagesTestCase.testAssertLessThanOrEqual : XCTAssertLessThanOrEqual failed: \("1"\) is greater than \("0"\) - message
39+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertLessThanOrEqual' failed \(\d+\.\d+ seconds\).
40+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertNil' started.
41+
// CHECK: test.swift:157: error: FailureMessagesTestCase.testAssertNil : XCTAssertNil failed: "helloworld" - message
42+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertNil' failed \(\d+\.\d+ seconds\).
43+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertNotEqualOptionals' started.
44+
// CHECK: test.swift:161: error: FailureMessagesTestCase.testAssertNotEqualOptionals : XCTAssertNotEqual failed: \("Optional\(1\)"\) is equal to \("Optional\(1\)"\) - message
45+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertNotEqualOptionals' failed \(\d+\.\d+ seconds\).
46+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertNotEqualArraySlices' started.
47+
// CHECK: test.swift:165: error: FailureMessagesTestCase.testAssertNotEqualArraySlices : XCTAssertNotEqual failed: \("\[1\]"\) is equal to \("\[1\]"\) - message
48+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertNotEqualArraySlices' failed \(\d+\.\d+ seconds\).
49+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertNotEqualContiguousArrays' started.
50+
// CHECK: test.swift:169: error: FailureMessagesTestCase.testAssertNotEqualContiguousArrays : XCTAssertNotEqual failed: \("\[1\]"\) is equal to \("\[1\]"\) - message
51+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertNotEqualContiguousArrays' failed \(\d+\.\d+ seconds\).
52+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertNotEqualArrays' started.
53+
// CHECK: test.swift:173: error: FailureMessagesTestCase.testAssertNotEqualArrays : XCTAssertNotEqual failed: \("\[1\]"\) is equal to \("\[1\]"\) - message
54+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertNotEqualArrays' failed \(\d+\.\d+ seconds\).
55+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertNotEqualDictionaries' started.
56+
// CHECK: test.swift:177: error: FailureMessagesTestCase.testAssertNotEqualDictionaries : XCTAssertNotEqual failed: \("\[1: 1\]"\) is equal to \("\[1: 1\]"\) - message
57+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertNotEqualDictionaries' failed \(\d+\.\d+ seconds\).
58+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertNotEqualWithAccuracy' started.
59+
// CHECK: test.swift:181: error: FailureMessagesTestCase.testAssertNotEqualWithAccuracy : XCTAssertNotEqualWithAccuracy failed: \("1\.0"\) is equal to \("1\.0"\) \+/- \("0\.1"\) - message
60+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertNotEqualWithAccuracy' failed \(\d+\.\d+ seconds\).
61+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertNotNil' started.
62+
// CHECK: test.swift:185: error: FailureMessagesTestCase.testAssertNotNil : XCTAssertNil failed - message
63+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertNotNil' failed \(\d+\.\d+ seconds\).
64+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertTrue' started.
65+
// CHECK: test.swift:189: error: FailureMessagesTestCase.testAssertTrue : XCTAssertTrue failed - message
66+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertTrue' failed \(\d+\.\d+ seconds\).
67+
// CHECK: Test Case 'FailureMessagesTestCase.testFail' started.
68+
// CHECK: test.swift:193: error: FailureMessagesTestCase.testFail : failed - message
69+
// CHECK: Test Case 'FailureMessagesTestCase.testFail' failed \(\d+\.\d+ seconds\).
70+
// CHECK: Executed 22 tests, with 22 failures \(0 unexpected\) in \d+\.\d+ \(\d+\.\d+\) seconds
71+
// CHECK: Total executed 22 tests, with 22 failures \(0 unexpected\) in \d+\.\d+ \(\d+\.\d+\) seconds
72+
73+
#if os(Linux) || os(FreeBSD)
74+
import XCTest
75+
#else
76+
import SwiftXCTest
77+
#endif
78+
79+
// Regression test for https://github.com/apple/swift-corelibs-xctest/pull/22
80+
class FailureMessagesTestCase: XCTestCase/*, XCTestCaseProvider*/ {
81+
var allTests : [(String, () -> Void)] {
82+
return [
83+
("testAssert", testAssert),
84+
("testAssertEqualOptionals", testAssertEqualOptionals),
85+
("testAssertEqualArraySlices", testAssertEqualArraySlices),
86+
("testAssertEqualContiguousArrays", testAssertEqualContiguousArrays),
87+
("testAssertEqualArrays", testAssertEqualArrays),
88+
("testAssertEqualDictionaries", testAssertEqualDictionaries),
89+
("testAssertEqualWithAccuracy", testAssertEqualWithAccuracy),
90+
("testAssertFalse", testAssertFalse),
91+
("testAssertGreaterThan", testAssertGreaterThan),
92+
("testAssertGreaterThanOrEqual", testAssertGreaterThanOrEqual),
93+
("testAssertLessThan", testAssertLessThan),
94+
("testAssertLessThanOrEqual", testAssertLessThanOrEqual),
95+
("testAssertNil", testAssertNil),
96+
("testAssertNotEqualOptionals", testAssertNotEqualOptionals),
97+
("testAssertNotEqualArraySlices", testAssertNotEqualArraySlices),
98+
("testAssertNotEqualContiguousArrays", testAssertNotEqualContiguousArrays),
99+
("testAssertNotEqualArrays", testAssertNotEqualArrays),
100+
("testAssertNotEqualDictionaries", testAssertNotEqualDictionaries),
101+
("testAssertNotEqualWithAccuracy", testAssertNotEqualWithAccuracy),
102+
("testAssertNotNil", testAssertNotNil),
103+
("testAssertTrue", testAssertTrue),
104+
("testFail", testFail),
105+
]
106+
}
107+
108+
func testAssert() {
109+
XCTAssert(false, "message", file: "test.swift")
110+
}
111+
112+
func testAssertEqualOptionals() {
113+
XCTAssertEqual(1, 2, "message", file: "test.swift")
114+
}
115+
116+
func testAssertEqualArraySlices() {
117+
XCTAssertEqual([1][0..<1], [2][0..<1], "message", file: "test.swift")
118+
}
119+
120+
func testAssertEqualContiguousArrays() {
121+
XCTAssertEqual(ContiguousArray(arrayLiteral: 1), ContiguousArray(arrayLiteral: 2), "message", file: "test.swift")
122+
}
123+
124+
func testAssertEqualArrays() {
125+
XCTAssertEqual([1], [2], "message", file: "test.swift")
126+
}
127+
128+
func testAssertEqualDictionaries() {
129+
XCTAssertEqual([1:2], [3:4], "message", file: "test.swift")
130+
}
131+
132+
func testAssertEqualWithAccuracy() {
133+
XCTAssertEqualWithAccuracy(1, 2, accuracy: 0.1, "message", file: "test.swift")
134+
}
135+
136+
func testAssertFalse() {
137+
XCTAssertFalse(true, "message", file: "test.swift")
138+
}
139+
140+
func testAssertGreaterThan() {
141+
XCTAssertGreaterThan(0, 0, "message", file: "test.swift")
142+
}
143+
144+
func testAssertGreaterThanOrEqual() {
145+
XCTAssertGreaterThanOrEqual(-1, 0, "message", file: "test.swift")
146+
}
147+
148+
func testAssertLessThan() {
149+
XCTAssertLessThan(0, 0, "message", file: "test.swift")
150+
}
151+
152+
func testAssertLessThanOrEqual() {
153+
XCTAssertLessThanOrEqual(1, 0, "message", file: "test.swift")
154+
}
155+
156+
func testAssertNil() {
157+
XCTAssertNil("helloworld", "message", file: "test.swift")
158+
}
159+
160+
func testAssertNotEqualOptionals() {
161+
XCTAssertNotEqual(1, 1, "message", file: "test.swift")
162+
}
163+
164+
func testAssertNotEqualArraySlices() {
165+
XCTAssertNotEqual([1][0..<1], [1][0..<1], "message", file: "test.swift")
166+
}
167+
168+
func testAssertNotEqualContiguousArrays() {
169+
XCTAssertNotEqual(ContiguousArray(arrayLiteral: 1), ContiguousArray(arrayLiteral: 1), "message", file: "test.swift")
170+
}
171+
172+
func testAssertNotEqualArrays() {
173+
XCTAssertNotEqual([1], [1], "message", file: "test.swift")
174+
}
175+
176+
func testAssertNotEqualDictionaries() {
177+
XCTAssertNotEqual([1:1], [1:1], "message", file: "test.swift")
178+
}
179+
180+
func testAssertNotEqualWithAccuracy() {
181+
XCTAssertNotEqualWithAccuracy(1, 1, 0.1, "message", file: "test.swift")
182+
}
183+
184+
func testAssertNotNil() {
185+
XCTAssertNotNil(nil, "message", file: "test.swift")
186+
}
187+
188+
func testAssertTrue() {
189+
XCTAssertTrue(false, "message", file: "test.swift")
190+
}
191+
192+
func testFail() {
193+
XCTFail("message", file: "test.swift")
194+
}
195+
}
196+
197+
XCTMain([FailureMessagesTestCase()])

XCTest.xcodeproj/project.pbxproj

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
/* End PBXContainerItemProxy section */
2626

2727
/* Begin PBXFileReference section */
28+
342A33611C470D91001AA02A /* main.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = "<group>"; };
2829
5B5D86DB1BBC74AD00234F36 /* SwiftXCTest.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftXCTest.framework; sourceTree = BUILT_PRODUCTS_DIR; };
2930
B1384A411C1B3E8700EDF031 /* CONTRIBUTING.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = CONTRIBUTING.md; sourceTree = "<group>"; };
3031
B1384A421C1B3E8700EDF031 /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE; sourceTree = "<group>"; };
@@ -44,8 +45,8 @@
4445
DA78F7F61C4039410082E15B /* compare.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = compare.py; sourceTree = "<group>"; };
4546
DA78F7F81C4039410082E15B /* main.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = main.py; sourceTree = "<group>"; };
4647
DA78F7FA1C4039410082E15B /* xctest_checker.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = xctest_checker.py; sourceTree = "<group>"; };
47-
DADB975E1C44BE8B005E68B6 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = "<group>"; };
4848
DADB97581C406879005E68B6 /* main.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = "<group>"; };
49+
DADB975E1C44BE8B005E68B6 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = "<group>"; };
4950
EA3E74BB1BF2B6D500635A73 /* build_script.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = build_script.py; sourceTree = "<group>"; };
5051
/* End PBXFileReference section */
5152

@@ -60,6 +61,14 @@
6061
/* End PBXFrameworksBuildPhase section */
6162

6263
/* Begin PBXGroup section */
64+
342A33601C470D1E001AA02A /* FailureMessagesTestCase */ = {
65+
isa = PBXGroup;
66+
children = (
67+
342A33611C470D91001AA02A /* main.swift */,
68+
);
69+
path = FailureMessagesTestCase;
70+
sourceTree = "<group>";
71+
};
6372
5B5D86D11BBC74AD00234F36 = {
6473
isa = PBXGroup;
6574
children = (
@@ -126,6 +135,7 @@
126135
DA78F7EA1C4039410082E15B /* SingleFailingTestCase */,
127136
DADB975D1C44BE73005E68B6 /* FailingTestSuite */,
128137
DADB97571C406879005E68B6 /* NegativeAccuracyTestCase */,
138+
342A33601C470D1E001AA02A /* FailureMessagesTestCase */,
129139
DA78F7ED1C4039410082E15B /* xctest_checker */,
130140
);
131141
path = Functional;
@@ -170,20 +180,20 @@
170180
path = xctest_checker;
171181
sourceTree = "<group>";
172182
};
173-
DADB975D1C44BE73005E68B6 /* FailingTestSuite */ = {
183+
DADB97571C406879005E68B6 /* NegativeAccuracyTestCase */ = {
174184
isa = PBXGroup;
175185
children = (
176-
DADB975E1C44BE8B005E68B6 /* main.swift */,
186+
DADB97581C406879005E68B6 /* main.swift */,
177187
);
178-
path = FailingTestSuite;
188+
path = NegativeAccuracyTestCase;
179189
sourceTree = "<group>";
180190
};
181-
DADB97571C406879005E68B6 /* NegativeAccuracyTestCase */ = {
191+
DADB975D1C44BE73005E68B6 /* FailingTestSuite */ = {
182192
isa = PBXGroup;
183193
children = (
184-
DADB97581C406879005E68B6 /* main.swift */,
194+
DADB975E1C44BE8B005E68B6 /* main.swift */,
185195
);
186-
path = NegativeAccuracyTestCase;
196+
path = FailingTestSuite;
187197
sourceTree = "<group>";
188198
};
189199
EA3E74BC1BF2B6D700635A73 /* Linux Build */ = {

0 commit comments

Comments
 (0)