| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library io_test; | 5 library io_test; |
| 6 | 6 |
| 7 import '../../../pkg/unittest/lib/unittest.dart'; | 7 import '../../../pkg/unittest/lib/unittest.dart'; |
| 8 import '../../pub/io.dart'; | 8 import '../../pub/io.dart'; |
| 9 import '../../pub/utils.dart'; |
| 9 | 10 |
| 10 main() { | 11 main() { |
| 11 group('listDir', () { | 12 group('listDir', () { |
| 12 test('lists a simple directory non-recursively', () { | 13 test('lists a simple directory non-recursively', () { |
| 13 expect(withTempDir((path) { | 14 expect(withTempDir((path) { |
| 14 var future = writeTextFile(join(path, 'file1.txt'), '') | 15 var future = defer(() { |
| 15 .then((_) => writeTextFile(join(path, 'file2.txt'), '')) | 16 writeTextFile(join(path, 'file1.txt'), ''); |
| 16 .then((_) => createDir(join(path, 'subdir'))) | 17 writeTextFile(join(path, 'file2.txt'), ''); |
| 17 .then((_) => writeTextFile(join(path, 'subdir', 'file3.txt'), '')) | 18 createDir(join(path, 'subdir')); |
| 18 .then((_) => listDir(path)); | 19 writeTextFile(join(path, 'subdir', 'file3.txt'), ''); |
| 20 return listDir(path); |
| 21 }); |
| 19 expect(future, completion(unorderedEquals([ | 22 expect(future, completion(unorderedEquals([ |
| 20 join(path, 'file1.txt'), | 23 join(path, 'file1.txt'), |
| 21 join(path, 'file2.txt'), | 24 join(path, 'file2.txt'), |
| 22 join(path, 'subdir') | 25 join(path, 'subdir') |
| 23 ]))); | 26 ]))); |
| 24 return future; | 27 return future; |
| 25 }), completes); | 28 }), completes); |
| 26 }); | 29 }); |
| 27 | 30 |
| 28 test('lists a simple directory recursively', () { | 31 test('lists a simple directory recursively', () { |
| 29 expect(withTempDir((path) { | 32 expect(withTempDir((path) { |
| 30 var future = writeTextFile(join(path, 'file1.txt'), '') | 33 var future = defer(() { |
| 31 .then((_) => writeTextFile(join(path, 'file2.txt'), '')) | 34 writeTextFile(join(path, 'file1.txt'), ''); |
| 32 .then((_) => createDir(join(path, 'subdir'))) | 35 writeTextFile(join(path, 'file2.txt'), ''); |
| 33 .then((_) => writeTextFile(join(path, 'subdir', 'file3.txt'), '')) | 36 createDir(join(path, 'subdir')); |
| 34 .then((_) => listDir(path, recursive: true)); | 37 writeTextFile(join(path, 'subdir', 'file3.txt'), ''); |
| 38 return listDir(path, recursive: true); |
| 39 }); |
| 35 expect(future, completion(unorderedEquals([ | 40 expect(future, completion(unorderedEquals([ |
| 36 join(path, 'file1.txt'), | 41 join(path, 'file1.txt'), |
| 37 join(path, 'file2.txt'), | 42 join(path, 'file2.txt'), |
| 38 join(path, 'subdir'), | 43 join(path, 'subdir'), |
| 39 join(path, 'subdir/file3.txt'), | 44 join(path, 'subdir/file3.txt'), |
| 40 ]))); | 45 ]))); |
| 41 return future; | 46 return future; |
| 42 }), completes); | 47 }), completes); |
| 43 }); | 48 }); |
| 44 | 49 |
| 45 test('ignores hidden files by default', () { | 50 test('ignores hidden files by default', () { |
| 46 expect(withTempDir((path) { | 51 expect(withTempDir((path) { |
| 47 var future = writeTextFile(join(path, 'file1.txt'), '') | 52 var future = defer(() { |
| 48 .then((_) => writeTextFile(join(path, 'file2.txt'), '')) | 53 writeTextFile(join(path, 'file1.txt'), ''); |
| 49 .then((_) => writeTextFile(join(path, '.file3.txt'), '')) | 54 writeTextFile(join(path, 'file2.txt'), ''); |
| 50 .then((_) => createDir(join(path, '.subdir'))) | 55 writeTextFile(join(path, '.file3.txt'), ''); |
| 51 .then((_) => writeTextFile(join(path, '.subdir', 'file3.txt'), '')) | 56 createDir(join(path, '.subdir')); |
| 52 .then((_) => listDir(path, recursive: true)); | 57 writeTextFile(join(path, '.subdir', 'file3.txt'), ''); |
| 58 return listDir(path, recursive: true); |
| 59 }); |
| 53 expect(future, completion(unorderedEquals([ | 60 expect(future, completion(unorderedEquals([ |
| 54 join(path, 'file1.txt'), | 61 join(path, 'file1.txt'), |
| 55 join(path, 'file2.txt') | 62 join(path, 'file2.txt') |
| 56 ]))); | 63 ]))); |
| 57 return future; | 64 return future; |
| 58 }), completes); | 65 }), completes); |
| 59 }); | 66 }); |
| 60 | 67 |
| 61 test('includes hidden files when told to', () { | 68 test('includes hidden files when told to', () { |
| 62 expect(withTempDir((path) { | 69 expect(withTempDir((path) { |
| 63 var future = writeTextFile(join(path, 'file1.txt'), '') | 70 var future = defer(() { |
| 64 .then((_) => writeTextFile(join(path, 'file2.txt'), '')) | 71 writeTextFile(join(path, 'file1.txt'), ''); |
| 65 .then((_) => writeTextFile(join(path, '.file3.txt'), '')) | 72 writeTextFile(join(path, 'file2.txt'), ''); |
| 66 .then((_) => createDir(join(path, '.subdir'))) | 73 writeTextFile(join(path, '.file3.txt'), ''); |
| 67 .then((_) => writeTextFile(join(path, '.subdir', 'file3.txt'), '')) | 74 createDir(join(path, '.subdir')); |
| 68 .then((_) { | 75 writeTextFile(join(path, '.subdir', 'file3.txt'), ''); |
| 69 return listDir(path, recursive: true, includeHiddenFiles: true); | 76 return listDir(path, recursive: true, includeHiddenFiles: true); |
| 70 }); | 77 }); |
| 71 expect(future, completion(unorderedEquals([ | 78 expect(future, completion(unorderedEquals([ |
| 72 join(path, 'file1.txt'), | 79 join(path, 'file1.txt'), |
| 73 join(path, 'file2.txt'), | 80 join(path, 'file2.txt'), |
| 74 join(path, '.file3.txt'), | 81 join(path, '.file3.txt'), |
| 75 join(path, '.subdir'), | 82 join(path, '.subdir'), |
| 76 join(path, '.subdir/file3.txt') | 83 join(path, '.subdir/file3.txt') |
| 77 ]))); | 84 ]))); |
| 78 return future; | 85 return future; |
| 79 }), completes); | 86 }), completes); |
| 80 }); | 87 }); |
| 81 | 88 |
| 82 test('returns the unresolved paths for symlinks', () { | 89 test('returns the unresolved paths for symlinks', () { |
| 83 expect(withTempDir((path) { | 90 expect(withTempDir((path) { |
| 84 var dirToList = join(path, 'dir-to-list'); | 91 var dirToList = join(path, 'dir-to-list'); |
| 85 var future = writeTextFile(join(path, 'file1.txt'), '') | 92 var future = defer(() { |
| 86 .then((_) => writeTextFile(join(path, 'file2.txt'), '')) | 93 writeTextFile(join(path, 'file1.txt'), ''); |
| 87 .then((_) => createDir(dirToList)) | 94 writeTextFile(join(path, 'file2.txt'), ''); |
| 88 .then((_) { | 95 createDir(dirToList); |
| 89 return createSymlink( | 96 return createSymlink(join(path, 'file1.txt'), |
| 90 join(path, 'file1.txt'), | 97 join(dirToList, 'link1')); |
| 91 join(dirToList, 'link1')); | 98 }).then((_) { |
| 92 }).then((_) => createDir(join(dirToList, 'subdir'))) | 99 createDir(join(dirToList, 'subdir')); |
| 93 .then((_) { | 100 return createSymlink( |
| 94 return createSymlink( | |
| 95 join(path, 'file2.txt'), | 101 join(path, 'file2.txt'), |
| 96 join(dirToList, 'subdir', 'link2')); | 102 join(dirToList, 'subdir', 'link2')); |
| 97 }).then((_) => listDir(dirToList, recursive: true)); | 103 }).then((_) => listDir(dirToList, recursive: true)); |
| 98 expect(future, completion(unorderedEquals([ | 104 expect(future, completion(unorderedEquals([ |
| 99 join(dirToList, 'link1'), | 105 join(dirToList, 'link1'), |
| 100 join(dirToList, 'subdir'), | 106 join(dirToList, 'subdir'), |
| 101 join(dirToList, 'subdir/link2'), | 107 join(dirToList, 'subdir/link2'), |
| 102 ]))); | 108 ]))); |
| 103 return future; | 109 return future; |
| 104 }), completes); | 110 }), completes); |
| 105 }); | 111 }); |
| 106 | 112 |
| 107 test('works with recursive symlinks', () { | 113 test('works with recursive symlinks', () { |
| 108 expect(withTempDir((path) { | 114 expect(withTempDir((path) { |
| 109 var future = writeTextFile(join(path, 'file1.txt'), '') | 115 var future = defer(() { |
| 110 .then((_) => createSymlink(path, join(path, 'linkdir'))) | 116 writeTextFile(join(path, 'file1.txt'), ''); |
| 111 .then((_) => listDir(path, recursive: true)); | 117 return createSymlink(path, join(path, 'linkdir')); |
| 118 }).then((_) => listDir(path, recursive: true)); |
| 112 expect(future, completion(unorderedEquals([ | 119 expect(future, completion(unorderedEquals([ |
| 113 join(path, 'file1.txt'), | 120 join(path, 'file1.txt'), |
| 114 join(path, 'linkdir') | 121 join(path, 'linkdir') |
| 115 ]))); | 122 ]))); |
| 116 return future; | 123 return future; |
| 117 }), completes); | 124 }), completes); |
| 118 }); | 125 }); |
| 119 }); | 126 }); |
| 120 } | 127 } |
| OLD | NEW |