| Index: tests/standalone/io/directory_test.dart
|
| diff --git a/tests/standalone/io/directory_test.dart b/tests/standalone/io/directory_test.dart
|
| index 2477883c51d54bd5afd5324b74fce63545fe2f67..34ed9ed08b7e04f132c01bd08885c2536b61f895 100644
|
| --- a/tests/standalone/io/directory_test.dart
|
| +++ b/tests/standalone/io/directory_test.dart
|
| @@ -12,8 +12,7 @@ class DirectoryTest {
|
| bool listedDir = false;
|
| bool listedFile = false;
|
|
|
| - Directory directory = new Directory("");
|
| - directory.createTempSync();
|
| + Directory directory = new Directory("").createTempSync();
|
| Directory subDirectory = new Directory("${directory.path}/subdir");
|
| Expect.isFalse(subDirectory.existsSync());
|
| subDirectory.createSync();
|
| @@ -21,36 +20,32 @@ class DirectoryTest {
|
| Expect.isFalse(f.existsSync());
|
| f.createSync();
|
|
|
| - directory.onDir = (dir) {
|
| + var lister = directory.list(recursive: true);
|
| +
|
| + lister.onDir = (dir) {
|
| listedDir = true;
|
| Expect.isTrue(dir.contains(directory.path));
|
| Expect.isTrue(dir.contains('subdir'));
|
| };
|
|
|
| - directory.onFile = (f) {
|
| + lister.onFile = (f) {
|
| listedFile = true;
|
| Expect.isTrue(f.contains(directory.path));
|
| Expect.isTrue(f.contains('subdir'));
|
| Expect.isTrue(f.contains('file.txt'));
|
| };
|
|
|
| - directory.onDone = (completed) {
|
| + lister.onDone = (completed) {
|
| Expect.isTrue(completed, "directory listing did not complete");
|
| Expect.isTrue(listedDir, "directory not found");
|
| Expect.isTrue(listedFile, "file not found");
|
| - directory.deleteRecursively(() {
|
| - f.exists((exists) => Expect.isFalse(exists));
|
| - directory.exists((exists) => Expect.isFalse(exists));
|
| - subDirectory.exists((exists) => Expect.isFalse(exists));
|
| + directory.deleteRecursively().then((ignore) {
|
| + f.exists().then((exists) => Expect.isFalse(exists));
|
| + directory.exists().then((exists) => Expect.isFalse(exists));
|
| + subDirectory.exists().then((exists) => Expect.isFalse(exists));
|
| });
|
| };
|
|
|
| - directory.onError = (e) {
|
| - Expect.fail("error listing directory: $e");
|
| - };
|
| -
|
| - directory.list(recursive: true);
|
| -
|
| // Listing is asynchronous, so nothing should be listed at this
|
| // point.
|
| Expect.isFalse(listedDir);
|
| @@ -58,43 +53,52 @@ class DirectoryTest {
|
| }
|
|
|
| static void testListNonExistent() {
|
| - Directory d = new Directory("");
|
| - d.onError = (e) {
|
| - Expect.fail("Directory error: $e");
|
| - };
|
| - d.createTemp(() {
|
| - d.delete(() {
|
| - // Test that listing a non-existing directory fails.
|
| - d.onError = (e) {
|
| + setupListerHandlers(DirectoryLister lister) {
|
| + // Test that listing a non-existing directory fails.
|
| + lister.onError = (e) {
|
| + Expect.isTrue(e is DirectoryIOException);
|
| + };
|
| + lister.onFile = (file) {
|
| + Expect.fail("Listing of non-existing directory should fail");
|
| + };
|
| + lister.onDir = (dir) {
|
| + Expect.fail("Listing of non-existing directory should fail");
|
| + };
|
| + lister.onDone = (done) {
|
| + Expect.isFalse(done);
|
| + };
|
| + }
|
| + new Directory("").createTemp().then((d) {
|
| + d.delete().then((ignore) {
|
| + setupListerHandlers(d.list());
|
| + setupListerHandlers(d.list(recursive: true));
|
| + });
|
| + });
|
| + }
|
| +
|
| + static void testListTooLongName() {
|
| + new Directory("").createTemp().then((d) {
|
| + var errors = 0;
|
| + setupListHandlers(DirectoryLister lister) {
|
| + lister.onError = (e) {
|
| Expect.isTrue(e is DirectoryIOException);
|
| + if (++errors == 2) {
|
| + d.deleteRecursively();
|
| + }
|
| };
|
| - d.onFile = (file) {
|
| + lister.onFile = (file) {
|
| Expect.fail("Listing of non-existing directory should fail");
|
| };
|
| - d.onDir = (dir) {
|
| + lister.onDir = (dir) {
|
| Expect.fail("Listing of non-existing directory should fail");
|
| };
|
| - d.onDone = (done) {
|
| + lister.onDone = (done) {
|
| Expect.isFalse(done);
|
| };
|
| - d.list();
|
| - d.list(recursive: true);
|
| - });
|
| - });
|
| - }
|
| -
|
| - static void testListTooLongName() {
|
| - Directory d = new Directory("");
|
| - d.onError = (e) {
|
| - Expect.fail("Directory error: $e");
|
| - };
|
| - d.createTemp(() {
|
| + }
|
| var subDirName = 'subdir';
|
| var subDir = new Directory("${d.path}/$subDirName");
|
| - subDir.onError = (e) {
|
| - Expect.fail("Directory error: $e");
|
| - };
|
| - subDir.create(() {
|
| + subDir.create().then((ignore) {
|
| // Construct a long string of the form
|
| // 'tempdir/subdir/../subdir/../subdir'.
|
| var buffer = new StringBuffer();
|
| @@ -103,97 +107,69 @@ class DirectoryTest {
|
| buffer.add("/../${subDirName}");
|
| }
|
| var long = new Directory("${buffer.toString()}");
|
| - var errors = 0;
|
| - long.onError = (e) {
|
| - Expect.isTrue(e is DirectoryIOException);
|
| - if (++errors == 2) {
|
| - d.deleteRecursively(() => null);
|
| - }
|
| - };
|
| - long.onFile = (file) {
|
| - Expect.fail("Listing of non-existing directory should fail");
|
| - };
|
| - long.onDir = (dir) {
|
| - Expect.fail("Listing of non-existing directory should fail");
|
| - };
|
| - long.onDone = (done) {
|
| - Expect.isFalse(done);
|
| - };
|
| - long.list();
|
| - long.list(recursive: true);
|
| + setupListHandlers(long.list());
|
| + setupListHandlers(long.list(recursive: true));
|
| });
|
| });
|
| }
|
|
|
| static void testDeleteNonExistent() {
|
| - Directory d = new Directory("");
|
| - d.onError = (e) {
|
| - Expect.fail("Directory error: $e");
|
| - };
|
| - d.createTemp(() {
|
| - d.delete(() {
|
| - // Test that deleting a non-existing directory fails.
|
| - d.onError = (e) {
|
| - Expect.isTrue(e is DirectoryIOException);
|
| - };
|
| - d.delete(() {
|
| - Expect.fail("Deletion of non-existing directory should fail");
|
| - });
|
| - d.deleteRecursively(() {
|
| - Expect.fail("Deletion of non-existing directory should fail");
|
| - });
|
| + // Test that deleting a non-existing directory fails.
|
| + setupFutureHandlers(future) {
|
| + future.handleException((e) {
|
| + Expect.isTrue(e is DirectoryIOException);
|
| + return true;
|
| + });
|
| + future.then((ignore) {
|
| + Expect.fail("Deletion of non-existing directory should fail");
|
| + });
|
| + }
|
| +
|
| + new Directory("").createTemp().then((d) {
|
| + d.delete().then((ignore) {
|
| + setupFutureHandlers(d.delete());
|
| + setupFutureHandlers(d.deleteRecursively());
|
| });
|
| });
|
| }
|
|
|
| static void testDeleteTooLongName() {
|
| - Directory d = new Directory("");
|
| - d.onError = (e) {
|
| - Expect.fail("Directory error: $e");
|
| - };
|
| - d.createTemp(() {
|
| + var port = new ReceivePort();
|
| + new Directory("").createTemp().then((d) {
|
| var subDirName = 'subdir';
|
| var subDir = new Directory("${d.path}/$subDirName");
|
| - subDir.onError = (e) {
|
| - Expect.fail("Directory error: $e");
|
| - };
|
| - subDir.create(() {
|
| - // Construct a long string of the form
|
| - // 'tempdir/subdir/../subdir/../subdir'.
|
| - var buffer = new StringBuffer();
|
| - buffer.add(subDir.path);
|
| - for (var i = 0; i < 1000; i++) {
|
| - buffer.add("/../${subDirName}");
|
| - }
|
| - var long = new Directory("${buffer.toString()}");
|
| - var errors = 0;
|
| - long.onError = (e) {
|
| - Expect.isTrue(e is DirectoryIOException);
|
| - if (++errors == 2) {
|
| - d.deleteRecursively(() => null);
|
| + subDir.create().then((ignore) {
|
| + // Construct a long string of the form
|
| + // 'tempdir/subdir/../subdir/../subdir'.
|
| + var buffer = new StringBuffer();
|
| + buffer.add(subDir.path);
|
| + for (var i = 0; i < 1000; i++) {
|
| + buffer.add("/../${subDirName}");
|
| }
|
| - };
|
| - long.delete(() {
|
| - Expect.fail("Deletion of a directory with a long name should fail");
|
| - });
|
| - long.deleteRecursively(() {
|
| - Expect.fail("Deletion of a directory with a long name should fail");
|
| + var long = new Directory("${buffer.toString()}");
|
| + var errors = 0;
|
| + onError(e) {
|
| + Expect.isTrue(e is DirectoryIOException);
|
| + if (++errors == 2) {
|
| + d.deleteRecursively().then((ignore) => port.close());
|
| + }
|
| + return true;
|
| + }
|
| + long.delete().handleException(onError);
|
| + long.deleteRecursively().handleException(onError);
|
| });
|
| - });
|
| });
|
| }
|
|
|
| static void testDeleteNonExistentSync() {
|
| - Directory d = new Directory("");
|
| - d.createTempSync();
|
| + Directory d = new Directory("").createTempSync();
|
| d.deleteSync();
|
| Expect.throws(d.deleteSync);
|
| Expect.throws(() => d.deleteRecursivelySync());
|
| }
|
|
|
| static void testDeleteTooLongNameSync() {
|
| - Directory d = new Directory("");
|
| - d.createTempSync();
|
| + Directory d = new Directory("").createTempSync();
|
| var subDirName = 'subdir';
|
| var subDir = new Directory("${d.path}/$subDirName");
|
| subDir.createSync();
|
| @@ -210,19 +186,18 @@ class DirectoryTest {
|
| }
|
|
|
| static void testExistsCreateDelete() {
|
| - Directory d = new Directory("");
|
| - d.createTemp(() {
|
| - d.exists((bool exists) {
|
| + new Directory("").createTemp().then((d) {
|
| + d.exists().then((bool exists) {
|
| Expect.isTrue(exists);
|
| Directory created = new Directory("${d.path}/subdir");
|
| - created.create(() {
|
| - created.exists((bool exists) {
|
| + created.create().then((ignore) {
|
| + created.exists().then((bool exists) {
|
| Expect.isTrue(exists);
|
| - created.delete(() {
|
| - created.exists((bool exists) {
|
| + created.delete().then((ignore) {
|
| + created.exists().then((bool exists) {
|
| Expect.isFalse(exists);
|
| - d.delete(() {
|
| - d.exists((bool exists) {
|
| + d.delete().then((ignore) {
|
| + d.exists().then((bool exists) {
|
| Expect.isFalse(exists);
|
| });
|
| });
|
| @@ -235,8 +210,7 @@ class DirectoryTest {
|
| }
|
|
|
| static void testExistsCreateDeleteSync() {
|
| - Directory d = new Directory("");
|
| - d.createTempSync();
|
| + Directory d = new Directory("").createTempSync();
|
| Expect.isTrue(d.existsSync());
|
| Directory created = new Directory("${d.path}/subdir");
|
| created.createSync();
|
| @@ -248,8 +222,8 @@ class DirectoryTest {
|
| }
|
|
|
| static void testCreateTemp() {
|
| - Directory tempDir1 = new Directory("/tmp/dart_temp_dir_");
|
| - Directory tempDir2 = new Directory("/tmp/dart_temp_dir_");
|
| + Directory tempDir1;
|
| + Directory tempDir2;
|
| bool stage1aDone = false;
|
| bool stage1bDone = false;
|
| bool emptyTemplateTestRunning = false;
|
| @@ -261,18 +235,14 @@ class DirectoryTest {
|
| Function stage2;
|
| Function stage3; // Loops to stage 0.
|
|
|
| - Function error(e) {
|
| - Expect.fail("Directory onError: $e");
|
| - }
|
| -
|
| stage0 = () {
|
| - tempDir1.onError = error;
|
| - tempDir1.createTemp(stage1a);
|
| - tempDir2.onError = error;
|
| - tempDir2.createTemp(stage1b);
|
| + var dir = new Directory("/tmp/dart_temp_dir_");
|
| + dir.createTemp().then(stage1a);
|
| + dir.createTemp().then(stage1b);
|
| };
|
|
|
| - stage1a = () {
|
| + stage1a = (temp) {
|
| + tempDir1 = temp;
|
| stage1aDone = true;
|
| Expect.isTrue(tempDir1.existsSync());
|
| if (stage1bDone) {
|
| @@ -280,7 +250,8 @@ class DirectoryTest {
|
| }
|
| };
|
|
|
| - stage1b = () {
|
| + stage1b = (temp) {
|
| + tempDir2 = temp;
|
| stage1bDone = true;
|
| Expect.isTrue(tempDir2.existsSync());
|
| if (stage1aDone) {
|
| @@ -319,24 +290,20 @@ class DirectoryTest {
|
| }
|
|
|
| static void testCreateDeleteTemp() {
|
| - Directory tempDirectory = new Directory("");
|
| - tempDirectory.createTemp(() {
|
| + new Directory("").createTemp().then((tempDirectory) {
|
| String filename = tempDirectory.path +
|
| Platform.pathSeparator + "dart_testfile";
|
| File file = new File(filename);
|
| Expect.isFalse(file.existsSync());
|
| - file.onError = (e) {
|
| - Expect.fail("testCreateTemp file.onError called: $e");
|
| - };
|
| - file.create(() {
|
| - file.exists((bool exists) {
|
| + file.create().then((ignore) {
|
| + file.exists().then((exists) {
|
| Expect.isTrue(exists);
|
| // Try to delete the directory containing the file - should throw.
|
| Expect.throws(tempDirectory.deleteSync);
|
| Expect.isTrue(tempDirectory.existsSync());
|
|
|
| // Delete the file, and then delete the directory.
|
| - file.delete(() {
|
| + file.delete().then((ignore) {
|
| tempDirectory.deleteSync();
|
| Expect.isFalse(tempDirectory.existsSync());
|
| });
|
| @@ -374,26 +341,19 @@ class NestedTempDirectoryTest {
|
| Directory current;
|
|
|
| NestedTempDirectoryTest.run()
|
| - : createdDirectories = new List<Directory>(),
|
| - current = new Directory("") {
|
| - current.onError = errorCallback;
|
| - current.createTemp(createPhaseCallback);
|
| + : createdDirectories = new List<Directory>() {
|
| + new Directory("").createTemp().then(createPhaseCallback);
|
| }
|
|
|
| - void errorCallback(e) {
|
| - Expect.fail("Error callback called in NestedTempDirectoryTest: $e");
|
| - }
|
| -
|
| - void createPhaseCallback() {
|
| - createdDirectories.add(current);
|
| + void createPhaseCallback(temp) {
|
| + createdDirectories.add(temp);
|
| int nestingDepth = 6;
|
| var os = Platform.operatingSystem;
|
| if (os == "windows") nestingDepth = 2;
|
| if (createdDirectories.length < nestingDepth) {
|
| - current = new Directory(
|
| - current.path + "/nested_temp_dir_${createdDirectories.length}_");
|
| - current.onError = errorCallback;
|
| - current.createTemp(createPhaseCallback);
|
| + temp = new Directory(
|
| + temp.path + "/nested_temp_dir_${createdDirectories.length}_");
|
| + temp.createTemp().then(createPhaseCallback);
|
| } else {
|
| deletePhaseCallback();
|
| }
|
| @@ -440,15 +400,9 @@ testCreateTempError() {
|
| var location = illegalTempDirectoryLocation();
|
| if (location == null) return;
|
|
|
| - var resultPort = new ReceivePort();
|
| - resultPort.receive((String message, ignored) {
|
| - resultPort.close();
|
| - Expect.equals("error", message);
|
| - });
|
| -
|
| - Directory dir = new Directory(location);
|
| - dir.onError = (e) { resultPort.toSendPort().send("error"); };
|
| - dir.createTemp(() => resultPort.toSendPort().send("success"));
|
| + var port = new ReceivePort();
|
| + var future = new Directory(location).createTemp();
|
| + future.handleException((e) => port.close());
|
| }
|
|
|
|
|
|
|