From b262a09878b6ab67216f6d42321bf05240007736 Mon Sep 17 00:00:00 2001 From: Alan Date: Wed, 22 May 2019 15:34:21 +0200 Subject: [PATCH] fix(@angular-devkit/build-angular): dev-server port number mismatches in logs when using `port=0` Fixes #14499 --- .../build_angular/src/dev-server/index.ts | 3 +-- .../test/dev-server/works_spec_large.ts | 25 +++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/packages/angular_devkit/build_angular/src/dev-server/index.ts b/packages/angular_devkit/build_angular/src/dev-server/index.ts index ccdc5e23e150..f0679628691f 100644 --- a/packages/angular_devkit/build_angular/src/dev-server/index.ts +++ b/packages/angular_devkit/build_angular/src/dev-server/index.ts @@ -216,10 +216,9 @@ export function serveWebpackBrowser( if (first) { first = false; - context.logger.info(tags.oneLine` ** - Angular Live Development Server is listening on ${options.host}:${options.port}, + Angular Live Development Server is listening on ${options.host}:${buildEvent.port}, open your browser on ${serverAddress} ** `); diff --git a/packages/angular_devkit/build_angular/test/dev-server/works_spec_large.ts b/packages/angular_devkit/build_angular/test/dev-server/works_spec_large.ts index bcf0630404f5..bc95fcf69746 100644 --- a/packages/angular_devkit/build_angular/test/dev-server/works_spec_large.ts +++ b/packages/angular_devkit/build_angular/test/dev-server/works_spec_large.ts @@ -67,4 +67,29 @@ describe('Dev Server Builder', () => { expect(res).not.toContain('This file is automatically generated during release.'); expect(res).toContain('HelloWorldApp'); }); + + it('works with port 0', async () => { + const logger = new logging.Logger(''); + const logs: string[] = []; + logger.subscribe(e => logs.push(e.message)); + + const run = await architect.scheduleTarget(target, { port: 0 }, { logger }); + runs.push(run); + const output = await run.result as DevServerBuilderOutput; + expect(output.success).toBe(true); + + const groups = logs.join().match(/\:(\d+){4,6}/g); + if (!groups) { + throw new Error('Expected log to contain port number.'); + } + + // tests that both the ports in the logs are the same. + const [firstPort, secondPort] = groups; + expect(firstPort).toBe(secondPort); + + expect(output.baseUrl).toBe(`http://localhost${firstPort}/`); + const response = await fetch(`http://localhost${firstPort}/index.html`); + expect(await response.text()).toContain('HelloWorldApp'); + }); + });