Open
Conversation
- Reorder TestAction children: MacroExpansion, CommandLineArguments, EnvironmentVariables now precede TestPlans and Testables - Reorder LaunchAction children: CommandLineArguments and EnvironmentVariables now precede LocationScenarioReference - Omit empty Testables and CommandLineArguments elements instead of writing empty XML tags - Only write runPostActionsOnFailure, onlyGenerateCoverageForSpecifiedTargets, and useTestSelectionWhitelist attributes when true (Xcode strips the redundant "NO" default) - Fix useTestSelectionWhitelist parsing to distinguish absent (nil) from explicitly set to "NO" - Add TestPlanReference to attribute ordering (reference before default) - Add customLaunchCommand to LaunchAction attribute ordering (between debugDocumentVersioning and debugServiceExtension) - Update test fixtures to match new serialization output Made-with: Cursor
- Add `xctestplan` → `text` to the file type table so `.xctestplan` references get `lastKnownFileType = text` - Skip serializing `explicitFileTypes` and `explicitFolders` on `PBXFileSystemSynchronizedRootGroup` when empty - Omit `name` from `PBXFileSystemSynchronizedRootGroup` when it is identical to `path`, matching Xcode's normalization Made-with: Cursor
…ptionSet classes Introduce a `plistComment` property on `PBXFileSystemSynchronizedExceptionSet` (base, returns ISA) and override it in subclasses to produce Xcode 26.3's format: `Exceptions for "<folder>" folder in "<target>" target`. The back-reference to the owning root group is established via an `assignParentToChildren()` override, consistent with how `PBXFileElement.parent` is wired up for the group hierarchy. Made-with: Cursor
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Updates xcscheme and pbxproj serialization to better match the format written by Xcode 26.3.
Short description 📝
Opening projects generated with XcodeProj creates diffs in the generated files. I understand this is an endless cat-and-mice game, but thought it's generally a design aspect of this project, to get as close to what Xcode does as possible. As such, I've taken the chance and addressed the things that came to my attention, with absolutely no guarantee these are complete or anything. They just address the issues I've ran into.
Solution 📦
The changes are mostly just formatting fixes, some default value changes and one minor code extension to comments generated for synchronized folder exceptions.
Implementation 👩💻👨💻
Changes to XCScheme
Changes to PBXProj
xctestplan→textto the file type table so.xctestplanreferences getlastKnownFileType = textexplicitFileTypesandexplicitFoldersonPBXFileSystemSynchronizedRootGroupnamefromPBXFileSystemSynchronizedRootGroupwhen it is identical topath, matching Xcode's normalizationNotes 📝
The very last change is a bit more complex, since the comments need more info than currently present in the classes. Introduce a
plistCommentproperty onPBXFileSystemSynchronizedExceptionSet(base, returns ISA) and override it in subclasses to produce Xcode 26.3's format:Exceptions for "<folder>" folder in "<target>" target. The back-reference to the owning root group is established via anassignParentToChildren()override, consistent with howPBXFileElement.parentis wired up for the group hierarchy.I've also updated tests and hope the changes match the projects style. Happy to make any changes as needed.