diff --git a/lib/src/command/barback.dart b/lib/src/command/barback.dart
index 4a9e296..505f111 100644
--- a/lib/src/command/barback.dart
+++ b/lib/src/command/barback.dart
@@ -83,6 +83,11 @@
     log.json.enabled =
         argResults.options.contains("format") && argResults["format"] == "json";
 
+    log.warning(
+        log.yellow("Dart 2 will have a new build system. Learn how to migrate "
+            "from ${log.bold('pub build')} and\n"
+            "${log.bold('pub serve')}: https://webdev.dartlang.org/dart-2\n"));
+
     _parseSourceDirectories();
     return onRunTransformerCommand();
   }
diff --git a/lib/src/log.dart b/lib/src/log.dart
index e744a49..4fc4b81 100644
--- a/lib/src/log.dart
+++ b/lib/src/log.dart
@@ -491,33 +491,46 @@
 /// that supports that.
 ///
 /// Use this to highlight something interesting but neither good nor bad.
-String cyan(text) => sparkle ? "$text" : "$_cyan$text$_noColor";
+String cyan(text) => _addColor(text, _cyan);
 
 /// Wraps [text] in the ANSI escape codes to color it green when on a platform
 /// that supports that.
 ///
 /// Use this to highlight something successful or otherwise positive.
-String green(text) => sparkle ? "$text" : "$_green$text$_noColor";
+String green(text) => _addColor(text, _green);
 
 /// Wraps [text] in the ANSI escape codes to color it magenta when on a
 /// platform that supports that.
 ///
 /// Use this to highlight something risky that the user should be aware of but
 /// may intend to do.
-String magenta(text) => sparkle ? "$text" : "$_magenta$text$_noColor";
+String magenta(text) => _addColor(text, _magenta);
 
 /// Wraps [text] in the ANSI escape codes to color it red when on a platform
 /// that supports that.
 ///
 /// Use this to highlight unequivocal errors, problems, or failures.
-String red(text) => sparkle ? "$text" : "$_red$text$_noColor";
+String red(text) => _addColor(text, _red);
 
 /// Wraps [text] in the ANSI escape codes to color it yellow when on a platform
 /// that supports that.
 ///
 /// Use this to highlight warnings, cautions or other things that are bad but
 /// do not prevent the user's goal from being reached.
-String yellow(text) => sparkle ? "$text" : "$_yellow$text$_noColor";
+String yellow(text) => _addColor(text, _yellow);
+
+/// Returns [text] colored using the given [colorCode].
+///
+/// This is resilient to the text containing other colors or bold text.
+String _addColor(Object text, String colorCode) {
+  if (sparkle) return text.toString();
+  return colorCode +
+      text
+          .toString()
+          .replaceAll(_none, _none + colorCode)
+          .replaceAll(_noColor, _none + colorCode) +
+      _noColor;
+}
 
 /// Log function that prints the message to stdout.
 void _logToStdout(Entry entry) {
diff --git a/test/barback/utils.dart b/test/barback/utils.dart
index 956406d..69ccfe3 100644
--- a/test/barback/utils.dart
+++ b/test/barback/utils.dart
@@ -37,9 +37,12 @@
   Object serveExpectation = serveError;
   if (exitCode == exit_codes.USAGE) {
     buildExpectation =
-        allOf(startsWith(buildExpectation), contains("Usage: pub build"));
+        allOf(contains(buildExpectation), contains("Usage: pub build"));
     serveExpectation =
-        allOf(startsWith(serveExpectation), contains("Usage: pub serve"));
+        allOf(contains(serveExpectation), contains("Usage: pub serve"));
+  } else {
+    buildExpectation = contains(buildExpectation);
+    serveExpectation = contains(serveExpectation);
   }
 
   test("build fails $description", () {
diff --git a/test/compiler/does_not_support_invalid_command_line_options_type_test.dart b/test/compiler/does_not_support_invalid_command_line_options_type_test.dart
index a7827f6..f6d3554 100644
--- a/test/compiler/does_not_support_invalid_command_line_options_type_test.dart
+++ b/test/compiler/does_not_support_invalid_command_line_options_type_test.dart
@@ -30,10 +30,10 @@
     await requestShould404("main.dart.js");
     expect(
         server.stderr,
-        emitsLines('Build error:\n'
+        emitsThrough(emitsLines('Build error:\n'
             'Transform Dart2JS on myapp|web/main.dart threw error: '
             'Invalid value for \$dart2js.commandLineOptions: '
-            '"foo" (expected list of strings).'));
+            '"foo" (expected list of strings).')));
     await endPubServe();
   });
 }
diff --git a/test/compiler/does_not_support_invalid_environment_type_test.dart b/test/compiler/does_not_support_invalid_environment_type_test.dart
index efbb074..0093464 100644
--- a/test/compiler/does_not_support_invalid_environment_type_test.dart
+++ b/test/compiler/does_not_support_invalid_environment_type_test.dart
@@ -30,10 +30,10 @@
     await requestShould404("main.dart.js");
     expect(
         server.stderr,
-        emitsLines('Build error:\n'
+        emitsThrough(emitsLines('Build error:\n'
             'Transform Dart2JS on myapp|web/main.dart threw error: '
             'Invalid value for \$dart2js.environment: "foo" '
-            '(expected map from strings to strings).'));
+            '(expected map from strings to strings).')));
     await endPubServe();
   });
 }
diff --git a/test/compiler/does_not_support_invalid_option_test.dart b/test/compiler/does_not_support_invalid_option_test.dart
index 7bf1642..3a3e7d7 100644
--- a/test/compiler/does_not_support_invalid_option_test.dart
+++ b/test/compiler/does_not_support_invalid_option_test.dart
@@ -28,8 +28,8 @@
     // TODO(nweiz): This should provide more context about how the option got
     // passed to dart2js. See issue 16008.
     var pub = await startPubServe();
-    await expect(
-        pub.stderr, emits('Unrecognized dart2js option "invalidOption".'));
+    await expect(pub.stderr,
+        emitsThrough('Unrecognized dart2js option "invalidOption".'));
     await pub.shouldExit(exit_codes.DATA);
   });
 }
diff --git a/test/compiler/doesnt_support_invalid_type_for_boolean_option_test.dart b/test/compiler/doesnt_support_invalid_type_for_boolean_option_test.dart
index a4654b7..ee727ea 100644
--- a/test/compiler/doesnt_support_invalid_type_for_boolean_option_test.dart
+++ b/test/compiler/doesnt_support_invalid_type_for_boolean_option_test.dart
@@ -29,10 +29,10 @@
     await requestShould404("main.dart.js");
     expect(
         server.stderr,
-        emitsLines('Build error:\n'
+        emitsThrough(emitsLines('Build error:\n'
             'Transform Dart2JS on myapp|web/main.dart threw error: '
             'Invalid value for \$dart2js.checked: "foo" '
-            '(expected true or false).'));
+            '(expected true or false).')));
     await endPubServe();
   });
 }
diff --git a/test/compiler/reports_dart_parse_errors_test.dart b/test/compiler/reports_dart_parse_errors_test.dart
index 1c7bced..cf66716 100644
--- a/test/compiler/reports_dart_parse_errors_test.dart
+++ b/test/compiler/reports_dart_parse_errors_test.dart
@@ -107,5 +107,6 @@
 
   // It's nondeterministic what order the dart2js transformers start running,
   // so we allow the error messages to be emitted in either order.
-  await expectLater(pub.stderr, emitsInAnyOrder([consumeFile, consumeSubfile]));
+  await expectLater(
+      pub.stderr, emitsThrough(emitsInAnyOrder([consumeFile, consumeSubfile])));
 }
diff --git a/test/transformer/a_transformer_rejects_its_config_test.dart b/test/transformer/a_transformer_rejects_its_config_test.dart
index 7491eef..de1e06a 100644
--- a/test/transformer/a_transformer_rejects_its_config_test.dart
+++ b/test/transformer/a_transformer_rejects_its_config_test.dart
@@ -46,7 +46,7 @@
     var pub = await startPubServe();
     expect(
         pub.stderr,
-        emits(endsWith('Error loading transformer: I hate these '
+        emitsThrough(endsWith('Error loading transformer: I hate these '
             'settings!')));
     await pub.shouldExit(1);
   });
diff --git a/test/transformer/asset_not_found_exceptions_are_detectable_test.dart b/test/transformer/asset_not_found_exceptions_are_detectable_test.dart
index 6413744..7f19996 100644
--- a/test/transformer/asset_not_found_exceptions_are_detectable_test.dart
+++ b/test/transformer/asset_not_found_exceptions_are_detectable_test.dart
@@ -59,6 +59,6 @@
 
     // Since the AssetNotFoundException was caught and handled, the server
     // shouldn't print any error information for it.
-    expect(server.stderr, emitsDone);
+    expect(server.stderr, neverEmits(contains("nonexistent")));
   });
 }
diff --git a/test/transformer/can_log_messages_test.dart b/test/transformer/can_log_messages_test.dart
index c4ceb82..81c176e 100644
--- a/test/transformer/can_log_messages_test.dart
+++ b/test/transformer/can_log_messages_test.dart
@@ -61,10 +61,10 @@
 [Rewrite on myapp|web/foo.txt]:
 info!"""));
 
-    expect(pub.stderr, emitsLines("""
+    expect(pub.stderr, emitsThrough(emitsLines("""
 [Rewrite on myapp|web/foo.txt with input myapp|web/foo.foo]:
 Warning!
-[Rewrite on myapp|web/foo.txt]:"""));
+[Rewrite on myapp|web/foo.txt]:""")));
 
     // The details of the analyzer's error message change pretty frequently,
     // so instead of validating the entire line, just look for a couple of
diff --git a/test/transformer/fails_to_load_a_file_that_defines_no_transforms_test.dart b/test/transformer/fails_to_load_a_file_that_defines_no_transforms_test.dart
index b42ec10..12e8255 100644
--- a/test/transformer/fails_to_load_a_file_that_defines_no_transforms_test.dart
+++ b/test/transformer/fails_to_load_a_file_that_defines_no_transforms_test.dart
@@ -23,7 +23,8 @@
 
     await pubGet();
     var pub = await startPubServe();
-    expect(pub.stderr, emits(startsWith('No transformers were defined in ')));
+    expect(pub.stderr,
+        emitsThrough(startsWith('No transformers were defined in ')));
     expect(pub.stderr, emits(startsWith('required by myapp.')));
     expect(pub.stderrStream(),
         neverEmits(contains('This is an unexpected error')));
diff --git a/test/transformer/fails_to_load_a_non_existent_transform_test.dart b/test/transformer/fails_to_load_a_non_existent_transform_test.dart
index 9d61745..281d1f8 100644
--- a/test/transformer/fails_to_load_a_non_existent_transform_test.dart
+++ b/test/transformer/fails_to_load_a_non_existent_transform_test.dart
@@ -19,8 +19,10 @@
 
     await pubGet();
     var pub = await startPubServe();
-    expect(pub.stderr,
-        emits('Transformer library "package:myapp/transform.dart" not found.'));
+    expect(
+        pub.stderr,
+        emitsThrough(
+            'Transformer library "package:myapp/transform.dart" not found.'));
     await pub.shouldExit(1);
   });
 }
diff --git a/test/transformer/fails_to_load_a_pubspec_with_reserved_transformer_test.dart b/test/transformer/fails_to_load_a_pubspec_with_reserved_transformer_test.dart
index 4393e4a..ae0442b 100644
--- a/test/transformer/fails_to_load_a_pubspec_with_reserved_transformer_test.dart
+++ b/test/transformer/fails_to_load_a_pubspec_with_reserved_transformer_test.dart
@@ -29,7 +29,7 @@
     var pub = await startPubServe();
     expect(
         pub.stderr,
-        emits(contains('Invalid transformer config: Unsupported '
+        emitsThrough(contains('Invalid transformer config: Unsupported '
             'built-in transformer \$nonexistent.')));
     await pub.shouldExit(exit_codes.DATA);
   });
diff --git a/test/transformer/fails_to_load_a_transform_from_a_deps_dev_dependency_test.dart b/test/transformer/fails_to_load_a_transform_from_a_deps_dev_dependency_test.dart
index ed69ec7..ac5c3c9 100644
--- a/test/transformer/fails_to_load_a_transform_from_a_deps_dev_dependency_test.dart
+++ b/test/transformer/fails_to_load_a_transform_from_a_deps_dev_dependency_test.dart
@@ -46,7 +46,7 @@
     var pub = await startPubServe();
     expect(
         pub.stderr,
-        emits(contains('Error loading transformer "bar": package '
+        emitsThrough(contains('Error loading transformer "bar": package '
             '"bar" is not a dependency.')));
     await pub.shouldExit(exit_codes.DATA);
   });
diff --git a/test/transformer/fails_to_load_a_transform_from_a_non_dependency_test.dart b/test/transformer/fails_to_load_a_transform_from_a_non_dependency_test.dart
index 5146565..8926104 100644
--- a/test/transformer/fails_to_load_a_transform_from_a_non_dependency_test.dart
+++ b/test/transformer/fails_to_load_a_transform_from_a_non_dependency_test.dart
@@ -21,7 +21,7 @@
 
     await pubGet();
     var pub = await startPubServe();
-    expect(pub.stderr, emits(contains('"foo" is not a dependency.')));
+    expect(pub.stderr, emitsThrough(contains('"foo" is not a dependency.')));
     await pub.shouldExit(exit_codes.DATA);
   });
 }
diff --git a/test/transformer/fails_to_load_a_transform_with_a_syntax_error_test.dart b/test/transformer/fails_to_load_a_transform_with_a_syntax_error_test.dart
index b30bb7b..dbc2f55 100644
--- a/test/transformer/fails_to_load_a_transform_with_a_syntax_error_test.dart
+++ b/test/transformer/fails_to_load_a_transform_with_a_syntax_error_test.dart
@@ -27,7 +27,7 @@
 
     await pubGet();
     var pub = await startPubServe();
-    expect(pub.stderr, emits(contains("unexpected token 'syntax'")));
+    expect(pub.stderr, emitsThrough(contains("unexpected token 'syntax'")));
     expect(pub.stderrStream(),
         neverEmits(contains('This is an unexpected error')));
     await pub.shouldExit(1);
diff --git a/test/transformer/fails_to_load_a_transform_with_an_import_error_test.dart b/test/transformer/fails_to_load_a_transform_with_an_import_error_test.dart
index 3815091..981d07e 100644
--- a/test/transformer/fails_to_load_a_transform_with_an_import_error_test.dart
+++ b/test/transformer/fails_to_load_a_transform_with_an_import_error_test.dart
@@ -28,7 +28,8 @@
 
     await pubGet();
     var pub = await startPubServe();
-    expect(pub.stderr, emits("Unable to spawn isolate: Unhandled exception:"));
+    expect(pub.stderr,
+        emitsThrough("Unable to spawn isolate: Unhandled exception:"));
     expect(pub.stderr, emits(startsWith('Could not import "')));
     await pub.shouldExit(1);
   });
diff --git a/test/transformer/fails_to_load_an_unconfigurable_transformer_when_config_is_passed_test.dart b/test/transformer/fails_to_load_an_unconfigurable_transformer_when_config_is_passed_test.dart
index fc31628..0977803 100644
--- a/test/transformer/fails_to_load_an_unconfigurable_transformer_when_config_is_passed_test.dart
+++ b/test/transformer/fails_to_load_an_unconfigurable_transformer_when_config_is_passed_test.dart
@@ -33,7 +33,7 @@
     var pub = await startPubServe();
     expect(
         pub.stderr,
-        emits(startsWith('No transformers that accept configuration '
+        emitsThrough(startsWith('No transformers that accept configuration '
             'were defined in ')));
     await pub.shouldExit(1);
   });
diff --git a/test/transformer/prints_a_transform_error_in_apply_test.dart b/test/transformer/prints_a_transform_error_in_apply_test.dart
index 02c851c..7ca6bde 100644
--- a/test/transformer/prints_a_transform_error_in_apply_test.dart
+++ b/test/transformer/prints_a_transform_error_in_apply_test.dart
@@ -42,8 +42,8 @@
     var server = await pubServe();
     await expectLater(
         server.stderr,
-        emitsLines('Build error:\n'
-            'Transform Rewrite on myapp|web/foo.txt threw error: oh no!'));
+        emitsThrough(emitsLines('Build error:\n'
+            'Transform Rewrite on myapp|web/foo.txt threw error: oh no!')));
     await endPubServe();
   });
 }
diff --git a/test/transformer/prints_a_transform_interface_error_test.dart b/test/transformer/prints_a_transform_interface_error_test.dart
index edfbbbb..dd2b9bc 100644
--- a/test/transformer/prints_a_transform_interface_error_test.dart
+++ b/test/transformer/prints_a_transform_interface_error_test.dart
@@ -40,9 +40,9 @@
     var server = await pubServe();
     await expectLater(
         server.stderr,
-        emitsLines("Build error:\n"
+        emitsThrough(emitsLines("Build error:\n"
             "Transform Rewrite on myapp|web/foo.txt threw error: Class "
-            "'RewriteTransformer' has no instance method 'apply'."));
+            "'RewriteTransformer' has no instance method 'apply'.")));
     await endPubServe();
   });
 }
