OLD | NEW |
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 // Dart test program for testing error handling in directory I/O. | 5 // Dart test program for testing error handling in directory I/O. |
6 | 6 |
7 import "package:expect/expect.dart"; | 7 import "package:expect/expect.dart"; |
8 import "dart:async"; | 8 import "dart:async"; |
9 import "dart:io"; | 9 import "dart:io"; |
10 import "dart:isolate"; | 10 import "dart:isolate"; |
11 | 11 |
12 Directory tempDir() { | 12 Directory tempDir() { |
13 return new Directory('').createTempSync(); | 13 return new Directory('').createTempSync(); |
14 } | 14 } |
15 | 15 |
16 | 16 |
17 bool checkCreateInNonExistentFileException(e) { | 17 bool checkCreateInNonExistentFileException(e) { |
18 Expect.isTrue(e is DirectoryIOException); | 18 Expect.isTrue(e is DirectoryException); |
19 Expect.isTrue(e.osError != null); | 19 Expect.isTrue(e.osError != null); |
20 Expect.isTrue(e.toString().indexOf("Creation failed") != -1); | 20 Expect.isTrue(e.toString().indexOf("Creation failed") != -1); |
21 if (Platform.operatingSystem == "linux") { | 21 if (Platform.operatingSystem == "linux") { |
22 Expect.equals(2, e.osError.errorCode); | 22 Expect.equals(2, e.osError.errorCode); |
23 } else if (Platform.operatingSystem == "macos") { | 23 } else if (Platform.operatingSystem == "macos") { |
24 Expect.equals(2, e.osError.errorCode); | 24 Expect.equals(2, e.osError.errorCode); |
25 } else if (Platform.operatingSystem == "windows") { | 25 } else if (Platform.operatingSystem == "windows") { |
26 Expect.equals(3, e.osError.errorCode); | 26 Expect.equals(3, e.osError.errorCode); |
27 } | 27 } |
28 | 28 |
29 return true; | 29 return true; |
30 } | 30 } |
31 | 31 |
32 | 32 |
33 void testCreateInNonExistent(Directory temp, Function done) { | 33 void testCreateInNonExistent(Directory temp, Function done) { |
34 Directory inNonExistent = new Directory("${temp.path}/nonExistent/xxx"); | 34 Directory inNonExistent = new Directory("${temp.path}/nonExistent/xxx"); |
35 Expect.throws(() => inNonExistent.createSync(), | 35 Expect.throws(() => inNonExistent.createSync(), |
36 (e) => checkCreateInNonExistentFileException(e)); | 36 (e) => checkCreateInNonExistentFileException(e)); |
37 | 37 |
38 inNonExistent.create().catchError((error) { | 38 inNonExistent.create().catchError((error) { |
39 checkCreateInNonExistentFileException(error); | 39 checkCreateInNonExistentFileException(error); |
40 done(); | 40 done(); |
41 }); | 41 }); |
42 } | 42 } |
43 | 43 |
44 | 44 |
45 bool checkCreateTempInNonExistentFileException(e) { | 45 bool checkCreateTempInNonExistentFileException(e) { |
46 Expect.isTrue(e is DirectoryIOException); | 46 Expect.isTrue(e is DirectoryException); |
47 Expect.isTrue(e.osError != null); | 47 Expect.isTrue(e.osError != null); |
48 if (Platform.operatingSystem == "linux") { | 48 if (Platform.operatingSystem == "linux") { |
49 Expect.equals(2, e.osError.errorCode); | 49 Expect.equals(2, e.osError.errorCode); |
50 } else if (Platform.operatingSystem == "macos") { | 50 } else if (Platform.operatingSystem == "macos") { |
51 Expect.equals(2, e.osError.errorCode); | 51 Expect.equals(2, e.osError.errorCode); |
52 } else if (Platform.operatingSystem == "windows") { | 52 } else if (Platform.operatingSystem == "windows") { |
53 Expect.equals(3, e.osError.errorCode); | 53 Expect.equals(3, e.osError.errorCode); |
54 } | 54 } |
55 | 55 |
56 return true; | 56 return true; |
57 } | 57 } |
58 | 58 |
59 | 59 |
60 void testCreateTempInNonExistent(Directory temp, Function done) { | 60 void testCreateTempInNonExistent(Directory temp, Function done) { |
61 Directory nonExistent = new Directory("${temp.path}/nonExistent/xxx"); | 61 Directory nonExistent = new Directory("${temp.path}/nonExistent/xxx"); |
62 Expect.throws(() => nonExistent.createTempSync(), | 62 Expect.throws(() => nonExistent.createTempSync(), |
63 (e) => checkCreateTempInNonExistentFileException(e)); | 63 (e) => checkCreateTempInNonExistentFileException(e)); |
64 | 64 |
65 nonExistent.createTemp().catchError((error) { | 65 nonExistent.createTemp().catchError((error) { |
66 checkCreateTempInNonExistentFileException(error); | 66 checkCreateTempInNonExistentFileException(error); |
67 done(); | 67 done(); |
68 }); | 68 }); |
69 } | 69 } |
70 | 70 |
71 | 71 |
72 bool checkDeleteNonExistentFileException(e) { | 72 bool checkDeleteNonExistentFileException(e) { |
73 Expect.isTrue(e is DirectoryIOException); | 73 Expect.isTrue(e is DirectoryException); |
74 Expect.isTrue(e.osError != null); | 74 Expect.isTrue(e.osError != null); |
75 // File not not found has error code 2 on all supported platforms. | 75 // File not not found has error code 2 on all supported platforms. |
76 Expect.equals(2, e.osError.errorCode); | 76 Expect.equals(2, e.osError.errorCode); |
77 | 77 |
78 return true; | 78 return true; |
79 } | 79 } |
80 | 80 |
81 | 81 |
82 void testDeleteNonExistent(Directory temp, Function done) { | 82 void testDeleteNonExistent(Directory temp, Function done) { |
83 Directory nonExistent = new Directory("${temp.path}/nonExistent"); | 83 Directory nonExistent = new Directory("${temp.path}/nonExistent"); |
84 Expect.throws(() => nonExistent.deleteSync(), | 84 Expect.throws(() => nonExistent.deleteSync(), |
85 (e) => checkDeleteNonExistentFileException(e)); | 85 (e) => checkDeleteNonExistentFileException(e)); |
86 | 86 |
87 nonExistent.delete().catchError((error) { | 87 nonExistent.delete().catchError((error) { |
88 checkDeleteNonExistentFileException(error); | 88 checkDeleteNonExistentFileException(error); |
89 done(); | 89 done(); |
90 }); | 90 }); |
91 } | 91 } |
92 | 92 |
93 | 93 |
94 bool checkDeleteRecursivelyNonExistentFileException(e) { | 94 bool checkDeleteRecursivelyNonExistentFileException(e) { |
95 Expect.isTrue(e is DirectoryIOException); | 95 Expect.isTrue(e is DirectoryException); |
96 Expect.isTrue(e.osError != null); | 96 Expect.isTrue(e.osError != null); |
97 Expect.isTrue(e.toString().indexOf("Deletion failed") != -1); | 97 Expect.isTrue(e.toString().indexOf("Deletion failed") != -1); |
98 // File not not found has error code 2 on all supported platforms. | 98 // File not not found has error code 2 on all supported platforms. |
99 Expect.equals(2, e.osError.errorCode); | 99 Expect.equals(2, e.osError.errorCode); |
100 | 100 |
101 return true; | 101 return true; |
102 } | 102 } |
103 | 103 |
104 | 104 |
105 void testDeleteRecursivelyNonExistent(Directory temp, Function done) { | 105 void testDeleteRecursivelyNonExistent(Directory temp, Function done) { |
106 Directory nonExistent = new Directory("${temp.path}/nonExistent"); | 106 Directory nonExistent = new Directory("${temp.path}/nonExistent"); |
107 Expect.throws(() => nonExistent.deleteSync(recursive: true), | 107 Expect.throws(() => nonExistent.deleteSync(recursive: true), |
108 (e) => checkDeleteRecursivelyNonExistentFileException(e)); | 108 (e) => checkDeleteRecursivelyNonExistentFileException(e)); |
109 | 109 |
110 nonExistent.delete(recursive: true).catchError((error) { | 110 nonExistent.delete(recursive: true).catchError((error) { |
111 checkDeleteRecursivelyNonExistentFileException(error); | 111 checkDeleteRecursivelyNonExistentFileException(error); |
112 done(); | 112 done(); |
113 }); | 113 }); |
114 } | 114 } |
115 | 115 |
116 | 116 |
117 bool checkListNonExistentFileException(e) { | 117 bool checkListNonExistentFileException(e) { |
118 Expect.isTrue(e is DirectoryIOException); | 118 Expect.isTrue(e is DirectoryException); |
119 Expect.isTrue(e.osError != null); | 119 Expect.isTrue(e.osError != null); |
120 Expect.isTrue(e.toString().indexOf("Directory listing failed") != -1); | 120 Expect.isTrue(e.toString().indexOf("Directory listing failed") != -1); |
121 if (Platform.operatingSystem == "linux") { | 121 if (Platform.operatingSystem == "linux") { |
122 Expect.equals(2, e.osError.errorCode); | 122 Expect.equals(2, e.osError.errorCode); |
123 } else if (Platform.operatingSystem == "macos") { | 123 } else if (Platform.operatingSystem == "macos") { |
124 Expect.equals(2, e.osError.errorCode); | 124 Expect.equals(2, e.osError.errorCode); |
125 } else if (Platform.operatingSystem == "windows") { | 125 } else if (Platform.operatingSystem == "windows") { |
126 Expect.equals(3, e.osError.errorCode); | 126 Expect.equals(3, e.osError.errorCode); |
127 } | 127 } |
128 | 128 |
129 return true; | 129 return true; |
130 } | 130 } |
131 | 131 |
132 | 132 |
133 bool checkAsyncListNonExistentFileException(error) { | 133 bool checkAsyncListNonExistentFileException(error) { |
134 return checkListNonExistentFileException(error); | 134 return checkListNonExistentFileException(error); |
135 } | 135 } |
136 | 136 |
137 | 137 |
138 void testListNonExistent(Directory temp, Function done) { | 138 void testListNonExistent(Directory temp, Function done) { |
139 Directory nonExistent = new Directory("${temp.path}/nonExistent"); | 139 Directory nonExistent = new Directory("${temp.path}/nonExistent"); |
140 Expect.throws(() => nonExistent.listSync(), (e) => e is DirectoryIOException); | 140 Expect.throws(() => nonExistent.listSync(), (e) => e is DirectoryException); |
141 nonExistent.list().listen( | 141 nonExistent.list().listen( |
142 (_) => Expect.fail("listing should not succeed"), | 142 (_) => Expect.fail("listing should not succeed"), |
143 onError: (e) { | 143 onError: (e) { |
144 checkAsyncListNonExistentFileException(e); | 144 checkAsyncListNonExistentFileException(e); |
145 done(); | 145 done(); |
146 }); | 146 }); |
147 } | 147 } |
148 | 148 |
149 | 149 |
150 void testRenameNonExistent(Directory temp, Function done) { | 150 void testRenameNonExistent(Directory temp, Function done) { |
151 Directory nonExistent = new Directory("${temp.path}/nonExistent"); | 151 Directory nonExistent = new Directory("${temp.path}/nonExistent"); |
152 var newPath = "${temp.path}/nonExistent2"; | 152 var newPath = "${temp.path}/nonExistent2"; |
153 Expect.throws(() => nonExistent.renameSync(newPath), | 153 Expect.throws(() => nonExistent.renameSync(newPath), |
154 (e) => e is DirectoryIOException); | 154 (e) => e is DirectoryException); |
155 var renameDone = nonExistent.rename(newPath); | 155 var renameDone = nonExistent.rename(newPath); |
156 renameDone.then((ignore) => Expect.fail('rename non existent')) | 156 renameDone.then((ignore) => Expect.fail('rename non existent')) |
157 .catchError((error) { | 157 .catchError((error) { |
158 Expect.isTrue(error is DirectoryIOException); | 158 Expect.isTrue(error is DirectoryException); |
159 done(); | 159 done(); |
160 }); | 160 }); |
161 } | 161 } |
162 | 162 |
163 | 163 |
164 void testRenameFileAsDirectory(Directory temp, Function done) { | 164 void testRenameFileAsDirectory(Directory temp, Function done) { |
165 File f = new File("${temp.path}/file"); | 165 File f = new File("${temp.path}/file"); |
166 var newPath = "${temp.path}/file2"; | 166 var newPath = "${temp.path}/file2"; |
167 f.createSync(); | 167 f.createSync(); |
168 var d = new Directory(f.path); | 168 var d = new Directory(f.path); |
169 Expect.throws(() => d.renameSync(newPath), | 169 Expect.throws(() => d.renameSync(newPath), |
170 (e) => e is DirectoryIOException); | 170 (e) => e is DirectoryException); |
171 var renameDone = d.rename(newPath); | 171 var renameDone = d.rename(newPath); |
172 renameDone.then((ignore) => Expect.fail('rename file as directory')) | 172 renameDone.then((ignore) => Expect.fail('rename file as directory')) |
173 .catchError((error) { | 173 .catchError((error) { |
174 Expect.isTrue(error is DirectoryIOException); | 174 Expect.isTrue(error is DirectoryException); |
175 done(); | 175 done(); |
176 }); | 176 }); |
177 } | 177 } |
178 | 178 |
179 | 179 |
180 testRenameOverwriteFile(Directory temp, Function done) { | 180 testRenameOverwriteFile(Directory temp, Function done) { |
181 var d = new Directory(''); | 181 var d = new Directory(''); |
182 var temp1 = d.createTempSync(); | 182 var temp1 = d.createTempSync(); |
183 var fileName = '${temp.path}/x'; | 183 var fileName = '${temp.path}/x'; |
184 new File(fileName).createSync(); | 184 new File(fileName).createSync(); |
185 Expect.throws(() => temp1.renameSync(fileName), | 185 Expect.throws(() => temp1.renameSync(fileName), |
186 (e) => e is DirectoryIOException); | 186 (e) => e is DirectoryException); |
187 var renameDone = temp1.rename(fileName); | 187 var renameDone = temp1.rename(fileName); |
188 renameDone.then((ignore) => Expect.fail('rename dir overwrite file')) | 188 renameDone.then((ignore) => Expect.fail('rename dir overwrite file')) |
189 .catchError((error) { | 189 .catchError((error) { |
190 Expect.isTrue(error is DirectoryIOException); | 190 Expect.isTrue(error is DirectoryException); |
191 temp1.deleteSync(recursive: true); | 191 temp1.deleteSync(recursive: true); |
192 done(); | 192 done(); |
193 }); | 193 }); |
194 } | 194 } |
195 | 195 |
196 | 196 |
197 void runTest(Function test) { | 197 void runTest(Function test) { |
198 // Create a temporary directory for the test. | 198 // Create a temporary directory for the test. |
199 var temp = new Directory('').createTempSync(); | 199 var temp = new Directory('').createTempSync(); |
200 | 200 |
(...skipping 12 matching lines...) Expand all Loading... |
213 main() { | 213 main() { |
214 runTest(testCreateInNonExistent); | 214 runTest(testCreateInNonExistent); |
215 runTest(testCreateTempInNonExistent); | 215 runTest(testCreateTempInNonExistent); |
216 runTest(testDeleteNonExistent); | 216 runTest(testDeleteNonExistent); |
217 runTest(testDeleteRecursivelyNonExistent); | 217 runTest(testDeleteRecursivelyNonExistent); |
218 runTest(testListNonExistent); | 218 runTest(testListNonExistent); |
219 runTest(testRenameNonExistent); | 219 runTest(testRenameNonExistent); |
220 runTest(testRenameFileAsDirectory); | 220 runTest(testRenameFileAsDirectory); |
221 runTest(testRenameOverwriteFile); | 221 runTest(testRenameOverwriteFile); |
222 } | 222 } |
OLD | NEW |