| // 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(); |
| } |
| }); |
| }); |
| } |