| Index: sdk/lib/_internal/pub/test/upgrade/report/leading_character_shows_change_test.dart
 | 
| diff --git a/sdk/lib/_internal/pub/test/upgrade/report/leading_character_shows_change_test.dart b/sdk/lib/_internal/pub/test/upgrade/report/leading_character_shows_change_test.dart
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..815f640b8e56ccdd71859404db3eacecc37ca6cc
 | 
| --- /dev/null
 | 
| +++ b/sdk/lib/_internal/pub/test/upgrade/report/leading_character_shows_change_test.dart
 | 
| @@ -0,0 +1,92 @@
 | 
| +// Copyright (c) 2013, 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.
 | 
| +
 | 
| +library pub_tests;
 | 
| +
 | 
| +import '../../descriptor.dart' as d;
 | 
| +import '../../test_pub.dart';
 | 
| +
 | 
| +main() {
 | 
| +  initConfig();
 | 
| +  integration("the character before each package describes the change", () {
 | 
| +    servePackages([
 | 
| +      packageMap("added", "1.0.0"),
 | 
| +      packageMap("downgraded", "1.0.0"),
 | 
| +      packageMap("downgraded", "2.0.0"),
 | 
| +      packageMap("overridden", "1.0.0"),
 | 
| +      packageMap("removed", "1.0.0"),
 | 
| +      packageMap("source_changed", "1.0.0"),
 | 
| +      packageMap("upgraded", "1.0.0"),
 | 
| +      packageMap("upgraded", "2.0.0"),
 | 
| +      packageMap("unchanged", "1.0.0")
 | 
| +    ]);
 | 
| +
 | 
| +    d.dir("description_changed_1", [
 | 
| +      d.libDir("description_changed"),
 | 
| +      d.libPubspec("description_changed", "1.0.0")
 | 
| +    ]).create();
 | 
| +
 | 
| +    d.dir("description_changed_2", [
 | 
| +      d.libDir("description_changed"),
 | 
| +      d.libPubspec("description_changed", "1.0.0")
 | 
| +    ]).create();
 | 
| +
 | 
| +    d.dir("source_changed", [
 | 
| +      d.libDir("source_changed"),
 | 
| +      d.libPubspec("source_changed", "1.0.0")
 | 
| +    ]).create();
 | 
| +
 | 
| +    // Create the first lockfile.
 | 
| +    d.dir(appPath, [
 | 
| +      d.pubspec({
 | 
| +        "name": "myapp",
 | 
| +        "dependencies": {
 | 
| +          "description_changed": {"path": "../description_changed_1"},
 | 
| +          "downgraded": "2.0.0",
 | 
| +          "removed": "any",
 | 
| +          "source_changed": "any",
 | 
| +          "unchanged": "any",
 | 
| +          "upgraded": "1.0.0"
 | 
| +        },
 | 
| +        "dependency_overrides": {
 | 
| +          "overridden": "any"
 | 
| +        }
 | 
| +      })
 | 
| +    ]).create();
 | 
| +
 | 
| +    pubGet();
 | 
| +
 | 
| +    // Change the pubspec.
 | 
| +    d.dir(appPath, [
 | 
| +      d.pubspec({
 | 
| +        "name": "myapp",
 | 
| +        "dependencies": {
 | 
| +          "added": "any",
 | 
| +          "description_changed": {"path": "../description_changed_2"},
 | 
| +          "downgraded": "1.0.0",
 | 
| +          "source_changed": {"path": "../source_changed"},
 | 
| +          "unchanged": "any",
 | 
| +          "upgraded": "2.0.0"
 | 
| +        },
 | 
| +        "dependency_overrides": {
 | 
| +          "overridden": "any"
 | 
| +        }
 | 
| +      })
 | 
| +    ]).create();
 | 
| +
 | 
| +    // Upgrade everything.
 | 
| +    pubUpgrade(output: new RegExp(r"""
 | 
| +Resolving dependencies\.+
 | 
| +\+ added .*
 | 
| +\* description_changed .*
 | 
| +< downgraded .*
 | 
| +! overridden .*
 | 
| +\* source_changed .*
 | 
| +  unchanged .*
 | 
| +> upgraded .*
 | 
| +These packages are no longer being depended on:
 | 
| +- removed .*
 | 
| +""", multiLine: true));
 | 
| +  });
 | 
| +}
 | 
| 
 |