@@ -436,6 +436,57 @@ class PBXProjGeneratorTests: XCTestCase {
436436 }
437437 }
438438
439+ func testProductsGroupIsSet( ) throws {
440+ let target = Target ( name: " TestApp " , type: . application, platform: . iOS)
441+ let project = Project ( name: " Test " , targets: [ target] )
442+ let projGenerator = PBXProjGenerator ( project: project)
443+
444+ let pbxProj = try projGenerator. generate ( )
445+
446+ let pbxProject = try XCTUnwrap ( pbxProj. projects. first)
447+ let productsGroup = try XCTUnwrap ( pbxProject. productsGroup)
448+
449+ XCTAssertEqual ( productsGroup. name, " Products " )
450+ XCTAssertEqual ( productsGroup. children. count, 1 )
451+
452+ let productReference = try XCTUnwrap ( productsGroup. children. first as? PBXFileReference )
453+ XCTAssertEqual ( productReference. path, " TestApp.app " )
454+ }
455+
456+ func testProductsGroupIsSetWithMultipleTargets( ) throws {
457+ let appTarget = Target ( name: " TestApp " , type: . application, platform: . iOS)
458+ let frameworkTarget = Target ( name: " TestFramework " , type: . framework, platform: . iOS)
459+ let project = Project ( name: " Test " , targets: [ appTarget, frameworkTarget] )
460+ let projGenerator = PBXProjGenerator ( project: project)
461+
462+ let pbxProj = try projGenerator. generate ( )
463+
464+ let pbxProject = try XCTUnwrap ( pbxProj. projects. first)
465+ let productsGroup = try XCTUnwrap ( pbxProject. productsGroup)
466+
467+ XCTAssertEqual ( productsGroup. name, " Products " )
468+ XCTAssertEqual ( productsGroup. children. count, 2 )
469+
470+ let productNames = productsGroup. children
471+ . compactMap { $0 as? PBXFileReference }
472+ . compactMap { $0. path }
473+ . sorted ( )
474+ XCTAssertEqual ( productNames, [ " TestApp.app " , " TestFramework.framework " ] )
475+ }
476+
477+ func testProductsGroupIsSetWithNoTargets( ) throws {
478+ let project = Project ( name: " Test " )
479+ let projGenerator = PBXProjGenerator ( project: project)
480+
481+ let pbxProj = try projGenerator. generate ( )
482+
483+ let pbxProject = try XCTUnwrap ( pbxProj. projects. first)
484+ let productsGroup = try XCTUnwrap ( pbxProject. productsGroup)
485+
486+ XCTAssertEqual ( productsGroup. name, " Products " )
487+ XCTAssertEqual ( productsGroup. children. count, 0 )
488+ }
489+
439490 func testPlatformDependencies( ) {
440491 describe {
441492 let directoryPath = Path ( " TestDirectory " )
0 commit comments