| 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();
 | 
| 
 |