File tree Expand file tree Collapse file tree 2 files changed +20
-1
lines changed Expand file tree Collapse file tree 2 files changed +20
-1
lines changed Original file line number Diff line number Diff line change @@ -155,6 +155,7 @@ fileprivate struct DescribedPackage: Encodable {
155
155
let sources : [ String ]
156
156
let resources : [ PackageModel . Resource ] ?
157
157
let targetDependencies : [ String ] ?
158
+ let productDependencies : [ String ] ?
158
159
let productMemberships : [ String ] ?
159
160
160
161
init ( from target: Target , in package : Package , productMemberships: [ String ] ? ) {
@@ -166,7 +167,10 @@ fileprivate struct DescribedPackage: Encodable {
166
167
self . path = target. sources. root. relative ( to: package . path) . pathString
167
168
self . sources = target. sources. relativePaths. map { $0. pathString }
168
169
self . resources = target. resources. isEmpty ? nil : target. resources
169
- self . targetDependencies = target. dependencies. isEmpty ? nil : target. dependencies. compactMap{ $0. target? . name }
170
+ let targetDependencies = target. dependencies. compactMap { $0. target }
171
+ self . targetDependencies = targetDependencies. isEmpty ? nil : targetDependencies. map{ $0. name }
172
+ let productDependencies = target. dependencies. compactMap { $0. product }
173
+ self . productDependencies = productDependencies. isEmpty ? nil : productDependencies. map{ $0. name }
170
174
self . productMemberships = productMemberships
171
175
}
172
176
}
Original file line number Diff line number Diff line change @@ -254,6 +254,21 @@ final class PackageToolTests: XCTestCase {
254
254
XCTAssert ( textChunk6. contains ( " Path: Sources/CExec " ) , textChunk6)
255
255
XCTAssert ( textChunk6. contains ( " Sources: \n main.c " ) , textChunk6)
256
256
}
257
+
258
+ fixture ( name: " DependencyResolution/External/Simple/Bar " ) { prefix in
259
+ // Generate the JSON description.
260
+ let jsonResult = try SwiftPMProduct . SwiftPackage. executeProcess ( [ " describe " , " --type=json " ] , packagePath: prefix)
261
+ let jsonOutput = try jsonResult. utf8Output ( )
262
+ let json = try JSON ( bytes: ByteString ( encodingAsUTF8: jsonOutput) )
263
+
264
+ // Check that product dependencies and memberships are as expected.
265
+ XCTAssertEqual ( json [ " name " ] ? . string, " Bar " )
266
+ let jsonTarget = try XCTUnwrap ( json [ " targets " ] ? . array ? [ 0 ] )
267
+ XCTAssertEqual ( jsonTarget [ " product_memberships " ] ? . array ? [ 0 ] . stringValue, " Bar " )
268
+ XCTAssertEqual ( jsonTarget [ " product_dependencies " ] ? . array ? [ 0 ] . stringValue, " Foo " )
269
+ XCTAssertNil ( jsonTarget [ " target_dependencies " ] )
270
+ }
271
+
257
272
}
258
273
259
274
func testDescribePackageUsingPlugins( ) throws {
You can’t perform that action at this time.
0 commit comments