- Stop `findFirstAvailableOffset` only when a required port exceeds `MAX_PORT` - Add test covering offsets where only non-required ports are out of range
Unified · Split
| @@ -260,7 +260,13 @@ export async function findFirstAvailableOffset({ · 259 unmodified lines | ||
| 260 | 260 | }) { |
| 261 | 261 | for (let candidate = startOffset; ; candidate += 1) { |
| 262 | 262 | const { serverPort, webPort } = portPairForOffset(candidate); |
| 263 | − if (serverPort > MAX_PORT || webPort > MAX_PORT) { | |
| 263 | + const serverPortOutOfRange = serverPort > MAX_PORT; | |
| 264 | + const webPortOutOfRange = webPort > MAX_PORT; | |
| 265 | + if ( | |
| 266 | + (requireServerPort && serverPortOutOfRange) || | |
| 267 | + (requireWebPort && webPortOutOfRange) || | |
| 268 | + (!requireServerPort && !requireWebPort && (serverPortOutOfRange || webPortOutOfRange)) | |
| 269 | + ) { | |
| 264 | 270 | break; |
| 265 | 271 | } |
| 266 | 272 | |
| @@ -149,6 +149,17 @@ describe("findFirstAvailableOffset", () => { · 148 unmodified lines | ||
| 149 | 149 | |
| 150 | 150 | expect(offset).toBe(2); |
| 151 | 151 | }); |
| 152 | + | |
| 153 | + it("allows offsets where only non-required ports exceed max", async () => { | |
| 154 | + const offset = await findFirstAvailableOffset({ | |
| 155 | + startOffset: 59_803, | |
| 156 | + requireServerPort: true, | |
| 157 | + requireWebPort: false, | |
| 158 | + checkPortAvailability: async () => true, | |
| 159 | + }); | |
| 160 | + | |
| 161 | + expect(offset).toBe(59_803); | |
| 162 | + }); | |
| 152 | 163 | }); |
| 153 | 164 | |
| 154 | 165 | describe("resolveModePortOffsets", () => { |