Skip to content

Commit 86e2f54

Browse files
committed
Merge pull request #256 from mxcl/faster-tests
[tests] Less functional, more speed
2 parents 79fe6eb + c2e9017 commit 86e2f54

9 files changed

+332
-285
lines changed

Tests/Get/GetTests.swift

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,33 @@ class GetTests: XCTestCase {
7474
XCTAssertNil(Git.Repo(path: #file))
7575
XCTAssertNil(Git.Repo(path: #file.parentDirectory))
7676
}
77+
78+
//TODO enable
79+
// func testTransmuteResolvesCModuleDependencies() {
80+
// fixture(name: "Miscellaneous/PackageType") { prefix in
81+
// let prefix = Path.join(prefix, "App")
82+
// let manifest = try Manifest(path: prefix)
83+
// let (rootPackage, externalPackages) = try get(manifest, manifestParser: { try Manifest(path: $0, baseURL: $1) })
84+
// let (modules, _, _) = try transmute(rootPackage, externalPackages: externalPackages)
85+
//
86+
// XCTAssertEqual(modules.count, 3)
87+
// XCTAssertEqual(recursiveDependencies(modules).count, 3)
88+
// XCTAssertTrue(modules.dropFirst().first is CModule)
89+
// }
90+
//
91+
// fixture(name: "ModuleMaps/Direct") { prefix in
92+
// let prefix = Path.join(prefix, "App")
93+
// let manifest = try Manifest(path: prefix)
94+
// let (rootPackage, externalPackages) = try get(manifest, manifestParser: { try Manifest(path: $0, baseURL: $1) })
95+
// let (modules, _, _) = try transmute(rootPackage, externalPackages: externalPackages)
96+
//
97+
// XCTAssertEqual(modules.count, 2)
98+
// XCTAssertTrue(modules.first is CModule)
99+
// XCTAssertEqual(modules[1].dependencies.count, 1)
100+
// XCTAssertEqual(modules[1].recursiveDependencies.count, 1)
101+
// XCTAssertTrue(modules[1].dependencies.contains(modules[0]))
102+
// }
103+
// }
77104
}
78105

79106

Tests/LinuxMain.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ XCTMain([
2424
testCase(ManifestTests.allTests),
2525
testCase(MiscellaneousTestCase.allTests),
2626
testCase(ManifestParserTestSuite.PackageTests.allTests),
27-
testCase(ModuleTests.allTests),
27+
testCase(ModuleDependencyTests.allTests),
28+
testCase(ValidSourcesTests.allTests),
29+
testCase(PrimitiveResolutionTests.allTests),
2830
testCase(PackageDescriptionTestSuite.PackageTests.allTests),
2931
testCase(PackageTypeTestSuite.PackageTests.allTests),
3032
testCase(PathTests.allTests),
Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
/*
2+
This source file is part of the Swift.org open source project
3+
4+
Copyright 2015 - 2016 Apple Inc. and the Swift project authors
5+
Licensed under Apache License v2.0 with Runtime Library Exception
6+
7+
See http://swift.org/LICENSE.txt for license information
8+
See http://swift.org/CONTRIBUTORS.txt for Swift project authors
9+
*/
10+
11+
@testable import Transmute
12+
import class PackageType.Module
13+
import XCTest
14+
15+
16+
class ModuleDependencyTests: XCTestCase {
17+
18+
func test1() {
19+
let t1 = Module(name: "t1")
20+
let t2 = Module(name: "t2")
21+
let t3 = Module(name: "t3")
22+
23+
t3.depends(on: t2)
24+
t2.depends(on: t1)
25+
26+
XCTAssertEqual(t3.recursiveDeps, [t2, t1])
27+
XCTAssertEqual(t2.recursiveDeps, [t1])
28+
}
29+
30+
func test2() {
31+
let t1 = Module(name: "t1")
32+
let t2 = Module(name: "t2")
33+
let t3 = Module(name: "t3")
34+
let t4 = Module(name: "t3")
35+
36+
t4.depends(on: t2)
37+
t4.depends(on: t3)
38+
t4.depends(on: t1)
39+
t3.depends(on: t2)
40+
t3.depends(on: t1)
41+
t2.depends(on: t1)
42+
43+
XCTAssertEqual(t4.recursiveDeps, [t3, t2, t1])
44+
XCTAssertEqual(t3.recursiveDeps, [t2, t1])
45+
XCTAssertEqual(t2.recursiveDeps, [t1])
46+
}
47+
48+
func test3() {
49+
let t1 = Module(name: "t1")
50+
let t2 = Module(name: "t2")
51+
let t3 = Module(name: "t3")
52+
let t4 = Module(name: "t4")
53+
54+
t4.depends(on: t1)
55+
t4.depends(on: t2)
56+
t4.depends(on: t3)
57+
t3.depends(on: t2)
58+
t3.depends(on: t1)
59+
t2.depends(on: t1)
60+
61+
XCTAssertEqual(t4.recursiveDeps, [t3, t2, t1])
62+
XCTAssertEqual(t3.recursiveDeps, [t2, t1])
63+
XCTAssertEqual(t2.recursiveDeps, [t1])
64+
}
65+
66+
func test4() {
67+
let t1 = Module(name: "t1")
68+
let t2 = Module(name: "t2")
69+
let t3 = Module(name: "t3")
70+
let t4 = Module(name: "t4")
71+
72+
t4.depends(on: t3)
73+
t3.depends(on: t2)
74+
t2.depends(on: t1)
75+
76+
XCTAssertEqual(t4.recursiveDeps, [t3, t2, t1])
77+
XCTAssertEqual(t3.recursiveDeps, [t2, t1])
78+
XCTAssertEqual(t2.recursiveDeps, [t1])
79+
}
80+
81+
func test5() {
82+
let t1 = Module(name: "t1")
83+
let t2 = Module(name: "t2")
84+
let t3 = Module(name: "t3")
85+
let t4 = Module(name: "t4")
86+
let t5 = Module(name: "t5")
87+
let t6 = Module(name: "t6")
88+
89+
t6.depends(on: t5)
90+
t6.depends(on: t4)
91+
t5.depends(on: t2)
92+
t4.depends(on: t3)
93+
t3.depends(on: t2)
94+
t2.depends(on: t1)
95+
96+
// precise order is not important, but it is important that the following are true
97+
let t6rd = t6.recursiveDeps
98+
XCTAssertEqual(t6rd.index(of: t3)!, t6rd.index(of: t4)!.successor())
99+
XCTAssert(t6rd.index(of: t5)! < t6rd.index(of: t2)!)
100+
XCTAssert(t6rd.index(of: t5)! < t6rd.index(of: t1)!)
101+
XCTAssert(t6rd.index(of: t2)! < t6rd.index(of: t1)!)
102+
XCTAssert(t6rd.index(of: t3)! < t6rd.index(of: t2)!)
103+
104+
XCTAssertEqual(t5.recursiveDeps, [t2, t1])
105+
XCTAssertEqual(t4.recursiveDeps, [t3, t2, t1])
106+
XCTAssertEqual(t3.recursiveDeps, [t2, t1])
107+
XCTAssertEqual(t2.recursiveDeps, [t1])
108+
}
109+
110+
func test6() {
111+
let t1 = Module(name: "t1")
112+
let t2 = Module(name: "t2")
113+
let t3 = Module(name: "t3")
114+
let t4 = Module(name: "t4")
115+
let t5 = Module(name: "t5")
116+
let t6 = Module(name: "t6")
117+
118+
t6.depends(on: t4) // same as above, but
119+
t6.depends(on: t5) // these two swapped
120+
t5.depends(on: t2)
121+
t4.depends(on: t3)
122+
t3.depends(on: t2)
123+
t2.depends(on: t1)
124+
125+
// precise order is not important, but it is important that the following are true
126+
let t6rd = t6.recursiveDeps
127+
XCTAssertEqual(t6rd.index(of: t3)!, t6rd.index(of: t4)!.successor())
128+
XCTAssert(t6rd.index(of: t5)! < t6rd.index(of: t2)!)
129+
XCTAssert(t6rd.index(of: t5)! < t6rd.index(of: t1)!)
130+
XCTAssert(t6rd.index(of: t2)! < t6rd.index(of: t1)!)
131+
XCTAssert(t6rd.index(of: t3)! < t6rd.index(of: t2)!)
132+
133+
XCTAssertEqual(t5.recursiveDeps, [t2, t1])
134+
XCTAssertEqual(t4.recursiveDeps, [t3, t2, t1])
135+
XCTAssertEqual(t3.recursiveDeps, [t2, t1])
136+
XCTAssertEqual(t2.recursiveDeps, [t1])
137+
}
138+
}
139+
140+
extension Module {
141+
private func depends(on target: Module) {
142+
dependencies.append(target)
143+
}
144+
145+
private var recursiveDeps: [Module] {
146+
sort(self)
147+
return dependencies
148+
}
149+
}

0 commit comments

Comments
 (0)