Use the unique name when setting `PRODUCT_NAME` for `PBXNativeTarget`s

While this is a requirement for the new build system, this fixes a long-standing known issue in Tulsi where running multiple tests with the same bundle name from a test_suite would not work properly.

- Additionally try to shorten the unique native target names by searching for a common prefix (currently limited to targets but not test_suites themselves)

PiperOrigin-RevId: 304204500
diff --git a/build_and_run.sh b/build_and_run.sh
index 054a8a7..d124e4c 100755
--- a/build_and_run.sh
+++ b/build_and_run.sh
@@ -24,7 +24,7 @@
 readonly unzip_dir="${1:-$HOME/Applications}"
 
 # build it
-bazel build //:tulsi
+bazel build //:tulsi --use_top_level_targets_for_symlinks
 # unzip it
 unzip -oq $(bazel info workspace)/bazel-bin/tulsi.zip -d "$unzip_dir"
 # run it
diff --git a/src/TulsiGenerator/PBXTargetGenerator.swift b/src/TulsiGenerator/PBXTargetGenerator.swift
index 39e5365..4924b45 100644
--- a/src/TulsiGenerator/PBXTargetGenerator.swift
+++ b/src/TulsiGenerator/PBXTargetGenerator.swift
@@ -104,9 +104,13 @@
 
   /// Generates Xcode build targets that invoke Bazel for the given targets. For test-type rules,
   /// non-compiling source file linkages are created to facilitate indexing of XCTests.
+  ///
+  /// Returns a mapping from build label to generated PBXNativeTarget.
   /// Throws if one of the RuleEntry instances is for an unsupported Bazel target type.
-  func generateBuildTargetsForRuleEntries(_ entries: Set<RuleEntry>,
-                                          ruleEntryMap: RuleEntryMap) throws
+  func generateBuildTargetsForRuleEntries(
+    _ entries: Set<RuleEntry>,
+    ruleEntryMap: RuleEntryMap
+  ) throws -> [BuildLabel: PBXNativeTarget]
 }
 
 extension PBXTargetGeneratorProtocol {
@@ -810,8 +814,10 @@
   }
 
   /// Generates build targets for the given rule entries.
-  func generateBuildTargetsForRuleEntries(_ ruleEntries: Set<RuleEntry>,
-                                          ruleEntryMap: RuleEntryMap) throws {
+  func generateBuildTargetsForRuleEntries(
+    _ ruleEntries: Set<RuleEntry>,
+    ruleEntryMap: RuleEntryMap
+  ) throws -> [BuildLabel: PBXNativeTarget] {
     let namedRuleEntries = generateUniqueNamesForRuleEntries(ruleEntries)
 
     let progressNotifier = ProgressNotifier(name: GeneratingBuildTargets,
@@ -820,12 +826,14 @@
     var testTargetLinkages = [(PBXNativeTarget, BuildLabel?, RuleEntry)]()
     var watchAppTargets = [String: (PBXNativeTarget, RuleEntry)]()
     var watchExtensionsByEntry = [RuleEntry: PBXNativeTarget]()
+    var targetsByLabel = [BuildLabel: PBXNativeTarget]()
 
     for (name, entry) in namedRuleEntries {
       progressNotifier.incrementValue()
       let target = try createBuildTargetForRuleEntry(entry,
                                                      named: name,
                                                      ruleEntryMap: ruleEntryMap)
+      targetsByLabel[entry.label] = target
 
       if let script = options[.PreBuildPhaseRunScript, entry.label.value] {
         let runScript = PBXShellScriptBuildPhase(shellScript: script, shellPath: "/bin/bash")
@@ -877,7 +885,7 @@
     for (testTarget, testHostLabel, entry) in testTargetLinkages {
       let testHostTarget: PBXNativeTarget?
       if let hostTargetLabel = testHostLabel {
-        testHostTarget = projectTargetForLabel(hostTargetLabel) as? PBXNativeTarget
+        testHostTarget = targetsByLabel[hostTargetLabel]
         if testHostTarget == nil {
           // If the user did not choose to include the host target it won't be available so the
           // linkage can be skipped. We will still force the generation of this test host target to
@@ -895,6 +903,7 @@
                        ruleEntry: entry,
                        ruleEntryMap: ruleEntryMap)
     }
+    return targetsByLabel
   }
 
   // MARK: - Private methods
@@ -983,30 +992,76 @@
     return (nonARCFileReferences, settings)
   }
 
-  private func generateUniqueNamesForRuleEntries(_ ruleEntries: Set<RuleEntry>) -> [String: RuleEntry] {
-    // Build unique names for the target rules.
-    var collidingRuleEntries = [String: [RuleEntry]]()
-    for entry: RuleEntry in ruleEntries {
-      let shortName = entry.label.targetName!
-      if var existingRules = collidingRuleEntries[shortName] {
-        existingRules.append(entry)
-        collidingRuleEntries[shortName] = existingRules
-      } else {
-        collidingRuleEntries[shortName] = [entry]
-      }
+  /// Find the longest common non-empty strict prefix for the given strings if there is one.
+  private func longestCommonPrefix(_ strings: Set<String>, separator: Character) -> String {
+    // Longest common prefix for 0 or 1 string(s) doesn't make sense.
+    guard strings.count >= 2, var shortestString = strings.first else { return "" }
+    for str in strings {
+      guard str.count < shortestString.count else { continue }
+      shortestString = str
     }
 
+    guard !shortestString.isEmpty else { return "" }
+
+    // Drop the last so we can only get a strict prefix.
+    var components = shortestString.split(separator: separator).dropLast()
+    var potentialPrefix = "\(components.joined(separator: "\(separator)"))\(separator)"
+
+    for str in strings {
+      while !components.isEmpty && !str.hasPrefix(potentialPrefix) {
+        components = components.dropLast()
+        potentialPrefix = "\(components.joined(separator: "\(separator)"))\(separator)"
+      }
+    }
+    return potentialPrefix
+  }
+
+  private func generateUniqueNamesForRuleEntries(_ ruleEntries: Set<RuleEntry>) -> [String: RuleEntry] {
+    // Build unique names for the target rules.
+    var rulesEntriesByTargetName = [String: [RuleEntry]]()
+    for entry: RuleEntry in ruleEntries {
+      let shortName = entry.label.targetName!
+      rulesEntriesByTargetName[shortName, default: []].append(entry)
+    }
+
+    var conflictingRuleEntries: [RuleEntry] = []
+    var conflictingFullNames: Set<String> = []
     var namedRuleEntries = [String: RuleEntry]()
-    for (name, entries) in collidingRuleEntries {
+
+    // Identify those which are OK and those which are in conflict.
+    for (name, entries) in rulesEntriesByTargetName {
       guard entries.count > 1 else {
         namedRuleEntries[name] = entries.first!
         continue
       }
 
-      for entry in entries {
+      conflictingRuleEntries.append(contentsOf: entries)
+      conflictingFullNames.formUnion(entries.map {
+        $0.label.asFullPBXTargetName!
+      })
+    }
+
+    // Try to strip out a common prefix if we can find one.
+    let commonPrefix = self.longestCommonPrefix(conflictingFullNames, separator: "-")
+
+    guard !commonPrefix.isEmpty else {
+      for entry in conflictingRuleEntries {
         let fullName = entry.label.asFullPBXTargetName!
         namedRuleEntries[fullName] = entry
       }
+      return namedRuleEntries
+    }
+
+    // Found a common prefix, we can strip it as long as we don't cause a new duplicate.
+    let charsToDrop = commonPrefix.count
+    for entry in conflictingRuleEntries {
+      let fullName = entry.label.asFullPBXTargetName!
+      let shortenedFullName = String(fullName.dropFirst(charsToDrop))
+      guard !shortenedFullName.isEmpty && namedRuleEntries.index(forKey: shortenedFullName) == nil else {
+        namedRuleEntries[fullName] = entry
+        continue
+      }
+      namedRuleEntries[shortenedFullName] = entry
     }
 
     return namedRuleEntries
@@ -1379,17 +1434,6 @@
     return testSettings
   }
 
-  // Resolves a BuildLabel to an existing PBXTarget, handling target name collisions.
-  private func projectTargetForLabel(_ label: BuildLabel) -> PBXTarget? {
-    guard let targetName = label.targetName else { return nil }
-    if let target = project.targetByName[targetName] {
-      return target
-    }
-
-    guard let fullTargetName = label.asFullPBXTargetName else { return nil }
-    return project.targetByName[fullTargetName]
-  }
-
   // Adds a dummy build configuration to the given list based off of the Debug config that is
   // used to effectively disable compilation when running XCTests by converting each compile call
   // into a "clang --version" invocation.
@@ -1550,7 +1594,7 @@
     buildSettings["TULSI_BUILD_PATH"] = entry.label.packageName!
 
 
-    buildSettings["PRODUCT_NAME"] = entry.bundleName ?? name
+    buildSettings["PRODUCT_NAME"] = name
     if let bundleID = entry.bundleID {
       buildSettings["PRODUCT_BUNDLE_IDENTIFIER"] = bundleID
     }
diff --git a/src/TulsiGenerator/XcodeProjectGenerator.swift b/src/TulsiGenerator/XcodeProjectGenerator.swift
index 66554ac..86f64ae 100644
--- a/src/TulsiGenerator/XcodeProjectGenerator.swift
+++ b/src/TulsiGenerator/XcodeProjectGenerator.swift
@@ -315,6 +315,9 @@
 
     /// A mapping of indexer targets by name.
     let indexerTargets: [String: PBXTarget]
+
+    /// Mapping from label to top-level build target.
+    let topLevelBuildTargetsByLabel: [BuildLabel: PBXNativeTarget]
   }
 
   /// Throws an exception if the Xcode project path is found to be in a forbidden location,
@@ -534,8 +537,9 @@
       buildSettings["TULSI_PROJECT"] = config.projectName
       generator.generateTopLevelBuildConfigurations(buildSettings)
     }
+    var targetsByLabel = [BuildLabel: PBXNativeTarget]()
     try profileAction("generating_build_targets") {
-      try generator.generateBuildTargetsForRuleEntries(targetRules,
+      targetsByLabel = try generator.generateBuildTargetsForRuleEntries(targetRules,
                                                        ruleEntryMap: ruleEntryMap)
     }
 
@@ -565,7 +569,8 @@
     return GeneratedProjectInfo(project: xcodeProject,
                                 buildRuleEntries: targetRules,
                                 testSuiteRuleEntries: testSuiteRules,
-                                indexerTargets: indexerTargets)
+                                indexerTargets: indexerTargets,
+                                topLevelBuildTargetsByLabel: targetsByLabel)
   }
 
   private func installWorkspaceSettings(_ projectURL: URL) throws {
@@ -697,6 +702,9 @@
     }
 
     func targetForLabel(_ label: BuildLabel) -> PBXTarget? {
+      if let pbxTarget = info.topLevelBuildTargetsByLabel[label] {
+        return pbxTarget
+      }
       if let pbxTarget = info.project.targetByName[label.targetName!] {
         return pbxTarget
       } else if let pbxTarget = info.project.targetByName[label.asFullPBXTargetName!] {
@@ -972,11 +980,7 @@
     var testSuiteSchemes = [String: [RuleEntry]]()
     for (label, entry) in info.testSuiteRuleEntries {
       let shortName = label.targetName!
-      if let _ = testSuiteSchemes[shortName] {
-        testSuiteSchemes[shortName]!.append(entry)
-      } else {
-        testSuiteSchemes[shortName] = [entry]
-      }
+      testSuiteSchemes[shortName, default: []].append(entry)
     }
     for testSuites in testSuiteSchemes.values {
       for suite in testSuites {
diff --git a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/project.pbxproj b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/project.pbxproj
index 206a2a9..54ef49c 100644
--- a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/project.pbxproj
+++ b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/project.pbxproj
@@ -30,12 +30,11 @@
 /* End PBXContainerItemProxy section */
 
 /* Begin PBXFileReference section */
-		25889F7C149738A400000000 /* TestSuite-Three-XCTest.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; name = "TestSuite-Three-XCTest.xctest"; path = "TestSuite-Three-XCTest.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
-		25889F7C1E33767800000000 /* TestSuite-One-XCTest.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; name = "TestSuite-One-XCTest.xctest"; path = "TestSuite-One-XCTest.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
 		25889F7C2A3379D000000000 /* lib_idx_ApplicationLibrary_468DE48B_ios_min10.0.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_ApplicationLibrary_468DE48B_ios_min10.0.a; path = lib_idx_ApplicationLibrary_468DE48B_ios_min10.0.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		25889F7C2E28BE8E00000000 /* BUILD */ = {isa = PBXFileReference; lastKnownFileType = text; name = BUILD; path = TestSuite/Two/BUILD; sourceTree = "<group>"; };
 		25889F7C35687C6800000000 /* BUILD */ = {isa = PBXFileReference; lastKnownFileType = text; name = BUILD; path = TestSuite/BUILD; sourceTree = "<group>"; };
 		25889F7C35F4A86400000000 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = main.m; path = "tulsi-workspace/TestSuite/Application/srcs/main.m"; sourceTree = "<group>"; };
+		25889F7C516E750000000000 /* Two-XCTest.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; name = "Two-XCTest.xctest"; path = "Two-XCTest.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
 		25889F7C574E98E200000000 /* Info.plist */ = {isa = PBXFileReference; explicitFileType = text.plist; name = Info.plist; path = "tulsi-workspace/bazel-tulsi-includes/x/x/TestSuite/Three/XCTest.__internal__.__test_bundle-intermediates/Info.plist"; sourceTree = "<group>"; };
 		25889F7C5801CD8000000000 /* LogicTest.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; name = LogicTest.xctest; path = LogicTest.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
 		25889F7C5D1BD9FD00000000 /* XCTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = XCTest.m; path = "tulsi-workspace/TestSuite/Two/XCTest.m"; sourceTree = "<group>"; };
@@ -44,13 +43,14 @@
 		25889F7C96D67B6F00000000 /* XCTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = XCTest.m; path = "tulsi-workspace/TestSuite/Three/XCTest.m"; sourceTree = "<group>"; };
 		25889F7C9BDE3CEF00000000 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; name = Info.plist; path = "tulsi-workspace/TestSuite/Info.plist"; sourceTree = "<group>"; };
 		25889F7C9F3B3D3900000000 /* LogicTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = LogicTest.m; path = "tulsi-workspace/TestSuite/One/LogicTest.m"; sourceTree = "<group>"; };
+		25889F7CA014E18400000000 /* One-XCTest.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; name = "One-XCTest.xctest"; path = "One-XCTest.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
 		25889F7CA25B0A0200000000 /* XCTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = XCTest.m; path = "tulsi-workspace/TestSuite/One/XCTest.m"; sourceTree = "<group>"; };
 		25889F7CADBB0ACA00000000 /* BUILD */ = {isa = PBXFileReference; lastKnownFileType = text; name = BUILD; path = TestSuite/Three/BUILD; sourceTree = "<group>"; };
 		25889F7CB8B54B6E00000000 /* TestApplication.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; name = TestApplication.app; path = TestApplication.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		25889F7CBA3A60B600000000 /* Info.plist */ = {isa = PBXFileReference; explicitFileType = text.plist; name = Info.plist; path = "tulsi-workspace/bazel-tulsi-includes/x/x/TestSuite/One/XCTest.__internal__.__test_bundle-intermediates/Info.plist"; sourceTree = "<group>"; };
 		25889F7CC44C976600000000 /* Info.plist */ = {isa = PBXFileReference; explicitFileType = text.plist; name = Info.plist; path = "tulsi-workspace/bazel-tulsi-includes/x/x/TestSuite/Two/XCTest.__internal__.__test_bundle-intermediates/Info.plist"; sourceTree = "<group>"; };
-		25889F7CCE0328AC00000000 /* TestSuite-Two-XCTest.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; name = "TestSuite-Two-XCTest.xctest"; path = "TestSuite-Two-XCTest.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
 		25889F7CDF260A6500000000 /* Info.plist */ = {isa = PBXFileReference; explicitFileType = text.plist; name = Info.plist; path = "tulsi-workspace/bazel-tulsi-includes/x/x/TestSuite/TestApplication-intermediates/Info.plist"; sourceTree = "<group>"; };
+		25889F7CF16496E600000000 /* Three-XCTest.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; name = "Three-XCTest.xctest"; path = "Three-XCTest.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
 /* End PBXFileReference section */
 
 /* Begin PBXGroup section */
@@ -116,10 +116,10 @@
 			children = (
 				45D05629C0087DBE00000000 /* Indexer */,
 				25889F7C5801CD8000000000 /* LogicTest.xctest */,
+				25889F7CA014E18400000000 /* One-XCTest.xctest */,
 				25889F7CB8B54B6E00000000 /* TestApplication.app */,
-				25889F7C1E33767800000000 /* TestSuite-One-XCTest.xctest */,
-				25889F7C149738A400000000 /* TestSuite-Three-XCTest.xctest */,
-				25889F7CCE0328AC00000000 /* TestSuite-Two-XCTest.xctest */,
+				25889F7CF16496E600000000 /* Three-XCTest.xctest */,
+				25889F7C516E750000000000 /* Two-XCTest.xctest */,
 				45D05629A259EF0200000000 /* bazel-tulsi-includes */,
 			);
 			name = Products;
@@ -279,32 +279,13 @@
 			productReference = 25889F7CB8B54B6E00000000 /* TestApplication.app */;
 			productType = "com.apple.product-type.application";
 		};
-		7E9AFE6238918F2000000000 /* TestSuite-Three-XCTest */ = {
+		7E9AFE6269ABCA1200000000 /* One-XCTest */ = {
 			isa = PBXNativeTarget;
-			buildConfigurationList = F4222DEDA5985C6D00000000 /* Build configuration list for PBXNativeTarget "TestSuite-Three-XCTest" */;
-			buildPhases = (
-				978262ABE1E5C70200000000 /* ShellScript */,
-				978262ABF6DBF80000000002 /* ShellScript */,
-				04BFD5160000000000000002 /* Sources */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-				89B1AEB39734745D00000000 /* PBXTargetDependency */,
-				89B1AEB31FDDBD5D00000000 /* PBXTargetDependency */,
-			);
-			name = "TestSuite-Three-XCTest";
-			productName = "TestSuite-Three-XCTest";
-			productReference = 25889F7C149738A400000000 /* TestSuite-Three-XCTest.xctest */;
-			productType = "com.apple.product-type.bundle.unit-test";
-		};
-		7E9AFE6243B8875800000000 /* TestSuite-One-XCTest */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = F4222DEDCBBF3A8D00000000 /* Build configuration list for PBXNativeTarget "TestSuite-One-XCTest" */;
+			buildConfigurationList = F4222DED8D0BF21000000000 /* Build configuration list for PBXNativeTarget "One-XCTest" */;
 			buildPhases = (
 				978262AB428C9DC600000000 /* ShellScript */,
-				978262ABF6DBF80000000001 /* ShellScript */,
-				04BFD5160000000000000001 /* Sources */,
+				978262ABF6DBF80000000000 /* ShellScript */,
+				04BFD5160000000000000000 /* Sources */,
 			);
 			buildRules = (
 			);
@@ -312,9 +293,9 @@
 				89B1AEB39734745D00000000 /* PBXTargetDependency */,
 				89B1AEB31FDDBD5D00000000 /* PBXTargetDependency */,
 			);
-			name = "TestSuite-One-XCTest";
-			productName = "TestSuite-One-XCTest";
-			productReference = 25889F7C1E33767800000000 /* TestSuite-One-XCTest.xctest */;
+			name = "One-XCTest";
+			productName = "One-XCTest";
+			productReference = 25889F7CA014E18400000000 /* One-XCTest.xctest */;
 			productType = "com.apple.product-type.bundle.unit-test";
 		};
 		7E9AFE6278F802E600000000 /* LogicTest */ = {
@@ -335,13 +316,13 @@
 			productReference = 25889F7C5801CD8000000000 /* LogicTest.xctest */;
 			productType = "com.apple.product-type.bundle.unit-test";
 		};
-		7E9AFE628EB1D89400000000 /* TestSuite-Two-XCTest */ = {
+		7E9AFE6296A78E1400000000 /* Two-XCTest */ = {
 			isa = PBXNativeTarget;
-			buildConfigurationList = F4222DEDF7C1705C00000000 /* Build configuration list for PBXNativeTarget "TestSuite-Two-XCTest" */;
+			buildConfigurationList = F4222DED4F59F77400000000 /* Build configuration list for PBXNativeTarget "Two-XCTest" */;
 			buildPhases = (
 				978262AB294530F400000000 /* ShellScript */,
-				978262ABF6DBF80000000000 /* ShellScript */,
-				04BFD5160000000000000000 /* Sources */,
+				978262ABF6DBF80000000002 /* ShellScript */,
+				04BFD5160000000000000002 /* Sources */,
 			);
 			buildRules = (
 			);
@@ -349,9 +330,9 @@
 				89B1AEB39734745D00000000 /* PBXTargetDependency */,
 				89B1AEB31FDDBD5D00000000 /* PBXTargetDependency */,
 			);
-			name = "TestSuite-Two-XCTest";
-			productName = "TestSuite-Two-XCTest";
-			productReference = 25889F7CCE0328AC00000000 /* TestSuite-Two-XCTest.xctest */;
+			name = "Two-XCTest";
+			productName = "Two-XCTest";
+			productReference = 25889F7C516E750000000000 /* Two-XCTest.xctest */;
 			productType = "com.apple.product-type.bundle.unit-test";
 		};
 		7E9AFE62BC40BFA200000000 /* _idx_ApplicationLibrary_468DE48B_ios_min10.0 */ = {
@@ -370,6 +351,25 @@
 			productReference = 25889F7C2A3379D000000000 /* lib_idx_ApplicationLibrary_468DE48B_ios_min10.0.a */;
 			productType = "com.apple.product-type.library.static";
 		};
+		7E9AFE62F7F03B1E00000000 /* Three-XCTest */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = F4222DEDF975288C00000000 /* Build configuration list for PBXNativeTarget "Three-XCTest" */;
+			buildPhases = (
+				978262ABE1E5C70200000000 /* ShellScript */,
+				978262ABF6DBF80000000001 /* ShellScript */,
+				04BFD5160000000000000001 /* Sources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				89B1AEB39734745D00000000 /* PBXTargetDependency */,
+				89B1AEB31FDDBD5D00000000 /* PBXTargetDependency */,
+			);
+			name = "Three-XCTest";
+			productName = "Three-XCTest";
+			productReference = 25889F7CF16496E600000000 /* Three-XCTest.xctest */;
+			productType = "com.apple.product-type.bundle.unit-test";
+		};
 /* End PBXNativeTarget section */
 
 /* Begin PBXProject section */
@@ -379,13 +379,13 @@
 				LastSwiftUpdateCheck = 0710;
 				LastUpgradeCheck = 1000;
 				TargetAttributes = {
-					7E9AFE6238918F2000000000 = {
+					7E9AFE6269ABCA1200000000 = {
 						TestTargetID = 7E9AFE621FDDBD5C00000000;
 					};
-					7E9AFE6243B8875800000000 = {
+					7E9AFE6296A78E1400000000 = {
 						TestTargetID = 7E9AFE621FDDBD5C00000000;
 					};
-					7E9AFE628EB1D89400000000 = {
+					7E9AFE62F7F03B1E00000000 = {
 						TestTargetID = 7E9AFE621FDDBD5C00000000;
 					};
 				};
@@ -400,10 +400,10 @@
 			mainGroup = 45D05629B56AD7F200000000 /* mainGroup */;
 			targets = (
 				7E9AFE6278F802E600000000 /* LogicTest */,
+				7E9AFE6269ABCA1200000000 /* One-XCTest */,
 				7E9AFE621FDDBD5C00000000 /* TestApplication */,
-				7E9AFE6243B8875800000000 /* TestSuite-One-XCTest */,
-				7E9AFE6238918F2000000000 /* TestSuite-Three-XCTest */,
-				7E9AFE628EB1D89400000000 /* TestSuite-Two-XCTest */,
+				7E9AFE62F7F03B1E00000000 /* Three-XCTest */,
+				7E9AFE6296A78E1400000000 /* Two-XCTest */,
 				01F2CBCF9734745C00000000 /* _bazel_clean_ */,
 				7E9AFE62BC40BFA200000000 /* _idx_ApplicationLibrary_468DE48B_ios_min10.0 */,
 			);
@@ -549,7 +549,7 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 0;
 			files = (
-				952C886D5D1BD9FD00000000 /* XCTest.m in Two */,
+				952C886DA25B0A0200000000 /* XCTest.m in One */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -557,7 +557,7 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 0;
 			files = (
-				952C886DA25B0A0200000000 /* XCTest.m in One */,
+				952C886D96D67B6F00000000 /* XCTest.m in Three */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -565,7 +565,7 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 0;
 			files = (
-				952C886D96D67B6F00000000 /* XCTest.m in Three */,
+				952C886D5D1BD9FD00000000 /* XCTest.m in Two */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -603,7 +603,7 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = "Stub Launch Image";
-				BAZEL_TARGET = "//TestSuite/Two:XCTest";
+				BAZEL_TARGET = "//TestSuite/One:XCTest";
 				BUNDLE_LOADER = "$(TEST_HOST)";
 				DEBUG_INFORMATION_FORMAT = dwarf;
 				FRAMEWORK_SEARCH_PATHS = "";
@@ -616,12 +616,12 @@
 				OTHER_LDFLAGS = "--version";
 				OTHER_SWIFT_FLAGS = "--version";
 				PRODUCT_BUNDLE_IDENTIFIER = com.example.testapplicationTests;
-				PRODUCT_NAME = XCTest;
+				PRODUCT_NAME = "One-XCTest";
 				SDKROOT = iphoneos;
 				SWIFT_INSTALL_OBJC_HEADER = NO;
 				SWIFT_OBJC_INTERFACE_HEADER_NAME = "$(PRODUCT_NAME).h";
 				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TestApplication.app/TestApplication";
-				TULSI_BUILD_PATH = TestSuite/Two;
+				TULSI_BUILD_PATH = TestSuite/One;
 				TULSI_TEST_RUNNER_ONLY = YES;
 				TULSI_XCODE_VERSION = 11.2.1.11B500;
 			};
@@ -656,34 +656,6 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = "Stub Launch Image";
-				BAZEL_TARGET = "//TestSuite/One:XCTest";
-				BUNDLE_LOADER = "$(TEST_HOST)";
-				DEBUG_INFORMATION_FORMAT = dwarf;
-				FRAMEWORK_SEARCH_PATHS = "";
-				GCC_PREPROCESSOR_DEFINITIONS = "NDEBUG=1";
-				HEADER_SEARCH_PATHS = "";
-				INFOPLIST_FILE = "${PROJECT_FILE_PATH}/.tulsi/Resources/StubInfoPlist.plist";
-				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
-				ONLY_ACTIVE_ARCH = YES;
-				OTHER_CFLAGS = "--version";
-				OTHER_LDFLAGS = "--version";
-				OTHER_SWIFT_FLAGS = "--version";
-				PRODUCT_BUNDLE_IDENTIFIER = com.example.testapplicationTests;
-				PRODUCT_NAME = XCTest;
-				SDKROOT = iphoneos;
-				SWIFT_INSTALL_OBJC_HEADER = NO;
-				SWIFT_OBJC_INTERFACE_HEADER_NAME = "$(PRODUCT_NAME).h";
-				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TestApplication.app/TestApplication";
-				TULSI_BUILD_PATH = TestSuite/One;
-				TULSI_TEST_RUNNER_ONLY = YES;
-				TULSI_XCODE_VERSION = 11.2.1.11B500;
-			};
-			name = __TulsiTestRunner_Release;
-		};
-		0207AA281FC531E700000003 /* __TulsiTestRunner_Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = "Stub Launch Image";
 				BAZEL_TARGET = "//TestSuite/Three:XCTest";
 				BUNDLE_LOADER = "$(TEST_HOST)";
 				DEBUG_INFORMATION_FORMAT = dwarf;
@@ -697,7 +669,7 @@
 				OTHER_LDFLAGS = "--version";
 				OTHER_SWIFT_FLAGS = "--version";
 				PRODUCT_BUNDLE_IDENTIFIER = com.example.testapplicationTests;
-				PRODUCT_NAME = XCTest;
+				PRODUCT_NAME = "Three-XCTest";
 				SDKROOT = iphoneos;
 				SWIFT_INSTALL_OBJC_HEADER = NO;
 				SWIFT_OBJC_INTERFACE_HEADER_NAME = "$(PRODUCT_NAME).h";
@@ -708,6 +680,34 @@
 			};
 			name = __TulsiTestRunner_Release;
 		};
+		0207AA281FC531E700000003 /* __TulsiTestRunner_Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = "Stub Launch Image";
+				BAZEL_TARGET = "//TestSuite/Two:XCTest";
+				BUNDLE_LOADER = "$(TEST_HOST)";
+				DEBUG_INFORMATION_FORMAT = dwarf;
+				FRAMEWORK_SEARCH_PATHS = "";
+				GCC_PREPROCESSOR_DEFINITIONS = "NDEBUG=1";
+				HEADER_SEARCH_PATHS = "";
+				INFOPLIST_FILE = "${PROJECT_FILE_PATH}/.tulsi/Resources/StubInfoPlist.plist";
+				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
+				ONLY_ACTIVE_ARCH = YES;
+				OTHER_CFLAGS = "--version";
+				OTHER_LDFLAGS = "--version";
+				OTHER_SWIFT_FLAGS = "--version";
+				PRODUCT_BUNDLE_IDENTIFIER = com.example.testapplicationTests;
+				PRODUCT_NAME = "Two-XCTest";
+				SDKROOT = iphoneos;
+				SWIFT_INSTALL_OBJC_HEADER = NO;
+				SWIFT_OBJC_INTERFACE_HEADER_NAME = "$(PRODUCT_NAME).h";
+				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TestApplication.app/TestApplication";
+				TULSI_BUILD_PATH = TestSuite/Two;
+				TULSI_TEST_RUNNER_ONLY = YES;
+				TULSI_XCODE_VERSION = 11.2.1.11B500;
+			};
+			name = __TulsiTestRunner_Release;
+		};
 		0207AA281FC531E700000004 /* __TulsiTestRunner_Release */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
@@ -779,17 +779,17 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = "Stub Launch Image";
-				BAZEL_TARGET = "//TestSuite/Two:XCTest";
+				BAZEL_TARGET = "//TestSuite/One:XCTest";
 				BUNDLE_LOADER = "$(TEST_HOST)";
 				DEBUG_INFORMATION_FORMAT = dwarf;
 				GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
 				INFOPLIST_FILE = "${PROJECT_FILE_PATH}/.tulsi/Resources/StubInfoPlist.plist";
 				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
 				PRODUCT_BUNDLE_IDENTIFIER = com.example.testapplicationTests;
-				PRODUCT_NAME = XCTest;
+				PRODUCT_NAME = "One-XCTest";
 				SDKROOT = iphoneos;
 				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TestApplication.app/TestApplication";
-				TULSI_BUILD_PATH = TestSuite/Two;
+				TULSI_BUILD_PATH = TestSuite/One;
 				TULSI_TEST_RUNNER_ONLY = YES;
 				TULSI_XCODE_VERSION = 11.2.1.11B500;
 			};
@@ -816,17 +816,17 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = "Stub Launch Image";
-				BAZEL_TARGET = "//TestSuite/One:XCTest";
+				BAZEL_TARGET = "//TestSuite/Three:XCTest";
 				BUNDLE_LOADER = "$(TEST_HOST)";
 				DEBUG_INFORMATION_FORMAT = dwarf;
 				GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
 				INFOPLIST_FILE = "${PROJECT_FILE_PATH}/.tulsi/Resources/StubInfoPlist.plist";
 				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
 				PRODUCT_BUNDLE_IDENTIFIER = com.example.testapplicationTests;
-				PRODUCT_NAME = XCTest;
+				PRODUCT_NAME = "Three-XCTest";
 				SDKROOT = iphoneos;
 				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TestApplication.app/TestApplication";
-				TULSI_BUILD_PATH = TestSuite/One;
+				TULSI_BUILD_PATH = TestSuite/Three;
 				TULSI_TEST_RUNNER_ONLY = YES;
 				TULSI_XCODE_VERSION = 11.2.1.11B500;
 			};
@@ -836,17 +836,17 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = "Stub Launch Image";
-				BAZEL_TARGET = "//TestSuite/Three:XCTest";
+				BAZEL_TARGET = "//TestSuite/Two:XCTest";
 				BUNDLE_LOADER = "$(TEST_HOST)";
 				DEBUG_INFORMATION_FORMAT = dwarf;
 				GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
 				INFOPLIST_FILE = "${PROJECT_FILE_PATH}/.tulsi/Resources/StubInfoPlist.plist";
 				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
 				PRODUCT_BUNDLE_IDENTIFIER = com.example.testapplicationTests;
-				PRODUCT_NAME = XCTest;
+				PRODUCT_NAME = "Two-XCTest";
 				SDKROOT = iphoneos;
 				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TestApplication.app/TestApplication";
-				TULSI_BUILD_PATH = TestSuite/Three;
+				TULSI_BUILD_PATH = TestSuite/Two;
 				TULSI_TEST_RUNNER_ONLY = YES;
 				TULSI_XCODE_VERSION = 11.2.1.11B500;
 			};
@@ -922,17 +922,17 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = "Stub Launch Image";
-				BAZEL_TARGET = "//TestSuite/Two:XCTest";
+				BAZEL_TARGET = "//TestSuite/One:XCTest";
 				BUNDLE_LOADER = "$(TEST_HOST)";
 				DEBUG_INFORMATION_FORMAT = dwarf;
 				GCC_PREPROCESSOR_DEFINITIONS = "NDEBUG=1";
 				INFOPLIST_FILE = "${PROJECT_FILE_PATH}/.tulsi/Resources/StubInfoPlist.plist";
 				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
 				PRODUCT_BUNDLE_IDENTIFIER = com.example.testapplicationTests;
-				PRODUCT_NAME = XCTest;
+				PRODUCT_NAME = "One-XCTest";
 				SDKROOT = iphoneos;
 				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TestApplication.app/TestApplication";
-				TULSI_BUILD_PATH = TestSuite/Two;
+				TULSI_BUILD_PATH = TestSuite/One;
 				TULSI_TEST_RUNNER_ONLY = YES;
 				TULSI_XCODE_VERSION = 11.2.1.11B500;
 			};
@@ -959,17 +959,17 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = "Stub Launch Image";
-				BAZEL_TARGET = "//TestSuite/One:XCTest";
+				BAZEL_TARGET = "//TestSuite/Three:XCTest";
 				BUNDLE_LOADER = "$(TEST_HOST)";
 				DEBUG_INFORMATION_FORMAT = dwarf;
 				GCC_PREPROCESSOR_DEFINITIONS = "NDEBUG=1";
 				INFOPLIST_FILE = "${PROJECT_FILE_PATH}/.tulsi/Resources/StubInfoPlist.plist";
 				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
 				PRODUCT_BUNDLE_IDENTIFIER = com.example.testapplicationTests;
-				PRODUCT_NAME = XCTest;
+				PRODUCT_NAME = "Three-XCTest";
 				SDKROOT = iphoneos;
 				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TestApplication.app/TestApplication";
-				TULSI_BUILD_PATH = TestSuite/One;
+				TULSI_BUILD_PATH = TestSuite/Three;
 				TULSI_TEST_RUNNER_ONLY = YES;
 				TULSI_XCODE_VERSION = 11.2.1.11B500;
 			};
@@ -979,17 +979,17 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = "Stub Launch Image";
-				BAZEL_TARGET = "//TestSuite/Three:XCTest";
+				BAZEL_TARGET = "//TestSuite/Two:XCTest";
 				BUNDLE_LOADER = "$(TEST_HOST)";
 				DEBUG_INFORMATION_FORMAT = dwarf;
 				GCC_PREPROCESSOR_DEFINITIONS = "NDEBUG=1";
 				INFOPLIST_FILE = "${PROJECT_FILE_PATH}/.tulsi/Resources/StubInfoPlist.plist";
 				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
 				PRODUCT_BUNDLE_IDENTIFIER = com.example.testapplicationTests;
-				PRODUCT_NAME = XCTest;
+				PRODUCT_NAME = "Two-XCTest";
 				SDKROOT = iphoneos;
 				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TestApplication.app/TestApplication";
-				TULSI_BUILD_PATH = TestSuite/Three;
+				TULSI_BUILD_PATH = TestSuite/Two;
 				TULSI_TEST_RUNNER_ONLY = YES;
 				TULSI_XCODE_VERSION = 11.2.1.11B500;
 			};
@@ -1065,7 +1065,7 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = "Stub Launch Image";
-				BAZEL_TARGET = "//TestSuite/Two:XCTest";
+				BAZEL_TARGET = "//TestSuite/One:XCTest";
 				BUNDLE_LOADER = "$(TEST_HOST)";
 				DEBUG_INFORMATION_FORMAT = dwarf;
 				FRAMEWORK_SEARCH_PATHS = "";
@@ -1078,12 +1078,12 @@
 				OTHER_LDFLAGS = "--version";
 				OTHER_SWIFT_FLAGS = "--version";
 				PRODUCT_BUNDLE_IDENTIFIER = com.example.testapplicationTests;
-				PRODUCT_NAME = XCTest;
+				PRODUCT_NAME = "One-XCTest";
 				SDKROOT = iphoneos;
 				SWIFT_INSTALL_OBJC_HEADER = NO;
 				SWIFT_OBJC_INTERFACE_HEADER_NAME = "$(PRODUCT_NAME).h";
 				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TestApplication.app/TestApplication";
-				TULSI_BUILD_PATH = TestSuite/Two;
+				TULSI_BUILD_PATH = TestSuite/One;
 				TULSI_TEST_RUNNER_ONLY = YES;
 				TULSI_XCODE_VERSION = 11.2.1.11B500;
 			};
@@ -1118,34 +1118,6 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = "Stub Launch Image";
-				BAZEL_TARGET = "//TestSuite/One:XCTest";
-				BUNDLE_LOADER = "$(TEST_HOST)";
-				DEBUG_INFORMATION_FORMAT = dwarf;
-				FRAMEWORK_SEARCH_PATHS = "";
-				GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
-				HEADER_SEARCH_PATHS = "";
-				INFOPLIST_FILE = "${PROJECT_FILE_PATH}/.tulsi/Resources/StubInfoPlist.plist";
-				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
-				ONLY_ACTIVE_ARCH = YES;
-				OTHER_CFLAGS = "--version";
-				OTHER_LDFLAGS = "--version";
-				OTHER_SWIFT_FLAGS = "--version";
-				PRODUCT_BUNDLE_IDENTIFIER = com.example.testapplicationTests;
-				PRODUCT_NAME = XCTest;
-				SDKROOT = iphoneos;
-				SWIFT_INSTALL_OBJC_HEADER = NO;
-				SWIFT_OBJC_INTERFACE_HEADER_NAME = "$(PRODUCT_NAME).h";
-				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TestApplication.app/TestApplication";
-				TULSI_BUILD_PATH = TestSuite/One;
-				TULSI_TEST_RUNNER_ONLY = YES;
-				TULSI_XCODE_VERSION = 11.2.1.11B500;
-			};
-			name = __TulsiTestRunner_Debug;
-		};
-		0207AA28F23A778400000003 /* __TulsiTestRunner_Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = "Stub Launch Image";
 				BAZEL_TARGET = "//TestSuite/Three:XCTest";
 				BUNDLE_LOADER = "$(TEST_HOST)";
 				DEBUG_INFORMATION_FORMAT = dwarf;
@@ -1159,7 +1131,7 @@
 				OTHER_LDFLAGS = "--version";
 				OTHER_SWIFT_FLAGS = "--version";
 				PRODUCT_BUNDLE_IDENTIFIER = com.example.testapplicationTests;
-				PRODUCT_NAME = XCTest;
+				PRODUCT_NAME = "Three-XCTest";
 				SDKROOT = iphoneos;
 				SWIFT_INSTALL_OBJC_HEADER = NO;
 				SWIFT_OBJC_INTERFACE_HEADER_NAME = "$(PRODUCT_NAME).h";
@@ -1170,6 +1142,34 @@
 			};
 			name = __TulsiTestRunner_Debug;
 		};
+		0207AA28F23A778400000003 /* __TulsiTestRunner_Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = "Stub Launch Image";
+				BAZEL_TARGET = "//TestSuite/Two:XCTest";
+				BUNDLE_LOADER = "$(TEST_HOST)";
+				DEBUG_INFORMATION_FORMAT = dwarf;
+				FRAMEWORK_SEARCH_PATHS = "";
+				GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
+				HEADER_SEARCH_PATHS = "";
+				INFOPLIST_FILE = "${PROJECT_FILE_PATH}/.tulsi/Resources/StubInfoPlist.plist";
+				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
+				ONLY_ACTIVE_ARCH = YES;
+				OTHER_CFLAGS = "--version";
+				OTHER_LDFLAGS = "--version";
+				OTHER_SWIFT_FLAGS = "--version";
+				PRODUCT_BUNDLE_IDENTIFIER = com.example.testapplicationTests;
+				PRODUCT_NAME = "Two-XCTest";
+				SDKROOT = iphoneos;
+				SWIFT_INSTALL_OBJC_HEADER = NO;
+				SWIFT_OBJC_INTERFACE_HEADER_NAME = "$(PRODUCT_NAME).h";
+				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TestApplication.app/TestApplication";
+				TULSI_BUILD_PATH = TestSuite/Two;
+				TULSI_TEST_RUNNER_ONLY = YES;
+				TULSI_XCODE_VERSION = 11.2.1.11B500;
+			};
+			name = __TulsiTestRunner_Debug;
+		};
 		0207AA28F23A778400000004 /* __TulsiTestRunner_Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
@@ -1246,6 +1246,16 @@
 			);
 			defaultConfigurationIsVisible = 0;
 		};
+		F4222DED4F59F77400000000 /* Build configuration list for PBXNativeTarget "Two-XCTest" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				0207AA2838C3D90E00000003 /* Debug */,
+				0207AA28616216BF00000003 /* Release */,
+				0207AA28F23A778400000003 /* __TulsiTestRunner_Debug */,
+				0207AA281FC531E700000003 /* __TulsiTestRunner_Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+		};
 		F4222DED6A5DBD9400000000 /* Build configuration list for PBXProject "TestSuiteExplicitXCTestsProject" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
@@ -1266,13 +1276,13 @@
 			);
 			defaultConfigurationIsVisible = 0;
 		};
-		F4222DEDA5985C6D00000000 /* Build configuration list for PBXNativeTarget "TestSuite-Three-XCTest" */ = {
+		F4222DED8D0BF21000000000 /* Build configuration list for PBXNativeTarget "One-XCTest" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
-				0207AA2838C3D90E00000003 /* Debug */,
-				0207AA28616216BF00000003 /* Release */,
-				0207AA28F23A778400000003 /* __TulsiTestRunner_Debug */,
-				0207AA281FC531E700000003 /* __TulsiTestRunner_Release */,
+				0207AA2838C3D90E00000000 /* Debug */,
+				0207AA28616216BF00000000 /* Release */,
+				0207AA28F23A778400000000 /* __TulsiTestRunner_Debug */,
+				0207AA281FC531E700000000 /* __TulsiTestRunner_Release */,
 			);
 			defaultConfigurationIsVisible = 0;
 		};
@@ -1284,16 +1294,6 @@
 			);
 			defaultConfigurationIsVisible = 0;
 		};
-		F4222DEDCBBF3A8D00000000 /* Build configuration list for PBXNativeTarget "TestSuite-One-XCTest" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				0207AA2838C3D90E00000002 /* Debug */,
-				0207AA28616216BF00000002 /* Release */,
-				0207AA28F23A778400000002 /* __TulsiTestRunner_Debug */,
-				0207AA281FC531E700000002 /* __TulsiTestRunner_Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-		};
 		F4222DEDE5B9C6FA00000000 /* Build configuration list for PBXNativeTarget "TestApplication" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
@@ -1304,13 +1304,13 @@
 			);
 			defaultConfigurationIsVisible = 0;
 		};
-		F4222DEDF7C1705C00000000 /* Build configuration list for PBXNativeTarget "TestSuite-Two-XCTest" */ = {
+		F4222DEDF975288C00000000 /* Build configuration list for PBXNativeTarget "Three-XCTest" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
-				0207AA2838C3D90E00000000 /* Debug */,
-				0207AA28616216BF00000000 /* Release */,
-				0207AA28F23A778400000000 /* __TulsiTestRunner_Debug */,
-				0207AA281FC531E700000000 /* __TulsiTestRunner_Release */,
+				0207AA2838C3D90E00000002 /* Debug */,
+				0207AA28616216BF00000002 /* Release */,
+				0207AA28F23A778400000002 /* __TulsiTestRunner_Debug */,
+				0207AA281FC531E700000002 /* __TulsiTestRunner_Release */,
 			);
 			defaultConfigurationIsVisible = 0;
 		};
diff --git a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/xcshareddata/xcschemes/One-XCTest.xcscheme b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/xcshareddata/xcschemes/One-XCTest.xcscheme
new file mode 100644
index 0000000..1ebc820
--- /dev/null
+++ b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/xcshareddata/xcschemes/One-XCTest.xcscheme
@@ -0,0 +1,33 @@
+
+<Scheme version="1.3" LastUpgradeVersion="1000">
+    <BuildAction parallelizeBuildables="YES" buildImplicitDependencies="YES">
+        <BuildActionEntries>
+            <BuildActionEntry buildForAnalyzing="YES" buildForRunning="YES" buildForProfiling="YES" buildForArchiving="YES" buildForTesting="YES">
+                <BuildableReference BuildableName="One-XCTest.xctest" BlueprintName="One-XCTest" BlueprintIdentifier="7E9AFE6269ABCA1200000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
+            </BuildActionEntry>
+        </BuildActionEntries>
+    </BuildAction>
+    <TestAction shouldUseLaunchSchemeArgsEnv="YES" selectedLauncherIdentifier="Xcode.DebuggerFoundation.Launcher.LLDB" selectedDebuggerIdentifier="Xcode.DebuggerFoundation.Debugger.LLDB" buildConfiguration="__TulsiTestRunner_Debug">
+        <Testables>
+            <TestableReference skipped="NO">
+                <BuildableReference BuildableName="One-XCTest.xctest" BlueprintName="One-XCTest" BlueprintIdentifier="7E9AFE6269ABCA1200000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
+            </TestableReference>
+        </Testables>
+        <BuildableProductRunnable runnableDebuggingMode="0">
+            <BuildableReference BuildableName="One-XCTest.xctest" BlueprintName="One-XCTest" BlueprintIdentifier="7E9AFE6269ABCA1200000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
+        </BuildableProductRunnable>
+    </TestAction>
+    <LaunchAction debugServiceExtension="internal" selectedLauncherIdentifier="Xcode.DebuggerFoundation.Launcher.LLDB" selectedDebuggerIdentifier="Xcode.DebuggerFoundation.Debugger.LLDB" buildConfiguration="Debug" debugDocumentVersioning="YES" launchStyle="0" ignoresPersistentStateOnLaunch="NO" allowLocationSimulation="YES" useCustomWorkingDirectory="NO">
+        <EnvironmentVariables></EnvironmentVariables>
+        <MacroExpansion>
+            <BuildableReference BuildableName="One-XCTest.xctest" BlueprintName="One-XCTest" BlueprintIdentifier="7E9AFE6269ABCA1200000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
+        </MacroExpansion>
+    </LaunchAction>
+    <ProfileAction useCustomWorkingDirectory="NO" shouldUseLaunchSchemeArgsEnv="YES" debugDocumentVersioning="YES" buildConfiguration="__TulsiTestRunner_Release">
+        <MacroExpansion>
+            <BuildableReference BuildableName="One-XCTest.xctest" BlueprintName="One-XCTest" BlueprintIdentifier="7E9AFE6269ABCA1200000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
+        </MacroExpansion>
+    </ProfileAction>
+    <AnalyzeAction buildConfiguration="Debug"></AnalyzeAction>
+    <ArchiveAction revealArchiveInOrganizer="YES" buildConfiguration="Release"></ArchiveAction>
+</Scheme>
\ No newline at end of file
diff --git a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/xcshareddata/xcschemes/TestApplication.xcscheme b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/xcshareddata/xcschemes/TestApplication.xcscheme
index 9f3e9a0..af2bf88 100644
--- a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/xcshareddata/xcschemes/TestApplication.xcscheme
+++ b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/xcshareddata/xcschemes/TestApplication.xcscheme
@@ -10,13 +10,13 @@
     <TestAction shouldUseLaunchSchemeArgsEnv="YES" selectedLauncherIdentifier="Xcode.DebuggerFoundation.Launcher.LLDB" selectedDebuggerIdentifier="Xcode.DebuggerFoundation.Debugger.LLDB" buildConfiguration="__TulsiTestRunner_Debug">
         <Testables>
             <TestableReference skipped="NO">
-                <BuildableReference BuildableName="TestSuite-Two-XCTest.xctest" BlueprintName="TestSuite-Two-XCTest" BlueprintIdentifier="7E9AFE628EB1D89400000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
+                <BuildableReference BuildableName="One-XCTest.xctest" BlueprintName="One-XCTest" BlueprintIdentifier="7E9AFE6269ABCA1200000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
             </TestableReference>
             <TestableReference skipped="NO">
-                <BuildableReference BuildableName="TestSuite-One-XCTest.xctest" BlueprintName="TestSuite-One-XCTest" BlueprintIdentifier="7E9AFE6243B8875800000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
+                <BuildableReference BuildableName="Three-XCTest.xctest" BlueprintName="Three-XCTest" BlueprintIdentifier="7E9AFE62F7F03B1E00000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
             </TestableReference>
             <TestableReference skipped="NO">
-                <BuildableReference BuildableName="TestSuite-Three-XCTest.xctest" BlueprintName="TestSuite-Three-XCTest" BlueprintIdentifier="7E9AFE6238918F2000000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
+                <BuildableReference BuildableName="Two-XCTest.xctest" BlueprintName="Two-XCTest" BlueprintIdentifier="7E9AFE6296A78E1400000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
             </TestableReference>
         </Testables>
         <BuildableProductRunnable runnableDebuggingMode="0">
diff --git a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/xcshareddata/xcschemes/TestSuite-One-XCTest.xcscheme b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/xcshareddata/xcschemes/TestSuite-One-XCTest.xcscheme
deleted file mode 100644
index 620dcb1..0000000
--- a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/xcshareddata/xcschemes/TestSuite-One-XCTest.xcscheme
+++ /dev/null
@@ -1,33 +0,0 @@
-
-<Scheme version="1.3" LastUpgradeVersion="1000">
-    <BuildAction parallelizeBuildables="YES" buildImplicitDependencies="YES">
-        <BuildActionEntries>
-            <BuildActionEntry buildForAnalyzing="YES" buildForRunning="YES" buildForProfiling="YES" buildForArchiving="YES" buildForTesting="YES">
-                <BuildableReference BuildableName="TestSuite-One-XCTest.xctest" BlueprintName="TestSuite-One-XCTest" BlueprintIdentifier="7E9AFE6243B8875800000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
-            </BuildActionEntry>
-        </BuildActionEntries>
-    </BuildAction>
-    <TestAction shouldUseLaunchSchemeArgsEnv="YES" selectedLauncherIdentifier="Xcode.DebuggerFoundation.Launcher.LLDB" selectedDebuggerIdentifier="Xcode.DebuggerFoundation.Debugger.LLDB" buildConfiguration="__TulsiTestRunner_Debug">
-        <Testables>
-            <TestableReference skipped="NO">
-                <BuildableReference BuildableName="TestSuite-One-XCTest.xctest" BlueprintName="TestSuite-One-XCTest" BlueprintIdentifier="7E9AFE6243B8875800000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
-            </TestableReference>
-        </Testables>
-        <BuildableProductRunnable runnableDebuggingMode="0">
-            <BuildableReference BuildableName="TestSuite-One-XCTest.xctest" BlueprintName="TestSuite-One-XCTest" BlueprintIdentifier="7E9AFE6243B8875800000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
-        </BuildableProductRunnable>
-    </TestAction>
-    <LaunchAction debugServiceExtension="internal" selectedLauncherIdentifier="Xcode.DebuggerFoundation.Launcher.LLDB" selectedDebuggerIdentifier="Xcode.DebuggerFoundation.Debugger.LLDB" buildConfiguration="Debug" debugDocumentVersioning="YES" launchStyle="0" ignoresPersistentStateOnLaunch="NO" allowLocationSimulation="YES" useCustomWorkingDirectory="NO">
-        <EnvironmentVariables></EnvironmentVariables>
-        <MacroExpansion>
-            <BuildableReference BuildableName="TestSuite-One-XCTest.xctest" BlueprintName="TestSuite-One-XCTest" BlueprintIdentifier="7E9AFE6243B8875800000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
-        </MacroExpansion>
-    </LaunchAction>
-    <ProfileAction useCustomWorkingDirectory="NO" shouldUseLaunchSchemeArgsEnv="YES" debugDocumentVersioning="YES" buildConfiguration="__TulsiTestRunner_Release">
-        <MacroExpansion>
-            <BuildableReference BuildableName="TestSuite-One-XCTest.xctest" BlueprintName="TestSuite-One-XCTest" BlueprintIdentifier="7E9AFE6243B8875800000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
-        </MacroExpansion>
-    </ProfileAction>
-    <AnalyzeAction buildConfiguration="Debug"></AnalyzeAction>
-    <ArchiveAction revealArchiveInOrganizer="YES" buildConfiguration="Release"></ArchiveAction>
-</Scheme>
\ No newline at end of file
diff --git a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/xcshareddata/xcschemes/TestSuite-Three-XCTest.xcscheme b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/xcshareddata/xcschemes/TestSuite-Three-XCTest.xcscheme
deleted file mode 100644
index 315bbe1..0000000
--- a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/xcshareddata/xcschemes/TestSuite-Three-XCTest.xcscheme
+++ /dev/null
@@ -1,33 +0,0 @@
-
-<Scheme version="1.3" LastUpgradeVersion="1000">
-    <BuildAction parallelizeBuildables="YES" buildImplicitDependencies="YES">
-        <BuildActionEntries>
-            <BuildActionEntry buildForAnalyzing="YES" buildForRunning="YES" buildForProfiling="YES" buildForArchiving="YES" buildForTesting="YES">
-                <BuildableReference BuildableName="TestSuite-Three-XCTest.xctest" BlueprintName="TestSuite-Three-XCTest" BlueprintIdentifier="7E9AFE6238918F2000000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
-            </BuildActionEntry>
-        </BuildActionEntries>
-    </BuildAction>
-    <TestAction shouldUseLaunchSchemeArgsEnv="YES" selectedLauncherIdentifier="Xcode.DebuggerFoundation.Launcher.LLDB" selectedDebuggerIdentifier="Xcode.DebuggerFoundation.Debugger.LLDB" buildConfiguration="__TulsiTestRunner_Debug">
-        <Testables>
-            <TestableReference skipped="NO">
-                <BuildableReference BuildableName="TestSuite-Three-XCTest.xctest" BlueprintName="TestSuite-Three-XCTest" BlueprintIdentifier="7E9AFE6238918F2000000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
-            </TestableReference>
-        </Testables>
-        <BuildableProductRunnable runnableDebuggingMode="0">
-            <BuildableReference BuildableName="TestSuite-Three-XCTest.xctest" BlueprintName="TestSuite-Three-XCTest" BlueprintIdentifier="7E9AFE6238918F2000000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
-        </BuildableProductRunnable>
-    </TestAction>
-    <LaunchAction debugServiceExtension="internal" selectedLauncherIdentifier="Xcode.DebuggerFoundation.Launcher.LLDB" selectedDebuggerIdentifier="Xcode.DebuggerFoundation.Debugger.LLDB" buildConfiguration="Debug" debugDocumentVersioning="YES" launchStyle="0" ignoresPersistentStateOnLaunch="NO" allowLocationSimulation="YES" useCustomWorkingDirectory="NO">
-        <EnvironmentVariables></EnvironmentVariables>
-        <MacroExpansion>
-            <BuildableReference BuildableName="TestSuite-Three-XCTest.xctest" BlueprintName="TestSuite-Three-XCTest" BlueprintIdentifier="7E9AFE6238918F2000000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
-        </MacroExpansion>
-    </LaunchAction>
-    <ProfileAction useCustomWorkingDirectory="NO" shouldUseLaunchSchemeArgsEnv="YES" debugDocumentVersioning="YES" buildConfiguration="__TulsiTestRunner_Release">
-        <MacroExpansion>
-            <BuildableReference BuildableName="TestSuite-Three-XCTest.xctest" BlueprintName="TestSuite-Three-XCTest" BlueprintIdentifier="7E9AFE6238918F2000000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
-        </MacroExpansion>
-    </ProfileAction>
-    <AnalyzeAction buildConfiguration="Debug"></AnalyzeAction>
-    <ArchiveAction revealArchiveInOrganizer="YES" buildConfiguration="Release"></ArchiveAction>
-</Scheme>
\ No newline at end of file
diff --git a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/xcshareddata/xcschemes/TestSuite-Two-XCTest.xcscheme b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/xcshareddata/xcschemes/TestSuite-Two-XCTest.xcscheme
deleted file mode 100644
index 626986a..0000000
--- a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/xcshareddata/xcschemes/TestSuite-Two-XCTest.xcscheme
+++ /dev/null
@@ -1,33 +0,0 @@
-
-<Scheme version="1.3" LastUpgradeVersion="1000">
-    <BuildAction parallelizeBuildables="YES" buildImplicitDependencies="YES">
-        <BuildActionEntries>
-            <BuildActionEntry buildForAnalyzing="YES" buildForRunning="YES" buildForProfiling="YES" buildForArchiving="YES" buildForTesting="YES">
-                <BuildableReference BuildableName="TestSuite-Two-XCTest.xctest" BlueprintName="TestSuite-Two-XCTest" BlueprintIdentifier="7E9AFE628EB1D89400000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
-            </BuildActionEntry>
-        </BuildActionEntries>
-    </BuildAction>
-    <TestAction shouldUseLaunchSchemeArgsEnv="YES" selectedLauncherIdentifier="Xcode.DebuggerFoundation.Launcher.LLDB" selectedDebuggerIdentifier="Xcode.DebuggerFoundation.Debugger.LLDB" buildConfiguration="__TulsiTestRunner_Debug">
-        <Testables>
-            <TestableReference skipped="NO">
-                <BuildableReference BuildableName="TestSuite-Two-XCTest.xctest" BlueprintName="TestSuite-Two-XCTest" BlueprintIdentifier="7E9AFE628EB1D89400000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
-            </TestableReference>
-        </Testables>
-        <BuildableProductRunnable runnableDebuggingMode="0">
-            <BuildableReference BuildableName="TestSuite-Two-XCTest.xctest" BlueprintName="TestSuite-Two-XCTest" BlueprintIdentifier="7E9AFE628EB1D89400000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
-        </BuildableProductRunnable>
-    </TestAction>
-    <LaunchAction debugServiceExtension="internal" selectedLauncherIdentifier="Xcode.DebuggerFoundation.Launcher.LLDB" selectedDebuggerIdentifier="Xcode.DebuggerFoundation.Debugger.LLDB" buildConfiguration="Debug" debugDocumentVersioning="YES" launchStyle="0" ignoresPersistentStateOnLaunch="NO" allowLocationSimulation="YES" useCustomWorkingDirectory="NO">
-        <EnvironmentVariables></EnvironmentVariables>
-        <MacroExpansion>
-            <BuildableReference BuildableName="TestSuite-Two-XCTest.xctest" BlueprintName="TestSuite-Two-XCTest" BlueprintIdentifier="7E9AFE628EB1D89400000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
-        </MacroExpansion>
-    </LaunchAction>
-    <ProfileAction useCustomWorkingDirectory="NO" shouldUseLaunchSchemeArgsEnv="YES" debugDocumentVersioning="YES" buildConfiguration="__TulsiTestRunner_Release">
-        <MacroExpansion>
-            <BuildableReference BuildableName="TestSuite-Two-XCTest.xctest" BlueprintName="TestSuite-Two-XCTest" BlueprintIdentifier="7E9AFE628EB1D89400000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
-        </MacroExpansion>
-    </ProfileAction>
-    <AnalyzeAction buildConfiguration="Debug"></AnalyzeAction>
-    <ArchiveAction revealArchiveInOrganizer="YES" buildConfiguration="Release"></ArchiveAction>
-</Scheme>
\ No newline at end of file
diff --git a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/xcshareddata/xcschemes/Three-XCTest.xcscheme b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/xcshareddata/xcschemes/Three-XCTest.xcscheme
new file mode 100644
index 0000000..9d4393d
--- /dev/null
+++ b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/xcshareddata/xcschemes/Three-XCTest.xcscheme
@@ -0,0 +1,33 @@
+
+<Scheme version="1.3" LastUpgradeVersion="1000">
+    <BuildAction parallelizeBuildables="YES" buildImplicitDependencies="YES">
+        <BuildActionEntries>
+            <BuildActionEntry buildForAnalyzing="YES" buildForRunning="YES" buildForProfiling="YES" buildForArchiving="YES" buildForTesting="YES">
+                <BuildableReference BuildableName="Three-XCTest.xctest" BlueprintName="Three-XCTest" BlueprintIdentifier="7E9AFE62F7F03B1E00000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
+            </BuildActionEntry>
+        </BuildActionEntries>
+    </BuildAction>
+    <TestAction shouldUseLaunchSchemeArgsEnv="YES" selectedLauncherIdentifier="Xcode.DebuggerFoundation.Launcher.LLDB" selectedDebuggerIdentifier="Xcode.DebuggerFoundation.Debugger.LLDB" buildConfiguration="__TulsiTestRunner_Debug">
+        <Testables>
+            <TestableReference skipped="NO">
+                <BuildableReference BuildableName="Three-XCTest.xctest" BlueprintName="Three-XCTest" BlueprintIdentifier="7E9AFE62F7F03B1E00000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
+            </TestableReference>
+        </Testables>
+        <BuildableProductRunnable runnableDebuggingMode="0">
+            <BuildableReference BuildableName="Three-XCTest.xctest" BlueprintName="Three-XCTest" BlueprintIdentifier="7E9AFE62F7F03B1E00000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
+        </BuildableProductRunnable>
+    </TestAction>
+    <LaunchAction debugServiceExtension="internal" selectedLauncherIdentifier="Xcode.DebuggerFoundation.Launcher.LLDB" selectedDebuggerIdentifier="Xcode.DebuggerFoundation.Debugger.LLDB" buildConfiguration="Debug" debugDocumentVersioning="YES" launchStyle="0" ignoresPersistentStateOnLaunch="NO" allowLocationSimulation="YES" useCustomWorkingDirectory="NO">
+        <EnvironmentVariables></EnvironmentVariables>
+        <MacroExpansion>
+            <BuildableReference BuildableName="Three-XCTest.xctest" BlueprintName="Three-XCTest" BlueprintIdentifier="7E9AFE62F7F03B1E00000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
+        </MacroExpansion>
+    </LaunchAction>
+    <ProfileAction useCustomWorkingDirectory="NO" shouldUseLaunchSchemeArgsEnv="YES" debugDocumentVersioning="YES" buildConfiguration="__TulsiTestRunner_Release">
+        <MacroExpansion>
+            <BuildableReference BuildableName="Three-XCTest.xctest" BlueprintName="Three-XCTest" BlueprintIdentifier="7E9AFE62F7F03B1E00000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
+        </MacroExpansion>
+    </ProfileAction>
+    <AnalyzeAction buildConfiguration="Debug"></AnalyzeAction>
+    <ArchiveAction revealArchiveInOrganizer="YES" buildConfiguration="Release"></ArchiveAction>
+</Scheme>
\ No newline at end of file
diff --git a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/xcshareddata/xcschemes/Two-XCTest.xcscheme b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/xcshareddata/xcschemes/Two-XCTest.xcscheme
new file mode 100644
index 0000000..14b2265
--- /dev/null
+++ b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/xcshareddata/xcschemes/Two-XCTest.xcscheme
@@ -0,0 +1,33 @@
+
+<Scheme version="1.3" LastUpgradeVersion="1000">
+    <BuildAction parallelizeBuildables="YES" buildImplicitDependencies="YES">
+        <BuildActionEntries>
+            <BuildActionEntry buildForAnalyzing="YES" buildForRunning="YES" buildForProfiling="YES" buildForArchiving="YES" buildForTesting="YES">
+                <BuildableReference BuildableName="Two-XCTest.xctest" BlueprintName="Two-XCTest" BlueprintIdentifier="7E9AFE6296A78E1400000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
+            </BuildActionEntry>
+        </BuildActionEntries>
+    </BuildAction>
+    <TestAction shouldUseLaunchSchemeArgsEnv="YES" selectedLauncherIdentifier="Xcode.DebuggerFoundation.Launcher.LLDB" selectedDebuggerIdentifier="Xcode.DebuggerFoundation.Debugger.LLDB" buildConfiguration="__TulsiTestRunner_Debug">
+        <Testables>
+            <TestableReference skipped="NO">
+                <BuildableReference BuildableName="Two-XCTest.xctest" BlueprintName="Two-XCTest" BlueprintIdentifier="7E9AFE6296A78E1400000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
+            </TestableReference>
+        </Testables>
+        <BuildableProductRunnable runnableDebuggingMode="0">
+            <BuildableReference BuildableName="Two-XCTest.xctest" BlueprintName="Two-XCTest" BlueprintIdentifier="7E9AFE6296A78E1400000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
+        </BuildableProductRunnable>
+    </TestAction>
+    <LaunchAction debugServiceExtension="internal" selectedLauncherIdentifier="Xcode.DebuggerFoundation.Launcher.LLDB" selectedDebuggerIdentifier="Xcode.DebuggerFoundation.Debugger.LLDB" buildConfiguration="Debug" debugDocumentVersioning="YES" launchStyle="0" ignoresPersistentStateOnLaunch="NO" allowLocationSimulation="YES" useCustomWorkingDirectory="NO">
+        <EnvironmentVariables></EnvironmentVariables>
+        <MacroExpansion>
+            <BuildableReference BuildableName="Two-XCTest.xctest" BlueprintName="Two-XCTest" BlueprintIdentifier="7E9AFE6296A78E1400000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
+        </MacroExpansion>
+    </LaunchAction>
+    <ProfileAction useCustomWorkingDirectory="NO" shouldUseLaunchSchemeArgsEnv="YES" debugDocumentVersioning="YES" buildConfiguration="__TulsiTestRunner_Release">
+        <MacroExpansion>
+            <BuildableReference BuildableName="Two-XCTest.xctest" BlueprintName="Two-XCTest" BlueprintIdentifier="7E9AFE6296A78E1400000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
+        </MacroExpansion>
+    </ProfileAction>
+    <AnalyzeAction buildConfiguration="Debug"></AnalyzeAction>
+    <ArchiveAction revealArchiveInOrganizer="YES" buildConfiguration="Release"></ArchiveAction>
+</Scheme>
\ No newline at end of file
diff --git a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/xcshareddata/xcschemes/explicit_XCTests_Suite.xcscheme b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/xcshareddata/xcschemes/explicit_XCTests_Suite.xcscheme
index edbe032..88b3857 100644
--- a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/xcshareddata/xcschemes/explicit_XCTests_Suite.xcscheme
+++ b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/xcshareddata/xcschemes/explicit_XCTests_Suite.xcscheme
@@ -10,16 +10,16 @@
     <TestAction shouldUseLaunchSchemeArgsEnv="YES" selectedLauncherIdentifier="Xcode.DebuggerFoundation.Launcher.LLDB" selectedDebuggerIdentifier="Xcode.DebuggerFoundation.Debugger.LLDB" buildConfiguration="__TulsiTestRunner_Debug">
         <Testables>
             <TestableReference skipped="NO">
-                <BuildableReference BuildableName="TestSuite-Three-XCTest.xctest" BlueprintName="TestSuite-Three-XCTest" BlueprintIdentifier="7E9AFE6238918F2000000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
-            </TestableReference>
-            <TestableReference skipped="NO">
-                <BuildableReference BuildableName="TestSuite-Two-XCTest.xctest" BlueprintName="TestSuite-Two-XCTest" BlueprintIdentifier="7E9AFE628EB1D89400000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
+                <BuildableReference BuildableName="Three-XCTest.xctest" BlueprintName="Three-XCTest" BlueprintIdentifier="7E9AFE62F7F03B1E00000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
             </TestableReference>
             <TestableReference skipped="NO">
                 <BuildableReference BuildableName="LogicTest.xctest" BlueprintName="LogicTest" BlueprintIdentifier="7E9AFE6278F802E600000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
             </TestableReference>
             <TestableReference skipped="NO">
-                <BuildableReference BuildableName="TestSuite-One-XCTest.xctest" BlueprintName="TestSuite-One-XCTest" BlueprintIdentifier="7E9AFE6243B8875800000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
+                <BuildableReference BuildableName="One-XCTest.xctest" BlueprintName="One-XCTest" BlueprintIdentifier="7E9AFE6269ABCA1200000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
+            </TestableReference>
+            <TestableReference skipped="NO">
+                <BuildableReference BuildableName="Two-XCTest.xctest" BlueprintName="Two-XCTest" BlueprintIdentifier="7E9AFE6296A78E1400000000" ReferencedContainer="container:TestSuiteExplicitXCTestsProject.xcodeproj" BuildableIdentifier="primary"></BuildableReference>
             </TestableReference>
         </Testables>
         <MacroExpansion>
diff --git a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist
index 39776d9..fefaa27 100644
--- a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist
+++ b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -9,22 +9,22 @@
 			<key>isShown</key>
 			<true/>
 		</dict>
+		<key>One-XCTest.xcscheme_^#shared#^_</key>
+		<dict>
+			<key>isShown</key>
+			<true/>
+		</dict>
 		<key>TestApplication.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>isShown</key>
 			<true/>
 		</dict>
-		<key>TestSuite-One-XCTest.xcscheme_^#shared#^_</key>
+		<key>Three-XCTest.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>isShown</key>
 			<true/>
 		</dict>
-		<key>TestSuite-Three-XCTest.xcscheme_^#shared#^_</key>
-		<dict>
-			<key>isShown</key>
-			<true/>
-		</dict>
-		<key>TestSuite-Two-XCTest.xcscheme_^#shared#^_</key>
+		<key>Two-XCTest.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>isShown</key>
 			<true/>
diff --git a/src/TulsiGeneratorIntegrationTests/update_goldens.sh b/src/TulsiGeneratorIntegrationTests/update_goldens.sh
index ebfd320..852c4d1 100755
--- a/src/TulsiGeneratorIntegrationTests/update_goldens.sh
+++ b/src/TulsiGeneratorIntegrationTests/update_goldens.sh
@@ -26,7 +26,8 @@
 readonly OUTPUT_DIR="${TESTLOGS_DIR}/${TEST_PATH}"
 
 bazel test //src/TulsiGeneratorIntegrationTests:EndToEndGenerationTests \
-  --xcode_version="$XCODE_VERSION" --nocheck_visibility && :
+  --xcode_version="$XCODE_VERSION" --nocheck_visibility \
+  --use_top_level_targets_for_symlinks && :
 
 bazel_exit_code=$?
 
diff --git a/src/TulsiGeneratorTests/PBXTargetGeneratorTests.swift b/src/TulsiGeneratorTests/PBXTargetGeneratorTests.swift
index 4a55869..0748e57 100644
--- a/src/TulsiGeneratorTests/PBXTargetGeneratorTests.swift
+++ b/src/TulsiGeneratorTests/PBXTargetGeneratorTests.swift
@@ -193,7 +193,7 @@
 
   func testGenerateBazelCleanTargetAppliesToRulesAddedBeforeAndAfter() {
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries(
+      _ = try targetGenerator.generateBuildTargetsForRuleEntries(
         [makeTestRuleEntry("before", type: "ios_application", productType: .Application)],
         ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
@@ -203,7 +203,7 @@
     targetGenerator.generateBazelCleanTarget("scriptPath")
 
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries(
+      _ = try targetGenerator.generateBuildTargetsForRuleEntries(
         [makeTestRuleEntry("after", type: "ios_application", productType: .Application)],
         ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
@@ -349,7 +349,7 @@
 
   func testGenerateTargetsForRuleEntriesWithNoEntries() {
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries([], ruleEntryMap: RuleEntryMap())
+      _ = try targetGenerator.generateBuildTargetsForRuleEntries([], ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
     }
@@ -371,7 +371,7 @@
     ])
 
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
+      _ = try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
     }
@@ -487,7 +487,7 @@
     ])
 
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
+      _ = try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
     }
@@ -599,7 +599,7 @@
     ])
 
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
+      _ = try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
     }
@@ -715,7 +715,7 @@
     ])
 
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
+      _ = try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
     }
@@ -834,7 +834,7 @@
     ])
 
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
+      _ = try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
     }
@@ -939,7 +939,7 @@
     ])
 
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
+      _ = try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
     }
@@ -1008,7 +1008,7 @@
     ])
 
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
+      _ = try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
     }
@@ -1095,7 +1095,7 @@
       testRule,
     ])
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
+      _ = try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
     }
@@ -1216,7 +1216,7 @@
     ])
 
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries(
+      _ = try targetGenerator.generateBuildTargetsForRuleEntries(
         [testRuleEntry, testHostRuleEntry],
         ruleEntryMap: ruleEntryMap)
     } catch let e as NSError {
@@ -1303,7 +1303,7 @@
     ])
 
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries(
+      _ = try targetGenerator.generateBuildTargetsForRuleEntries(
         [testRuleEntry, testHostRuleEntry],
         ruleEntryMap: ruleEntryMap)
     } catch let e as NSError {
@@ -1391,7 +1391,7 @@
       testRule,
     ])
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
+      _ = try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
     }
@@ -1532,7 +1532,7 @@
       test2Rule,
     ])
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
+      _ = try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
     }
@@ -1567,7 +1567,7 @@
       sourceFiles: testSources,
       productType: .Application)
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries(
+      _ = try targetGenerator.generateBuildTargetsForRuleEntries(
         [testRule], ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
@@ -1634,7 +1634,7 @@
     ])
 
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
+      _ = try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
     }
@@ -1651,12 +1651,12 @@
         "BAZEL_TARGET": "test/test1:\(targetName)",
         "DEBUG_INFORMATION_FORMAT": "dwarf",
         "INFOPLIST_FILE": stubPlistPaths.defaultStub,
-        "PRODUCT_NAME": "test-test1-SameName",
+        "PRODUCT_NAME": "test1-SameName",
         "SDKROOT": "iphoneos",
         "TULSI_BUILD_PATH": rule1BuildPath,
       ]
       let expectedTarget = TargetDefinition(
-        name: "test-test1-SameName",
+        name: "test1-SameName",
         buildConfigurations: [
           BuildConfigurationDefinition(
             name: "Debug",
@@ -1687,12 +1687,12 @@
         "BAZEL_TARGET": "test/test2:\(targetName)",
         "DEBUG_INFORMATION_FORMAT": "dwarf",
         "INFOPLIST_FILE": stubPlistPaths.defaultStub,
-        "PRODUCT_NAME": "test-test2-SameName",
+        "PRODUCT_NAME": "test2-SameName",
         "SDKROOT": "iphoneos",
         "TULSI_BUILD_PATH": rule2BuildPath,
       ]
       let expectedTarget = TargetDefinition(
-        name: "test-test2-SameName",
+        name: "test2-SameName",
         buildConfigurations: [
           BuildConfigurationDefinition(
             name: "Debug",
@@ -1733,7 +1733,7 @@
     ])
 
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
+      _ = try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
     }
@@ -1797,7 +1797,7 @@
     ])
 
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
+      _ = try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
     }
@@ -1814,7 +1814,7 @@
         "BAZEL_TARGET": buildTarget,
         "DEBUG_INFORMATION_FORMAT": "dwarf",
         "INFOPLIST_FILE": stubPlistPaths.defaultStub,
-        "PRODUCT_NAME": bundleName,
+        "PRODUCT_NAME": targetName,
         "SDKROOT": "iphoneos",
         "TULSI_BUILD_PATH": buildPath,
       ]
@@ -1889,7 +1889,7 @@
     ])
 
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
+      _ = try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
     }
@@ -2058,7 +2058,7 @@
     ])
 
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
+      _ = try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
     }
@@ -2689,7 +2689,7 @@
     let ruleEntryMap = makeRuleEntryMap(withRuleEntries: [swiftLibraryRule])
 
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries(
+      _ = try targetGenerator.generateBuildTargetsForRuleEntries(
         [testRule],
         ruleEntryMap: ruleEntryMap)
     } catch let e as NSError {
diff --git a/src/TulsiGeneratorTests/XcodeProjectGeneratorTests.swift b/src/TulsiGeneratorTests/XcodeProjectGeneratorTests.swift
index be51cf9..6bf636c 100644
--- a/src/TulsiGeneratorTests/XcodeProjectGeneratorTests.swift
+++ b/src/TulsiGeneratorTests/XcodeProjectGeneratorTests.swift
@@ -613,18 +613,21 @@
   func generateBuildTargetsForRuleEntries(
     _ ruleEntries: Set<RuleEntry>,
     ruleEntryMap: RuleEntryMap
-  ) throws {
+  ) throws -> [BuildLabel: PBXNativeTarget] {
     // This works as this file only tests native targets that don't have multiple configurations.
     let namedRuleEntries = ruleEntries.map { (e: RuleEntry) -> (String, RuleEntry) in
       return (e.label.asFullPBXTargetName!, e)
     }
 
+    var targetsByLabel = [BuildLabel: PBXNativeTarget]()
     var testTargetLinkages = [(PBXTarget, BuildLabel)]()
     for (name, entry) in namedRuleEntries {
       let target = project.createNativeTarget(
         name,
         deploymentTarget: entry.deploymentTarget,
         targetType: entry.pbxTargetType!)
+      targetsByLabel[entry.label] = target
+
 
       if let hostLabelString = entry.attributes[.test_host] as? String {
         let hostLabel = BuildLabel(hostLabelString)
@@ -636,5 +639,6 @@
       let hostTarget = project.targetByName(testHostLabel.asFullPBXTargetName!) as! PBXNativeTarget
       project.linkTestTarget(testTarget, toHostTarget: hostTarget)
     }
+    return targetsByLabel
   }
 }