Let the test folder add its own files - #163
Merged
Merged
Conversation
The app folders have been synchronized groups for a while, so adding a source file to the app takes no project edit. The test folder was still a hand written list, and every test or sample document we added cost four lines of made up object ids in project.pbxproj. Making it a synchronized group too ends that. Two things had to move out of the folder first, because a synchronized group copies everything left in it into the bundle: the fixture generator, now in scripts/, and Info.plist, which held nothing but build setting placeholders and is better generated. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Xryx81PvamT674wzzQujjg
andiwand
force-pushed
the
sync-the-test-folder
branch
from
August 16, 2026 15:09
9caa01b to
1ddc055
Compare
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.
A colleague suggested we generate the Xcode project with xcodegen instead of committing it. I looked into it and the trade doesn't work for us — Dependabot updates our Swift packages by editing
project.pbxprojdirectly,Package.resolvedlives inside the.xcodeprojso the pins would go with it, and xcodegen 2.41 doesn't know about synchronized folders, which is the mechanism that already keeps our project file quiet.What was left of the churn was one narrow thing, and this fixes that instead.
The app folders have been synchronized groups for a while, so adding a source file takes no project edit. The test folder was still a hand-written list, and every test or fixture we added cost four lines of made-up object ids —
8eba37e,c353ccc,589f4f7,d1956dfare all that and nothing else. It's a synchronized group now too.Two things had to move out of the folder first, since a synchronized group copies whatever is left in it into the bundle:
fixtures/make-fixtures.py→scripts/make-test-fixtures.py. It would otherwise be bundled as a resource, along with any__pycache__left behind by running it.Info.plistis gone, replaced byGENERATE_INFOPLIST_FILE. It held nothing but build-setting placeholders, and dropping it means the folder needs no membership exception.Checked:
.xctestholds exactly the six sample documents it held before — no strays, and the generated Info.plist carries the same identity keys the stub did.project.pbxproj, which is the whole point.test.pdfis byte-identical, and the zips differ only in timestamps.README updated — it documented "three folders, each a synchronized group", which is now four.
🤖 Generated with Claude Code