| // Copyright (c) 2024, 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 'package:path/path.dart' as p; |
| import 'package:test/test.dart'; |
| |
| import '../utils.dart'; |
| |
| void main() { |
| compileFormatter(); |
| |
| group('stdin', () { |
| test('errors on --output=write', () async { |
| var process = await runFormatter(['--output=write']); |
| await process.shouldExit(64); |
| }); |
| |
| test('exits with 65 on parse error', () async { |
| var process = await runFormatter(); |
| process.stdin.writeln('herp derp i are a dart'); |
| await process.stdin.close(); |
| await process.shouldExit(65); |
| }); |
| |
| test('reads from stdin', () async { |
| var process = await runFormatter(); |
| process.stdin.writeln(unformattedSource); |
| await process.stdin.close(); |
| |
| // No trailing newline at the end. |
| await expectLater(process.stdout, emits(formattedOutput)); |
| await process.shouldExit(0); |
| }); |
| }); |
| |
| group('--stdin-name', () { |
| test('errors if also given path', () async { |
| var process = await runFormatter(['--stdin-name=name', 'path']); |
| await process.shouldExit(64); |
| }); |
| |
| test('used in error messages', () async { |
| var path = p.join('some', 'path.dart'); |
| var process = await runFormatter(['--stdin-name=$path']); |
| process.stdin.writeln('herp'); |
| await process.stdin.close(); |
| |
| expect( |
| await process.stderr.next, |
| 'Could not format because the source could not be parsed:', |
| ); |
| expect(await process.stderr.next, ''); |
| expect(await process.stderr.next, contains(path)); |
| await process.stderr.cancel(); |
| await process.shouldExit(65); |
| }); |
| }); |
| } |