Index: tests/standalone/io/directory_list_nonexistent_test.dart |
diff --git a/tests/standalone/io/directory_list_nonexistent_test.dart b/tests/standalone/io/directory_list_nonexistent_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4a7829c0298aa637b2a0d615e6b1237f7e8d79a5 |
--- /dev/null |
+++ b/tests/standalone/io/directory_list_nonexistent_test.dart |
@@ -0,0 +1,47 @@ |
+// 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. |
+// |
+// Directory listing test that tests listSync on a missing directory. |
+// |
+// TODO(7157): Merge this test into directory_test.dart testListNonExistent() |
+// when it no longer crashes on Windows, when issue 7157 is resolved. |
+ |
+import "dart:io"; |
+import "dart:isolate"; |
+ |
+void testListNonExistent() { |
+ new Directory("").createTemp().then((d) { |
+ d.delete().then((ignore) { |
+ Expect.throws(() => d.listSync(), (e) => e is DirectoryIOException); |
+ Expect.throws(() => d.listSync(recursive: true), |
+ (e) => e is DirectoryIOException); |
+ }); |
+ }); |
+} |
+ |
+void testListTooLongName() { |
+ new Directory("").createTemp().then((d) { |
+ var subDirName = 'subdir'; |
+ var subDir = new Directory("${d.path}/$subDirName"); |
+ 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}"); |
+ } |
+ var long = new Directory("${buffer.toString()}"); |
+ Expect.throws(() => long.listSync(), |
+ (e) => e is DirectoryIOException); |
+ Expect.throws(() => long.listSync(recursive: true), |
+ (e) => e is DirectoryIOException); |
+ }); |
+ }); |
+} |
+ |
+void main() { |
+ testListNonExistent(); |
+ testListTooLongName(); |
+} |