| // Copyright 2014 The Flutter 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 'dart:io' as io; | |
| import '../run_command.dart'; | |
| import '../utils.dart'; | |
| import 'common.dart'; | |
| void main() { | |
| // These tests only run on Linux. They test platform-agnostic code that is | |
| // triggered by platform-sensitive code. To avoid having to complicate our | |
| // test harness by using a mockable process manager, the tests rely on one | |
| // platform's conventions (Linux having `sh`). The logic being tested is not | |
| // so critical that it matters that we're only testing it on one platform. | |
| test('short output on runCommand failure', () async { | |
| final List<Object?> log = <String>[]; | |
| final PrintCallback oldPrint = print; | |
| print = log.add; | |
| try { | |
| await runCommand('/usr/bin/sh', <String>['-c', 'echo test; false']); | |
| expect(log, <Object>[ | |
| startsWith('RUNNING:'), | |
| 'workingDirectory: null, executable: /usr/bin/sh, arguments: [-c, echo test; false]', | |
| 'test', | |
| '╔═╡ERROR #1╞════════════════════════════════════════════════════════════════════', | |
| startsWith('║ Command: '), | |
| '║ Command exited with exit code 1 but expected zero exit code.', | |
| startsWith('║ Working directory: '), | |
| '║ stdout and stderr output:', | |
| '║ test', | |
| '║ ', | |
| '╚═══════════════════════════════════════════════════════════════════════════════', | |
| ]); | |
| } finally { | |
| print = oldPrint; | |
| resetErrorStatus(); | |
| } | |
| }, skip: !io.Platform.isLinux); // [intended] See comments above. | |
| test('long output on runCommand failure', () async { | |
| final List<Object?> log = <String>[]; | |
| final PrintCallback oldPrint = print; | |
| print = log.add; | |
| try { | |
| await runCommand('/usr/bin/sh', <String>['-c', 'echo ${"meow" * 1024}; false']); | |
| expect(log, <Object>[ | |
| startsWith('RUNNING:'), | |
| 'workingDirectory: null, executable: /usr/bin/sh, arguments: [-c, echo ${"meow" * 1024}; false]', | |
| 'meow' * 1024, | |
| '╔═╡ERROR #1╞════════════════════════════════════════════════════════════════════', | |
| startsWith('║ Command: '), | |
| '║ Command exited with exit code 1 but expected zero exit code.', | |
| startsWith('║ Working directory: '), | |
| '╚═══════════════════════════════════════════════════════════════════════════════', | |
| ]); | |
| } finally { | |
| print = oldPrint; | |
| resetErrorStatus(); | |
| } | |
| }, skip: !io.Platform.isLinux); // [intended] See comments above. | |
| } |