mirror of
https://github.com/oven-sh/bun
synced 2026-02-09 10:28:47 +00:00
## Summary This PR improves the correctness of bin linking by atomically normalizing `\r\n` to `\n` in shebang lines when linking bins. ### Changes - **Refactored shebang normalization in `src/install/bin.zig`**: - Extracted logic into separate `tryNormalizeShebang` function - Changed from in-place file modification to atomic file replacement - Reads entire file, creates temporary file with corrected shebang, then atomically renames - Properly cleans up temporary files on errors - **Added test coverage**: - New test file `test/cli/install/shebang-normalize.test.ts` verifies CRLF normalization works correctly - Modified existing test in `bun-link.test.ts` to use Python script with CRLF shebang ### Why The previous implementation modified files in-place by seeking to the `\r` position and overwriting with `\n`. This could potentially corrupt files if interrupted mid-write. The new atomic approach ensures file integrity by writing to a temporary file first, then renaming it to replace the original. ## Test plan - ✅ `bun bd test test/cli/install/shebang-normalize.test.ts` - passes - ✅ Verified bins with CRLF shebangs are normalized to LF during linking - ✅ Code compiles successfully 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Bot <claude-bot@bun.sh> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
2.0 KiB
2.0 KiB