Skip to content

Conversation

@mirkokg
Copy link
Contributor

@mirkokg mirkokg commented Nov 21, 2025

Generate permanent references for PBXFileSystemSynchronizedExceptionSet objects, including build file and build phase exception sets. Updates tests to verify that references for exception sets are correctly converted to permanent values.

Resolves #934

Short description 📝

When creating projects with PBXFileSystemSynchronizedRootGroup objects that contain exception sets (PBXFileSystemSynchronizedBuildFileExceptionSet or PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet), the exception set IDs were being written with TEMP_ prefixes instead of proper deterministic IDs.

Solution 📦

Extended the ReferenceGenerator to process exception sets when generating references for synchronized root groups. Added a new generateExceptionSetReferences method that:

  1. Iterates through all exceptions in a PBXFileSystemSynchronizedRootGroup
  2. Generates deterministic IDs based on the exception type:
  • For PBXFileSystemSynchronizedBuildFileExceptionSet: uses the target reference as part of the identifier
  • For PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet: uses the build phase reference as part of the identifier

This follows the same pattern used for other object types in the reference generator.

Implementation 👩‍💻👨‍💻

  • Identified that PBXFileSystemSynchronizedRootGroup.exceptions were not being processed in ReferenceGenerator
  • Modified generateSynchronizedRootGroupReferences() to iterate through exception sets after fixing the root group reference
  • Added generateExceptionSetReferences() method to handle reference generation for exception set objects
  • Added unit tests to verify the functionality
  • Verified all tests pass with the changes
  • Confirmed no TEMP_ prefixes appear in generated project files

Generate permanent references for PBXFileSystemSynchronizedExceptionSet objects, including build file and build phase exception sets. Updates tests to verify that references for exception sets are correctly converted to permanent values.
@dosubot dosubot bot added the size:M This PR changes 30-99 lines, ignoring generated files. label Nov 21, 2025
@mirkokg
Copy link
Contributor Author

mirkokg commented Dec 15, 2025

@fortmarek @yonaskolb @pepicrft can someone please help with reviewing this? I would really appreciate it.

Copy link
Collaborator

@yonaskolb yonaskolb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me, thanks @mirkokg!

@dosubot dosubot bot added the lgtm This PR has been approved by a maintainer label Dec 16, 2025
@yonaskolb
Copy link
Collaborator

I'm not familiar with the CI workflows in this repo anymore but looks like there are just some formatting errors related to trailing spaces.

@mirkokg
Copy link
Contributor Author

mirkokg commented Dec 16, 2025

@yonaskolb I removed extra spaces. Thanks!

@mirkokg mirkokg requested a review from yonaskolb December 17, 2025 10:15
@pepicrft pepicrft changed the title Handle references for exception sets in Synchronized Groups feat: Handle references for exception sets in Synchronized Groups Dec 19, 2025
@pepicrft
Copy link
Contributor

Thanks @mirkokg. We can merge it once CI is green.

@pepicrft pepicrft merged commit 43e9792 into tuist:main Dec 19, 2025
5 of 7 checks passed
@dosubot
Copy link

dosubot bot commented Dec 19, 2025

Related Documentation

Checked 1 published document(s) in 1 knowledge base(s). No updates required.

How did I do? Any feedback?  Join Discord

@pepicrft
Copy link
Contributor

@mirkokg the changes have been released in 9.7.0

@mirkokg
Copy link
Contributor Author

mirkokg commented Dec 22, 2025

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lgtm This PR has been approved by a maintainer size:M This PR changes 30-99 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

The uuid of PBXFileSystemSynchronizedBuildFileExceptionSet is always "TEMP_xxx"

3 participants