| // Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file | |
| // for details. All rights reserved. Use of this source code is governed by a | |
| // BSD-style license that can be found in the LICENSE file. | |
| import 'dart:convert'; | |
| import 'package:test/test.dart'; | |
| import '../utils.dart'; | |
| void main() { | |
| group('debug_adapter', debugAdapter, timeout: longTimeout); | |
| } | |
| void debugAdapter() { | |
| // Implementation of debug_adapter is tested in the DDS package where the | |
| // DAP implementation lives. | |
| for (final commandName in ['debug-adapter', 'debug_adapter']) { | |
| test('$commandName --help', () async { | |
| final p = project(); | |
| var result = await p.run([commandName, '--help']); | |
| expect( | |
| result.stdout, | |
| contains( | |
| 'Start a debug adapter that conforms to the Debug Adapter Protocol.', | |
| ), | |
| ); | |
| expect( | |
| result.stdout, | |
| contains('Whether to use the "dart test" debug adapter to run tests'), | |
| ); | |
| expect(result.stderr, isEmpty); | |
| expect(result.exitCode, 0); | |
| }); | |
| test('$commandName invalid input provides a suitable message', () async { | |
| final p = project(); | |
| final process = await p.start([commandName]); | |
| // Capture stderr | |
| final errorOutput = StringBuffer(); | |
| process.stderr.transform(utf8.decoder).listen(errorOutput.write); | |
| // Write invalid headers and await quit. | |
| process.stdin.write('foo\r\nbar\r\n\r\n'); | |
| await process.exitCode; | |
| expect( | |
| errorOutput.toString(), | |
| allOf( | |
| contains('Input could not be parsed'), | |
| contains('is intended for use by tooling'), | |
| contains('foo\r\nbar'), | |
| ), | |
| ); | |
| }); | |
| } | |
| } |