Hide indexer scheme by default
Use xcschememanagement.plist to hide the indexer scheme by default.
PiperOrigin-RevId: 195159420
diff --git a/src/TulsiGenerator/XcodeProjectGenerator.swift b/src/TulsiGenerator/XcodeProjectGenerator.swift
index d82b222..7599634 100644
--- a/src/TulsiGenerator/XcodeProjectGenerator.swift
+++ b/src/TulsiGenerator/XcodeProjectGenerator.swift
@@ -661,6 +661,25 @@
let xcschemesURL = projectURL.appendingPathComponent("xcshareddata/xcschemes")
guard createDirectory(xcschemesURL) else { return }
+ let userSchemeSubpath = "xcuserdata/\(usernameFetcher()).xcuserdatad/xcschemes"
+ let userSchemesURL = projectURL.appendingPathComponent(userSchemeSubpath)
+ guard createDirectory(userSchemesURL) else { return }
+
+ func updateManagementDictionary(
+ _ dictionary: inout [String: Any],
+ schemeName: String,
+ shared: Bool = true,
+ visible: Bool = true
+ ) {
+ guard var schemeUserState = dictionary["SchemeUserState"] as? [String: Any] else {
+ return
+ }
+ let actualizedName = shared ? "\(schemeName)_^#shared#^_" : schemeName
+ let schemeDict: [String: Any] = ["isShown": visible]
+ schemeUserState[actualizedName] = schemeDict
+ dictionary["SchemeUserState"] = schemeUserState
+ }
+
func targetForLabel(_ label: BuildLabel) -> PBXTarget? {
if let pbxTarget = info.project.targetByName[label.targetName!] {
return pbxTarget
@@ -713,6 +732,10 @@
}
}
+ var schemeManagementDict = [String: Any]()
+ schemeManagementDict["SchemeUserState"] = [String: Any]()
+ schemeManagementDict["SuppressBuildableAutocreation"] = [String: Any]()
+
let runTestTargetBuildConfigPrefix = pbxTargetGeneratorType.getRunTestTargetBuildConfigPrefix()
for entry in info.buildRuleEntries {
// Generate an XcodeScheme with a test action set up to allow tests to be run without Xcode
@@ -788,6 +811,7 @@
let data = xmlDocument.xmlData(options: XMLNode.Options.nodePrettyPrint)
try writeDataHandler(url, data)
+ updateManagementDictionary(&schemeManagementDict, schemeName: filename)
}
func extractTestTargets(_ testSuite: RuleEntry) -> (Set<PBXTarget>, PBXTarget?) {
@@ -864,6 +888,7 @@
let data = xmlDocument.xmlData(options: XMLNode.Options.nodePrettyPrint)
try writeDataHandler(url, data)
+ updateManagementDictionary(&schemeManagementDict, schemeName: filename, visible: false)
}
try installSchemesForIndexerTargets()
@@ -897,6 +922,7 @@
let data = xmlDocument.xmlData(options: XMLNode.Options.nodePrettyPrint)
try writeDataHandler(url, data)
+ updateManagementDictionary(&schemeManagementDict, schemeName: filename)
}
var testSuiteSchemes = [String: [RuleEntry]]()
@@ -919,6 +945,9 @@
try installSchemeForTestSuite(suite, named: suiteName)
}
}
+
+ let schemeManagementURL = userSchemesURL.appendingPathComponent("xcschememanagement.plist")
+ guard savePlist(schemeManagementDict, url: schemeManagementURL) else { return }
}
/// Create a file that contains the execution root for the workspace of the generated project.
@@ -1309,22 +1338,7 @@
let plistName = plistPaths.plistFilename(forRuleEntry: entry)
let targetURL = URL(string: plistName, relativeTo: targetDirectoryURL)!
- let data: Data
- do {
- data = try PropertyListSerialization.data(fromPropertyList: plistTemplate, format: .xml, options: 0)
- } catch let e {
- localizedMessageLogger.error("SerializingPlistFailed",
- comment: LocalizedMessageLogger.bugWorthyComment("Failed to serialize a plist template"),
- context: config.projectName,
- values: e.localizedDescription)
- return
- }
-
- guard fileManager.createFile(atPath: targetURL.path, contents: data, attributes: nil) else {
- localizedMessageLogger.error("WritingPlistFailed",
- comment: LocalizedMessageLogger.bugWorthyComment("Failed to write a plist template"),
- context: config.projectName,
- values: targetURL.path)
+ guard savePlist(plistTemplate, url: targetURL) else {
return
}
}
@@ -1333,6 +1347,30 @@
localizedMessageLogger.logProfilingEnd(profilingToken)
}
+ private func savePlist(_ plist: Any, url: URL) -> Bool {
+ let data: Data
+ do {
+ data = try PropertyListSerialization.data(fromPropertyList: plist, format: .xml, options: 0)
+ } catch let e {
+ let comment = LocalizedMessageLogger.bugWorthyComment("Failed to serialize a plist")
+ localizedMessageLogger.error("SerializingPlistFailed",
+ comment: comment,
+ context: config.projectName,
+ values: e.localizedDescription)
+ return false
+ }
+
+ guard fileManager.createFile(atPath: url.path, contents: data, attributes: nil) else {
+ let comment = LocalizedMessageLogger.bugWorthyComment("Failed to write a plist")
+ localizedMessageLogger.error("WritingPlistFailed",
+ comment: comment,
+ context: config.projectName,
+ values: url.path)
+ return false
+ }
+ return true
+ }
+
private func createDirectory(_ resourceDirectoryURL: URL, failSilently: Bool = false) -> Bool {
do {
try fileManager.createDirectory(at: resourceDirectoryURL,
diff --git a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/ComplexSingleProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/ComplexSingleProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist
new file mode 100644
index 0000000..4cb2953
--- /dev/null
+++ b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/ComplexSingleProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>SchemeUserState</key>
+ <dict>
+ <key>Application.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <true/>
+ </dict>
+ <key>TodayExtension.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <true/>
+ </dict>
+ <key>XCTest.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <true/>
+ </dict>
+ <key>_idx_Scheme.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <false/>
+ </dict>
+ </dict>
+ <key>SuppressBuildableAutocreation</key>
+ <dict/>
+</dict>
+</plist>
diff --git a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/IosLegacyTestProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/IosLegacyTestProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist
new file mode 100644
index 0000000..920c087
--- /dev/null
+++ b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/IosLegacyTestProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>SchemeUserState</key>
+ <dict>
+ <key>LegacyTests.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <true/>
+ </dict>
+ <key>_idx_Scheme.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <false/>
+ </dict>
+ </dict>
+ <key>SuppressBuildableAutocreation</key>
+ <dict/>
+</dict>
+</plist>
diff --git a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/MacOSProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/MacOSProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist
new file mode 100644
index 0000000..26b8105
--- /dev/null
+++ b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/MacOSProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>SchemeUserState</key>
+ <dict>
+ <key>MyCommandLineApp.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <true/>
+ </dict>
+ <key>MyMacOSApp.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <true/>
+ </dict>
+ <key>MyTodayExtension.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <true/>
+ </dict>
+ <key>_idx_Scheme.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <false/>
+ </dict>
+ </dict>
+ <key>SuppressBuildableAutocreation</key>
+ <dict/>
+</dict>
+</plist>
diff --git a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/MacOSTestsProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/MacOSTestsProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist
new file mode 100644
index 0000000..9759e05
--- /dev/null
+++ b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/MacOSTestsProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>SchemeUserState</key>
+ <dict>
+ <key>MyMacOSApp.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <true/>
+ </dict>
+ <key>UITests.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <true/>
+ </dict>
+ <key>UnitTests.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <true/>
+ </dict>
+ <key>UnitTestsNoHost.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <true/>
+ </dict>
+ <key>_idx_Scheme.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <false/>
+ </dict>
+ </dict>
+ <key>SuppressBuildableAutocreation</key>
+ <dict/>
+</dict>
+</plist>
diff --git a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/SimpleCCProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/SimpleCCProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist
new file mode 100644
index 0000000..e43f539
--- /dev/null
+++ b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/SimpleCCProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>SchemeUserState</key>
+ <dict>
+ <key>_idx_Scheme.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <false/>
+ </dict>
+ <key>ccBinary.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <true/>
+ </dict>
+ </dict>
+ <key>SuppressBuildableAutocreation</key>
+ <dict/>
+</dict>
+</plist>
diff --git a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/SimpleProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/SimpleProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist
new file mode 100644
index 0000000..8286d52
--- /dev/null
+++ b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/SimpleProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>SchemeUserState</key>
+ <dict>
+ <key>Application.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <true/>
+ </dict>
+ <key>TargetApplication.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <true/>
+ </dict>
+ <key>XCTest.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <true/>
+ </dict>
+ <key>_idx_Scheme.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <false/>
+ </dict>
+ </dict>
+ <key>SuppressBuildableAutocreation</key>
+ <dict/>
+</dict>
+</plist>
diff --git a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/SimpleSkylarkProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/SimpleSkylarkProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist
new file mode 100644
index 0000000..84a71dd
--- /dev/null
+++ b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/SimpleSkylarkProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>SchemeUserState</key>
+ <dict>
+ <key>SkylarkApplication.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <true/>
+ </dict>
+ <key>SkylarkTargetApplication.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <true/>
+ </dict>
+ <key>StickerExtension.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <true/>
+ </dict>
+ <key>XCTest.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <true/>
+ </dict>
+ <key>XCUITest.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <true/>
+ </dict>
+ <key>_idx_Scheme.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <false/>
+ </dict>
+ </dict>
+ <key>SuppressBuildableAutocreation</key>
+ <dict/>
+</dict>
+</plist>
diff --git a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/SwiftProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/SwiftProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist
new file mode 100644
index 0000000..36e5e1f
--- /dev/null
+++ b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/SwiftProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>SchemeUserState</key>
+ <dict>
+ <key>Application.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <true/>
+ </dict>
+ <key>_idx_Scheme.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <false/>
+ </dict>
+ </dict>
+ <key>SuppressBuildableAutocreation</key>
+ <dict/>
+</dict>
+</plist>
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
new file mode 100644
index 0000000..39776d9
--- /dev/null
+++ b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>SchemeUserState</key>
+ <dict>
+ <key>LogicTest.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>
+ <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>
+ <dict>
+ <key>isShown</key>
+ <true/>
+ </dict>
+ <key>_idx_Scheme.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <false/>
+ </dict>
+ <key>explicit_XCTests_Suite.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <true/>
+ </dict>
+ </dict>
+ <key>SuppressBuildableAutocreation</key>
+ <dict/>
+</dict>
+</plist>
diff --git a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteLocalTaggedTestsProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteLocalTaggedTestsProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist
new file mode 100644
index 0000000..faf5c47
--- /dev/null
+++ b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteLocalTaggedTestsProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>SchemeUserState</key>
+ <dict>
+ <key>TestApplication.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <true/>
+ </dict>
+ <key>TestSuiteXCTest.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <true/>
+ </dict>
+ <key>_idx_Scheme.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <false/>
+ </dict>
+ <key>local_tagged_tests_Suite.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <true/>
+ </dict>
+ </dict>
+ <key>SuppressBuildableAutocreation</key>
+ <dict/>
+</dict>
+</plist>
diff --git a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteRecursiveTestSuiteProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteRecursiveTestSuiteProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist
new file mode 100644
index 0000000..62acbbe
--- /dev/null
+++ b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteRecursiveTestSuiteProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>SchemeUserState</key>
+ <dict>
+ <key>TestApplication.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <true/>
+ </dict>
+ <key>TestSuiteXCTest.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <true/>
+ </dict>
+ <key>_idx_Scheme.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <false/>
+ </dict>
+ <key>recursive_test_suite_Suite.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <true/>
+ </dict>
+ <key>tagged_tests_Suite.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <true/>
+ </dict>
+ <key>tagged_xctest_1.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <true/>
+ </dict>
+ <key>tagged_xctest_2.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <true/>
+ </dict>
+ </dict>
+ <key>SuppressBuildableAutocreation</key>
+ <dict/>
+</dict>
+</plist>
diff --git a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/WatchProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/WatchProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist
new file mode 100644
index 0000000..61b0f4a
--- /dev/null
+++ b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/WatchProject.xcodeproj/xcuserdata/_TEST_USER_.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>SchemeUserState</key>
+ <dict>
+ <key>Application.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <true/>
+ </dict>
+ <key>WatchApplication.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <true/>
+ </dict>
+ <key>WatchExtension.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <true/>
+ </dict>
+ <key>_idx_Scheme.xcscheme_^#shared#^_</key>
+ <dict>
+ <key>isShown</key>
+ <false/>
+ </dict>
+ </dict>
+ <key>SuppressBuildableAutocreation</key>
+ <dict/>
+</dict>
+</plist>
diff --git a/src/TulsiGeneratorTests/XcodeProjectGeneratorTests.swift b/src/TulsiGeneratorTests/XcodeProjectGeneratorTests.swift
index efa2e4b..7e3bd34 100644
--- a/src/TulsiGeneratorTests/XcodeProjectGeneratorTests.swift
+++ b/src/TulsiGeneratorTests/XcodeProjectGeneratorTests.swift
@@ -76,6 +76,9 @@
XCTAssert(writtenFiles.contains("\(xcodeProjectPath)/project.xcworkspace/xcuserdata/USER.xcuserdatad/WorkspaceSettings.xcsettings"))
XCTAssert(writtenFiles.contains("\(xcodeProjectPath)/xcshareddata/xcschemes/test-path-to-target-target.xcscheme"))
XCTAssert(writtenFiles.contains("\(xcodeProjectPath)/xcshareddata/xcschemes/test-MainTarget.xcscheme"))
+
+ let xcp = "\(xcodeProjectPath)/xcuserdata/USER.xcuserdatad/xcschemes/xcschememanagement.plist"
+ XCTAssert(mockFileManager.writeOperations.keys.contains(xcp))
} catch let e {
XCTFail("Unexpected exception \(e)")
}
@@ -315,6 +318,9 @@
let xcschemes = projectURL.appendingPathComponent("xcshareddata/xcschemes")
mockFileManager.allowedDirectoryCreates.insert(xcschemes.path)
+ let userXcschemes = projectURL.appendingPathComponent("xcuserdata/USER.xcuserdatad/xcschemes")
+ mockFileManager.allowedDirectoryCreates.insert(userXcschemes.path)
+
let scripts = projectURL.appendingPathComponent(".tulsi/Scripts")
mockFileManager.allowedDirectoryCreates.insert(scripts.path)