Skip to content

Commit d69e25d

Browse files
committed
[swiftpm] Add tests for package loading errors
1 parent aaf4760 commit d69e25d

File tree

2 files changed

+56
-0
lines changed

2 files changed

+56
-0
lines changed

Tests/SKSwiftPMWorkspaceTests/SwiftPMWorkspaceTests.swift

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,59 @@ import SKTestSupport
1818
import XCTest
1919

2020
final class SwiftPMWorkspaceTests: XCTestCase {
21+
22+
func testNoPackage() {
23+
let fs = InMemoryFileSystem()
24+
let tempDir = try! TemporaryDirectory(removeTreeOnDeinit: true)
25+
try! fs.createFiles(root: tempDir.path, files: [
26+
"pkg/Sources/lib/a.swift": "",
27+
])
28+
let packageRoot = tempDir.path.appending(component: "pkg")
29+
let tr = ToolchainRegistry.shared
30+
XCTAssertThrowsError(try SwiftPMWorkspace(
31+
workspacePath: packageRoot,
32+
toolchainRegistry: tr,
33+
fileSystem: fs))
34+
}
35+
36+
func testUnparsablePackage() {
37+
let fs = localFileSystem
38+
let tempDir = try! TemporaryDirectory(removeTreeOnDeinit: true)
39+
try! fs.createFiles(root: tempDir.path, files: [
40+
"pkg/Sources/lib/a.swift": "",
41+
"pkg/Package.swift": """
42+
// swift-tools-version:4.2
43+
import PackageDescription
44+
let pack
45+
"""
46+
])
47+
let packageRoot = tempDir.path.appending(component: "pkg")
48+
let tr = ToolchainRegistry.shared
49+
XCTAssertThrowsError(try SwiftPMWorkspace(
50+
workspacePath: packageRoot,
51+
toolchainRegistry: tr,
52+
fileSystem: fs))
53+
}
54+
55+
func testNoToolchain() {
56+
let fs = localFileSystem
57+
let tempDir = try! TemporaryDirectory(removeTreeOnDeinit: true)
58+
try! fs.createFiles(root: tempDir.path, files: [
59+
"pkg/Sources/lib/a.swift": "",
60+
"pkg/Package.swift": """
61+
// swift-tools-version:4.2
62+
import PackageDescription
63+
let package = Package(name: "a", products: [], dependencies: [],
64+
targets: [.target(name: "lib", dependencies: [])])
65+
"""
66+
])
67+
let packageRoot = tempDir.path.appending(component: "pkg")
68+
XCTAssertThrowsError(try SwiftPMWorkspace(
69+
workspacePath: packageRoot,
70+
toolchainRegistry: ToolchainRegistry(),
71+
fileSystem: fs))
72+
}
73+
2174
func testBasicSwiftArgs() {
2275
// FIXME: should be possible to use InMemoryFileSystem.
2376
let fs = localFileSystem

Tests/SKSwiftPMWorkspaceTests/XCTestManifests.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ extension SwiftPMWorkspaceTests {
1111
("testDeploymentTargetSwift", testDeploymentTargetSwift),
1212
("testMultiFileSwift", testMultiFileSwift),
1313
("testMultiTargetSwift", testMultiTargetSwift),
14+
("testNoPackage", testNoPackage),
15+
("testNoToolchain", testNoToolchain),
16+
("testUnparsablePackage", testUnparsablePackage),
1417
]
1518
}
1619

0 commit comments

Comments
 (0)