| // Copyright 2024 The Chromium Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| import 'package:dds/devtools_server.dart'; | |
| import 'package:test/test.dart'; | |
| import 'utils/server_driver.dart'; | |
| void main() { | |
| const dtdUriSwitch = '--${DevToolsServer.argDtdUri}'; | |
| const dtdExposedUriSwitch = '--${DevToolsServer.argDtdExposedUri}'; | |
| group('Dart Tooling Daemon connection', () { | |
| test('does not start DTD when a DTD uri is passed as an argument', | |
| () async { | |
| final server = await DevToolsServerDriver.create( | |
| additionalArgs: ['$dtdUriSwitch=ws://localhost:123/'], | |
| ); | |
| try { | |
| // Ensure the event does not arrive within some reasonable amount of | |
| // time. | |
| final dtdStartedEvent = await server.stdout | |
| .firstWhere( | |
| (map) => map!['event'] == 'server.dtdStarted', | |
| orElse: () => null, | |
| ) | |
| .timeout( | |
| Duration(seconds: 3), | |
| onTimeout: () => null, | |
| ); | |
| expect(dtdStartedEvent, isNull); | |
| } finally { | |
| server.kill(); | |
| } | |
| }); | |
| test('starts DTD when no DTD uri is passed as an argument', () async { | |
| final server = await DevToolsServerDriver.create(); | |
| try { | |
| final dtdStartedEvent = await server.stdout.firstWhere( | |
| (map) => map!['event'] == 'server.dtdStarted', | |
| orElse: () => null, | |
| ); | |
| expect(dtdStartedEvent, isNotNull); | |
| } finally { | |
| server.kill(); | |
| } | |
| }); | |
| test('rejects invalid URIs for --dtd-uri', () async { | |
| final server = await DevToolsServerDriver.create( | |
| additionalArgs: ['$dtdUriSwitch=some_uri'], | |
| ); | |
| try { | |
| final firstLine = await server.stdoutRaw.first; | |
| expect(firstLine, '$dtdUriSwitch must be a valid URI'); | |
| } finally { | |
| server.kill(); | |
| } | |
| }); | |
| test('rejects invalid URIs for --dtd-exposed-uri', () async { | |
| final server = await DevToolsServerDriver.create( | |
| additionalArgs: [ | |
| '$dtdUriSwitch=ws://localhost:123/', | |
| '$dtdExposedUriSwitch=some_uri' | |
| ], | |
| ); | |
| try { | |
| final firstLine = await server.stdoutRaw.first; | |
| expect(firstLine, '$dtdExposedUriSwitch must be a valid URI'); | |
| } finally { | |
| server.kill(); | |
| } | |
| }); | |
| test('rejects --dtd-exposed-uri without --dtd-uri', () async { | |
| final server = await DevToolsServerDriver.create( | |
| additionalArgs: ['$dtdExposedUriSwitch=some_uri'], | |
| ); | |
| try { | |
| final firstLine = await server.stdoutRaw.first; | |
| expect(firstLine, | |
| '$dtdExposedUriSwitch can only be supplied with $dtdUriSwitch'); | |
| } finally { | |
| server.kill(); | |
| } | |
| }); | |
| }); | |
| } |