| Index: sdk/lib/_internal/pub_generated/test/io_test.dart
 | 
| diff --git a/sdk/lib/_internal/pub/test/io_test.dart b/sdk/lib/_internal/pub_generated/test/io_test.dart
 | 
| similarity index 81%
 | 
| copy from sdk/lib/_internal/pub/test/io_test.dart
 | 
| copy to sdk/lib/_internal/pub_generated/test/io_test.dart
 | 
| index cc5d2c4d6124e3e38e1e6be34f34b99c96df9b32..e7eb51be0e7df324a7b267b8e4afc189d481736c 100644
 | 
| --- a/sdk/lib/_internal/pub/test/io_test.dart
 | 
| +++ b/sdk/lib/_internal/pub_generated/test/io_test.dart
 | 
| @@ -1,21 +1,12 @@
 | 
| -// Copyright (c) 2012, 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 io_test;
 | 
| -
 | 
|  import 'dart:async';
 | 
|  import 'dart:io';
 | 
| -
 | 
|  import 'package:path/path.dart' as path;
 | 
|  import 'package:unittest/unittest.dart';
 | 
| -
 | 
|  import '../lib/src/io.dart';
 | 
|  import 'test_pub.dart';
 | 
| -
 | 
|  main() {
 | 
|    initConfig();
 | 
| -
 | 
|    group('listDir', () {
 | 
|      test('ignores hidden files by default', () {
 | 
|        expect(withTempDir((temp) {
 | 
| @@ -24,14 +15,11 @@ main() {
 | 
|          writeTextFile(path.join(temp, '.file3.txt'), '');
 | 
|          createDir(path.join(temp, '.subdir'));
 | 
|          writeTextFile(path.join(temp, '.subdir', 'file3.txt'), '');
 | 
| -
 | 
| -        expect(listDir(temp, recursive: true), unorderedEquals([
 | 
| -          path.join(temp, 'file1.txt'),
 | 
| -          path.join(temp, 'file2.txt')
 | 
| -        ]));
 | 
| +        expect(
 | 
| +            listDir(temp, recursive: true),
 | 
| +            unorderedEquals([path.join(temp, 'file1.txt'), path.join(temp, 'file2.txt')]));
 | 
|        }), completes);
 | 
|      });
 | 
| -
 | 
|      test('includes hidden files when told to', () {
 | 
|        expect(withTempDir((temp) {
 | 
|          writeTextFile(path.join(temp, 'file1.txt'), '');
 | 
| @@ -39,18 +27,17 @@ main() {
 | 
|          writeTextFile(path.join(temp, '.file3.txt'), '');
 | 
|          createDir(path.join(temp, '.subdir'));
 | 
|          writeTextFile(path.join(temp, '.subdir', 'file3.txt'), '');
 | 
| -
 | 
| -        expect(listDir(temp, recursive: true, includeHidden: true),
 | 
| -            unorderedEquals([
 | 
| -          path.join(temp, 'file1.txt'),
 | 
| -          path.join(temp, 'file2.txt'),
 | 
| -          path.join(temp, '.file3.txt'),
 | 
| -          path.join(temp, '.subdir'),
 | 
| -          path.join(temp, '.subdir', 'file3.txt')
 | 
| -        ]));
 | 
| +        expect(
 | 
| +            listDir(temp, recursive: true, includeHidden: true),
 | 
| +            unorderedEquals(
 | 
| +                [
 | 
| +                    path.join(temp, 'file1.txt'),
 | 
| +                    path.join(temp, 'file2.txt'),
 | 
| +                    path.join(temp, '.file3.txt'),
 | 
| +                    path.join(temp, '.subdir'),
 | 
| +                    path.join(temp, '.subdir', 'file3.txt')]));
 | 
|        }), completes);
 | 
|      });
 | 
| -
 | 
|      test("doesn't ignore hidden files above the directory being listed", () {
 | 
|        expect(withTempDir((temp) {
 | 
|          var dir = path.join(temp, '.foo', 'bar');
 | 
| @@ -58,16 +45,16 @@ main() {
 | 
|          writeTextFile(path.join(dir, 'file1.txt'), '');
 | 
|          writeTextFile(path.join(dir, 'file2.txt'), '');
 | 
|          writeTextFile(path.join(dir, 'file3.txt'), '');
 | 
| -
 | 
| -        expect(listDir(dir, recursive: true), unorderedEquals([
 | 
| -          path.join(dir, 'file1.txt'),
 | 
| -          path.join(dir, 'file2.txt'),
 | 
| -          path.join(dir, 'file3.txt')
 | 
| -        ]));
 | 
| +        expect(
 | 
| +            listDir(dir, recursive: true),
 | 
| +            unorderedEquals(
 | 
| +                [
 | 
| +                    path.join(dir, 'file1.txt'),
 | 
| +                    path.join(dir, 'file2.txt'),
 | 
| +                    path.join(dir, 'file3.txt')]));
 | 
|        }), completes);
 | 
|      });
 | 
|    });
 | 
| -
 | 
|    group('canonicalize', () {
 | 
|      test('resolves a non-link', () {
 | 
|        expect(withCanonicalTempDir((temp) {
 | 
| @@ -76,26 +63,22 @@ main() {
 | 
|          expect(canonicalize(filePath), equals(filePath));
 | 
|        }), completes);
 | 
|      });
 | 
| -
 | 
|      test('resolves a non-existent file', () {
 | 
|        expect(withCanonicalTempDir((temp) {
 | 
| -        expect(canonicalize(path.join(temp, 'nothing')),
 | 
| +        expect(
 | 
| +            canonicalize(path.join(temp, 'nothing')),
 | 
|              equals(path.join(temp, 'nothing')));
 | 
|        }), completes);
 | 
|      });
 | 
| -
 | 
|      test('resolves a symlink', () {
 | 
|        expect(withCanonicalTempDir((temp) {
 | 
|          createDir(path.join(temp, 'linked-dir'));
 | 
| -        createSymlink(
 | 
| -            path.join(temp, 'linked-dir'),
 | 
| -            path.join(temp, 'dir'));
 | 
| +        createSymlink(path.join(temp, 'linked-dir'), path.join(temp, 'dir'));
 | 
|          expect(
 | 
|              canonicalize(path.join(temp, 'dir')),
 | 
|              equals(path.join(temp, 'linked-dir')));
 | 
|        }), completes);
 | 
|      });
 | 
| -
 | 
|      test('resolves a relative symlink', () {
 | 
|        expect(withCanonicalTempDir((temp) {
 | 
|          createDir(path.join(temp, 'linked-dir'));
 | 
| @@ -108,7 +91,6 @@ main() {
 | 
|              equals(path.join(temp, 'linked-dir')));
 | 
|        }), completes);
 | 
|      });
 | 
| -
 | 
|      test('resolves a single-level horizontally recursive symlink', () {
 | 
|        expect(withCanonicalTempDir((temp) {
 | 
|          var linkPath = path.join(temp, 'foo');
 | 
| @@ -116,7 +98,6 @@ main() {
 | 
|          expect(canonicalize(linkPath), equals(linkPath));
 | 
|        }), completes);
 | 
|      });
 | 
| -
 | 
|      test('resolves a multi-level horizontally recursive symlink', () {
 | 
|        expect(withCanonicalTempDir((temp) {
 | 
|          var fooPath = path.join(temp, 'foo');
 | 
| @@ -128,12 +109,10 @@ main() {
 | 
|          expect(canonicalize(fooPath), equals(fooPath));
 | 
|          expect(canonicalize(barPath), equals(barPath));
 | 
|          expect(canonicalize(bazPath), equals(bazPath));
 | 
| -
 | 
|          createSymlink(fooPath, path.join(temp, 'outer'));
 | 
|          expect(canonicalize(path.join(temp, 'outer')), equals(fooPath));
 | 
|        }), completes);
 | 
|      });
 | 
| -
 | 
|      test('resolves a broken symlink', () {
 | 
|        expect(withCanonicalTempDir((temp) {
 | 
|          createSymlink(path.join(temp, 'nonexistent'), path.join(temp, 'foo'));
 | 
| @@ -142,7 +121,6 @@ main() {
 | 
|              equals(path.join(temp, 'nonexistent')));
 | 
|        }), completes);
 | 
|      });
 | 
| -
 | 
|      test('resolves multiple nested symlinks', () {
 | 
|        expect(withCanonicalTempDir((temp) {
 | 
|          var dir1 = path.join(temp, 'dir1');
 | 
| @@ -158,7 +136,6 @@ main() {
 | 
|              equals(path.join(subdir2, 'file')));
 | 
|        }), completes);
 | 
|      });
 | 
| -
 | 
|      test('resolves a nested vertical symlink', () {
 | 
|        expect(withCanonicalTempDir((temp) {
 | 
|          var dir1 = path.join(temp, 'dir1');
 | 
| @@ -172,7 +149,6 @@ main() {
 | 
|              equals(path.join(dir2, 'file')));
 | 
|        }), completes);
 | 
|      });
 | 
| -
 | 
|      test('resolves a vertically recursive symlink', () {
 | 
|        expect(withCanonicalTempDir((temp) {
 | 
|          var dir = path.join(temp, 'dir');
 | 
| @@ -180,13 +156,13 @@ main() {
 | 
|          createDir(dir);
 | 
|          createSymlink(dir, subdir);
 | 
|          expect(
 | 
| -            canonicalize(path.join(temp, 'dir', 'subdir', 'subdir', 'subdir',
 | 
| -                                   'subdir', 'file')),
 | 
| +            canonicalize(
 | 
| +                path.join(temp, 'dir', 'subdir', 'subdir', 'subdir', 'subdir', 'file')),
 | 
|              equals(path.join(dir, 'file')));
 | 
|        }), completes);
 | 
|      });
 | 
| -
 | 
| -    test('resolves a symlink that links to a path that needs more resolving',
 | 
| +    test(
 | 
| +        'resolves a symlink that links to a path that needs more resolving',
 | 
|          () {
 | 
|        expect(withCanonicalTempDir((temp) {
 | 
|          var dir = path.join(temp, 'dir');
 | 
| @@ -195,12 +171,9 @@ main() {
 | 
|          createDir(dir);
 | 
|          createSymlink(dir, linkdir);
 | 
|          createSymlink(path.join(linkdir, 'file'), linkfile);
 | 
| -        expect(
 | 
| -            canonicalize(linkfile),
 | 
| -            equals(path.join(dir, 'file')));
 | 
| +        expect(canonicalize(linkfile), equals(path.join(dir, 'file')));
 | 
|        }), completes);
 | 
|      });
 | 
| -
 | 
|      test('resolves a pair of pathologically-recursive symlinks', () {
 | 
|        expect(withCanonicalTempDir((temp) {
 | 
|          var foo = path.join(temp, 'foo');
 | 
| @@ -215,8 +188,9 @@ main() {
 | 
|        }), completes);
 | 
|      });
 | 
|    });
 | 
| -
 | 
| -  testExistencePredicate("entryExists", entryExists,
 | 
| +  testExistencePredicate(
 | 
| +      "entryExists",
 | 
| +      entryExists,
 | 
|        forFile: true,
 | 
|        forFileSymlink: true,
 | 
|        forMultiLevelFileSymlink: true,
 | 
| @@ -225,8 +199,9 @@ main() {
 | 
|        forMultiLevelDirectorySymlink: true,
 | 
|        forBrokenSymlink: true,
 | 
|        forMultiLevelBrokenSymlink: true);
 | 
| -
 | 
| -  testExistencePredicate("linkExists", linkExists,
 | 
| +  testExistencePredicate(
 | 
| +      "linkExists",
 | 
| +      linkExists,
 | 
|        forFile: false,
 | 
|        forFileSymlink: true,
 | 
|        forMultiLevelFileSymlink: true,
 | 
| @@ -235,8 +210,9 @@ main() {
 | 
|        forMultiLevelDirectorySymlink: true,
 | 
|        forBrokenSymlink: true,
 | 
|        forMultiLevelBrokenSymlink: true);
 | 
| -
 | 
| -  testExistencePredicate("fileExists", fileExists,
 | 
| +  testExistencePredicate(
 | 
| +      "fileExists",
 | 
| +      fileExists,
 | 
|        forFile: true,
 | 
|        forFileSymlink: true,
 | 
|        forMultiLevelFileSymlink: true,
 | 
| @@ -245,8 +221,9 @@ main() {
 | 
|        forMultiLevelDirectorySymlink: false,
 | 
|        forBrokenSymlink: false,
 | 
|        forMultiLevelBrokenSymlink: false);
 | 
| -
 | 
| -  testExistencePredicate("dirExists", dirExists,
 | 
| +  testExistencePredicate(
 | 
| +      "dirExists",
 | 
| +      dirExists,
 | 
|        forFile: false,
 | 
|        forFileSymlink: false,
 | 
|        forMultiLevelFileSymlink: false,
 | 
| @@ -256,16 +233,10 @@ main() {
 | 
|        forBrokenSymlink: false,
 | 
|        forMultiLevelBrokenSymlink: false);
 | 
|  }
 | 
| -
 | 
|  void testExistencePredicate(String name, bool predicate(String path),
 | 
| -    {bool forFile,
 | 
| -     bool forFileSymlink,
 | 
| -     bool forMultiLevelFileSymlink,
 | 
| -     bool forDirectory,
 | 
| -     bool forDirectorySymlink,
 | 
| -     bool forMultiLevelDirectorySymlink,
 | 
| -     bool forBrokenSymlink,
 | 
| -     bool forMultiLevelBrokenSymlink}) {
 | 
| +    {bool forFile, bool forFileSymlink, bool forMultiLevelFileSymlink,
 | 
| +    bool forDirectory, bool forDirectorySymlink, bool forMultiLevelDirectorySymlink,
 | 
| +    bool forBrokenSymlink, bool forMultiLevelBrokenSymlink}) {
 | 
|    group(name, () {
 | 
|      test('returns $forFile for a file', () {
 | 
|        expect(withTempDir((temp) {
 | 
| @@ -274,7 +245,6 @@ void testExistencePredicate(String name, bool predicate(String path),
 | 
|          expect(predicate(file), equals(forFile));
 | 
|        }), completes);
 | 
|      });
 | 
| -
 | 
|      test('returns $forDirectory for a directory', () {
 | 
|        expect(withTempDir((temp) {
 | 
|          var file = path.join(temp, "dir");
 | 
| @@ -282,7 +252,6 @@ void testExistencePredicate(String name, bool predicate(String path),
 | 
|          expect(predicate(file), equals(forDirectory));
 | 
|        }), completes);
 | 
|      });
 | 
| -
 | 
|      test('returns $forDirectorySymlink for a symlink to a directory', () {
 | 
|        expect(withTempDir((temp) {
 | 
|          var targetPath = path.join(temp, "dir");
 | 
| @@ -292,9 +261,10 @@ void testExistencePredicate(String name, bool predicate(String path),
 | 
|          expect(predicate(symlinkPath), equals(forDirectorySymlink));
 | 
|        }), completes);
 | 
|      });
 | 
| -
 | 
| -    test('returns $forMultiLevelDirectorySymlink for a multi-level symlink to '
 | 
| -        'a directory', () {
 | 
| +    test(
 | 
| +        'returns $forMultiLevelDirectorySymlink for a multi-level symlink to '
 | 
| +            'a directory',
 | 
| +        () {
 | 
|        expect(withTempDir((temp) {
 | 
|          var targetPath = path.join(temp, "dir");
 | 
|          var symlink1Path = path.join(temp, "link1dir");
 | 
| @@ -302,11 +272,9 @@ void testExistencePredicate(String name, bool predicate(String path),
 | 
|          createDir(targetPath);
 | 
|          createSymlink(targetPath, symlink1Path);
 | 
|          createSymlink(symlink1Path, symlink2Path);
 | 
| -        expect(predicate(symlink2Path),
 | 
| -              equals(forMultiLevelDirectorySymlink));
 | 
| +        expect(predicate(symlink2Path), equals(forMultiLevelDirectorySymlink));
 | 
|        }), completes);
 | 
|      });
 | 
| -
 | 
|      test('returns $forBrokenSymlink for a broken symlink', () {
 | 
|        expect(withTempDir((temp) {
 | 
|          var targetPath = path.join(temp, "dir");
 | 
| @@ -317,8 +285,8 @@ void testExistencePredicate(String name, bool predicate(String path),
 | 
|          expect(predicate(symlinkPath), equals(forBrokenSymlink));
 | 
|        }), completes);
 | 
|      });
 | 
| -
 | 
| -    test('returns $forMultiLevelBrokenSymlink for a multi-level broken symlink',
 | 
| +    test(
 | 
| +        'returns $forMultiLevelBrokenSymlink for a multi-level broken symlink',
 | 
|          () {
 | 
|        expect(withTempDir((temp) {
 | 
|          var targetPath = path.join(temp, "dir");
 | 
| @@ -331,8 +299,6 @@ void testExistencePredicate(String name, bool predicate(String path),
 | 
|          expect(predicate(symlink2Path), equals(forMultiLevelBrokenSymlink));
 | 
|        }), completes);
 | 
|      });
 | 
| -
 | 
| -    // Windows doesn't support symlinking to files.
 | 
|      if (Platform.operatingSystem != 'windows') {
 | 
|        test('returns $forFileSymlink for a symlink to a file', () {
 | 
|          expect(withTempDir((temp) {
 | 
| @@ -343,9 +309,9 @@ void testExistencePredicate(String name, bool predicate(String path),
 | 
|            expect(predicate(symlinkPath), equals(forFileSymlink));
 | 
|          }), completes);
 | 
|        });
 | 
| -
 | 
| -      test('returns $forMultiLevelFileSymlink for a multi-level symlink to a '
 | 
| -          'file', () {
 | 
| +      test(
 | 
| +          'returns $forMultiLevelFileSymlink for a multi-level symlink to a ' 'file',
 | 
| +          () {
 | 
|          expect(withTempDir((temp) {
 | 
|            var targetPath = path.join(temp, "test.txt");
 | 
|            var symlink1Path = path.join(temp, "link1.txt");
 | 
| @@ -359,7 +325,5 @@ void testExistencePredicate(String name, bool predicate(String path),
 | 
|      }
 | 
|    });
 | 
|  }
 | 
| -
 | 
| -/// Like [withTempDir], but canonicalizes the path before passing it to [fn].
 | 
|  Future withCanonicalTempDir(Future fn(String path)) =>
 | 
| -  withTempDir((temp) => fn(canonicalize(temp)));
 | 
| +    withTempDir((temp) => fn(canonicalize(temp)));
 | 
| 
 |