Index: tests/standalone/src/DirectoryTest.dart |
diff --git a/tests/standalone/src/DirectoryTest.dart b/tests/standalone/src/DirectoryTest.dart |
index 035a38c47732988cde3dfb061bebaf9350fd2bf3..bbebc31370e053cefff1d46a84236948b8ec1bb5 100644 |
--- a/tests/standalone/src/DirectoryTest.dart |
+++ b/tests/standalone/src/DirectoryTest.dart |
@@ -1,4 +1,4 @@ |
-// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
+// 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. |
// |
@@ -35,12 +35,15 @@ class DirectoryTest { |
Expect.isTrue(completed, "directory listing did not complete"); |
Expect.isTrue(listedDir, "directory not found"); |
Expect.isTrue(listedFile, "file not found"); |
- f.deleteHandler = () { |
- // TODO(ager): use async directory deletion API when available. |
- subDirectory.deleteSync(); |
- directory.deleteSync(); |
+ directory.delete(recursive: true); |
+ directory.deleteHandler = () { |
+ f.exists(); |
+ f.existsHandler = (exists) => Expect.isFalse(exists); |
+ directory.exists(); |
+ directory.existsHandler = (exists) => Expect.isFalse(exists); |
+ subDirectory.exists(); |
+ subDirectory.existsHandler = (exists) => Expect.isFalse(exists); |
}; |
- f.delete(); |
}; |
directory.errorHandler = (error) { |
@@ -55,6 +58,172 @@ class DirectoryTest { |
Expect.isFalse(listedFile); |
} |
+ static void testListNonExistent() { |
+ Directory d = new Directory(""); |
+ d.errorHandler = (error) { |
+ Expect.fail("Directory error: $error"); |
+ }; |
+ d.createTemp(); |
+ d.createTempHandler = () { |
+ d.delete(); |
+ d.deleteHandler = () { |
+ // Test that listing a non-existing directory fails. |
+ d.errorHandler = (error) { |
+ // TODO(ager): When directory errors have been changed to |
+ // post back exceptions, check that we get the right exception |
+ // type here. |
+ }; |
+ d.fileHandler = (file) { |
+ Expect.fail("Listing of non-existing directory should fail"); |
+ }; |
+ d.fileHandler = (dir) { |
+ Expect.fail("Listing of non-existing directory should fail"); |
+ }; |
+ d.doneHandler = (done) { |
+ Expect.isFalse(done); |
+ }; |
+ d.list(); |
+ d.list(recursive: true); |
+ }; |
+ }; |
+ } |
+ |
+ static void testListTooLongName() { |
+ Directory d = new Directory(""); |
+ d.errorHandler = (error) { |
+ Expect.fail("Directory error: $error"); |
+ }; |
+ d.createTemp(); |
+ d.createTempHandler = () { |
+ var subDirName = 'subdir'; |
+ var subDir = new Directory("${d.path}/$subDirName"); |
+ subDir.errorHandler = (error) { |
+ Expect.fail("Directory error: $error"); |
+ }; |
+ subDir.create(); |
+ subDir.createHandler = () { |
+ // 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.errorHandler = (error) { |
+ // TODO(ager): When directory errors have been changed to |
+ // post back exceptions, check that we get the right exception |
+ // type here. |
+ if (++errors == 2) { |
+ d.delete(recursive: true); |
+ } |
+ }; |
+ long.fileHandler = (file) { |
+ Expect.fail("Listing of non-existing directory should fail"); |
+ }; |
+ long.fileHandler = (dir) { |
+ Expect.fail("Listing of non-existing directory should fail"); |
+ }; |
+ long.doneHandler = (done) { |
+ Expect.isFalse(done); |
+ }; |
+ long.list(); |
+ long.list(recursive: true); |
+ }; |
+ }; |
+ } |
+ |
+ static void testDeleteNonExistent() { |
+ Directory d = new Directory(""); |
+ d.errorHandler = (error) { |
+ Expect.fail("Directory error: $error"); |
+ }; |
+ d.createTemp(); |
+ d.createTempHandler = () { |
+ d.delete(); |
+ d.deleteHandler = () { |
+ // Test that deleting a non-existing directory fails. |
+ d.errorHandler = (error) { |
+ // TODO(ager): When directory errors have been changed to |
+ // post back exceptions, check that we get the right exception |
+ // type here. |
+ }; |
+ d.deleteHandler = () { |
+ Expect.fail("Deletion of non-existing directory should fail"); |
+ }; |
+ d.delete(); |
+ d.delete(recursive: true); |
+ }; |
+ }; |
+ } |
+ |
+ static void testDeleteTooLongName() { |
+ Directory d = new Directory(""); |
+ d.errorHandler = (error) { |
+ Expect.fail("Directory error: $error"); |
+ }; |
+ d.createTemp(); |
+ d.createTempHandler = () { |
+ var subDirName = 'subdir'; |
+ var subDir = new Directory("${d.path}/$subDirName"); |
+ subDir.errorHandler = (error) { |
+ Expect.fail("Directory error: $error"); |
+ }; |
+ subDir.create(); |
+ subDir.createHandler = () { |
+ // 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.errorHandler = (error) { |
+ // TODO(ager): When directory errors have been changed to |
+ // post back exceptions, check that we get the right exception |
+ // type here. |
+ if (++errors == 2) { |
+ d.delete(recursive: true); |
+ } |
+ }; |
+ long.deleteHandler = () { |
+ Expect.fail("Deletion of a directory with a long name should fail"); |
+ }; |
+ long.delete(); |
+ long.delete(recursive:true); |
+ }; |
+ }; |
+ } |
+ |
+ static void testDeleteNonExistentSync() { |
+ Directory d = new Directory(""); |
+ d.createTempSync(); |
+ d.deleteSync(); |
+ Expect.throws(d.deleteSync); |
+ Expect.throws(() => d.deleteSync(recursive: true)); |
+ } |
+ |
+ static void testDeleteTooLongNameSync() { |
+ Directory d = new Directory(""); |
+ d.createTempSync(); |
+ var subDirName = 'subdir'; |
+ var subDir = new Directory("${d.path}/$subDirName"); |
+ subDir.createSync(); |
+ // 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()}"); |
+ Expect.throws(long.deleteSync); |
+ Expect.throws(() => long.deleteSync(recursive:true)); |
+ } |
+ |
static void testExistsCreateDelete() { |
Directory d = new Directory(""); |
d.createTempHandler = () { |
@@ -207,6 +376,12 @@ class DirectoryTest { |
static void testMain() { |
testListing(); |
+ testListNonExistent(); |
+ testListTooLongName(); |
+ testDeleteNonExistent(); |
+ testDeleteTooLongName(); |
+ testDeleteNonExistentSync(); |
+ testDeleteTooLongNameSync(); |
testExistsCreateDelete(); |
testExistsCreateDeleteSync(); |
testCreateTemp(); |