Repository navigation
fix: preserve trailing blank line in apply_patch - #42084
Closed
codeAnqiang-ma wants to merge 1 commit into
Closed
codeAnqiang-ma wants to merge 1 commit into
codeAnqiang-ma wants to merge 1 commit into
Conversation
Co-authored-by: Cursor <[email protected]>
Contributor
|
Automated PR Cleanup Thank you for contributing to opencode. Due to the high volume of PRs from users and AI agents, we periodically close older PRs using automated criteria so maintainers can focus review time on the most active and community-supported contributions. This PR was closed because it matched the following cleanup criteria:
PRs created within the last month are not affected by this cleanup. If you believe this PR was closed incorrectly, or if you are still actively working on it, please leave a comment explaining why it should be reopened. A maintainer can review and reopen it if appropriate. Thanks again for taking the time to contribute. |
3 of 6 tasks
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.
Issue for this PR
Fixes #42081
Type of change
What does this PR do?
apply_patchsilently deletes the final blank line of any file ending with\n\n, even when the patch doesn't touch it (#42081).Both patch implementations pop the sentinel
""thatsplit("\n")produces when content ends with a newline, then later re-check "is the last element empty" to decide whether to push the sentinel back. A genuinely blank last line also leaves""at the end, so the sentinel is never restored and one\nis lost on every edit.The fix records whether the sentinel was actually popped and reuses that on the way out instead of re-inferring it. Applied to
derive()inpackages/core/src/patch.tsandderiveNewContentsFromChunks()inpackages/opencode/src/patch/index.ts. Files without a trailing newline keep the existing "always add one" behavior; this PR only fixes the unrequested deletion.Disclosure: developed with AI assistance; I reviewed and verified everything locally.
How did you verify your code works?
Added one regression test per implementation, next to the existing cases; both fail before the fix and pass after:
packages/core/test/tool-apply-patch.test.ts: end-to-end through the tool. Filealpha\nbeta\n\n, patch changes onlyalpha; assertsALPHA\nbeta\n\non disk and a 1 addition / 1 deletion diff (before the fix:ALPHA\nbeta\nand 1/2).packages/opencode/test/patch/patch.test.ts: same scenario throughPatch.applyPatch.Test runs:
packages/core: fullbun test— 1081 tests, 1079 pass; the 2 failures are pre-existing flakyNpm.addtimeouts unrelated to this change (they pass when the file is run individually, both before and after the fix).packages/opencode:bun test test/patch/patch.test.ts test/tool/apply_patch.test.ts— 48 pass. I did not run this package's full suite.bun typecheckpasses in both packages.Screenshots / recordings
Not a UI change.
Checklist