diff --git a/lib/src/command/add.dart b/lib/src/command/add.dart
index 3557104..328d935 100644
--- a/lib/src/command/add.dart
+++ b/lib/src/command/add.dart
@@ -92,8 +92,6 @@
         help: 'Build executables in immediate dependencies.');
     argParser.addOption('directory',
         abbr: 'C', help: 'Run this in the directory <dir>.', valueHelp: 'dir');
-    argParser.addFlag('legacy-packages-file',
-        help: 'Generate the legacy ".packages" file', negatable: false);
   }
 
   @override
@@ -169,8 +167,7 @@
           .acquireDependencies(SolveType.get,
               dryRun: true,
               precompile: argResults['precompile'],
-              analytics: analytics,
-              generateDotPackages: false);
+              analytics: analytics);
     } else {
       /// Update the `pubspec.yaml` before calling [acquireDependencies] to
       /// ensure that the modification timestamp on `pubspec.lock` and
@@ -185,7 +182,6 @@
         SolveType.get,
         precompile: argResults['precompile'],
         analytics: analytics,
-        generateDotPackages: argResults['legacy-packages-file'],
       );
 
       if (argResults['example'] && entrypoint.example != null) {
@@ -194,7 +190,6 @@
           precompile: argResults['precompile'],
           onlyReportSuccessOrFailure: true,
           analytics: analytics,
-          generateDotPackages: argResults['legacy-packages-file'],
         );
       }
     }
diff --git a/lib/src/command/downgrade.dart b/lib/src/command/downgrade.dart
index fce5ef3..274ab48 100644
--- a/lib/src/command/downgrade.dart
+++ b/lib/src/command/downgrade.dart
@@ -42,8 +42,6 @@
 
     argParser.addOption('directory',
         abbr: 'C', help: 'Run this in the directory<dir>.', valueHelp: 'dir');
-    argParser.addFlag('legacy-packages-file',
-        help: 'Generate the legacy ".packages" file', negatable: false);
   }
 
   @override
@@ -59,7 +57,6 @@
       unlock: argResults.rest,
       dryRun: dryRun,
       analytics: analytics,
-      generateDotPackages: argResults['legacy-packages-file'],
     );
     var example = entrypoint.example;
     if (argResults['example'] && example != null) {
@@ -69,7 +66,6 @@
         dryRun: dryRun,
         onlyReportSuccessOrFailure: true,
         analytics: analytics,
-        generateDotPackages: argResults['legacy-packages-file'],
       );
     }
 
diff --git a/lib/src/command/get.dart b/lib/src/command/get.dart
index 7b8906c..302bb93 100644
--- a/lib/src/command/get.dart
+++ b/lib/src/command/get.dart
@@ -33,9 +33,6 @@
 
     argParser.addFlag('packages-dir', hide: true);
 
-    argParser.addFlag('legacy-packages-file',
-        help: 'Generate the legacy ".packages" file', negatable: false);
-
     argParser.addFlag(
       'example',
       help: 'Also run in `example/` (if it exists).',
@@ -56,20 +53,16 @@
       SolveType.get,
       dryRun: argResults['dry-run'],
       precompile: argResults['precompile'],
-      generateDotPackages: argResults['legacy-packages-file'],
       analytics: analytics,
     );
 
     var example = entrypoint.example;
     if (argResults['example'] && example != null) {
-      await example.acquireDependencies(
-        SolveType.get,
-        dryRun: argResults['dry-run'],
-        precompile: argResults['precompile'],
-        generateDotPackages: argResults['legacy-packages-file'],
-        analytics: analytics,
-        onlyReportSuccessOrFailure: true,
-      );
+      await example.acquireDependencies(SolveType.get,
+          dryRun: argResults['dry-run'],
+          precompile: argResults['precompile'],
+          onlyReportSuccessOrFailure: true,
+          analytics: analytics);
     }
   }
 }
diff --git a/lib/src/command/remove.dart b/lib/src/command/remove.dart
index 82a9547..f3b27bd 100644
--- a/lib/src/command/remove.dart
+++ b/lib/src/command/remove.dart
@@ -50,9 +50,6 @@
 
     argParser.addOption('directory',
         abbr: 'C', help: 'Run this in the directory<dir>.', valueHelp: 'dir');
-
-    argParser.addFlag('legacy-packages-file',
-        help: 'Generate the legacy ".packages" file', negatable: false);
   }
 
   @override
@@ -72,8 +69,7 @@
           .acquireDependencies(SolveType.get,
               precompile: argResults['precompile'],
               dryRun: true,
-              analytics: null,
-              generateDotPackages: false);
+              analytics: null);
     } else {
       /// Update the pubspec.
       _writeRemovalToPubspec(packages);
@@ -85,7 +81,6 @@
         SolveType.get,
         precompile: argResults['precompile'],
         analytics: analytics,
-        generateDotPackages: argResults['legacy-packages-file'],
       );
 
       var example = entrypoint.example;
@@ -95,7 +90,6 @@
           precompile: argResults['precompile'],
           onlyReportSuccessOrFailure: true,
           analytics: analytics,
-          generateDotPackages: argResults['legacy-packages-file'],
         );
       }
     }
diff --git a/lib/src/command/upgrade.dart b/lib/src/command/upgrade.dart
index 0dc5fb7..ee66c07 100644
--- a/lib/src/command/upgrade.dart
+++ b/lib/src/command/upgrade.dart
@@ -56,9 +56,6 @@
 
     argParser.addFlag('packages-dir', hide: true);
 
-    argParser.addFlag('legacy-packages-file',
-        help: 'Generate the legacy ".packages" file', negatable: false);
-
     argParser.addFlag(
       'major-versions',
       help: 'Upgrades packages to their latest resolvable versions, '
@@ -83,8 +80,6 @@
 
   bool get _precompile => argResults['precompile'];
 
-  bool get _packagesFile => argResults['legacy-packages-file'];
-
   bool get _upgradeNullSafety =>
       argResults['nullsafety'] || argResults['null-safety'];
 
@@ -131,7 +126,6 @@
       dryRun: _dryRun,
       precompile: _precompile,
       onlyReportSuccessOrFailure: onlySummary,
-      generateDotPackages: _packagesFile,
       analytics: analytics,
     );
     _showOfflineWarning();
@@ -241,7 +235,6 @@
         dryRun: true,
         precompile: _precompile,
         analytics: null, // No analytics for dry-run
-        generateDotPackages: false,
       );
     } else {
       if (changes.isNotEmpty) {
@@ -254,7 +247,6 @@
         SolveType.get,
         precompile: _precompile,
         analytics: analytics,
-        generateDotPackages: argResults['legacy-packages-file'],
       );
     }
 
@@ -339,7 +331,6 @@
         dryRun: true,
         precompile: _precompile,
         analytics: null,
-        generateDotPackages: false,
       );
     } else {
       if (changes.isNotEmpty) {
@@ -352,7 +343,6 @@
         SolveType.upgrade,
         precompile: _precompile,
         analytics: analytics,
-        generateDotPackages: argResults['legacy-packages-file'],
       );
     }
 
diff --git a/lib/src/entrypoint.dart b/lib/src/entrypoint.dart
index e854d52..5a2a50f 100644
--- a/lib/src/entrypoint.dart
+++ b/lib/src/entrypoint.dart
@@ -213,17 +213,13 @@
   Entrypoint? _example;
 
   /// Writes .packages and .dart_tool/package_config.json
-  Future<void> writePackagesFiles({bool generateDotPackages = false}) async {
+  Future<void> writePackagesFiles() async {
     final entrypointName = isGlobal ? null : root.name;
-    if (generateDotPackages) {
-      writeTextFile(
-          packagesFile,
-          lockFile.packagesFile(cache,
-              entrypoint: entrypointName,
-              relativeFrom: isGlobal ? null : root.dir));
-    } else {
-      tryDeleteEntry(packagesFile);
-    }
+    writeTextFile(
+        packagesFile,
+        lockFile.packagesFile(cache,
+            entrypoint: entrypointName,
+            relativeFrom: isGlobal ? null : root.dir));
     ensureDir(p.dirname(packageConfigFile));
     writeTextFile(
         packageConfigFile,
@@ -261,7 +257,6 @@
     Iterable<String>? unlock,
     bool dryRun = false,
     bool precompile = false,
-    required bool generateDotPackages,
     required PubAnalytics? analytics,
     bool onlyReportSuccessOrFailure = false,
   }) async {
@@ -330,7 +325,7 @@
       /// have to reload and reparse all the pubspecs.
       _packageGraph = PackageGraph.fromSolveResult(this, result);
 
-      await writePackagesFiles(generateDotPackages: generateDotPackages);
+      await writePackagesFiles();
 
       try {
         if (precompile) {
diff --git a/lib/src/executable.dart b/lib/src/executable.dart
index 3f8f6a9..5d8ea8b 100644
--- a/lib/src/executable.dart
+++ b/lib/src/executable.dart
@@ -308,7 +308,6 @@
         () => entrypoint.acquireDependencies(
           SolveType.get,
           analytics: analytics,
-          generateDotPackages: false,
         ),
       );
     } on ApplicationException catch (e) {
diff --git a/lib/src/global_packages.dart b/lib/src/global_packages.dart
index 07e2513..773f2ec 100644
--- a/lib/src/global_packages.dart
+++ b/lib/src/global_packages.dart
@@ -150,11 +150,7 @@
     var entrypoint = Entrypoint(path, cache);
 
     // Get the package's dependencies.
-    await entrypoint.acquireDependencies(
-      SolveType.get,
-      analytics: analytics,
-      generateDotPackages: false,
-    );
+    await entrypoint.acquireDependencies(SolveType.get, analytics: analytics);
     var name = entrypoint.root.name;
     _describeActive(name, cache);
 
diff --git a/lib/src/package_config.dart b/lib/src/package_config.dart
index d64808b..0493dcc 100644
--- a/lib/src/package_config.dart
+++ b/lib/src/package_config.dart
@@ -2,8 +2,6 @@
 // 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 'dart:convert';
-
 import 'package:pub_semver/pub_semver.dart';
 
 import 'language_version.dart';
@@ -162,6 +160,8 @@
   /// Given as `<major>.<minor>` version, similar to the `// @dart = X.Y`
   /// comment. This is derived from the lower-bound on the Dart SDK requirement
   /// in the `pubspec.yaml` for the given package.
+  ///
+  /// `null` if not given.
   LanguageVersion? languageVersion;
 
   /// Additional properties not in the specification for the
@@ -173,8 +173,10 @@
     required this.rootUri,
     this.packageUri,
     this.languageVersion,
-    this.additionalProperties = const {},
-  });
+    this.additionalProperties,
+  }) {
+    additionalProperties ??= {};
+  }
 
   /// Create [PackageConfigEntry] from JSON [data].
   ///
@@ -247,13 +249,7 @@
   Map<String, Object?> toJson() => {
         'name': name,
         'rootUri': rootUri.toString(),
-        if (packageUri != null) 'packageUri': packageUri.toString(),
+        if (packageUri != null) 'packageUri': packageUri?.toString(),
         if (languageVersion != null) 'languageVersion': '$languageVersion',
       }..addAll(additionalProperties ?? {});
-
-  @override
-  String toString() {
-    // TODO: implement toString
-    return JsonEncoder.withIndent('  ').convert(toJson());
-  }
 }
diff --git a/test/add/common/add_test.dart b/test/add/common/add_test.dart
index 82e098b..1a1e9df 100644
--- a/test/add/common/add_test.dart
+++ b/test/add/common/add_test.dart
@@ -46,9 +46,7 @@
       await pubAdd(args: ['foo:1.2.3']);
 
       await d.cacheDir({'foo': '1.2.3'}).validate();
-      await d.appPackageConfigFile([
-        d.packageConfigEntry(name: 'foo', version: '1.2.3'),
-      ]).validate();
+      await d.appPackagesFile({'foo': '1.2.3'}).validate();
       await d.appDir({'foo': '1.2.3'}).validate();
     });
 
@@ -64,11 +62,8 @@
 
       await d.cacheDir(
           {'foo': '1.2.3', 'bar': '1.1.0', 'baz': '2.5.3'}).validate();
-      await d.appPackageConfigFile([
-        d.packageConfigEntry(name: 'foo', version: '1.2.3'),
-        d.packageConfigEntry(name: 'bar', version: '1.1.0'),
-        d.packageConfigEntry(name: 'baz', version: '2.5.3'),
-      ]).validate();
+      await d.appPackagesFile(
+          {'foo': '1.2.3', 'bar': '1.1.0', 'baz': '2.5.3'}).validate();
       await d
           .appDir({'foo': '1.2.3', 'bar': '1.1.0', 'baz': '2.5.3'}).validate();
     });
@@ -95,9 +90,7 @@
       await pubAdd(args: ['foo:1.2.3']);
 
       await d.cacheDir({'foo': '1.2.3'}).validate();
-      await d.appPackageConfigFile([
-        d.packageConfigEntry(name: 'foo', version: '1.2.3'),
-      ]).validate();
+      await d.appPackagesFile({'foo': '1.2.3'}).validate();
 
       await d.dir(appPath, [
         d.pubspec({
@@ -143,9 +136,7 @@
       await pubAdd(args: ['foo:1.2.3']);
 
       await d.cacheDir({'foo': '1.2.3'}).validate();
-      await d.appPackageConfigFile([
-        d.packageConfigEntry(name: 'foo', version: '1.2.3'),
-      ]).validate();
+      await d.appPackagesFile({'foo': '1.2.3'}).validate();
       await d.appDir({'foo': '1.2.3'}).validate();
     });
 
@@ -226,9 +217,7 @@
               'adding it to dependencies instead.'));
 
       await d.cacheDir({'foo': '1.2.3'}).validate();
-      await d.appPackageConfigFile([
-        d.packageConfigEntry(name: 'foo', version: '1.2.3'),
-      ]).validate();
+      await d.appPackagesFile({'foo': '1.2.3'}).validate();
 
       await d.dir(appPath, [
         d.pubspec({
@@ -255,9 +244,7 @@
         await pubAdd(args: ['foo']);
 
         await d.cacheDir({'foo': '1.2.2'}).validate();
-        await d.appPackageConfigFile([
-          d.packageConfigEntry(name: 'foo', version: '1.2.2'),
-        ]).validate();
+        await d.appPackagesFile({'foo': '1.2.2'}).validate();
         await d.dir(appPath, [
           d.pubspec({
             'name': 'myapp',
@@ -469,9 +456,7 @@
 
       await pubAdd(args: ['--dev', 'foo:1.2.3']);
 
-      await d.appPackageConfigFile([
-        d.packageConfigEntry(name: 'foo', version: '1.2.3'),
-      ]).validate();
+      await d.appPackagesFile({'foo': '1.2.3'}).validate();
 
       await d.dir(appPath, [
         d.pubspec({
@@ -581,9 +566,7 @@
         await pubAdd(args: ['foo', '--dev']);
 
         await d.cacheDir({'foo': '1.2.2'}).validate();
-        await d.appPackageConfigFile([
-          d.packageConfigEntry(name: 'foo', version: '1.2.2'),
-        ]).validate();
+        await d.appPackagesFile({'foo': '1.2.2'}).validate();
         await d.dir(appPath, [
           d.pubspec({
             'name': 'myapp',
diff --git a/test/add/common/version_constraint_test.dart b/test/add/common/version_constraint_test.dart
index f058082..546642f 100644
--- a/test/add/common/version_constraint_test.dart
+++ b/test/add/common/version_constraint_test.dart
@@ -22,9 +22,7 @@
     await pubAdd(args: ['foo']);
 
     await d.cacheDir({'foo': '1.2.3'}).validate();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.2.3'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.2.3'}).validate();
     await d.appDir({'foo': '^1.2.3'}).validate();
   });
 
@@ -37,9 +35,7 @@
     await pubAdd(args: ['foo:1.2.3']);
 
     await d.cacheDir({'foo': '1.2.3'}).validate();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.2.3'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.2.3'}).validate();
     await d.appDir({'foo': '1.2.3'}).validate();
   });
 
@@ -52,9 +48,7 @@
     await pubAdd(args: ['foo:1.2.3-dev']);
 
     await d.cacheDir({'foo': '1.2.3-dev'}).validate();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.2.3-dev'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.2.3-dev'}).validate();
     await d.appDir({'foo': '1.2.3-dev'}).validate();
   });
 
@@ -71,9 +65,7 @@
     await pubAdd(args: ['foo:any']);
 
     await d.cacheDir({'foo': '1.2.3'}).validate();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.2.3'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.2.3'}).validate();
     await d.appDir({'foo': 'any'}).validate();
   });
 
@@ -86,9 +78,7 @@
     await pubAdd(args: ['foo:>1.2.0 <2.0.0']);
 
     await d.cacheDir({'foo': '1.2.3'}).validate();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.2.3'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.2.3'}).validate();
     await d.appDir({'foo': '>1.2.0 <2.0.0'}).validate();
   });
 
@@ -108,10 +98,7 @@
     await d.appDir({'foo': '^0.1.0', 'bar': '2.0.3'}).validate();
 
     await d.cacheDir({'foo': '0.1.0', 'bar': '2.0.3'}).validate();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '0.1.0'),
-      d.packageConfigEntry(name: 'bar', version: '2.0.3'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '0.1.0', 'bar': '2.0.3'}).validate();
   });
 
   group('does not update pubspec if no available version found', () {
diff --git a/test/add/common/version_resolution_test.dart b/test/add/common/version_resolution_test.dart
index 0f44d2b..64b393a 100644
--- a/test/add/common/version_resolution_test.dart
+++ b/test/add/common/version_resolution_test.dart
@@ -32,10 +32,7 @@
 
     await d.appDir({'foo': '^3.5.0', 'bar': '1.0.0'}).validate();
     await d.cacheDir({'foo': '3.5.0', 'bar': '1.0.0'}).validate();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '3.5.0'),
-      d.packageConfigEntry(name: 'bar', version: '1.0.0'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '3.5.0', 'bar': '1.0.0'}).validate();
   });
 
   test('chooses the appropriate version to not break other dependencies',
@@ -57,10 +54,7 @@
 
     await d.appDir({'foo': '^3.2.1', 'bar': '1.0.0'}).validate();
     await d.cacheDir({'foo': '3.2.1', 'bar': '1.0.0'}).validate();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '3.2.1'),
-      d.packageConfigEntry(name: 'bar', version: '1.0.0'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '3.2.1', 'bar': '1.0.0'}).validate();
   });
 
   test('may upgrade other packages if they allow a later version to be chosen',
@@ -84,9 +78,6 @@
 
     await d.appDir({'foo': '^4.0.0', 'bar': '^1.0.0'}).validate();
     await d.cacheDir({'foo': '4.0.0', 'bar': '1.5.0'}).validate();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '4.0.0'),
-      d.packageConfigEntry(name: 'bar', version: '1.5.0'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '4.0.0', 'bar': '1.5.0'}).validate();
   });
 }
diff --git a/test/add/git/git_test.dart b/test/add/git/git_test.dart
index d976172..00bd334 100644
--- a/test/add/git/git_test.dart
+++ b/test/add/git/git_test.dart
@@ -173,9 +173,7 @@
     await pubAdd(args: ['foo', '--git-url', '../foo.git']);
 
     await d.cacheDir({'foo': '1.2.2'}).validate();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.2.2'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.2.2'}).validate();
     await d.dir(appPath, [
       d.pubspec({
         'name': 'myapp',
diff --git a/test/add/git/subdir_test.dart b/test/add/git/subdir_test.dart
index 8e8c39c..0f78069 100644
--- a/test/add/git/subdir_test.dart
+++ b/test/add/git/subdir_test.dart
@@ -30,11 +30,10 @@
         ])
       ])
     ]).validate();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(
-          name: 'sub',
-          path: pathInCache('git/foo-${await repo.revParse('HEAD')}/subdir')),
-    ]).validate();
+
+    await d.appPackagesFile({
+      'sub': pathInCache('git/foo-${await repo.revParse('HEAD')}/subdir')
+    }).validate();
 
     await d.appDir({
       'sub': {
@@ -69,11 +68,9 @@
       ])
     ]).validate();
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(
-          name: 'sub',
-          path: pathInCache('git/foo-${await repo.revParse('HEAD')}/sub/dir')),
-    ]).validate();
+    await d.appPackagesFile({
+      'sub': pathInCache('git/foo-${await repo.revParse('HEAD')}/sub/dir')
+    }).validate();
 
     await d.appDir({
       'sub': {
diff --git a/test/add/hosted/non_default_pub_server_test.dart b/test/add/hosted/non_default_pub_server_test.dart
index 60538e3..0a83ac5 100644
--- a/test/add/hosted/non_default_pub_server_test.dart
+++ b/test/add/hosted/non_default_pub_server_test.dart
@@ -26,9 +26,7 @@
     await pubAdd(args: ['foo:1.2.3', '--hosted-url', url]);
 
     await d.cacheDir({'foo': '1.2.3'}, port: server.port).validate();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.2.3'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.2.3'}).validate();
     await d.appDir({
       'foo': {
         'version': '1.2.3',
@@ -59,11 +57,8 @@
 
     await d.cacheDir({'foo': '1.2.3', 'bar': '3.2.3', 'baz': '1.3.5'},
         port: server.port).validate();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.2.3'),
-      d.packageConfigEntry(name: 'bar', version: '3.2.3'),
-      d.packageConfigEntry(name: 'baz', version: '1.3.5'),
-    ]).validate();
+    await d.appPackagesFile(
+        {'foo': '1.2.3', 'bar': '3.2.3', 'baz': '1.3.5'}).validate();
     await d.appDir({
       'foo': {
         'version': '1.2.3',
@@ -122,9 +117,7 @@
     await pubAdd(args: ['foo', '--hosted-url', url]);
 
     await d.cacheDir({'foo': '1.2.3'}, port: server.port).validate();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.2.3'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.2.3'}).validate();
     await d.appDir({
       'foo': {
         'version': '^1.2.3',
@@ -151,9 +144,7 @@
     await pubAdd(args: ['foo', '--hosted-url', url]);
 
     await d.cacheDir({'foo': '1.2.3'}, port: server.port).validate();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.2.3'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.2.3'}).validate();
     await d.appDir({
       'foo': {
         'version': '^1.2.3',
@@ -180,9 +171,7 @@
     await pubAdd(args: ['foo:any', '--hosted-url', url]);
 
     await d.cacheDir({'foo': '1.2.3'}, port: server.port).validate();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.2.3'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.2.3'}).validate();
     await d.appDir({
       'foo': {
         'version': 'any',
diff --git a/test/add/path/absolute_path_test.dart b/test/add/path/absolute_path_test.dart
index 5e63679..b15ec2d 100644
--- a/test/add/path/absolute_path_test.dart
+++ b/test/add/path/absolute_path_test.dart
@@ -20,9 +20,7 @@
 
     await pubAdd(args: ['foo', '--path', absolutePath]);
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', path: absolutePath),
-    ]).validate();
+    await d.appPackagesFile({'foo': absolutePath}).validate();
 
     await d.appDir({
       'foo': {'path': absolutePath}
@@ -129,9 +127,7 @@
     await pubAdd(args: ['foo', '--path', absolutePath]);
 
     await d.cacheDir({'foo': '1.2.2'}).validate();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.2.2'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.2.2'}).validate();
     await d.dir(appPath, [
       d.pubspec({
         'name': 'myapp',
diff --git a/test/add/path/relative_path_test.dart b/test/add/path/relative_path_test.dart
index e08ba3c..c02b644 100644
--- a/test/add/path/relative_path_test.dart
+++ b/test/add/path/relative_path_test.dart
@@ -19,9 +19,7 @@
 
     await pubAdd(args: ['foo', '--path', '../foo']);
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', path: '../foo'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '../foo'}).validate();
 
     await d.appDir({
       'foo': {'path': '../foo'}
@@ -40,9 +38,7 @@
       output: contains('Changed 1 dependency in myapp!'),
     );
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', path: '../foo'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '../foo'}).validate();
 
     await d.appDir({
       'foo': {'path': '../foo'}
@@ -122,9 +118,7 @@
     await pubAdd(args: ['foo', '--path', '../foo']);
 
     await d.cacheDir({'foo': '1.2.2'}).validate();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.2.2'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.2.2'}).validate();
     await d.dir(appPath, [
       d.pubspec({
         'name': 'myapp',
diff --git a/test/add/sdk/sdk_test.dart b/test/add/sdk/sdk_test.dart
index ff7d442..632725e 100644
--- a/test/add/sdk/sdk_test.dart
+++ b/test/add/sdk/sdk_test.dart
@@ -42,12 +42,11 @@
           'foo': {'sdk': 'flutter', 'version': '^0.0.1'}
         }
       }),
-    ]).validate();
-
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(
-          name: 'foo', path: p.join(d.sandbox, 'flutter', 'packages', 'foo')),
-      d.packageConfigEntry(name: 'bar', version: '1.0.0'),
+      d.packagesFile({
+        'myapp': '.',
+        'foo': p.join(d.sandbox, 'flutter', 'packages', 'foo'),
+        'bar': '1.0.0'
+      })
     ]).validate();
   });
 
@@ -66,11 +65,11 @@
           'foo': {'sdk': 'flutter', 'version': '0.0.1'}
         }
       }),
-    ]).validate();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(
-          name: 'foo', path: p.join(d.sandbox, 'flutter', 'packages', 'foo')),
-      d.packageConfigEntry(name: 'bar', version: '1.0.0'),
+      d.packagesFile({
+        'myapp': '.',
+        'foo': p.join(d.sandbox, 'flutter', 'packages', 'foo'),
+        'bar': '1.0.0'
+      })
     ]).validate();
   });
 
@@ -80,10 +79,11 @@
         args: ['baz', '--sdk', 'flutter'],
         environment: {'FLUTTER_ROOT': p.join(d.sandbox, 'flutter')});
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(
-          name: 'baz',
-          path: p.join(d.sandbox, 'flutter', 'bin', 'cache', 'pkg', 'baz'))
+    await d.dir(appPath, [
+      d.packagesFile({
+        'myapp': '.',
+        'baz': p.join(d.sandbox, 'flutter', 'bin', 'cache', 'pkg', 'baz')
+      })
     ]).validate();
   });
 
diff --git a/test/dependency_override_test.dart b/test/dependency_override_test.dart
index 59f59e4..dd8dc0d 100644
--- a/test/dependency_override_test.dart
+++ b/test/dependency_override_test.dart
@@ -27,9 +27,7 @@
 
       await pubCommand(command);
 
-      await d.appPackageConfigFile([
-        d.packageConfigEntry(name: 'foo', version: '2.0.0'),
-      ]).validate();
+      await d.appPackagesFile({'foo': '2.0.0'}).validate();
     });
 
     test('treats override as implicit dependency', () async {
@@ -45,9 +43,7 @@
 
       await pubCommand(command);
 
-      await d.appPackageConfigFile([
-        d.packageConfigEntry(name: 'foo', version: '1.0.0'),
-      ]).validate();
+      await d.appPackagesFile({'foo': '1.0.0'}).validate();
     });
 
     test('ignores other constraints on overridden package', () async {
@@ -69,10 +65,7 @@
 
       await pubCommand(command);
 
-      await d.appPackageConfigFile([
-        d.packageConfigEntry(name: 'foo', version: '2.0.0'),
-        d.packageConfigEntry(name: 'bar', version: '1.0.0'),
-      ]).validate();
+      await d.appPackagesFile({'foo': '2.0.0', 'bar': '1.0.0'}).validate();
     });
 
     test('ignores SDK constraints', () async {
@@ -89,9 +82,8 @@
       ]).create();
 
       await pubCommand(command);
-      await d.appPackageConfigFile([
-        d.packageConfigEntry(name: 'foo', version: '1.0.0'),
-      ]).validate();
+
+      await d.appPackagesFile({'foo': '1.0.0'}).validate();
     });
 
     test('warns about overridden dependencies', () async {
diff --git a/test/descriptor.dart b/test/descriptor.dart
index ee50851..7b140e2 100644
--- a/test/descriptor.dart
+++ b/test/descriptor.dart
@@ -277,23 +277,6 @@
 }) =>
     PackageConfigFileDescriptor(packages, generatorVersion);
 
-Descriptor appPackageConfigFile(
-  List<PackageConfigEntry> packages, {
-  String generatorVersion = '0.1.2+3',
-}) =>
-    dir(
-      appPath,
-      [
-        packageConfigFile(
-          [
-            packageConfigEntry(name: 'myapp', path: '.'),
-            ...packages,
-          ],
-          generatorVersion: generatorVersion,
-        ),
-      ],
-    );
-
 /// Create a [PackageConfigEntry] which assumes package with [name] is either
 /// a cached package with given [version] or a path dependency at given [path].
 PackageConfigEntry packageConfigEntry({
@@ -301,7 +284,6 @@
   String? version,
   String? path,
   String? languageVersion,
-  PackageServer? server,
 }) {
   if (version != null && path != null) {
     throw ArgumentError.value(
@@ -313,7 +295,7 @@
   }
   Uri rootUri;
   if (version != null) {
-    rootUri = p.toUri((server ?? globalServer).pathInCache(name, version));
+    rootUri = p.toUri(globalServer.pathInCache(name, version));
   } else {
     rootUri = p.toUri(p.join('..', path));
   }
diff --git a/test/descriptor/packages.dart b/test/descriptor/packages.dart
index b670322..de52a80 100644
--- a/test/descriptor/packages.dart
+++ b/test/descriptor/packages.dart
@@ -156,20 +156,10 @@
 
     // Compare packages as sets to ignore ordering.
     expect(
-      config.packages,
-      _packages
-          .map(
-            (p) => isA<PackageConfigEntry>()
-                .having((p0) => p0.name, 'name', p.name)
-                .having(
-                    (p0) => p0.languageVersion,
-                    'languageVersion',
-                    // If the expected entry has no language-version we don't check it.
-                    p.languageVersion ?? anything)
-                .having((p0) => p0.rootUri, 'rootUri', p.rootUri)
-                .having((p0) => p0.packageUri, 'packageUri', p.packageUri),
-          )
-          .toSet(),
+      config.packages.map((e) => e.toJson()).toSet(),
+      equals(_packages.map((e) => e.toJson()).toSet()),
+      reason:
+          '"packages" property in "$packageConfigFile" does not expected values',
     );
 
     final expected = PackageConfig.fromJson(_config.toJson());
diff --git a/test/dev_dependency_test.dart b/test/dev_dependency_test.dart
index b192444..88f321b 100644
--- a/test/dev_dependency_test.dart
+++ b/test/dev_dependency_test.dart
@@ -27,10 +27,7 @@
 
     await pubGet();
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', path: '../foo'),
-      d.packageConfigEntry(name: 'bar', path: '../bar'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '../foo', 'bar': '../bar'}).validate();
   });
 
   test("includes dev dependency's transitive dependencies", () async {
@@ -55,10 +52,7 @@
 
     await pubGet();
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', path: '../foo'),
-      d.packageConfigEntry(name: 'bar', path: '../bar'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '../foo', 'bar': '../bar'}).validate();
   });
 
   test("ignores transitive dependency's dev dependencies", () async {
@@ -84,8 +78,6 @@
 
     await pubGet();
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', path: '../foo'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '../foo'}).validate();
   });
 }
diff --git a/test/downgrade/unlock_if_necessary_test.dart b/test/downgrade/unlock_if_necessary_test.dart
index c8b55af..0299e27 100644
--- a/test/downgrade/unlock_if_necessary_test.dart
+++ b/test/downgrade/unlock_if_necessary_test.dart
@@ -19,19 +19,13 @@
 
     await pubGet();
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '2.0.0'),
-      d.packageConfigEntry(name: 'foo_dep', version: '2.0.0'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '2.0.0', 'foo_dep': '2.0.0'}).validate();
 
     server.serve('foo', '1.0.0', deps: {'foo_dep': '<2.0.0'});
     server.serve('foo_dep', '1.0.0');
 
     await pubDowngrade(args: ['foo']);
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.0.0'),
-      d.packageConfigEntry(name: 'foo_dep', version: '1.0.0'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.0.0', 'foo_dep': '1.0.0'}).validate();
   });
 }
diff --git a/test/downgrade/unlock_single_package_test.dart b/test/downgrade/unlock_single_package_test.dart
index 1188e41..cfd315d 100644
--- a/test/downgrade/unlock_single_package_test.dart
+++ b/test/downgrade/unlock_single_package_test.dart
@@ -16,34 +16,22 @@
     await d.appDir({'foo': 'any', 'bar': 'any'}).create();
 
     await pubGet();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '2.1.0'),
-      d.packageConfigEntry(name: 'bar', version: '2.1.0'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '2.1.0', 'bar': '2.1.0'}).validate();
 
     server.serve('foo', '1.0.0', deps: {'bar': 'any'});
     server.serve('bar', '1.0.0');
 
     await pubDowngrade(args: ['bar']);
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '2.1.0'),
-      d.packageConfigEntry(name: 'bar', version: '2.1.0'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '2.1.0', 'bar': '2.1.0'}).validate();
 
     server.serve('foo', '2.0.0', deps: {'bar': 'any'});
     server.serve('bar', '2.0.0');
 
     await pubDowngrade(args: ['bar']);
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '2.1.0'),
-      d.packageConfigEntry(name: 'bar', version: '2.0.0'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '2.1.0', 'bar': '2.0.0'}).validate();
 
     await pubDowngrade();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.0.0'),
-      d.packageConfigEntry(name: 'bar', version: '1.0.0'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.0.0', 'bar': '1.0.0'}).validate();
   });
 
   test('will not downgrade below constraint #2629', () async {
@@ -55,14 +43,11 @@
     await d.appDir({'foo': '^2.0.0'}).create();
 
     await pubGet();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '2.1.0'),
-    ]).validate();
+
+    await d.appPackagesFile({'foo': '2.1.0'}).validate();
 
     await pubDowngrade(args: ['foo']);
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '2.0.0'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '2.0.0'}).validate();
   });
 }
diff --git a/test/get/git/path_test.dart b/test/get/git/path_test.dart
index a323be7..49607a1 100644
--- a/test/get/git/path_test.dart
+++ b/test/get/git/path_test.dart
@@ -37,11 +37,9 @@
       ])
     ]).validate();
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(
-          name: 'sub',
-          path: pathInCache('git/foo-${await repo.revParse('HEAD')}/subdir')),
-    ]).validate();
+    await d.appPackagesFile({
+      'sub': pathInCache('git/foo-${await repo.revParse('HEAD')}/subdir')
+    }).validate();
   });
 
   test('depends on a package in a deep subdirectory', () async {
@@ -73,12 +71,9 @@
       ])
     ]).validate();
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(
-          name: 'sub',
-          path:
-              pathInCache('git/foo-${await repo.revParse('HEAD')}/sub/dir%25')),
-    ]).validate();
+    await d.appPackagesFile({
+      'sub': pathInCache('git/foo-${await repo.revParse('HEAD')}/sub/dir%25')
+    }).validate();
 
     final lockFile = LockFile.load(
         p.join(d.sandbox, appPath, 'pubspec.lock'), SourceRegistry());
@@ -120,12 +115,9 @@
       ])
     ]).validate();
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(
-          name: 'sub',
-          path:
-              pathInCache('git/foo-${await repo.revParse('HEAD')}/sub/dir%25')),
-    ]).validate();
+    await d.appPackagesFile({
+      'sub': pathInCache('git/foo-${await repo.revParse('HEAD')}/sub/dir%25')
+    }).validate();
 
     final lockFile = LockFile.load(
         p.join(d.sandbox, appPath, 'pubspec.lock'), SourceRegistry());
@@ -166,14 +158,10 @@
       ])
     ]).validate();
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(
-          name: 'sub1',
-          path: pathInCache('git/foo-${await repo.revParse('HEAD')}/subdir1')),
-      d.packageConfigEntry(
-          name: 'sub2',
-          path: pathInCache('git/foo-${await repo.revParse('HEAD')}/subdir2')),
-    ]).validate();
+    await d.appPackagesFile({
+      'sub1': pathInCache('git/foo-${await repo.revParse('HEAD')}/subdir1'),
+      'sub2': pathInCache('git/foo-${await repo.revParse('HEAD')}/subdir2')
+    }).validate();
   });
 
   test('depends on packages in the same subdirectory at different revisions',
@@ -218,11 +206,9 @@
       ])
     ]).validate();
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(
-          name: 'sub1', path: pathInCache('git/foo-$oldRevision/subdir')),
-      d.packageConfigEntry(
-          name: 'sub2', path: pathInCache('git/foo-$newRevision/subdir')),
-    ]).validate();
+    await d.appPackagesFile({
+      'sub1': pathInCache('git/foo-$oldRevision/subdir'),
+      'sub2': pathInCache('git/foo-$newRevision/subdir')
+    }).validate();
   });
 }
diff --git a/test/get/hosted/avoid_network_requests_test.dart b/test/get/hosted/avoid_network_requests_test.dart
index c62fa7c..8778ae6 100644
--- a/test/get/hosted/avoid_network_requests_test.dart
+++ b/test/get/hosted/avoid_network_requests_test.dart
@@ -31,10 +31,8 @@
 
     // Run the solver again.
     await pubGet();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.2.0'),
-      d.packageConfigEntry(name: 'bar', version: '1.2.0'),
-    ]).validate();
+
+    await d.appPackagesFile({'foo': '1.2.0', 'bar': '1.2.0'}).validate();
 
     // The get should not have done any network requests since the lock file is
     // up to date.
diff --git a/test/get/hosted/cached_pubspec_test.dart b/test/get/hosted/cached_pubspec_test.dart
index fa9decc..beb4e16 100644
--- a/test/get/hosted/cached_pubspec_test.dart
+++ b/test/get/hosted/cached_pubspec_test.dart
@@ -22,9 +22,7 @@
     server.requestedPaths.clear();
 
     await d.cacheDir({'foo': '1.2.3'}).validate();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.2.3'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.2.3'}).validate();
 
     // Run the solver again now that it's cached.
     await pubGet();
diff --git a/test/get/hosted/do_not_upgrade_on_removed_constraints_test.dart b/test/get/hosted/do_not_upgrade_on_removed_constraints_test.dart
index 44fe075..00b2444 100644
--- a/test/get/hosted/do_not_upgrade_on_removed_constraints_test.dart
+++ b/test/get/hosted/do_not_upgrade_on_removed_constraints_test.dart
@@ -21,19 +21,13 @@
 
     await pubGet();
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.0.0'),
-      d.packageConfigEntry(name: 'bar', version: '1.0.0'),
-      d.packageConfigEntry(name: 'shared_dep', version: '1.0.0'),
-    ]).validate();
+    await d.appPackagesFile(
+        {'foo': '1.0.0', 'bar': '1.0.0', 'shared_dep': '1.0.0'}).validate();
 
     await d.appDir({'foo': 'any'}).create();
 
     await pubGet();
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.0.0'),
-      d.packageConfigEntry(name: 'shared_dep', version: '1.0.0'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.0.0', 'shared_dep': '1.0.0'}).validate();
   });
 }
diff --git a/test/get/hosted/does_no_network_requests_when_possible_test.dart b/test/get/hosted/does_no_network_requests_when_possible_test.dart
index 4324776..ea1f4a7 100644
--- a/test/get/hosted/does_no_network_requests_when_possible_test.dart
+++ b/test/get/hosted/does_no_network_requests_when_possible_test.dart
@@ -27,9 +27,7 @@
     await pubGet();
 
     await d.cacheDir({'foo': '1.2.0'}).validate();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.2.0'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.2.0'}).validate();
 
     // The get should not have done any network requests since the lock file is
     // up to date.
diff --git a/test/get/hosted/get_stress_test.dart b/test/get/hosted/get_stress_test.dart
index 026c0c1..86a8da9 100644
--- a/test/get/hosted/get_stress_test.dart
+++ b/test/get/hosted/get_stress_test.dart
@@ -26,10 +26,10 @@
       'foo': '1.2.3',
       for (var i = 0; i < 20; i++) 'pkg$i': '1.$i.0',
     }).validate();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.2.3'),
-      for (var i = 0; i < 20; i++)
-        d.packageConfigEntry(name: 'pkg$i', version: '1.$i.0')
-    ]).validate();
+
+    await d.appPackagesFile({
+      'foo': '1.2.3',
+      for (var i = 0; i < 20; i++) 'pkg$i': '1.$i.0',
+    }).validate();
   });
 }
diff --git a/test/get/hosted/get_test.dart b/test/get/hosted/get_test.dart
index f0270a3..30dd4b8 100644
--- a/test/get/hosted/get_test.dart
+++ b/test/get/hosted/get_test.dart
@@ -21,9 +21,7 @@
     await pubGet();
 
     await d.cacheDir({'foo': '1.2.3'}).validate();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.2.3'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.2.3'}).validate();
   });
 
   test('URL encodes the package name', () async {
@@ -59,9 +57,7 @@
     await pubGet();
 
     await d.cacheDir({'foo': '1.2.3'}, port: server.port).validate();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.2.3', server: server),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.2.3'}).validate();
   });
 
   group('categorizes dependency types in the lockfile', () {
diff --git a/test/get/hosted/get_transitive_test.dart b/test/get/hosted/get_transitive_test.dart
index 0ae18ac..74635bc 100644
--- a/test/get/hosted/get_transitive_test.dart
+++ b/test/get/hosted/get_transitive_test.dart
@@ -20,9 +20,6 @@
     await pubGet();
 
     await d.cacheDir({'foo': '1.2.3', 'bar': '2.0.4'}).validate();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.2.3'),
-      d.packageConfigEntry(name: 'bar', version: '2.0.4'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.2.3', 'bar': '2.0.4'}).validate();
   });
 }
diff --git a/test/get/hosted/gets_a_package_with_busted_dev_dependencies_test.dart b/test/get/hosted/gets_a_package_with_busted_dev_dependencies_test.dart
index 585cfba..0d75f95 100644
--- a/test/get/hosted/gets_a_package_with_busted_dev_dependencies_test.dart
+++ b/test/get/hosted/gets_a_package_with_busted_dev_dependencies_test.dart
@@ -24,8 +24,6 @@
     await pubGet();
 
     await d.cacheDir({'foo': '1.2.3'}).validate();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.2.3'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.2.3'}).validate();
   });
 }
diff --git a/test/get/hosted/resolve_constraints_test.dart b/test/get/hosted/resolve_constraints_test.dart
index 466902e..c9c73d2 100644
--- a/test/get/hosted/resolve_constraints_test.dart
+++ b/test/get/hosted/resolve_constraints_test.dart
@@ -22,10 +22,8 @@
 
     await d
         .cacheDir({'foo': '1.2.3', 'bar': '2.3.4', 'baz': '2.0.4'}).validate();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.2.3'),
-      d.packageConfigEntry(name: 'bar', version: '2.3.4'),
-      d.packageConfigEntry(name: 'baz', version: '2.0.4'),
-    ]).validate();
+
+    await d.appPackagesFile(
+        {'foo': '1.2.3', 'bar': '2.3.4', 'baz': '2.0.4'}).validate();
   });
 }
diff --git a/test/get/hosted/resolve_with_retracted_package_versions_test.dart b/test/get/hosted/resolve_with_retracted_package_versions_test.dart
index d9b33a4..efd3a0a 100644
--- a/test/get/hosted/resolve_with_retracted_package_versions_test.dart
+++ b/test/get/hosted/resolve_with_retracted_package_versions_test.dart
@@ -23,10 +23,7 @@
     await pubGet();
 
     await d.cacheDir({'foo': '1.0.0', 'bar': '1.0.0'}).validate();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.0.0'),
-      d.packageConfigEntry(name: 'bar', version: '1.0.0'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.0.0', 'bar': '1.0.0'}).validate();
   });
 
   test('Error when the only available package version is retracted', () async {
@@ -56,34 +53,22 @@
 
     await pubGet();
     await d.cacheDir({'foo': '1.0.0', 'bar': '1.1.0'}).validate();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.0.0'),
-      d.packageConfigEntry(name: 'bar', version: '1.1.0'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.0.0', 'bar': '1.1.0'}).validate();
 
     server.retractPackageVersion('bar', '1.1.0');
     await pubUpgrade();
     await d.cacheDir({'foo': '1.0.0', 'bar': '1.1.0'}).validate();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.0.0'),
-      d.packageConfigEntry(name: 'bar', version: '1.1.0'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.0.0', 'bar': '1.1.0'}).validate();
 
     server.serve('bar', '2.0.0');
     await pubUpgrade();
     await d.cacheDir({'foo': '1.0.0', 'bar': '1.1.0'}).validate();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.0.0'),
-      d.packageConfigEntry(name: 'bar', version: '1.1.0'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.0.0', 'bar': '1.1.0'}).validate();
 
     server.serve('bar', '1.2.0');
     await pubUpgrade();
     await d.cacheDir({'foo': '1.0.0', 'bar': '1.2.0'}).validate();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.0.0'),
-      d.packageConfigEntry(name: 'bar', version: '1.2.0'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.0.0', 'bar': '1.2.0'}).validate();
   });
 
   test('Offline versions of pub commands also handle retracted packages',
@@ -117,10 +102,7 @@
     await pubUpgrade(args: ['--offline']);
 
     // We choose bar 1.1.0 since we already have it in pubspec.lock
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.0.0'),
-      d.packageConfigEntry(name: 'bar', version: '1.1.0'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.0.0', 'bar': '1.1.0'}).validate();
 
     // Delete lockfile so that retracted versions are not considered.
     final lockFile = p.join(d.sandbox, appPath, 'pubspec.lock');
@@ -128,10 +110,7 @@
     deleteEntry(lockFile);
 
     await pubGet(args: ['--offline']);
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.0.0'),
-      d.packageConfigEntry(name: 'bar', version: '1.0.0'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.0.0', 'bar': '1.0.0'}).validate();
   });
 
   test('Allow retracted version when pinned in dependency_overrides', () async {
@@ -151,9 +130,7 @@
     server.retractPackageVersion('foo', '2.0.0');
 
     await pubGet();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '2.0.0'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '2.0.0'}).validate();
   });
 
   test('Prefer retracted version in dependency_overrides over pubspec.lock',
@@ -170,9 +147,7 @@
     server.retractPackageVersion('foo', '3.0.0');
 
     await pubUpgrade();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '3.0.0'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '3.0.0'}).validate();
 
     await d.dir(appPath, [
       d.pubspec({
@@ -183,8 +158,6 @@
     ]).create();
 
     await pubUpgrade();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '2.0.0'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '2.0.0'}).validate();
   });
 }
diff --git a/test/get/hosted/stay_locked_if_compatible_test.dart b/test/get/hosted/stay_locked_if_compatible_test.dart
index df04579..bb5e63a 100644
--- a/test/get/hosted/stay_locked_if_compatible_test.dart
+++ b/test/get/hosted/stay_locked_if_compatible_test.dart
@@ -17,9 +17,8 @@
     await d.appDir({'foo': 'any'}).create();
 
     await pubGet();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.0.0'),
-    ]).validate();
+
+    await d.appPackagesFile({'foo': '1.0.0'}).validate();
 
     server.serve('foo', '1.0.1');
 
@@ -27,8 +26,6 @@
 
     await pubGet();
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.0.0'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.0.0'}).validate();
   });
 }
diff --git a/test/get/hosted/stay_locked_if_new_is_satisfied_test.dart b/test/get/hosted/stay_locked_if_new_is_satisfied_test.dart
index c75c435..dbe6039 100644
--- a/test/get/hosted/stay_locked_if_new_is_satisfied_test.dart
+++ b/test/get/hosted/stay_locked_if_new_is_satisfied_test.dart
@@ -19,11 +19,9 @@
     await d.appDir({'foo': 'any'}).create();
 
     await pubGet();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.0.0'),
-      d.packageConfigEntry(name: 'bar', version: '1.0.0'),
-      d.packageConfigEntry(name: 'baz', version: '1.0.0'),
-    ]).validate();
+
+    await d.appPackagesFile(
+        {'foo': '1.0.0', 'bar': '1.0.0', 'baz': '1.0.0'}).validate();
 
     server.serve('foo', '2.0.0', deps: {'bar': '<3.0.0'});
     server.serve('bar', '2.0.0', deps: {'baz': '<3.0.0'});
@@ -34,11 +32,11 @@
 
     await pubGet();
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.0.0'),
-      d.packageConfigEntry(name: 'bar', version: '1.0.0'),
-      d.packageConfigEntry(name: 'baz', version: '1.0.0'),
-      d.packageConfigEntry(name: 'newdep', version: '2.0.0'),
-    ]).validate();
+    await d.appPackagesFile({
+      'foo': '1.0.0',
+      'bar': '1.0.0',
+      'baz': '1.0.0',
+      'newdep': '2.0.0'
+    }).validate();
   });
 }
diff --git a/test/get/hosted/stay_locked_test.dart b/test/get/hosted/stay_locked_test.dart
index 8b819ea..134e8b5 100644
--- a/test/get/hosted/stay_locked_test.dart
+++ b/test/get/hosted/stay_locked_test.dart
@@ -20,9 +20,8 @@
 
     // This should lock the foo dependency to version 1.0.0.
     await pubGet();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.0.0'),
-    ]).validate();
+
+    await d.appPackagesFile({'foo': '1.0.0'}).validate();
 
     // Delete the .dart_tool/package_config.json file to simulate a new checkout of the application.
     deleteEntry(path.join(d.sandbox, packageConfigFilePath));
@@ -33,8 +32,6 @@
     // This shouldn't upgrade the foo dependency due to the lockfile.
     await pubGet();
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.0.0'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.0.0'}).validate();
   });
 }
diff --git a/test/get/hosted/unlock_if_incompatible_test.dart b/test/get/hosted/unlock_if_incompatible_test.dart
index 007231e..11bf909 100644
--- a/test/get/hosted/unlock_if_incompatible_test.dart
+++ b/test/get/hosted/unlock_if_incompatible_test.dart
@@ -18,16 +18,12 @@
 
     await pubGet();
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.0.0'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.0.0'}).validate();
     server.serve('foo', '1.0.1');
     await d.appDir({'foo': '>1.0.0'}).create();
 
     await pubGet();
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.0.1'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.0.1'}).validate();
   });
 }
diff --git a/test/get/hosted/unlock_if_new_is_unsatisfied_test.dart b/test/get/hosted/unlock_if_new_is_unsatisfied_test.dart
index ae6a4e6..1cedc5a 100644
--- a/test/get/hosted/unlock_if_new_is_unsatisfied_test.dart
+++ b/test/get/hosted/unlock_if_new_is_unsatisfied_test.dart
@@ -22,12 +22,12 @@
 
     await pubGet();
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.0.0'),
-      d.packageConfigEntry(name: 'bar', version: '1.0.0'),
-      d.packageConfigEntry(name: 'baz', version: '1.0.0'),
-      d.packageConfigEntry(name: 'qux', version: '1.0.0'),
-    ]).validate();
+    await d.appPackagesFile({
+      'foo': '1.0.0',
+      'bar': '1.0.0',
+      'baz': '1.0.0',
+      'qux': '1.0.0'
+    }).validate();
 
     server.serve('foo', '2.0.0', deps: {'bar': '<3.0.0'});
     server.serve('bar', '2.0.0', deps: {'baz': '<3.0.0'});
@@ -39,12 +39,12 @@
 
     await pubGet();
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '2.0.0'),
-      d.packageConfigEntry(name: 'bar', version: '2.0.0'),
-      d.packageConfigEntry(name: 'baz', version: '2.0.0'),
-      d.packageConfigEntry(name: 'qux', version: '1.0.0'),
-      d.packageConfigEntry(name: 'newdep', version: '2.0.0'),
-    ]).validate();
+    await d.appPackagesFile({
+      'foo': '2.0.0',
+      'bar': '2.0.0',
+      'baz': '2.0.0',
+      'qux': '1.0.0',
+      'newdep': '2.0.0'
+    }).validate();
   });
 }
diff --git a/test/get/hosted/unlock_if_version_doesnt_exist_test.dart b/test/get/hosted/unlock_if_version_doesnt_exist_test.dart
index e4cc01b..7eb4246 100644
--- a/test/get/hosted/unlock_if_version_doesnt_exist_test.dart
+++ b/test/get/hosted/unlock_if_version_doesnt_exist_test.dart
@@ -17,9 +17,7 @@
 
     await d.appDir({'foo': 'any'}).create();
     await pubGet();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.0.0'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.0.0'}).validate();
 
     deleteEntry(p.join(d.sandbox, cachePath));
 
@@ -27,8 +25,6 @@
     server.serve('foo', '1.0.1');
 
     await pubGet();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.0.1'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.0.1'}).validate();
   });
 }
diff --git a/test/get/package_name_test.dart b/test/get/package_name_test.dart
index b1328cc..46ca386 100644
--- a/test/get/package_name_test.dart
+++ b/test/get/package_name_test.dart
@@ -56,8 +56,7 @@
     await pubGet();
 
     await d.dir(appPath, [
-      d.packageConfigFile(
-          [d.packageConfigEntry(name: 'foo.bar.baz', path: '.')])
+      d.packagesFile({'foo.bar.baz': '.'}),
     ]).validate();
   });
 }
diff --git a/test/get/path/absolute_path_test.dart b/test/get/path/absolute_path_test.dart
index e1897e9..0fc987a 100644
--- a/test/get/path/absolute_path_test.dart
+++ b/test/get/path/absolute_path_test.dart
@@ -21,8 +21,6 @@
 
     await pubGet();
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', path: path.join(d.sandbox, 'foo')),
-    ]).validate();
+    await d.appPackagesFile({'foo': path.join(d.sandbox, 'foo')}).validate();
   });
 }
diff --git a/test/get/path/absolute_symlink_test.dart b/test/get/path/absolute_symlink_test.dart
index 83d3433..1a2d912 100644
--- a/test/get/path/absolute_symlink_test.dart
+++ b/test/get/path/absolute_symlink_test.dart
@@ -24,8 +24,8 @@
 
     await pubGet();
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', path: fooPath),
+    await d.dir(appPath, [
+      d.packagesFile({'myapp': '.', 'foo': fooPath})
     ]).validate();
 
     await d.dir('moved').create();
@@ -35,9 +35,9 @@
     renameInSandbox(appPath, path.join('moved', appPath));
 
     await d.dir('moved', [
-      d.appPackageConfigFile([
-        d.packageConfigEntry(name: 'foo', path: fooPath),
-      ]),
+      d.dir(appPath, [
+        d.packagesFile({'myapp': '.', 'foo': fooPath})
+      ])
     ]).validate();
   });
 }
diff --git a/test/get/path/relative_path_test.dart b/test/get/path/relative_path_test.dart
index e56a453..4255d49 100644
--- a/test/get/path/relative_path_test.dart
+++ b/test/get/path/relative_path_test.dart
@@ -23,9 +23,7 @@
 
     await pubGet();
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', path: '../foo'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '../foo'}).validate();
   });
 
   test('path is relative to containing pubspec', () async {
@@ -47,10 +45,8 @@
 
     await pubGet();
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', path: '../relative/foo'),
-      d.packageConfigEntry(name: 'bar', path: '../relative/bar'),
-    ]).validate();
+    await d.appPackagesFile(
+        {'foo': '../relative/foo', 'bar': '../relative/bar'}).validate();
   });
 
   test('path is relative to containing pubspec when using --directory',
@@ -76,10 +72,9 @@
         workingDirectory: d.sandbox,
         output: contains('Changed 2 dependencies in myapp!'));
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', path: '../relative/foo'),
-      d.packageConfigEntry(name: 'bar', path: '../relative/bar'),
-    ]).validate();
+    await d.appPackagesFile(
+      {'foo': '../relative/foo', 'bar': '../relative/bar'},
+    ).validate();
   });
 
   test('relative path preserved in the lockfile', () async {
diff --git a/test/get/path/relative_symlink_test.dart b/test/get/path/relative_symlink_test.dart
index 9136a34..af7185b 100644
--- a/test/get/path/relative_symlink_test.dart
+++ b/test/get/path/relative_symlink_test.dart
@@ -28,8 +28,8 @@
 
     await pubGet();
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', path: '../foo'),
+    await d.dir(appPath, [
+      d.packagesFile({'myapp': '.', 'foo': '../foo'})
     ]).validate();
 
     await d.dir('moved').create();
@@ -41,8 +41,8 @@
     renameInSandbox(appPath, path.join('moved', appPath));
 
     await d.dir('moved', [
-      d.appPackageConfigFile([
-        d.packageConfigEntry(name: 'foo', path: '../foo'),
+      d.dir(appPath, [
+        d.packagesFile({'myapp': '.', 'foo': '../foo'})
       ])
     ]).validate();
   });
diff --git a/test/get/path/shared_dependency_symlink_test.dart b/test/get/path/shared_dependency_symlink_test.dart
index d450838..46a78c6 100644
--- a/test/get/path/shared_dependency_symlink_test.dart
+++ b/test/get/path/shared_dependency_symlink_test.dart
@@ -40,10 +40,13 @@
 
     await pubGet();
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', path: '../foo'),
-      d.packageConfigEntry(name: 'bar', path: '../bar'),
-      d.packageConfigEntry(name: 'shared', path: '../shared'),
+    await d.dir(appPath, [
+      d.packagesFile({
+        'myapp': '.',
+        'foo': '../foo',
+        'bar': '../bar',
+        'shared': '../shared'
+      })
     ]).validate();
   });
 }
diff --git a/test/get/path/shared_dependency_test.dart b/test/get/path/shared_dependency_test.dart
index 3ef91ae..7072221 100644
--- a/test/get/path/shared_dependency_test.dart
+++ b/test/get/path/shared_dependency_test.dart
@@ -35,11 +35,8 @@
 
     await pubGet();
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', path: '../foo'),
-      d.packageConfigEntry(name: 'bar', path: '../bar'),
-      d.packageConfigEntry(name: 'shared', path: '../shared'),
-    ]).validate();
+    await d.appPackagesFile(
+        {'foo': '../foo', 'bar': '../bar', 'shared': '../shared'}).validate();
   });
 
   test('shared dependency with paths that normalize the same', () async {
@@ -69,10 +66,7 @@
 
     await pubGet();
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', path: '../foo'),
-      d.packageConfigEntry(name: 'bar', path: '../bar'),
-      d.packageConfigEntry(name: 'shared', path: '../shared'),
-    ]).validate();
+    await d.appPackagesFile(
+        {'foo': '../foo', 'bar': '../bar', 'shared': '../shared'}).validate();
   });
 }
diff --git a/test/get/sdk_constraint_required_test.dart b/test/get/sdk_constraint_required_test.dart
index 3f1e5c0..1b6fbc5 100644
--- a/test/get/sdk_constraint_required_test.dart
+++ b/test/get/sdk_constraint_required_test.dart
@@ -25,8 +25,8 @@
       d.nothing('pubspec.lock'),
       // The "packages" directory should not have been generated.
       d.nothing('packages'),
-      // The package config file should not have been created.
-      d.nothing('.dart_tool/package_config.json'),
+      // The ".packages" file should not have been created.
+      d.nothing('.packages'),
     ]).validate();
   });
 }
diff --git a/test/get/switch_source_test.dart b/test/get/switch_source_test.dart
index 7e56652..ffbf8b4 100644
--- a/test/get/switch_source_test.dart
+++ b/test/get/switch_source_test.dart
@@ -21,15 +21,11 @@
 
     await pubGet();
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', path: '../foo'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '../foo'}).validate();
     await d.appDir({'foo': 'any'}).create();
 
     await pubGet();
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.2.3'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.2.3'}).validate();
   });
 }
diff --git a/test/hosted/offline_test.dart b/test/hosted/offline_test.dart
index ca3dc80..6482656 100644
--- a/test/hosted/offline_test.dart
+++ b/test/hosted/offline_test.dart
@@ -44,10 +44,8 @@
       }
 
       await pubCommand(command, args: ['--offline'], warning: warning);
-      await d.appPackageConfigFile([
-        d.packageConfigEntry(name: 'foo', version: '1.2.3'),
-        d.packageConfigEntry(name: 'bar', version: '1.2.3'),
-      ]).validate();
+
+      await d.appPackagesFile({'foo': '1.2.3', 'bar': '1.2.3'}).validate();
     });
 
     test('supports prerelease versions', () async {
@@ -68,9 +66,7 @@
 
       await pubCommand(command, args: ['--offline'], warning: warning);
 
-      await d.appPackageConfigFile([
-        d.packageConfigEntry(name: 'foo', version: '1.2.3-alpha.1'),
-      ]).validate();
+      await d.appPackagesFile({'foo': '1.2.3-alpha.1'}).validate();
     });
 
     test('fails gracefully if a dependency is not cached', () async {
@@ -147,9 +143,7 @@
 
       await pubCommand(command, args: ['--offline']);
 
-      await d.appPackageConfigFile([
-        d.packageConfigEntry(name: 'foo', version: '1.2.3'),
-      ]).validate();
+      await d.appPackagesFile({'foo': '1.2.3'}).validate();
     });
 
     test('skips invalid cached versions', () async {
@@ -170,9 +164,7 @@
 
       await pubCommand(command, args: ['--offline']);
 
-      await d.appPackageConfigFile([
-        d.packageConfigEntry(name: 'foo', version: '1.2.2'),
-      ]).validate();
+      await d.appPackagesFile({'foo': '1.2.2'}).validate();
     });
 
     test('skips invalid locked versions', () async {
@@ -194,9 +186,7 @@
 
       await pubCommand(command, args: ['--offline']);
 
-      await d.appPackageConfigFile([
-        d.packageConfigEntry(name: 'foo', version: '1.2.2'),
-      ]).validate();
+      await d.appPackagesFile({'foo': '1.2.2'}).validate();
     });
   });
 }
diff --git a/test/hosted/remove_removed_dependency_test.dart b/test/hosted/remove_removed_dependency_test.dart
index a0446c0..bb2e091 100644
--- a/test/hosted/remove_removed_dependency_test.dart
+++ b/test/hosted/remove_removed_dependency_test.dart
@@ -17,18 +17,14 @@
       await d.appDir({'foo': 'any', 'bar': 'any'}).create();
 
       await pubCommand(command);
-      await d.appPackageConfigFile([
-        d.packageConfigEntry(name: 'foo', version: '1.0.0'),
-        d.packageConfigEntry(name: 'bar', version: '1.0.0'),
-      ]).validate();
+
+      await d.appPackagesFile({'foo': '1.0.0', 'bar': '1.0.0'}).validate();
 
       await d.appDir({'foo': 'any'}).create();
 
       await pubCommand(command);
 
-      await d.appPackageConfigFile([
-        d.packageConfigEntry(name: 'foo', version: '1.0.0'),
-      ]).validate();
+      await d.appPackagesFile({'foo': '1.0.0'}).validate();
     });
   });
 }
diff --git a/test/hosted/remove_removed_transitive_dependency_test.dart b/test/hosted/remove_removed_transitive_dependency_test.dart
index 182ec3f..ac3a452 100644
--- a/test/hosted/remove_removed_transitive_dependency_test.dart
+++ b/test/hosted/remove_removed_transitive_dependency_test.dart
@@ -21,21 +21,20 @@
       await d.appDir({'foo': 'any', 'bar': 'any'}).create();
 
       await pubCommand(command);
-      await d.appPackageConfigFile([
-        d.packageConfigEntry(name: 'foo', version: '1.0.0'),
-        d.packageConfigEntry(name: 'bar', version: '1.0.0'),
-        d.packageConfigEntry(name: 'shared_dep', version: '1.0.0'),
-        d.packageConfigEntry(name: 'bar_dep', version: '1.0.0'),
-      ]).validate();
+
+      await d.appPackagesFile({
+        'foo': '1.0.0',
+        'bar': '1.0.0',
+        'shared_dep': '1.0.0',
+        'bar_dep': '1.0.0',
+      }).validate();
 
       await d.appDir({'foo': 'any'}).create();
 
       await pubCommand(command);
 
-      await d.appPackageConfigFile([
-        d.packageConfigEntry(name: 'foo', version: '1.0.0'),
-        d.packageConfigEntry(name: 'shared_dep', version: '1.0.0'),
-      ]).validate();
+      await d
+          .appPackagesFile({'foo': '1.0.0', 'shared_dep': '1.0.0'}).validate();
     });
   });
 }
diff --git a/test/must_pub_get_test.dart b/test/must_pub_get_test.dart
index 71d9c16..dfc09d7 100644
--- a/test/must_pub_get_test.dart
+++ b/test/must_pub_get_test.dart
@@ -213,7 +213,7 @@
           d.appPubspec({'foo': '1.0.0'})
         ]).create();
 
-        await pubGet(args: ['--legacy-packages-file']);
+        await pubGet();
 
         deleteEntry(p.join(d.sandbox, cachePath));
 
@@ -235,7 +235,7 @@
           })
         ]).create();
 
-        await pubGet(args: ['--legacy-packages-file']);
+        await pubGet();
 
         await createPackagesFile(appPath);
 
@@ -257,7 +257,7 @@
           })
         ]).create();
 
-        await pubGet(args: ['--legacy-packages-file']);
+        await pubGet();
 
         await d.dir(appPath, [
           d.file('.packages', '''
@@ -284,7 +284,7 @@
           })
         ]).create();
 
-        await pubGet(args: ['--legacy-packages-file']);
+        await pubGet();
 
         await createPackagesFile(appPath, dependenciesInSandBox: ['foo']);
 
@@ -452,7 +452,7 @@
   group("doesn't require the user to run pub get first if", () {
     group(
         'the pubspec is older than the lockfile which is older than the '
-        'package-config, even if the contents are wrong', () {
+        'packages file, even if the contents are wrong', () {
       setUp(() async {
         await d.dir(appPath, [
           d.appPubspec({'foo': '1.0.0'})
@@ -461,6 +461,7 @@
         await _touch('pubspec.yaml');
 
         await _touch('pubspec.lock');
+        await _touch('.packages');
         await _touch('.dart_tool/package_config.json');
       });
 
@@ -599,11 +600,14 @@
           File(p.join(d.sandbox, 'myapp/pubspec.yaml')).lastModifiedSync();
       var lockFileModified =
           File(p.join(d.sandbox, 'myapp/pubspec.lock')).lastModifiedSync();
+      var packagesModified =
+          File(p.join(d.sandbox, 'myapp/.packages')).lastModifiedSync();
       var packageConfigModified =
           File(p.join(d.sandbox, 'myapp/.dart_tool/package_config.json'))
               .lastModifiedSync();
 
       expect(!pubspecModified.isAfter(lockFileModified), isTrue);
+      expect(!lockFileModified.isAfter(packagesModified), isTrue);
       expect(!lockFileModified.isAfter(packageConfigModified), isTrue);
     });
   }
diff --git a/test/packages_file_test.dart b/test/packages_file_test.dart
index c245a9a..e7736be 100644
--- a/test/packages_file_test.dart
+++ b/test/packages_file_test.dart
@@ -11,7 +11,7 @@
 
 void main() {
   forBothPubGetAndUpgrade((command) {
-    test('.packages file is created with flag', () async {
+    test('.packages file is created', () async {
       await servePackages()
         ..serve('foo', '1.2.3',
             deps: {'baz': '2.2.2'}, contents: [d.dir('lib', [])])
@@ -24,7 +24,7 @@
         d.dir('lib')
       ]).create();
 
-      await pubCommand(command, args: ['--legacy-packages-file']);
+      await pubCommand(command);
 
       await d.dir(appPath, [
         d.packagesFile(
@@ -32,7 +32,7 @@
       ]).validate();
     });
 
-    test('.packages file is overwritten with flag', () async {
+    test('.packages file is overwritten', () async {
       await servePackages()
         ..serve('foo', '1.2.3',
             deps: {'baz': '2.2.2'}, contents: [d.dir('lib', [])])
@@ -51,7 +51,7 @@
       await oldFile.create();
       await oldFile.validate(); // Sanity-check that file was created correctly.
 
-      await pubCommand(command, args: ['--legacy-packages-file']);
+      await pubCommand(command);
 
       await d.dir(appPath, [
         d.packagesFile(
@@ -59,28 +59,24 @@
       ]).validate();
     });
 
-    test('.packages file is not created if pub command fails with flag',
-        () async {
+    test('.packages file is not created if pub command fails', () async {
       await d.dir(appPath, [
         d.appPubspec({'foo': '1.2.3'}),
         d.dir('lib')
       ]).create();
 
       await pubCommand(command,
-          args: ['--offline', '--legacy-packages-file'],
-          error: equalsIgnoringWhitespace("""
+          args: ['--offline'], error: equalsIgnoringWhitespace("""
             Because myapp depends on foo any which doesn't exist (could not find
               package foo in cache), version solving failed.
 
             Try again without --offline!
-          """),
-          exitCode: exit_codes.UNAVAILABLE);
+          """), exitCode: exit_codes.UNAVAILABLE);
 
       await d.dir(appPath, [d.nothing('.packages')]).validate();
     });
 
-    test('.packages file has relative path to path dependency with flag',
-        () async {
+    test('.packages file has relative path to path dependency', () async {
       await servePackages()
         ..serve('foo', '1.2.3',
             deps: {'baz': 'any'}, contents: [d.dir('lib', [])])
@@ -104,7 +100,7 @@
         d.dir('lib')
       ]).create();
 
-      await pubCommand(command, args: ['--legacy-packages-file']);
+      await pubCommand(command);
 
       await d.dir(appPath, [
         d.packagesFile({'myapp': '.', 'baz': '../local_baz', 'foo': '1.2.3'}),
diff --git a/test/pub_get_and_upgrade_test.dart b/test/pub_get_and_upgrade_test.dart
index f64f93b..62004a4 100644
--- a/test/pub_get_and_upgrade_test.dart
+++ b/test/pub_get_and_upgrade_test.dart
@@ -45,8 +45,7 @@
       await pubCommand(command);
 
       await d.dir('myapp', [
-        d.packageConfigFile(
-            [d.packageConfigEntry(name: 'myapp_name', path: '.')]),
+        d.packagesFile({'myapp_name': '.'})
       ]).validate();
     });
 
diff --git a/test/remove/remove_test.dart b/test/remove/remove_test.dart
index 8c82527..e369c85 100644
--- a/test/remove/remove_test.dart
+++ b/test/remove/remove_test.dart
@@ -21,7 +21,7 @@
     await pubRemove(args: ['foo']);
 
     await d.cacheDir({}).validate();
-    await d.appPackageConfigFile([]).validate();
+    await d.appPackagesFile({}).validate();
     await d.appDir().validate();
   });
 
@@ -49,9 +49,7 @@
     await pubRemove(args: ['foo']);
 
     await d.cacheDir({'bar': '2.0.0'}).validate();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'bar', version: '2.0.0'),
-    ]).validate();
+    await d.appPackagesFile({'bar': '2.0.0'}).validate();
 
     await d.dir(appPath, [
       d.pubspec({
@@ -115,7 +113,7 @@
     await pubRemove(args: ['foo']);
 
     await d.cacheDir({}).validate();
-    await d.appPackageConfigFile([]).validate();
+    await d.appPackagesFile({}).validate();
 
     await d.dir(appPath, [
       d.pubspec({'name': 'myapp'})
@@ -142,10 +140,7 @@
     await pubRemove(args: ['foo', 'bar', 'baz']);
 
     await d.cacheDir({'jfj': '0.2.1'}).validate();
-
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'jfj', version: '0.2.1'),
-    ]).validate();
+    await d.appPackagesFile({'jfj': '0.2.1'}).validate();
 
     await d.dir(appPath, [
       d.pubspec({
@@ -175,10 +170,7 @@
     await pubGet();
 
     await pubRemove(args: ['foo']);
-
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'bar', version: '1.2.3'),
-    ]).validate();
+    await d.appPackagesFile({'bar': '1.2.3'}).validate();
     await d.appDir({'bar': '1.2.3'}).validate();
   });
 
@@ -196,9 +188,7 @@
     await pubGet();
 
     await pubRemove(args: ['foo']);
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'bar', version: '1.2.3'),
-    ]).validate();
+    await d.appPackagesFile({'bar': '1.2.3'}).validate();
     await d.appDir({'bar': '1.2.3'}).validate();
   });
 
@@ -220,9 +210,7 @@
     await pubGet();
 
     await pubRemove(args: ['foo']);
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'bar', version: '2.0.1'),
-    ]).validate();
+    await d.appPackagesFile({'bar': '2.0.1'}).validate();
     await d.appDir({'bar': '2.0.1'}).validate();
   });
 
diff --git a/test/sdk_test.dart b/test/sdk_test.dart
index 6165cd5..6e50ff0 100644
--- a/test/sdk_test.dart
+++ b/test/sdk_test.dart
@@ -37,10 +37,13 @@
       }).create();
       await pubCommand(command,
           environment: {'FLUTTER_ROOT': p.join(d.sandbox, 'flutter')});
-      await d.appPackageConfigFile([
-        d.packageConfigEntry(
-            name: 'foo', path: p.join(d.sandbox, 'flutter', 'packages', 'foo')),
-        d.packageConfigEntry(name: 'bar', version: '1.0.0'),
+
+      await d.dir(appPath, [
+        d.packagesFile({
+          'myapp': '.',
+          'foo': p.join(d.sandbox, 'flutter', 'packages', 'foo'),
+          'bar': '1.0.0'
+        })
       ]).validate();
     });
 
@@ -51,10 +54,11 @@
       await pubCommand(command,
           environment: {'FLUTTER_ROOT': p.join(d.sandbox, 'flutter')});
 
-      await d.appPackageConfigFile([
-        d.packageConfigEntry(
-            name: 'baz',
-            path: p.join(d.sandbox, 'flutter', 'bin', 'cache', 'pkg', 'baz')),
+      await d.dir(appPath, [
+        d.packagesFile({
+          'myapp': '.',
+          'baz': p.join(d.sandbox, 'flutter', 'bin', 'cache', 'pkg', 'baz')
+        })
       ]).validate();
     });
 
@@ -89,7 +93,10 @@
       deleteEntry(p.join(d.sandbox, 'flutter', 'version'));
       await pubCommand(command,
           environment: {'FLUTTER_ROOT': p.join(d.sandbox, 'flutter')});
-      await d.appPackageConfigFile([]).validate();
+
+      await d.dir(appPath, [
+        d.packagesFile({'myapp': '.'})
+      ]).validate();
     });
 
     group('fails if', () {
@@ -162,10 +169,13 @@
       }).create();
       await pubCommand(command,
           environment: {'FUCHSIA_DART_SDK_ROOT': p.join(d.sandbox, 'fuchsia')});
-      await d.appPackageConfigFile([
-        d.packageConfigEntry(
-            name: 'foo', path: p.join(d.sandbox, 'fuchsia', 'packages', 'foo')),
-        d.packageConfigEntry(name: 'bar', version: '1.0.0'),
+
+      await d.dir(appPath, [
+        d.packagesFile({
+          'myapp': '.',
+          'foo': p.join(d.sandbox, 'fuchsia', 'packages', 'foo'),
+          'bar': '1.0.0'
+        })
       ]).validate();
     });
   });
diff --git a/test/testdata/goldens/embedding/embedding_test/logfile is written with --verbose and on unexpected exceptions.txt b/test/testdata/goldens/embedding/embedding_test/logfile is written with --verbose and on unexpected exceptions.txt
index fc69b03..1d3a5f5 100644
--- a/test/testdata/goldens/embedding/embedding_test/logfile is written with --verbose and on unexpected exceptions.txt
+++ b/test/testdata/goldens/embedding/embedding_test/logfile is written with --verbose and on unexpected exceptions.txt
@@ -81,6 +81,16 @@
 [E]    |   version: "1.0.0"
 [E]    | sdks:
 [E]    |   dart: ">=0.1.2 <1.0.0"
+[E] IO  : Writing $N characters to text file .packages.
+[E] FINE: Contents:
+[E]    | # This file is deprecated. Tools should instead consume 
+[E]    | # `.dart_tool/package_config.json`.
+[E]    | # 
+[E]    | # For more info see: https://dart.dev/go/dot-packages-deprecation
+[E]    | # 
+[E]    | # Generated by pub on $TIME
+[E]    | foo:file://$SANDBOX/cache/hosted/localhost%2558$PORT/foo-1.0.0/lib/
+[E]    | myapp:lib/
 [E] IO  : Writing $N characters to text file .dart_tool/package_config.json.
 [E] FINE: Contents:
 [E]    | {
@@ -220,6 +230,16 @@
    | sdks:
    |   dart: ">=0.1.2 <1.0.0"
 MSG : Changed 1 dependency!
+IO  : Writing $N characters to text file .packages.
+FINE: Contents:
+   | # This file is deprecated. Tools should instead consume 
+   | # `.dart_tool/package_config.json`.
+   | # 
+   | # For more info see: https://dart.dev/go/dot-packages-deprecation
+   | # 
+   | # Generated by pub on $TIME
+   | foo:file://$SANDBOX/cache/hosted/localhost%2558$PORT/foo-1.0.0/lib/
+   | myapp:lib/
 IO  : Writing $N characters to text file .dart_tool/package_config.json.
 FINE: Contents:
    | {
diff --git a/test/testdata/goldens/help_test/pub add --help.txt b/test/testdata/goldens/help_test/pub add --help.txt
index 3d1f429..2a37c21 100644
--- a/test/testdata/goldens/help_test/pub add --help.txt
+++ b/test/testdata/goldens/help_test/pub add --help.txt
@@ -5,22 +5,20 @@
 Add dependencies to pubspec.yaml.
 
 Usage: pub add <package>[:<constraint>] [<package2>[:<constraint2>]...] [options]
--h, --help                    Print this usage information.
--d, --dev                     Adds to the development dependencies instead.
-    --git-url                 Git URL of the package
-    --git-ref                 Git branch or commit to be retrieved
-    --git-path                Path of git package in repository
-    --hosted-url              URL of package host server
-    --path                    Add package from local path
-    --sdk=<[flutter]>         add package from SDK source
-                              [flutter]
-    --[no-]offline            Use cached packages instead of accessing the
-                              network.
--n, --dry-run                 Report what dependencies would change but don't
-                              change any.
-    --[no-]precompile         Build executables in immediate dependencies.
--C, --directory=<dir>         Run this in the directory <dir>.
-    --legacy-packages-file    Generate the legacy ".packages" file
+-h, --help               Print this usage information.
+-d, --dev                Adds to the development dependencies instead.
+    --git-url            Git URL of the package
+    --git-ref            Git branch or commit to be retrieved
+    --git-path           Path of git package in repository
+    --hosted-url         URL of package host server
+    --path               Add package from local path
+    --sdk=<[flutter]>    add package from SDK source
+                         [flutter]
+    --[no-]offline       Use cached packages instead of accessing the network.
+-n, --dry-run            Report what dependencies would change but don't change
+                         any.
+    --[no-]precompile    Build executables in immediate dependencies.
+-C, --directory=<dir>    Run this in the directory <dir>.
 
 Run "pub help" to see global options.
 See https://dart.dev/tools/pub/cmd/pub-add for detailed documentation.
diff --git a/test/testdata/goldens/help_test/pub downgrade --help.txt b/test/testdata/goldens/help_test/pub downgrade --help.txt
index ddf71e7..4497da2 100644
--- a/test/testdata/goldens/help_test/pub downgrade --help.txt
+++ b/test/testdata/goldens/help_test/pub downgrade --help.txt
@@ -7,13 +7,11 @@
 
 
 Usage: pub downgrade [dependencies...]
--h, --help                    Print this usage information.
-    --[no-]offline            Use cached packages instead of accessing the
-                              network.
--n, --dry-run                 Report what dependencies would change but don't
-                              change any.
--C, --directory=<dir>         Run this in the directory<dir>.
-    --legacy-packages-file    Generate the legacy ".packages" file
+-h, --help               Print this usage information.
+    --[no-]offline       Use cached packages instead of accessing the network.
+-n, --dry-run            Report what dependencies would change but don't change
+                         any.
+-C, --directory=<dir>    Run this in the directory<dir>.
 
 Run "pub help" to see global options.
 See https://dart.dev/tools/pub/cmd/pub-downgrade for detailed documentation.
diff --git a/test/testdata/goldens/help_test/pub get --help.txt b/test/testdata/goldens/help_test/pub get --help.txt
index 104f69c..74648a2 100644
--- a/test/testdata/goldens/help_test/pub get --help.txt
+++ b/test/testdata/goldens/help_test/pub get --help.txt
@@ -5,14 +5,12 @@
 Get the current package's dependencies.
 
 Usage: pub get <subcommand> [arguments...]
--h, --help                    Print this usage information.
-    --[no-]offline            Use cached packages instead of accessing the
-                              network.
--n, --dry-run                 Report what dependencies would change but don't
-                              change any.
-    --[no-]precompile         Build executables in immediate dependencies.
-    --legacy-packages-file    Generate the legacy ".packages" file
--C, --directory=<dir>         Run this in the directory<dir>.
+-h, --help               Print this usage information.
+    --[no-]offline       Use cached packages instead of accessing the network.
+-n, --dry-run            Report what dependencies would change but don't change
+                         any.
+    --[no-]precompile    Build executables in immediate dependencies.
+-C, --directory=<dir>    Run this in the directory<dir>.
 
 Run "pub help" to see global options.
 See https://dart.dev/tools/pub/cmd/pub-get for detailed documentation.
diff --git a/test/testdata/goldens/help_test/pub remove --help.txt b/test/testdata/goldens/help_test/pub remove --help.txt
index b82f9b6..7d14ed0 100644
--- a/test/testdata/goldens/help_test/pub remove --help.txt
+++ b/test/testdata/goldens/help_test/pub remove --help.txt
@@ -5,14 +5,12 @@
 Removes a dependency from the current package.
 
 Usage: pub remove <package>
--h, --help                    Print this usage information.
-    --[no-]offline            Use cached packages instead of accessing the
-                              network.
--n, --dry-run                 Report what dependencies would change but don't
-                              change any.
-    --[no-]precompile         Precompile executables in immediate dependencies.
--C, --directory=<dir>         Run this in the directory<dir>.
-    --legacy-packages-file    Generate the legacy ".packages" file
+-h, --help               Print this usage information.
+    --[no-]offline       Use cached packages instead of accessing the network.
+-n, --dry-run            Report what dependencies would change but don't change
+                         any.
+    --[no-]precompile    Precompile executables in immediate dependencies.
+-C, --directory=<dir>    Run this in the directory<dir>.
 
 Run "pub help" to see global options.
 See https://dart.dev/tools/pub/cmd/pub-remove for detailed documentation.
diff --git a/test/testdata/goldens/help_test/pub upgrade --help.txt b/test/testdata/goldens/help_test/pub upgrade --help.txt
index c787951..d1a29b9 100644
--- a/test/testdata/goldens/help_test/pub upgrade --help.txt
+++ b/test/testdata/goldens/help_test/pub upgrade --help.txt
@@ -5,18 +5,16 @@
 Upgrade the current package's dependencies to latest versions.
 
 Usage: pub upgrade [dependencies...]
--h, --help                    Print this usage information.
-    --[no-]offline            Use cached packages instead of accessing the
-                              network.
--n, --dry-run                 Report what dependencies would change but don't
-                              change any.
-    --[no-]precompile         Precompile executables in immediate dependencies.
-    --null-safety             Upgrade constraints in pubspec.yaml to null-safety
-                              versions
-    --legacy-packages-file    Generate the legacy ".packages" file
-    --major-versions          Upgrades packages to their latest resolvable
-                              versions, and updates pubspec.yaml.
--C, --directory=<dir>         Run this in the directory<dir>.
+-h, --help               Print this usage information.
+    --[no-]offline       Use cached packages instead of accessing the network.
+-n, --dry-run            Report what dependencies would change but don't change
+                         any.
+    --[no-]precompile    Precompile executables in immediate dependencies.
+    --null-safety        Upgrade constraints in pubspec.yaml to null-safety
+                         versions
+    --major-versions     Upgrades packages to their latest resolvable versions,
+                         and updates pubspec.yaml.
+-C, --directory=<dir>    Run this in the directory<dir>.
 
 Run "pub help" to see global options.
 See https://dart.dev/tools/pub/cmd/pub-upgrade for detailed documentation.
diff --git a/test/unknown_source_test.dart b/test/unknown_source_test.dart
index 37591d0..fc53621 100644
--- a/test/unknown_source_test.dart
+++ b/test/unknown_source_test.dart
@@ -72,9 +72,7 @@
       await pubCommand(command);
 
       // Should upgrade to the new one.
-      await d.appPackageConfigFile([
-        d.packageConfigEntry(name: 'foo', path: '../foo'),
-      ]).validate();
+      await d.appPackagesFile({'foo': '../foo'}).validate();
     });
   });
 }
diff --git a/test/upgrade/hosted/unlock_if_necessary_test.dart b/test/upgrade/hosted/unlock_if_necessary_test.dart
index 2707100..c285e66 100644
--- a/test/upgrade/hosted/unlock_if_necessary_test.dart
+++ b/test/upgrade/hosted/unlock_if_necessary_test.dart
@@ -20,19 +20,13 @@
 
     await pubGet();
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.0.0'),
-      d.packageConfigEntry(name: 'foo_dep', version: '1.0.0'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.0.0', 'foo_dep': '1.0.0'}).validate();
 
     server.serve('foo', '2.0.0', deps: {'foo_dep': '>1.0.0'});
     server.serve('foo_dep', '2.0.0');
 
     await pubUpgrade(args: ['foo']);
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '2.0.0'),
-      d.packageConfigEntry(name: 'foo_dep', version: '2.0.0'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '2.0.0', 'foo_dep': '2.0.0'}).validate();
   });
 }
diff --git a/test/upgrade/hosted/unlock_single_package_test.dart b/test/upgrade/hosted/unlock_single_package_test.dart
index e443a6a..bc78a3d 100644
--- a/test/upgrade/hosted/unlock_single_package_test.dart
+++ b/test/upgrade/hosted/unlock_single_package_test.dart
@@ -18,10 +18,7 @@
 
     await pubGet();
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.0.0'),
-      d.packageConfigEntry(name: 'bar', version: '1.0.0'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.0.0', 'bar': '1.0.0'}).validate();
 
     server.serve('foo', '2.0.0', deps: {'bar': '<3.0.0'});
     server.serve('bar', '2.0.0');
@@ -29,23 +26,16 @@
     // This can't upgrade 'bar'
     await pubUpgrade(args: ['bar']);
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.0.0'),
-      d.packageConfigEntry(name: 'bar', version: '1.0.0'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.0.0', 'bar': '1.0.0'}).validate();
+
     // Introducing foo and bar 1.1.0, to show that only 'bar' will be upgraded
     server.serve('foo', '1.1.0', deps: {'bar': '<2.0.0'});
     server.serve('bar', '1.1.0');
 
     await pubUpgrade(args: ['bar']);
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.0.0'),
-      d.packageConfigEntry(name: 'bar', version: '1.1.0'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.0.0', 'bar': '1.1.0'}).validate();
+
     await pubUpgrade();
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '2.0.0'),
-      d.packageConfigEntry(name: 'bar', version: '2.0.0'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '2.0.0', 'bar': '2.0.0'}).validate();
   });
 }
diff --git a/test/upgrade/hosted/upgrade_removed_constraints_test.dart b/test/upgrade/hosted/upgrade_removed_constraints_test.dart
index cf72c07..248ac90 100644
--- a/test/upgrade/hosted/upgrade_removed_constraints_test.dart
+++ b/test/upgrade/hosted/upgrade_removed_constraints_test.dart
@@ -19,19 +19,13 @@
 
     await pubUpgrade();
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.0.0'),
-      d.packageConfigEntry(name: 'bar', version: '1.0.0'),
-      d.packageConfigEntry(name: 'shared_dep', version: '1.0.0'),
-    ]).validate();
+    await d.appPackagesFile(
+        {'foo': '1.0.0', 'bar': '1.0.0', 'shared_dep': '1.0.0'}).validate();
 
     await d.appDir({'foo': 'any'}).create();
 
     await pubUpgrade();
 
-    await d.appPackageConfigFile([
-      d.packageConfigEntry(name: 'foo', version: '1.0.0'),
-      d.packageConfigEntry(name: 'shared_dep', version: '2.0.0'),
-    ]).validate();
+    await d.appPackagesFile({'foo': '1.0.0', 'shared_dep': '2.0.0'}).validate();
   });
 }
diff --git a/test/upgrade/upgrade_major_versions_test.dart b/test/upgrade/upgrade_major_versions_test.dart
index c5f0994..932ca17 100644
--- a/test/upgrade/upgrade_major_versions_test.dart
+++ b/test/upgrade/upgrade_major_versions_test.dart
@@ -41,11 +41,12 @@
         'bar': '^0.2.0',
         'baz': '^1.0.0',
       }).validate();
-      await d.appPackageConfigFile([
-        d.packageConfigEntry(name: 'foo', version: '2.0.0'),
-        d.packageConfigEntry(name: 'bar', version: '0.2.0'),
-        d.packageConfigEntry(name: 'baz', version: '1.0.1'),
-      ]).validate();
+
+      await d.appPackagesFile({
+        'foo': '2.0.0',
+        'bar': '0.2.0',
+        'baz': '1.0.1',
+      }).validate();
     });
 
     test('bumps dev_dependency constraints and shows summary report', () async {
@@ -91,11 +92,11 @@
         }),
       ]).validate();
 
-      await d.appPackageConfigFile([
-        d.packageConfigEntry(name: 'foo', version: '2.0.0'),
-        d.packageConfigEntry(name: 'bar', version: '0.2.0'),
-        d.packageConfigEntry(name: 'baz', version: '1.0.1'),
-      ]).validate();
+      await d.appPackagesFile({
+        'foo': '2.0.0',
+        'bar': '0.2.0',
+        'baz': '1.0.1',
+      }).validate();
     });
 
     test('upgrades only the selected package', () async {
@@ -127,10 +128,7 @@
         'bar': '^0.1.0',
       }).validate();
 
-      await d.appPackageConfigFile([
-        d.packageConfigEntry(name: 'foo', version: '2.0.0'),
-        d.packageConfigEntry(name: 'bar', version: '0.1.0'),
-      ]).validate();
+      await d.appPackagesFile({'foo': '2.0.0', 'bar': '0.1.0'}).validate();
     });
 
     test('chooses the latest version where possible', () async {
@@ -161,9 +159,7 @@
         d.file('pubspec.lock', contains('3.0.0'))
       ]).validate();
 
-      await d.appPackageConfigFile([
-        d.packageConfigEntry(name: 'foo', version: '3.0.0'),
-      ]).validate();
+      await d.appPackagesFile({'foo': '3.0.0'}).validate();
     });
 
     test('overridden dependencies - no resolution', () async {
@@ -215,10 +211,7 @@
         })
       ]).validate();
 
-      await d.appPackageConfigFile([
-        d.packageConfigEntry(name: 'foo', version: '1.0.0'),
-        d.packageConfigEntry(name: 'bar', version: '1.0.0'),
-      ]).validate();
+      await d.appPackagesFile({'foo': '1.0.0', 'bar': '1.0.0'}).validate();
     });
 
     test('upgrade should not downgrade any versions', () async {
@@ -256,10 +249,10 @@
         'bar': '^4.0.0',
       }).validate();
 
-      await d.appPackageConfigFile([
-        d.packageConfigEntry(name: 'foo', version: '1.0.0'),
-        d.packageConfigEntry(name: 'bar', version: '4.0.0'),
-      ]).validate();
+      await d.appPackagesFile({
+        'foo': '1.0.0',
+        'bar': '4.0.0',
+      }).validate();
     });
   });
 }
