| // 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 '../../../pkg/path/lib/path.dart' as path; |
| import '../../../pkg/unittest/lib/unittest.dart'; |
| |
| import '../../pub/io.dart'; |
| import '../../pub/utils.dart'; |
| import 'test_pub.dart'; |
| |
| main() { |
| initConfig(); |
| |
| group('listDir', () { |
| test('lists a simple directory non-recursively', () { |
| expect(withTempDir((temp) { |
| var future = defer(() { |
| writeTextFile(path.join(temp, 'file1.txt'), ''); |
| writeTextFile(path.join(temp, 'file2.txt'), ''); |
| createDir(path.join(temp, 'subdir')); |
| writeTextFile(path.join(temp, 'subdir', 'file3.txt'), ''); |
| return listDir(temp); |
| }); |
| expect(future, completion(unorderedEquals([ |
| path.join(temp, 'file1.txt'), |
| path.join(temp, 'file2.txt'), |
| path.join(temp, 'subdir') |
| ]))); |
| return future; |
| }), completes); |
| }); |
| |
| test('lists a simple directory recursively', () { |
| expect(withTempDir((temp) { |
| var future = defer(() { |
| writeTextFile(path.join(temp, 'file1.txt'), ''); |
| writeTextFile(path.join(temp, 'file2.txt'), ''); |
| createDir(path.join(temp, 'subdir')); |
| writeTextFile(path.join(temp, 'subdir', 'file3.txt'), ''); |
| return listDir(temp, recursive: true); |
| }); |
| |
| expect(future, completion(unorderedEquals([ |
| path.join(temp, 'file1.txt'), |
| path.join(temp, 'file2.txt'), |
| path.join(temp, 'subdir'), |
| path.join(temp, 'subdir', 'file3.txt'), |
| ]))); |
| return future; |
| }), completes); |
| }); |
| |
| test('ignores hidden files by default', () { |
| expect(withTempDir((temp) { |
| var future = defer(() { |
| writeTextFile(path.join(temp, 'file1.txt'), ''); |
| writeTextFile(path.join(temp, 'file2.txt'), ''); |
| writeTextFile(path.join(temp, '.file3.txt'), ''); |
| createDir(path.join(temp, '.subdir')); |
| writeTextFile(path.join(temp, '.subdir', 'file3.txt'), ''); |
| return listDir(temp, recursive: true); |
| }); |
| expect(future, completion(unorderedEquals([ |
| path.join(temp, 'file1.txt'), |
| path.join(temp, 'file2.txt') |
| ]))); |
| return future; |
| }), completes); |
| }); |
| |
| test('includes hidden files when told to', () { |
| expect(withTempDir((temp) { |
| var future = defer(() { |
| writeTextFile(path.join(temp, 'file1.txt'), ''); |
| writeTextFile(path.join(temp, 'file2.txt'), ''); |
| writeTextFile(path.join(temp, '.file3.txt'), ''); |
| createDir(path.join(temp, '.subdir')); |
| writeTextFile(path.join(temp, '.subdir', 'file3.txt'), ''); |
| return listDir(temp, recursive: true, includeHiddenFiles: true); |
| }); |
| expect(future, completion(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') |
| ]))); |
| return future; |
| }), completes); |
| }); |
| |
| test('returns the unresolved paths for symlinks', () { |
| expect(withTempDir((temp) { |
| var dirToList = path.join(temp, 'dir-to-list'); |
| var future = defer(() { |
| createDir(path.join(temp, 'dir1')); |
| writeTextFile(path.join(temp, 'dir1', 'file1.txt'), ''); |
| createDir(path.join(temp, 'dir2')); |
| writeTextFile(path.join(temp, 'dir2', 'file2.txt'), ''); |
| createDir(dirToList); |
| return createSymlink(path.join(temp, 'dir1'), |
| path.join(dirToList, 'linked-dir1')); |
| }).then((_) { |
| createDir(path.join(dirToList, 'subdir')); |
| return createSymlink( |
| path.join(temp, 'dir2'), |
| path.join(dirToList, 'subdir', 'linked-dir2')); |
| }).then((_) => listDir(dirToList, recursive: true)); |
| expect(future, completion(unorderedEquals([ |
| path.join(dirToList, 'linked-dir1'), |
| path.join(dirToList, 'linked-dir1', 'file1.txt'), |
| path.join(dirToList, 'subdir'), |
| path.join(dirToList, 'subdir', 'linked-dir2'), |
| path.join(dirToList, 'subdir', 'linked-dir2', 'file2.txt'), |
| ]))); |
| return future; |
| }), completes); |
| }); |
| |
| test('works with recursive symlinks', () { |
| expect(withTempDir((temp) { |
| var future = defer(() { |
| writeTextFile(path.join(temp, 'file1.txt'), ''); |
| return createSymlink(temp, path.join(temp, 'linkdir')); |
| }).then((_) => listDir(temp, recursive: true)); |
| expect(future, completion(unorderedEquals([ |
| path.join(temp, 'file1.txt'), |
| path.join(temp, 'linkdir') |
| ]))); |
| return future; |
| }), completes); |
| }); |
| }); |
| } |