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
|
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift open source project
//
// Copyright (c) 2014-2021 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See http://swift.org/LICENSE.txt for license information
// See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
import Basics
import PackageModel
import XCTest
import class TSCBasic.InMemoryFileSystem
final class ArtifactsArchiveMetadataTests: XCTestCase {
func testParseMetadata() throws {
let fileSystem = InMemoryFileSystem()
try fileSystem.writeFileContents(
"/info.json",
string: """
{
"schemaVersion": "1.0",
"artifacts": {
"protocol-buffer-compiler": {
"type": "executable",
"version": "3.5.1",
"variants": [
{
"path": "x86_64-apple-macosx/protoc",
"supportedTriples": ["x86_64-apple-macosx"]
},
{
"path": "x86_64-unknown-linux-gnu/protoc",
"supportedTriples": ["x86_64-unknown-linux-gnu"]
}
]
}
}
}
"""
)
let metadata = try ArtifactsArchiveMetadata.parse(fileSystem: fileSystem, rootPath: .root)
XCTAssertEqual(metadata, try ArtifactsArchiveMetadata(
schemaVersion: "1.0",
artifacts: [
"protocol-buffer-compiler": ArtifactsArchiveMetadata.Artifact(
type: .executable,
version: "3.5.1",
variants: [
ArtifactsArchiveMetadata.Variant(
path: "x86_64-apple-macosx/protoc",
supportedTriples: [Triple("x86_64-apple-macosx")]
),
ArtifactsArchiveMetadata.Variant(
path: "x86_64-unknown-linux-gnu/protoc",
supportedTriples: [Triple("x86_64-unknown-linux-gnu")]
),
]
),
]
))
}
func testParseMetadataWithoutSupportedTriple() throws {
let fileSystem = InMemoryFileSystem()
try fileSystem.writeFileContents(
"/info.json",
string: """
{
"schemaVersion": "1.0",
"artifacts": {
"protocol-buffer-compiler": {
"type": "executable",
"version": "3.5.1",
"variants": [
{
"path": "x86_64-apple-macosx/protoc"
},
{
"path": "x86_64-unknown-linux-gnu/protoc",
"supportedTriples": null
}
]
}
}
}
"""
)
let metadata = try ArtifactsArchiveMetadata.parse(fileSystem: fileSystem, rootPath: .root)
XCTAssertEqual(metadata, ArtifactsArchiveMetadata(
schemaVersion: "1.0",
artifacts: [
"protocol-buffer-compiler": ArtifactsArchiveMetadata.Artifact(
type: .executable,
version: "3.5.1",
variants: [
ArtifactsArchiveMetadata.Variant(
path: "x86_64-apple-macosx/protoc",
supportedTriples: nil
),
ArtifactsArchiveMetadata.Variant(
path: "x86_64-unknown-linux-gnu/protoc",
supportedTriples: nil
),
]
),
]
))
let binaryTarget = BinaryModule(
name: "protoc", kind: .artifactsArchive, path: .root, origin: .local
)
// No supportedTriples with binaryTarget should be rejected
XCTAssertThrowsError(
try binaryTarget.parseArtifactArchives(
for: Triple("x86_64-apple-macosx"), fileSystem: fileSystem
)
)
}
}
|