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

Side by Side Diff: tests/standalone/io/file_system_watcher_test.dart

Issue 48613002: Add 'isDir' to FileSystemEvent. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: More cleanup. Created 7 years, 1 month 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 | « sdk/lib/io/file_system_entity.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) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 import "dart:async"; 5 import "dart:async";
6 import "dart:io"; 6 import "dart:io";
7 7
8 import "package:async_helper/async_helper.dart"; 8 import "package:async_helper/async_helper.dart";
9 import "package:expect/expect.dart"; 9 import "package:expect/expect.dart";
10 import "package:path/path.dart";
10 11
11 12
12 void testWatchCreateFile() { 13 void testWatchCreateFile() {
13 var dir = Directory.systemTemp.createTempSync('dart_file_system_watcher'); 14 var dir = Directory.systemTemp.createTempSync('dart_file_system_watcher');
14 var file = new File(dir.path + '/file'); 15 var file = new File(join(dir.path, 'file'));
15 16
16 var watcher = dir.watch(); 17 var watcher = dir.watch();
17 18
18 asyncStart(); 19 asyncStart();
19 var sub; 20 var sub;
20 sub = watcher.listen((event) { 21 sub = watcher.listen((event) {
21 if (event is FileSystemCreateEvent && 22 if (event is FileSystemCreateEvent &&
22 event.path.endsWith('file')) { 23 event.path.endsWith('file')) {
24 Expect.isFalse(event.isDirectory);
23 asyncEnd(); 25 asyncEnd();
24 sub.cancel(); 26 sub.cancel();
25 dir.deleteSync(recursive: true); 27 dir.deleteSync(recursive: true);
26 } 28 }
27 }, onError: (e) { 29 }, onError: (e) {
28 dir.deleteSync(recursive: true); 30 dir.deleteSync(recursive: true);
29 throw e; 31 throw e;
30 }); 32 });
31 33
32 file.createSync(); 34 file.createSync();
33 } 35 }
34 36
35 37
38 void testWatchCreateDir() {
39 var dir = Directory.systemTemp.createTempSync('dart_file_system_watcher');
40 var subdir = new Directory(join(dir.path, 'dir'));
41
42 var watcher = dir.watch();
43
44 asyncStart();
45 var sub;
46 sub = watcher.listen((event) {
47 if (event is FileSystemCreateEvent &&
48 event.path.endsWith('dir')) {
49 Expect.isTrue(event.isDirectory);
50 asyncEnd();
51 sub.cancel();
52 dir.deleteSync(recursive: true);
53 }
54 }, onError: (e) {
55 dir.deleteSync(recursive: true);
56 throw e;
57 });
58
59 subdir.createSync();
60 }
61
62
36 void testWatchModifyFile() { 63 void testWatchModifyFile() {
37 var dir = Directory.systemTemp.createTempSync('dart_file_system_watcher'); 64 var dir = Directory.systemTemp.createTempSync('dart_file_system_watcher');
38 var file = new File(dir.path + '/file'); 65 var file = new File(join(dir.path, 'file'));
39 file.createSync(); 66 file.createSync();
40 67
41 var watcher = dir.watch(); 68 var watcher = dir.watch();
42 69
43 asyncStart(); 70 asyncStart();
44 var sub; 71 var sub;
45 sub = watcher.listen((event) { 72 sub = watcher.listen((event) {
46 if (event is FileSystemModifyEvent) { 73 if (event is FileSystemModifyEvent) {
47 Expect.isTrue(event.path.endsWith('file')); 74 Expect.isTrue(event.path.endsWith('file'));
48 sub.cancel(); 75 sub.cancel();
49 asyncEnd(); 76 asyncEnd();
50 dir.deleteSync(recursive: true); 77 dir.deleteSync(recursive: true);
51 } 78 }
52 }, onError: (e) { 79 }, onError: (e) {
53 dir.deleteSync(recursive: true); 80 dir.deleteSync(recursive: true);
54 throw e; 81 throw e;
55 }); 82 });
56 83
57 file.writeAsStringSync('a'); 84 file.writeAsStringSync('a');
58 } 85 }
59 86
60 87
61 void testWatchMoveFile() { 88 void testWatchMoveFile() {
62 var dir = Directory.systemTemp.createTempSync('dart_file_system_watcher'); 89 var dir = Directory.systemTemp.createTempSync('dart_file_system_watcher');
63 var file = new File(dir.path + '/file'); 90 var file = new File(join(dir.path, 'file'));
64 file.createSync(); 91 file.createSync();
65 92
66 var watcher = dir.watch(); 93 var watcher = dir.watch();
67 94
68 asyncStart(); 95 asyncStart();
69 var sub; 96 var sub;
70 sub = watcher.listen((event) { 97 sub = watcher.listen((event) {
71 if (event is FileSystemMoveEvent) { 98 if (event is FileSystemMoveEvent) {
72 Expect.isTrue(event.path.endsWith('file')); 99 Expect.isTrue(event.path.endsWith('file'));
73 if (event.destination != null) { 100 if (event.destination != null) {
74 Expect.isTrue(event.destination.endsWith('file2')); 101 Expect.isTrue(event.destination.endsWith('file2'));
75 } 102 }
76 sub.cancel(); 103 sub.cancel();
77 asyncEnd(); 104 asyncEnd();
78 dir.deleteSync(recursive: true); 105 dir.deleteSync(recursive: true);
79 } 106 }
80 }, onError: (e) { 107 }, onError: (e) {
81 dir.deleteSync(recursive: true); 108 dir.deleteSync(recursive: true);
82 throw e; 109 throw e;
83 }); 110 });
84 111
85 file.renameSync(dir.path + '/file2'); 112 file.renameSync(join(dir.path, 'file2'));
86 } 113 }
87 114
88 115
89 void testWatchDeleteFile() { 116 void testWatchDeleteFile() {
90 var dir = Directory.systemTemp.createTempSync('dart_file_system_watcher'); 117 var dir = Directory.systemTemp.createTempSync('dart_file_system_watcher');
91 var file = new File(dir.path + '/file'); 118 var file = new File(join(dir.path, 'file'));
92 file.createSync(); 119 file.createSync();
93 120
94 var watcher = dir.watch(); 121 var watcher = dir.watch();
95 122
96 asyncStart(); 123 asyncStart();
97 var sub; 124 var sub;
98 sub = watcher.listen((event) { 125 sub = watcher.listen((event) {
99 if (event is FileSystemDeleteEvent) { 126 if (event is FileSystemDeleteEvent) {
100 Expect.isTrue(event.path.endsWith('file')); 127 Expect.isTrue(event.path.endsWith('file'));
101 sub.cancel(); 128 sub.cancel();
(...skipping 22 matching lines...) Expand all
124 }, onDone: () { 151 }, onDone: () {
125 asyncEnd(); 152 asyncEnd();
126 }); 153 });
127 154
128 dir.deleteSync(); 155 dir.deleteSync();
129 } 156 }
130 157
131 158
132 void testWatchOnlyModifyFile() { 159 void testWatchOnlyModifyFile() {
133 var dir = Directory.systemTemp.createTempSync('dart_file_system_watcher'); 160 var dir = Directory.systemTemp.createTempSync('dart_file_system_watcher');
134 var file = new File(dir.path + '/file'); 161 var file = new File(join(dir.path, 'file'));
135 162
136 var watcher = dir.watch(events: FileSystemEvent.MODIFY); 163 var watcher = dir.watch(events: FileSystemEvent.MODIFY);
137 164
138 asyncStart(); 165 asyncStart();
139 var sub; 166 var sub;
140 sub = watcher.listen((event) { 167 sub = watcher.listen((event) {
141 Expect.isTrue(event is FileSystemModifyEvent); 168 Expect.isTrue(event is FileSystemModifyEvent);
142 Expect.isTrue(event.path.endsWith('file')); 169 Expect.isTrue(event.path.endsWith('file'));
143 sub.cancel(); 170 sub.cancel();
144 asyncEnd(); 171 asyncEnd();
145 dir.deleteSync(recursive: true); 172 dir.deleteSync(recursive: true);
146 }, onError: (e) { 173 }, onError: (e) {
147 dir.deleteSync(recursive: true); 174 dir.deleteSync(recursive: true);
148 throw e; 175 throw e;
149 }); 176 });
150 177
151 file.createSync(); 178 file.createSync();
152 file.writeAsStringSync('a'); 179 file.writeAsStringSync('a');
153 } 180 }
154 181
155 182
156 void testMultipleEvents() { 183 void testMultipleEvents() {
157 var dir = Directory.systemTemp.createTempSync('dart_file_system_watcher'); 184 var dir = Directory.systemTemp.createTempSync('dart_file_system_watcher');
158 var file = new File(dir.path + '/file'); 185 var file = new File(join(dir.path, 'file'));
159 var file2 = new File(dir.path + '/file2'); 186 var file2 = new File(join(dir.path, 'file2'));
160 187
161 var watcher = dir.watch(); 188 var watcher = dir.watch();
162 189
163 asyncStart(); 190 asyncStart();
164 int state = 0; 191 int state = 0;
165 var sub; 192 var sub;
166 sub = watcher.listen((event) { 193 sub = watcher.listen((event) {
167 int newState = 0; 194 int newState = 0;
168 switch (event.type) { 195 switch (event.type) {
169 case FileSystemEvent.CREATE: 196 case FileSystemEvent.CREATE:
(...skipping 27 matching lines...) Expand all
197 file2.deleteSync(); 224 file2.deleteSync();
198 } 225 }
199 226
200 227
201 void testWatchRecursive() { 228 void testWatchRecursive() {
202 var dir = Directory.systemTemp.createTempSync('dart_file_system_watcher'); 229 var dir = Directory.systemTemp.createTempSync('dart_file_system_watcher');
203 if (Platform.isLinux) { 230 if (Platform.isLinux) {
204 Expect.throws(() => dir.watch(recursive: true)); 231 Expect.throws(() => dir.watch(recursive: true));
205 return; 232 return;
206 } 233 }
207 var dir2 = new Directory(dir.path + '/dir'); 234 var dir2 = new Directory(join(dir.path, 'dir'));
208 dir2.createSync(); 235 dir2.createSync();
209 var file = new File(dir.path + '/dir/file'); 236 var file = new File(join(dir.path, 'dir/file'));
210 237
211 var watcher = dir.watch(recursive: true); 238 var watcher = dir.watch(recursive: true);
212 239
213 asyncStart(); 240 asyncStart();
214 var sub; 241 var sub;
215 sub = watcher.listen((event) { 242 sub = watcher.listen((event) {
216 if (event.path.endsWith('file')) { 243 if (event.path.endsWith('file')) {
217 sub.cancel(); 244 sub.cancel();
218 asyncEnd(); 245 asyncEnd();
219 dir.deleteSync(recursive: true); 246 dir.deleteSync(recursive: true);
220 } 247 }
221 }, onError: (e) { 248 }, onError: (e) {
222 dir.deleteSync(recursive: true); 249 dir.deleteSync(recursive: true);
223 throw e; 250 throw e;
224 }); 251 });
225 252
226 file.createSync(); 253 file.createSync();
227 } 254 }
228 255
229 256
230 void testWatchNonRecursive() { 257 void testWatchNonRecursive() {
231 var dir = Directory.systemTemp.createTempSync('dart_file_system_watcher'); 258 var dir = Directory.systemTemp.createTempSync('dart_file_system_watcher');
232 var dir2 = new Directory(dir.path + '/dir'); 259 var dir2 = new Directory(join(dir.path, 'dir'));
233 dir2.createSync(); 260 dir2.createSync();
234 var file = new File(dir.path + '/dir/file'); 261 var file = new File(join(dir.path, 'dir/file'));
235 262
236 var watcher = dir.watch(recursive: false); 263 var watcher = dir.watch(recursive: false);
237 264
238 asyncStart(); 265 asyncStart();
239 var sub; 266 var sub;
240 sub = watcher.listen((event) { 267 sub = watcher.listen((event) {
241 if (event.path.endsWith('file')) { 268 if (event.path.endsWith('file')) {
242 throw "File change event not expected"; 269 throw "File change event not expected";
243 } 270 }
244 }, onError: (e) { 271 }, onError: (e) {
(...skipping 21 matching lines...) Expand all
266 }, onError: (e) { 293 }, onError: (e) {
267 asyncEnd(); 294 asyncEnd();
268 Expect.isTrue(e is FileSystemException); 295 Expect.isTrue(e is FileSystemException);
269 }); 296 });
270 } 297 }
271 298
272 299
273 void main() { 300 void main() {
274 if (!FileSystemEntity.isWatchSupported) return; 301 if (!FileSystemEntity.isWatchSupported) return;
275 testWatchCreateFile(); 302 testWatchCreateFile();
303 testWatchCreateDir();
276 testWatchModifyFile(); 304 testWatchModifyFile();
277 testWatchMoveFile(); 305 testWatchMoveFile();
278 testWatchDeleteFile(); 306 testWatchDeleteFile();
279 testWatchDeleteDir(); 307 testWatchDeleteDir();
280 testWatchOnlyModifyFile(); 308 testWatchOnlyModifyFile();
281 testMultipleEvents(); 309 testMultipleEvents();
282 testWatchNonRecursive(); 310 testWatchNonRecursive();
283 testWatchNonExisting(); 311 testWatchNonExisting();
284 } 312 }
OLDNEW
« no previous file with comments | « sdk/lib/io/file_system_entity.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698