Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(98)

Side by Side Diff: tests/standalone/src/io/DirectoryTest.dart

Issue 9773018: Add error handling to directory (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Addressed review comments Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « tests/standalone/src/io/DirectoryInvalidArgumentsTest.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 // 4 //
5 // Directory listing test. 5 // Directory listing test.
6 6
7 #import("dart:io"); 7 #import("dart:io");
8 #import("dart:isolate"); 8 #import("dart:isolate");
9 9
10 class DirectoryTest { 10 class DirectoryTest {
(...skipping 27 matching lines...) Expand all
38 Expect.isTrue(completed, "directory listing did not complete"); 38 Expect.isTrue(completed, "directory listing did not complete");
39 Expect.isTrue(listedDir, "directory not found"); 39 Expect.isTrue(listedDir, "directory not found");
40 Expect.isTrue(listedFile, "file not found"); 40 Expect.isTrue(listedFile, "file not found");
41 directory.deleteRecursively(() { 41 directory.deleteRecursively(() {
42 f.exists((exists) => Expect.isFalse(exists)); 42 f.exists((exists) => Expect.isFalse(exists));
43 directory.exists((exists) => Expect.isFalse(exists)); 43 directory.exists((exists) => Expect.isFalse(exists));
44 subDirectory.exists((exists) => Expect.isFalse(exists)); 44 subDirectory.exists((exists) => Expect.isFalse(exists));
45 }); 45 });
46 }; 46 };
47 47
48 directory.onError = (error) { 48 directory.onError = (e) {
49 Expect.fail("error listing directory: $error"); 49 Expect.fail("error listing directory: $e");
50 }; 50 };
51 51
52 directory.list(recursive: true); 52 directory.list(recursive: true);
53 53
54 // Listing is asynchronous, so nothing should be listed at this 54 // Listing is asynchronous, so nothing should be listed at this
55 // point. 55 // point.
56 Expect.isFalse(listedDir); 56 Expect.isFalse(listedDir);
57 Expect.isFalse(listedFile); 57 Expect.isFalse(listedFile);
58 } 58 }
59 59
60 static void testListNonExistent() { 60 static void testListNonExistent() {
61 Directory d = new Directory(""); 61 Directory d = new Directory("");
62 d.onError = (error) { 62 d.onError = (e) {
63 Expect.fail("Directory error: $error"); 63 Expect.fail("Directory error: $e");
64 }; 64 };
65 d.createTemp(() { 65 d.createTemp(() {
66 d.delete(() { 66 d.delete(() {
67 // Test that listing a non-existing directory fails. 67 // Test that listing a non-existing directory fails.
68 d.onError = (error) { 68 d.onError = (e) {
69 // TODO(ager): When directory errors have been changed to 69 Expect.isTrue(e is DirectoryIOException);
70 // post back exceptions, check that we get the right exception
71 // type here.
72 }; 70 };
73 d.onFile = (file) { 71 d.onFile = (file) {
74 Expect.fail("Listing of non-existing directory should fail"); 72 Expect.fail("Listing of non-existing directory should fail");
75 }; 73 };
76 d.onDir = (dir) { 74 d.onDir = (dir) {
77 Expect.fail("Listing of non-existing directory should fail"); 75 Expect.fail("Listing of non-existing directory should fail");
78 }; 76 };
79 d.onDone = (done) { 77 d.onDone = (done) {
80 Expect.isFalse(done); 78 Expect.isFalse(done);
81 }; 79 };
82 d.list(); 80 d.list();
83 d.list(recursive: true); 81 d.list(recursive: true);
84 }); 82 });
85 }); 83 });
86 } 84 }
87 85
88 static void testListTooLongName() { 86 static void testListTooLongName() {
89 Directory d = new Directory(""); 87 Directory d = new Directory("");
90 d.onError = (error) { 88 d.onError = (e) {
91 Expect.fail("Directory error: $error"); 89 Expect.fail("Directory error: $e");
92 }; 90 };
93 d.createTemp(() { 91 d.createTemp(() {
94 var subDirName = 'subdir'; 92 var subDirName = 'subdir';
95 var subDir = new Directory("${d.path}/$subDirName"); 93 var subDir = new Directory("${d.path}/$subDirName");
96 subDir.onError = (error) { 94 subDir.onError = (e) {
97 Expect.fail("Directory error: $error"); 95 Expect.fail("Directory error: $e");
98 }; 96 };
99 subDir.create(() { 97 subDir.create(() {
100 // Construct a long string of the form 98 // Construct a long string of the form
101 // 'tempdir/subdir/../subdir/../subdir'. 99 // 'tempdir/subdir/../subdir/../subdir'.
102 var buffer = new StringBuffer(); 100 var buffer = new StringBuffer();
103 buffer.add(subDir.path); 101 buffer.add(subDir.path);
104 for (var i = 0; i < 1000; i++) { 102 for (var i = 0; i < 1000; i++) {
105 buffer.add("/../${subDirName}"); 103 buffer.add("/../${subDirName}");
106 } 104 }
107 var long = new Directory("${buffer.toString()}"); 105 var long = new Directory("${buffer.toString()}");
108 var errors = 0; 106 var errors = 0;
109 long.onError = (error) { 107 long.onError = (e) {
110 // TODO(ager): When directory errors have been changed to 108 Expect.isTrue(e is DirectoryIOException);
111 // post back exceptions, check that we get the right exception
112 // type here.
113 if (++errors == 2) { 109 if (++errors == 2) {
114 d.deleteRecursively(() => null); 110 d.deleteRecursively(() => null);
115 } 111 }
116 }; 112 };
117 long.onFile = (file) { 113 long.onFile = (file) {
118 Expect.fail("Listing of non-existing directory should fail"); 114 Expect.fail("Listing of non-existing directory should fail");
119 }; 115 };
120 long.onDir = (dir) { 116 long.onDir = (dir) {
121 Expect.fail("Listing of non-existing directory should fail"); 117 Expect.fail("Listing of non-existing directory should fail");
122 }; 118 };
123 long.onDone = (done) { 119 long.onDone = (done) {
124 Expect.isFalse(done); 120 Expect.isFalse(done);
125 }; 121 };
126 long.list(); 122 long.list();
127 long.list(recursive: true); 123 long.list(recursive: true);
128 }); 124 });
129 }); 125 });
130 } 126 }
131 127
132 static void testDeleteNonExistent() { 128 static void testDeleteNonExistent() {
133 Directory d = new Directory(""); 129 Directory d = new Directory("");
134 d.onError = (error) { 130 d.onError = (e) {
135 Expect.fail("Directory error: $error"); 131 Expect.fail("Directory error: $e");
136 }; 132 };
137 d.createTemp(() { 133 d.createTemp(() {
138 d.delete(() { 134 d.delete(() {
139 // Test that deleting a non-existing directory fails. 135 // Test that deleting a non-existing directory fails.
140 d.onError = (error) { 136 d.onError = (e) {
141 // TODO(ager): When directory errors have been changed to 137 Expect.isTrue(e is DirectoryIOException);
142 // post back exceptions, check that we get the right exception
143 // type here.
144 }; 138 };
145 d.delete(() { 139 d.delete(() {
146 Expect.fail("Deletion of non-existing directory should fail"); 140 Expect.fail("Deletion of non-existing directory should fail");
147 }); 141 });
148 d.deleteRecursively(() { 142 d.deleteRecursively(() {
149 Expect.fail("Deletion of non-existing directory should fail"); 143 Expect.fail("Deletion of non-existing directory should fail");
150 }); 144 });
151 }); 145 });
152 }); 146 });
153 } 147 }
154 148
155 static void testDeleteTooLongName() { 149 static void testDeleteTooLongName() {
156 Directory d = new Directory(""); 150 Directory d = new Directory("");
157 d.onError = (error) { 151 d.onError = (e) {
158 Expect.fail("Directory error: $error"); 152 Expect.fail("Directory error: $e");
159 }; 153 };
160 d.createTemp(() { 154 d.createTemp(() {
161 var subDirName = 'subdir'; 155 var subDirName = 'subdir';
162 var subDir = new Directory("${d.path}/$subDirName"); 156 var subDir = new Directory("${d.path}/$subDirName");
163 subDir.onError = (error) { 157 subDir.onError = (e) {
164 Expect.fail("Directory error: $error"); 158 Expect.fail("Directory error: $e");
165 }; 159 };
166 subDir.create(() { 160 subDir.create(() {
167 // Construct a long string of the form 161 // Construct a long string of the form
168 // 'tempdir/subdir/../subdir/../subdir'. 162 // 'tempdir/subdir/../subdir/../subdir'.
169 var buffer = new StringBuffer(); 163 var buffer = new StringBuffer();
170 buffer.add(subDir.path); 164 buffer.add(subDir.path);
171 for (var i = 0; i < 1000; i++) { 165 for (var i = 0; i < 1000; i++) {
172 buffer.add("/../${subDirName}"); 166 buffer.add("/../${subDirName}");
173 } 167 }
174 var long = new Directory("${buffer.toString()}"); 168 var long = new Directory("${buffer.toString()}");
175 var errors = 0; 169 var errors = 0;
176 long.onError = (error) { 170 long.onError = (e) {
177 // TODO(ager): When directory errors have been changed to 171 Expect.isTrue(e is DirectoryIOException);
178 // post back exceptions, check that we get the right exception
179 // type here.
180 if (++errors == 2) { 172 if (++errors == 2) {
181 d.deleteRecursively(() => null); 173 d.deleteRecursively(() => null);
182 } 174 }
183 }; 175 };
184 long.delete(() { 176 long.delete(() {
185 Expect.fail("Deletion of a directory with a long name should fail"); 177 Expect.fail("Deletion of a directory with a long name should fail");
186 }); 178 });
187 long.deleteRecursively(() { 179 long.deleteRecursively(() {
188 Expect.fail("Deletion of a directory with a long name should fail"); 180 Expect.fail("Deletion of a directory with a long name should fail");
189 }); 181 });
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 bool stage1bDone = false; 254 bool stage1bDone = false;
263 bool emptyTemplateTestRunning = false; 255 bool emptyTemplateTestRunning = false;
264 256
265 // Stages 0 through 2 run twice, the second time with an empty path. 257 // Stages 0 through 2 run twice, the second time with an empty path.
266 Function stage0; 258 Function stage0;
267 Function stage1a; 259 Function stage1a;
268 Function stage1b; 260 Function stage1b;
269 Function stage2; 261 Function stage2;
270 Function stage3; // Loops to stage 0. 262 Function stage3; // Loops to stage 0.
271 263
272 Function error(String message) { 264 Function error(e) {
273 Expect.fail("Directory onError: $message"); 265 Expect.fail("Directory onError: $e");
274 } 266 }
275 267
276 stage0 = () { 268 stage0 = () {
277 tempDir1.onError = error; 269 tempDir1.onError = error;
278 tempDir1.createTemp(stage1a); 270 tempDir1.createTemp(stage1a);
279 tempDir2.onError = error; 271 tempDir2.onError = error;
280 tempDir2.createTemp(stage1b); 272 tempDir2.createTemp(stage1b);
281 }; 273 };
282 274
283 stage1a = () { 275 stage1a = () {
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
326 } 318 }
327 } 319 }
328 320
329 static void testCreateDeleteTemp() { 321 static void testCreateDeleteTemp() {
330 Directory tempDirectory = new Directory(""); 322 Directory tempDirectory = new Directory("");
331 tempDirectory.createTemp(() { 323 tempDirectory.createTemp(() {
332 String filename = tempDirectory.path + 324 String filename = tempDirectory.path +
333 new Platform().pathSeparator() + "dart_testfile"; 325 new Platform().pathSeparator() + "dart_testfile";
334 File file = new File(filename); 326 File file = new File(filename);
335 Expect.isFalse(file.existsSync()); 327 Expect.isFalse(file.existsSync());
336 file.onError = (error) { 328 file.onError = (e) {
337 Expect.fail("testCreateTemp file.onError called: $error"); 329 Expect.fail("testCreateTemp file.onError called: $e");
338 }; 330 };
339 file.create(() { 331 file.create(() {
340 file.exists((bool exists) { 332 file.exists((bool exists) {
341 Expect.isTrue(exists); 333 Expect.isTrue(exists);
342 // Try to delete the directory containing the file - should throw. 334 // Try to delete the directory containing the file - should throw.
343 Expect.throws(tempDirectory.deleteSync); 335 Expect.throws(tempDirectory.deleteSync);
344 Expect.isTrue(tempDirectory.existsSync()); 336 Expect.isTrue(tempDirectory.existsSync());
345 337
346 // Delete the file, and then delete the directory. 338 // Delete the file, and then delete the directory.
347 file.delete(() { 339 file.delete(() {
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
381 List<Directory> createdDirectories; 373 List<Directory> createdDirectories;
382 Directory current; 374 Directory current;
383 375
384 NestedTempDirectoryTest.run() 376 NestedTempDirectoryTest.run()
385 : createdDirectories = new List<Directory>(), 377 : createdDirectories = new List<Directory>(),
386 current = new Directory("") { 378 current = new Directory("") {
387 current.onError = errorCallback; 379 current.onError = errorCallback;
388 current.createTemp(createPhaseCallback); 380 current.createTemp(createPhaseCallback);
389 } 381 }
390 382
391 void errorCallback(error) { 383 void errorCallback(e) {
392 Expect.fail("Error callback called in NestedTempDirectoryTest: $error"); 384 Expect.fail("Error callback called in NestedTempDirectoryTest: $e");
393 } 385 }
394 386
395 void createPhaseCallback() { 387 void createPhaseCallback() {
396 createdDirectories.add(current); 388 createdDirectories.add(current);
397 int nestingDepth = 6; 389 int nestingDepth = 6;
398 var os = new Platform().operatingSystem(); 390 var os = new Platform().operatingSystem();
399 if (os == "windows") nestingDepth = 2; 391 if (os == "windows") nestingDepth = 2;
400 if (createdDirectories.length < nestingDepth) { 392 if (createdDirectories.length < nestingDepth) {
401 current = new Directory( 393 current = new Directory(
402 current.path + "/nested_temp_dir_${createdDirectories.length}_"); 394 current.path + "/nested_temp_dir_${createdDirectories.length}_");
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
448 var location = illegalTempDirectoryLocation(); 440 var location = illegalTempDirectoryLocation();
449 if (location == null) return; 441 if (location == null) return;
450 442
451 var resultPort = new ReceivePort(); 443 var resultPort = new ReceivePort();
452 resultPort.receive((String message, ignored) { 444 resultPort.receive((String message, ignored) {
453 resultPort.close(); 445 resultPort.close();
454 Expect.equals("error", message); 446 Expect.equals("error", message);
455 }); 447 });
456 448
457 Directory dir = new Directory(location); 449 Directory dir = new Directory(location);
458 dir.onError = (error) { resultPort.toSendPort().send("error"); }; 450 dir.onError = (e) { resultPort.toSendPort().send("error"); };
459 dir.createTemp(() => resultPort.toSendPort().send("success")); 451 dir.createTemp(() => resultPort.toSendPort().send("success"));
460 } 452 }
461 453
462 454
463 main() { 455 main() {
464 DirectoryTest.testMain(); 456 DirectoryTest.testMain();
465 NestedTempDirectoryTest.testMain(); 457 NestedTempDirectoryTest.testMain();
466 testCreateTempErrorSync(); 458 testCreateTempErrorSync();
467 testCreateTempError(); 459 testCreateTempError();
468 } 460 }
OLDNEW
« no previous file with comments | « tests/standalone/src/io/DirectoryInvalidArgumentsTest.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698