diff --git a/script/tool/lib/src/analyze_command.dart b/script/tool/lib/src/analyze_command.dart index c8b576587d0..225e60cbc3d 100644 --- a/script/tool/lib/src/analyze_command.dart +++ b/script/tool/lib/src/analyze_command.dart @@ -5,7 +5,7 @@ import 'package:file/file.dart'; import 'package:yaml/yaml.dart'; -import 'common/core.dart'; +import 'common/output_utils.dart'; import 'common/package_looping_command.dart'; import 'common/repository_package.dart'; diff --git a/script/tool/lib/src/build_examples_command.dart b/script/tool/lib/src/build_examples_command.dart index 5b5866ec03b..728ac1172cd 100644 --- a/script/tool/lib/src/build_examples_command.dart +++ b/script/tool/lib/src/build_examples_command.dart @@ -6,6 +6,7 @@ import 'package:file/file.dart'; import 'package:yaml/yaml.dart'; import 'common/core.dart'; +import 'common/output_utils.dart'; import 'common/package_looping_command.dart'; import 'common/plugin_utils.dart'; import 'common/repository_package.dart'; diff --git a/script/tool/lib/src/common/cmake.dart b/script/tool/lib/src/common/cmake.dart index 3f5d8452bd4..7d11039edd2 100644 --- a/script/tool/lib/src/common/cmake.dart +++ b/script/tool/lib/src/common/cmake.dart @@ -6,6 +6,7 @@ import 'package:file/file.dart'; import 'package:platform/platform.dart'; import 'core.dart'; +import 'output_utils.dart'; import 'process_runner.dart'; const String _cacheCommandKey = 'CMAKE_COMMAND:INTERNAL'; diff --git a/script/tool/lib/src/common/core.dart b/script/tool/lib/src/common/core.dart index eb1a53240ae..96224f5b159 100644 --- a/script/tool/lib/src/common/core.dart +++ b/script/tool/lib/src/common/core.dart @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'package:colorize/colorize.dart'; import 'package:file/file.dart'; import 'package:pub_semver/pub_semver.dart'; @@ -69,16 +68,6 @@ bool isPackage(FileSystemEntity entity) { return entity.childFile('pubspec.yaml').existsSync(); } -/// Prints `successMessage` in green. -void printSuccess(String successMessage) { - print(Colorize(successMessage)..green()); -} - -/// Prints `errorMessage` in red. -void printError(String errorMessage) { - print(Colorize(errorMessage)..red()); -} - /// Error thrown when a command needs to exit with a non-zero exit code. /// /// While there is no specific definition of the meaning of different non-zero diff --git a/script/tool/lib/src/common/output_utils.dart b/script/tool/lib/src/common/output_utils.dart new file mode 100644 index 00000000000..7fd39f6854e --- /dev/null +++ b/script/tool/lib/src/common/output_utils.dart @@ -0,0 +1,44 @@ +// Copyright 2013 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'; + +import 'package:colorize/colorize.dart'; +import 'package:meta/meta.dart'; + +export 'package:colorize/colorize.dart' show Styles; + +/// True if color should be applied. +/// +/// Defaults to autodetecting stdout. +@visibleForTesting +bool useColorForOutput = stdout.supportsAnsiEscapes; + +String _colorizeIfAppropriate(String string, Styles color) { + if (!useColorForOutput) { + return string; + } + return Colorize(string).apply(color).toString(); +} + +/// Prints [message] in green, if the environment supports color. +void printSuccess(String message) { + print(_colorizeIfAppropriate(message, Styles.GREEN)); +} + +/// Prints [message] in yellow, if the environment supports color. +void printWarning(String message) { + print(_colorizeIfAppropriate(message, Styles.YELLOW)); +} + +/// Prints [message] in red, if the environment supports color. +void printError(String message) { + print(_colorizeIfAppropriate(message, Styles.RED)); +} + +/// Returns [message] with escapes to print it in [color], if the environment +/// supports color. +String colorizeString(String message, Styles color) { + return _colorizeIfAppropriate(message, color); +} diff --git a/script/tool/lib/src/common/package_command.dart b/script/tool/lib/src/common/package_command.dart index b9587ac2909..cbd97cb9e74 100644 --- a/script/tool/lib/src/common/package_command.dart +++ b/script/tool/lib/src/common/package_command.dart @@ -14,6 +14,7 @@ import 'package:yaml/yaml.dart'; import 'core.dart'; import 'git_version_finder.dart'; +import 'output_utils.dart'; import 'process_runner.dart'; import 'repository_package.dart'; diff --git a/script/tool/lib/src/common/package_looping_command.dart b/script/tool/lib/src/common/package_looping_command.dart index 73c8528520a..4ea71653bcc 100644 --- a/script/tool/lib/src/common/package_looping_command.dart +++ b/script/tool/lib/src/common/package_looping_command.dart @@ -4,12 +4,12 @@ import 'dart:async'; -import 'package:colorize/colorize.dart'; import 'package:file/file.dart'; import 'package:path/path.dart' as p; import 'package:pub_semver/pub_semver.dart'; import 'core.dart'; +import 'output_utils.dart'; import 'package_command.dart'; import 'repository_package.dart'; @@ -208,7 +208,7 @@ abstract class PackageLoopingCommand extends PackageCommand { /// messages. DO NOT RELY on someone noticing a warning; instead, use it for /// things that might be useful to someone debugging an unexpected result. void logWarning(String warningMessage) { - _printColorized(warningMessage, Styles.YELLOW); + printWarning(warningMessage); if (_currentPackageEntry != null) { _packagesWithWarnings.add(_currentPackageEntry!); } else { @@ -467,7 +467,7 @@ abstract class PackageLoopingCommand extends PackageCommand { } if (!captureOutput) { - summary = (Colorize(summary)..apply(style)).toString(); + summary = colorizeString(summary, style); } print(' ${entry.package.displayName} - $summary'); } @@ -500,7 +500,7 @@ abstract class PackageLoopingCommand extends PackageCommand { if (captureOutput) { print(message); } else { - print(Colorize(message)..apply(color)); + print(colorizeString(message, color)); } } diff --git a/script/tool/lib/src/common/xcode.dart b/script/tool/lib/src/common/xcode.dart index fc0fdbc1336..e26735df122 100644 --- a/script/tool/lib/src/common/xcode.dart +++ b/script/tool/lib/src/common/xcode.dart @@ -7,7 +7,7 @@ import 'dart:io' as io; import 'package:file/file.dart'; -import 'core.dart'; +import 'output_utils.dart'; import 'process_runner.dart'; const String _xcodeBuildCommand = 'xcodebuild'; diff --git a/script/tool/lib/src/create_all_packages_app_command.dart b/script/tool/lib/src/create_all_packages_app_command.dart index a30d1b909ff..061bc9915a7 100644 --- a/script/tool/lib/src/create_all_packages_app_command.dart +++ b/script/tool/lib/src/create_all_packages_app_command.dart @@ -11,6 +11,7 @@ import 'package:pubspec_parse/pubspec_parse.dart'; import 'common/core.dart'; import 'common/file_utils.dart'; +import 'common/output_utils.dart'; import 'common/package_command.dart'; import 'common/process_runner.dart'; import 'common/pub_utils.dart'; diff --git a/script/tool/lib/src/dart_test_command.dart b/script/tool/lib/src/dart_test_command.dart index 5968ec2c946..df0ee71400b 100644 --- a/script/tool/lib/src/dart_test_command.dart +++ b/script/tool/lib/src/dart_test_command.dart @@ -5,6 +5,7 @@ import 'package:file/file.dart'; import 'common/core.dart'; +import 'common/output_utils.dart'; import 'common/package_looping_command.dart'; import 'common/plugin_utils.dart'; import 'common/pub_utils.dart'; diff --git a/script/tool/lib/src/dependabot_check_command.dart b/script/tool/lib/src/dependabot_check_command.dart index 032ea32fca4..094385729e8 100644 --- a/script/tool/lib/src/dependabot_check_command.dart +++ b/script/tool/lib/src/dependabot_check_command.dart @@ -5,7 +5,7 @@ import 'package:file/file.dart'; import 'package:yaml/yaml.dart'; -import 'common/core.dart'; +import 'common/output_utils.dart'; import 'common/package_looping_command.dart'; import 'common/repository_package.dart'; diff --git a/script/tool/lib/src/drive_examples_command.dart b/script/tool/lib/src/drive_examples_command.dart index 24acb9b43e9..ac3e6f4407e 100644 --- a/script/tool/lib/src/drive_examples_command.dart +++ b/script/tool/lib/src/drive_examples_command.dart @@ -8,6 +8,7 @@ import 'dart:io'; import 'package:file/file.dart'; import 'common/core.dart'; +import 'common/output_utils.dart'; import 'common/package_looping_command.dart'; import 'common/plugin_utils.dart'; import 'common/repository_package.dart'; diff --git a/script/tool/lib/src/federation_safety_check_command.dart b/script/tool/lib/src/federation_safety_check_command.dart index ec4b98879d7..804ef8e3abc 100644 --- a/script/tool/lib/src/federation_safety_check_command.dart +++ b/script/tool/lib/src/federation_safety_check_command.dart @@ -6,9 +6,9 @@ import 'package:file/file.dart'; import 'package:path/path.dart' as p; import 'package:pub_semver/pub_semver.dart'; -import 'common/core.dart'; import 'common/file_utils.dart'; import 'common/git_version_finder.dart'; +import 'common/output_utils.dart'; import 'common/package_looping_command.dart'; import 'common/plugin_utils.dart'; import 'common/repository_package.dart'; diff --git a/script/tool/lib/src/firebase_test_lab_command.dart b/script/tool/lib/src/firebase_test_lab_command.dart index 07335959a2b..f4d96b5abd7 100644 --- a/script/tool/lib/src/firebase_test_lab_command.dart +++ b/script/tool/lib/src/firebase_test_lab_command.dart @@ -9,6 +9,7 @@ import 'package:uuid/uuid.dart'; import 'common/core.dart'; import 'common/gradle.dart'; +import 'common/output_utils.dart'; import 'common/package_looping_command.dart'; import 'common/plugin_utils.dart'; import 'common/repository_package.dart'; diff --git a/script/tool/lib/src/fix_command.dart b/script/tool/lib/src/fix_command.dart index a35508bcf8e..453434edc3d 100644 --- a/script/tool/lib/src/fix_command.dart +++ b/script/tool/lib/src/fix_command.dart @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'common/core.dart'; +import 'common/output_utils.dart'; import 'common/package_looping_command.dart'; import 'common/repository_package.dart'; diff --git a/script/tool/lib/src/format_command.dart b/script/tool/lib/src/format_command.dart index b7f1745f5e9..27309d2d175 100644 --- a/script/tool/lib/src/format_command.dart +++ b/script/tool/lib/src/format_command.dart @@ -10,6 +10,7 @@ import 'package:http/http.dart' as http; import 'package:meta/meta.dart'; import 'common/core.dart'; +import 'common/output_utils.dart'; import 'common/package_command.dart'; /// In theory this should be 8191, but in practice that was still resulting in diff --git a/script/tool/lib/src/gradle_check_command.dart b/script/tool/lib/src/gradle_check_command.dart index 6eaaa0308f0..7520bdf2da0 100644 --- a/script/tool/lib/src/gradle_check_command.dart +++ b/script/tool/lib/src/gradle_check_command.dart @@ -7,6 +7,7 @@ import 'package:meta/meta.dart'; import 'package:pub_semver/pub_semver.dart'; import 'common/core.dart'; +import 'common/output_utils.dart'; import 'common/package_looping_command.dart'; import 'common/plugin_utils.dart'; import 'common/repository_package.dart'; diff --git a/script/tool/lib/src/license_check_command.dart b/script/tool/lib/src/license_check_command.dart index dcc8c2711ce..5f01cca7b96 100644 --- a/script/tool/lib/src/license_check_command.dart +++ b/script/tool/lib/src/license_check_command.dart @@ -6,6 +6,7 @@ import 'package:file/file.dart'; import 'package:path/path.dart' as p; import 'common/core.dart'; +import 'common/output_utils.dart'; import 'common/package_command.dart'; const Set _codeFileExtensions = { diff --git a/script/tool/lib/src/lint_android_command.dart b/script/tool/lib/src/lint_android_command.dart index 8d82baf7152..ed9394b8dbb 100644 --- a/script/tool/lib/src/lint_android_command.dart +++ b/script/tool/lib/src/lint_android_command.dart @@ -4,6 +4,7 @@ import 'common/core.dart'; import 'common/gradle.dart'; +import 'common/output_utils.dart'; import 'common/package_looping_command.dart'; import 'common/plugin_utils.dart'; import 'common/repository_package.dart'; diff --git a/script/tool/lib/src/make_deps_path_based_command.dart b/script/tool/lib/src/make_deps_path_based_command.dart index 9561dbb45ea..63e83ccfe58 100644 --- a/script/tool/lib/src/make_deps_path_based_command.dart +++ b/script/tool/lib/src/make_deps_path_based_command.dart @@ -11,6 +11,7 @@ import 'package:yaml_edit/yaml_edit.dart'; import 'common/core.dart'; import 'common/git_version_finder.dart'; +import 'common/output_utils.dart'; import 'common/package_command.dart'; import 'common/repository_package.dart'; diff --git a/script/tool/lib/src/native_test_command.dart b/script/tool/lib/src/native_test_command.dart index 7d7bc0405e8..e9fc3cc9664 100644 --- a/script/tool/lib/src/native_test_command.dart +++ b/script/tool/lib/src/native_test_command.dart @@ -8,6 +8,7 @@ import 'package:meta/meta.dart'; import 'common/cmake.dart'; import 'common/core.dart'; import 'common/gradle.dart'; +import 'common/output_utils.dart'; import 'common/package_looping_command.dart'; import 'common/plugin_utils.dart'; import 'common/repository_package.dart'; diff --git a/script/tool/lib/src/podspec_check_command.dart b/script/tool/lib/src/podspec_check_command.dart index 31773122cd9..5968de5eaf8 100644 --- a/script/tool/lib/src/podspec_check_command.dart +++ b/script/tool/lib/src/podspec_check_command.dart @@ -8,6 +8,7 @@ import 'dart:io'; import 'package:file/file.dart'; import 'common/core.dart'; +import 'common/output_utils.dart'; import 'common/package_looping_command.dart'; import 'common/repository_package.dart'; diff --git a/script/tool/lib/src/publish_check_command.dart b/script/tool/lib/src/publish_check_command.dart index 79317323d66..ab7acedb8ee 100644 --- a/script/tool/lib/src/publish_check_command.dart +++ b/script/tool/lib/src/publish_check_command.dart @@ -9,7 +9,7 @@ import 'dart:io' as io; import 'package:http/http.dart' as http; import 'package:pub_semver/pub_semver.dart'; -import 'common/core.dart'; +import 'common/output_utils.dart'; import 'common/package_looping_command.dart'; import 'common/pub_utils.dart'; import 'common/pub_version_finder.dart'; diff --git a/script/tool/lib/src/publish_command.dart b/script/tool/lib/src/publish_command.dart index e8eadb7982e..eedea90e737 100644 --- a/script/tool/lib/src/publish_command.dart +++ b/script/tool/lib/src/publish_command.dart @@ -18,6 +18,7 @@ import 'package:yaml/yaml.dart'; import 'common/core.dart'; import 'common/file_utils.dart'; import 'common/git_version_finder.dart'; +import 'common/output_utils.dart'; import 'common/package_command.dart'; import 'common/package_looping_command.dart'; import 'common/pub_version_finder.dart'; diff --git a/script/tool/lib/src/pubspec_check_command.dart b/script/tool/lib/src/pubspec_check_command.dart index 976e6b70678..3c850b71d51 100644 --- a/script/tool/lib/src/pubspec_check_command.dart +++ b/script/tool/lib/src/pubspec_check_command.dart @@ -9,6 +9,7 @@ import 'package:pubspec_parse/pubspec_parse.dart'; import 'package:yaml/yaml.dart'; import 'common/core.dart'; +import 'common/output_utils.dart'; import 'common/package_looping_command.dart'; import 'common/repository_package.dart'; diff --git a/script/tool/lib/src/readme_check_command.dart b/script/tool/lib/src/readme_check_command.dart index 81f401510f1..471fed57ab0 100644 --- a/script/tool/lib/src/readme_check_command.dart +++ b/script/tool/lib/src/readme_check_command.dart @@ -6,6 +6,7 @@ import 'package:file/file.dart'; import 'package:yaml/yaml.dart'; import 'common/core.dart'; +import 'common/output_utils.dart'; import 'common/package_looping_command.dart'; import 'common/repository_package.dart'; diff --git a/script/tool/lib/src/update_dependency_command.dart b/script/tool/lib/src/update_dependency_command.dart index 106ff29743f..7f7c3c6d4ef 100644 --- a/script/tool/lib/src/update_dependency_command.dart +++ b/script/tool/lib/src/update_dependency_command.dart @@ -11,6 +11,7 @@ import 'package:pubspec_parse/pubspec_parse.dart'; import 'package:yaml_edit/yaml_edit.dart'; import 'common/core.dart'; +import 'common/output_utils.dart'; import 'common/package_looping_command.dart'; import 'common/pub_utils.dart'; import 'common/pub_version_finder.dart'; diff --git a/script/tool/lib/src/update_excerpts_command.dart b/script/tool/lib/src/update_excerpts_command.dart index b57f56b1886..9e270d6437c 100644 --- a/script/tool/lib/src/update_excerpts_command.dart +++ b/script/tool/lib/src/update_excerpts_command.dart @@ -9,7 +9,7 @@ import 'package:meta/meta.dart'; import 'package:yaml/yaml.dart'; import 'package:yaml_edit/yaml_edit.dart'; -import 'common/core.dart'; +import 'common/output_utils.dart'; import 'common/package_looping_command.dart'; import 'common/pub_utils.dart'; import 'common/repository_package.dart'; diff --git a/script/tool/lib/src/update_min_sdk_command.dart b/script/tool/lib/src/update_min_sdk_command.dart index fd4a344b683..e7a3218ea91 100644 --- a/script/tool/lib/src/update_min_sdk_command.dart +++ b/script/tool/lib/src/update_min_sdk_command.dart @@ -6,6 +6,7 @@ import 'package:pub_semver/pub_semver.dart'; import 'package:yaml_edit/yaml_edit.dart'; import 'common/core.dart'; +import 'common/output_utils.dart'; import 'common/package_looping_command.dart'; import 'common/repository_package.dart'; diff --git a/script/tool/lib/src/update_release_info_command.dart b/script/tool/lib/src/update_release_info_command.dart index 92d11082344..8ecc43aa302 100644 --- a/script/tool/lib/src/update_release_info_command.dart +++ b/script/tool/lib/src/update_release_info_command.dart @@ -7,8 +7,8 @@ import 'package:file/file.dart'; import 'package:pub_semver/pub_semver.dart'; import 'package:yaml_edit/yaml_edit.dart'; -import 'common/core.dart'; import 'common/git_version_finder.dart'; +import 'common/output_utils.dart'; import 'common/package_looping_command.dart'; import 'common/package_state_utils.dart'; import 'common/repository_package.dart'; diff --git a/script/tool/lib/src/version_check_command.dart b/script/tool/lib/src/version_check_command.dart index acaf510b7b8..c27a1ad33c4 100644 --- a/script/tool/lib/src/version_check_command.dart +++ b/script/tool/lib/src/version_check_command.dart @@ -8,8 +8,8 @@ import 'package:meta/meta.dart'; import 'package:path/path.dart' as p; import 'package:pub_semver/pub_semver.dart'; -import 'common/core.dart'; import 'common/git_version_finder.dart'; +import 'common/output_utils.dart'; import 'common/package_looping_command.dart'; import 'common/package_state_utils.dart'; import 'common/pub_version_finder.dart'; diff --git a/script/tool/lib/src/xcode_analyze_command.dart b/script/tool/lib/src/xcode_analyze_command.dart index f953bf879e3..e753ccb21fc 100644 --- a/script/tool/lib/src/xcode_analyze_command.dart +++ b/script/tool/lib/src/xcode_analyze_command.dart @@ -3,6 +3,7 @@ // found in the LICENSE file. import 'common/core.dart'; +import 'common/output_utils.dart'; import 'common/package_looping_command.dart'; import 'common/plugin_utils.dart'; import 'common/repository_package.dart'; diff --git a/script/tool/test/common/output_utils_test.dart b/script/tool/test/common/output_utils_test.dart new file mode 100644 index 00000000000..757202380c5 --- /dev/null +++ b/script/tool/test/common/output_utils_test.dart @@ -0,0 +1,100 @@ +// Copyright 2013 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:async'; +import 'dart:io'; + +import 'package:flutter_plugin_tools/src/common/output_utils.dart'; +import 'package:test/test.dart'; + +void main() { + group('with color support', () { + setUp(() { + useColorForOutput = true; + }); + + tearDown(() { + useColorForOutput = stdout.supportsAnsiEscapes; + }); + + test('colorize works', () async { + const String message = 'a message'; + + expect( + colorizeString(message, Styles.MAGENTA), '\x1B[35m$message\x1B[0m'); + }); + + test('printSuccess is green', () async { + const String message = 'a message'; + + expect(await _capturePrint(() => printSuccess(message)), + '\x1B[32m$message\x1B[0m'); + }); + + test('printWarning is yellow', () async { + const String message = 'a message'; + + expect(await _capturePrint(() => printWarning(message)), + '\x1B[33m$message\x1B[0m'); + }); + + test('printError is red', () async { + const String message = 'a message'; + + expect(await _capturePrint(() => printError(message)), + '\x1B[31m$message\x1B[0m'); + }); + }); + + group('without color support', () { + setUp(() { + useColorForOutput = false; + }); + + tearDown(() { + useColorForOutput = stdout.supportsAnsiEscapes; + }); + + test('colorize no-ops', () async { + const String message = 'a message'; + + expect(colorizeString(message, Styles.MAGENTA), message); + }); + + test('printSuccess just prints', () async { + const String message = 'a message'; + + expect(await _capturePrint(() => printSuccess(message)), message); + }); + + test('printWarning just prints', () async { + const String message = 'a message'; + + expect(await _capturePrint(() => printWarning(message)), message); + }); + + test('printError just prints', () async { + const String message = 'a message'; + + expect(await _capturePrint(() => printError(message)), message); + }); + }); +} + +/// Run the command [runner] with the given [args] and return +/// what was printed. +/// A custom [errorHandler] can be used to handle the runner error as desired without throwing. +Future _capturePrint(void Function() printFunction) async { + final StringBuffer output = StringBuffer(); + final ZoneSpecification spec = ZoneSpecification( + print: (_, __, ___, String message) { + output.write(message); + }, + ); + await Zone.current + .fork(specification: spec) + .run>(() async => printFunction()); + + return output.toString(); +} diff --git a/script/tool/test/common/package_looping_command_test.dart b/script/tool/test/common/package_looping_command_test.dart index d63b4344f37..96ef53c48e4 100644 --- a/script/tool/test/common/package_looping_command_test.dart +++ b/script/tool/test/common/package_looping_command_test.dart @@ -9,6 +9,7 @@ import 'package:args/command_runner.dart'; import 'package:file/file.dart'; import 'package:file/memory.dart'; import 'package:flutter_plugin_tools/src/common/core.dart'; +import 'package:flutter_plugin_tools/src/common/output_utils.dart'; import 'package:flutter_plugin_tools/src/common/package_looping_command.dart'; import 'package:mockito/mockito.dart'; import 'package:test/test.dart'; @@ -82,6 +83,8 @@ void main() { late Directory thirdPartyPackagesDir; setUp(() { + // Correct color handling is part of the behavior being tested here. + useColorForOutput = true; fileSystem = MemoryFileSystem(); mockPlatform = MockPlatform(); packagesDir = createPackagesDirectory(fileSystem: fileSystem); @@ -90,6 +93,11 @@ void main() { .childDirectory('packages'); }); + tearDown(() { + // Restore the default behavior. + useColorForOutput = io.stdout.supportsAnsiEscapes; + }); + /// Creates a TestPackageLoopingCommand instance that uses [gitDiffResponse] /// for git diffs, and logs output to [printOutput]. TestPackageLoopingCommand createTestCommand({ diff --git a/script/tool/test/publish_command_test.dart b/script/tool/test/publish_command_test.dart index c8c14a6eaaf..3af74a1607b 100644 --- a/script/tool/test/publish_command_test.dart +++ b/script/tool/test/publish_command_test.dart @@ -525,8 +525,8 @@ void main() { 'Publishing all packages that have changed relative to "HEAD~"'), contains('Running `pub publish ` in ${plugin1.path}...'), contains('Running `pub publish ` in ${plugin2.path}...'), - contains('plugin1 - \x1B[32mpublished\x1B[0m'), - contains('plugin2/plugin2 - \x1B[32mpublished\x1B[0m'), + contains('plugin1 - published'), + contains('plugin2/plugin2 - published'), ])); expect( processRunner.recordedCalls,