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