Skip to content

Commit 8e3c204

Browse files
committed
PackageModelTests: add case for destination v2
1 parent 07efc00 commit 8e3c204

File tree

2 files changed

+48
-14
lines changed

2 files changed

+48
-14
lines changed

Sources/PackageModel/Destination.swift

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212

1313
import Basics
1414
import Foundation
15-
import SystemPackage
1615
import TSCBasic
1716

1817
import struct TSCUtility.Triple
@@ -285,11 +284,11 @@ extension Destination {
285284
try self.init(
286285
hostTriple: Triple(destination.hostTriple),
287286
destinationTriple: Triple(destination.destinationTriple),
288-
sdkRootDir: AbsolutePath(validating: destination.sdkDir, relativeTo: destinationDirectory),
287+
sdkRootDir: AbsolutePath(validating: destination.sdkRootDir, relativeTo: destinationDirectory),
289288
toolchainBinDir: AbsolutePath(validating: destination.toolchainBinDir, relativeTo: destinationDirectory),
290289
extraFlags: .init(
291290
cCompilerFlags: destination.extraCCFlags,
292-
cxxCompilerFlags: destination.extraCPPFlags,
291+
cxxCompilerFlags: destination.extraCXXFlags,
293292
swiftCompilerFlags: destination.extraSwiftCFlags,
294293
linkerFlags: destination.extraLinkerFlags
295294
)
@@ -323,12 +322,12 @@ fileprivate struct DestinationInfoV1: Codable {
323322
}
324323

325324
fileprivate struct DestinationInfoV2: Codable {
326-
let sdkDir: String
325+
let sdkRootDir: String
327326
let toolchainBinDir: String
328327
let hostTriple: String
329328
let destinationTriple: String
330329
let extraCCFlags: [String]
331330
let extraSwiftCFlags: [String]
332-
let extraCPPFlags: [String]
331+
let extraCXXFlags: [String]
333332
let extraLinkerFlags: [String]
334333
}

Tests/PackageModelTests/DestinationTests.swift

Lines changed: 44 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,9 @@ import TSCUtility
1717
import XCTest
1818

1919
private let bundleRootPath = try! AbsolutePath(validating: "/tmp/cross-toolchain")
20-
private let toolchainBinDir = bundleRootPath.appending(.init("swift.xctoolchain/usr/bin"))
21-
private let sdkRootDir = bundleRootPath.appending(.init("ubuntu-jammy.sdk"))
20+
private let toolchainBinDir = RelativePath("swift.xctoolchain/usr/bin")
21+
private let sdkRootDir = RelativePath("ubuntu-jammy.sdk")
22+
private let hostTriple = "arm64-apple-darwin22.1.0"
2223
private let destinationTriple = "x86_64-unknown-linux-gnu"
2324
private let extraFlags = BuildFlags(
2425
cCompilerFlags: ["-fintegrated-as"],
@@ -31,32 +32,66 @@ private let destinationV1JSON =
3132
#"""
3233
{
3334
"version": 1,
34-
"sdk": "\#(sdkRootDir)",
35-
"toolchain-bin-dir": "\#(toolchainBinDir)",
35+
"sdk": "\#(bundleRootPath.appending(sdkRootDir))",
36+
"toolchain-bin-dir": "\#(bundleRootPath.appending(toolchainBinDir))",
3637
"target": "\#(destinationTriple)",
3738
"extra-cc-flags": \#(extraFlags.cCompilerFlags),
3839
"extra-swiftc-flags": \#(extraFlags.swiftCompilerFlags),
3940
"extra-cpp-flags": \#(extraFlags.cxxCompilerFlags)
4041
}
4142
"""#
4243

43-
class DestinationTests: XCTestCase {
44+
private let destinationV2JSON =
45+
#"""
46+
{
47+
"version": 2,
48+
"sdkRootDir": "\#(sdkRootDir)",
49+
"toolchainBinDir": "\#(toolchainBinDir)",
50+
"hostTriple": "\#(hostTriple)",
51+
"destinationTriple": "\#(destinationTriple)",
52+
"extraCCFlags": \#(extraFlags.cCompilerFlags),
53+
"extraSwiftCFlags": \#(extraFlags.swiftCompilerFlags),
54+
"extraCXXFlags": \#(extraFlags.cxxCompilerFlags),
55+
"extraLinkerFlags": \#(extraFlags.linkerFlags)
56+
}
57+
"""#
58+
59+
final class DestinationTests: XCTestCase {
4460
func testDestinationCodable() throws {
45-
let fs = InMemoryFileSystem(files: ["/sdk/destination.json": ByteString(encodingAsUTF8: destinationV1JSON)])
61+
let fs = InMemoryFileSystem(files: [
62+
"\(bundleRootPath)/destinationV1.json": ByteString(encodingAsUTF8: destinationV1JSON),
63+
"\(bundleRootPath)/destinationV2.json": ByteString(encodingAsUTF8: destinationV2JSON),
64+
])
4665

47-
let destinationV1 = try Destination(fromFile: AbsolutePath(validating: "/sdk/destination.json"), fileSystem: fs)
66+
let destinationV1 = try Destination(fromFile: bundleRootPath.appending(.init("destinationV1.json")), fileSystem: fs)
4867

4968
var flagsWithoutLinkerFlags = extraFlags
5069
flagsWithoutLinkerFlags.linkerFlags = []
5170

71+
let sdkRootAbsolutePath = bundleRootPath.appending(sdkRootDir)
72+
let toolchainBinAbsolutePath = bundleRootPath.appending(toolchainBinDir)
73+
5274
XCTAssertEqual(
5375
destinationV1,
5476
Destination(
5577
destinationTriple: try Triple(destinationTriple),
56-
sdkRootDir: sdkRootDir,
57-
toolchainBinDir: toolchainBinDir,
78+
sdkRootDir: sdkRootAbsolutePath,
79+
toolchainBinDir: toolchainBinAbsolutePath,
5880
extraFlags: flagsWithoutLinkerFlags
5981
)
6082
)
83+
84+
let destinationV2 = try Destination(fromFile: bundleRootPath.appending(.init("destinationV2.json")), fileSystem: fs)
85+
86+
XCTAssertEqual(
87+
destinationV2,
88+
Destination(
89+
hostTriple: try Triple(hostTriple),
90+
destinationTriple: try Triple(destinationTriple),
91+
sdkRootDir: sdkRootAbsolutePath,
92+
toolchainBinDir: toolchainBinAbsolutePath,
93+
extraFlags: extraFlags
94+
)
95+
)
6196
}
6297
}

0 commit comments

Comments
 (0)