authorgravatar for julius0216@outlook.comJulius Marminge <julius0216@outlook.com> 2026-03-01 23:51:07-08:00
committergravatar for jmarminge@gmail.comJulius Marminge <jmarminge@gmail.com> 2026-03-01 23:53:31-08:00
log9f068356a40ac259f7a074c2bec67d0d6bfe703a
treefb96fda58ee560fe618f056a614345b1565e666e
parentf239c90628cefc37f07ed93783a8404fe3f3f8b3

Allow non-required dev ports to exceed max in offset search

- Stop `findFirstAvailableOffset` only when a required port exceeds `MAX_PORT` - Add test covering offsets where only non-required ports are out of range

2 files changed, 18 insertions(+), 1 deletions(-)

scripts/dev-runner.mjs+7-1
......@@ -260,7 +260,13 @@ export async function findFirstAvailableOffset({
260260}) {
261261 for (let candidate = startOffset; ; candidate += 1) {
262262 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 ) {
264270 break;
265271 }
266272
scripts/dev-runner.test.ts+11
......@@ -149,6 +149,17 @@ describe("findFirstAvailableOffset", () => {
149149
150150 expect(offset).toBe(2);
151151 });
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 });
152163});
153164
154165describe("resolveModePortOffsets", () => {