Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 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 | |
| 3 // BSD-style license that can be found in the LICENSE file. | |
| 4 | |
| 5 import "dart:async"; | |
| 6 import "package:expect/expect.dart"; | |
| 7 import "dart:io"; | |
| 8 import "dart:isolate"; | |
| 9 | |
| 10 | |
| 11 void testWatchCreateFile() { | |
| 12 var dir = new Directory('').createTempSync(); | |
| 13 var file = new File(dir.path + '/file'); | |
| 14 | |
| 15 var watcher = dir.watch(); | |
| 16 | |
| 17 var port = new ReceivePort(); | |
| 18 var sub; | |
| 19 sub = watcher.listen((event) { | |
| 20 if (event is FileSystemCreateEvent && | |
| 21 event.path.endsWith('file')) { | |
| 22 port.close(); | |
| 23 sub.cancel(); | |
| 24 dir.deleteSync(recursive: true); | |
|
Søren Gjesse
2013/08/26 07:51:55
Failure for all other events (for all tests)?
Anders Johnsen
2013/09/03 11:36:23
Sadly, no. I had this, but some platforms put in e
| |
| 25 } | |
|
Søren Gjesse
2013/08/26 07:51:55
Add an onDone handler and expect it no be called (
Anders Johnsen
2013/09/03 11:36:23
As we stop it by canceling the subscription, there
| |
| 26 }, onError: (e) { | |
| 27 dir.deleteSync(recursive: true); | |
| 28 throw e; | |
| 29 }); | |
| 30 | |
| 31 file.createSync(); | |
| 32 } | |
| 33 | |
| 34 | |
| 35 void testWatchModifyFile() { | |
| 36 var dir = new Directory('').createTempSync(); | |
| 37 var file = new File(dir.path + '/file'); | |
| 38 file.createSync(); | |
| 39 | |
| 40 var watcher = dir.watch(); | |
| 41 | |
| 42 var port = new ReceivePort(); | |
| 43 var sub; | |
| 44 sub = watcher.listen((event) { | |
| 45 if (event is FileSystemModifyEvent) { | |
| 46 Expect.isTrue(event.path.endsWith('file')); | |
| 47 sub.cancel(); | |
| 48 port.close(); | |
| 49 dir.deleteSync(recursive: true); | |
| 50 } | |
| 51 }, onError: (e) { | |
| 52 dir.deleteSync(recursive: true); | |
| 53 throw e; | |
| 54 }); | |
| 55 | |
| 56 file.writeAsStringSync('a'); | |
| 57 } | |
| 58 | |
| 59 | |
| 60 void testWatchMoveFile() { | |
| 61 var dir = new Directory('').createTempSync(); | |
| 62 var file = new File(dir.path + '/file'); | |
| 63 file.createSync(); | |
| 64 | |
| 65 var watcher = dir.watch(); | |
| 66 | |
| 67 var port = new ReceivePort(); | |
| 68 var sub; | |
| 69 sub = watcher.listen((event) { | |
| 70 if (event is FileSystemMoveEvent) { | |
| 71 Expect.isTrue(event.path.endsWith('file')); | |
| 72 Expect.isTrue(event.destination.endsWith('file2')); | |
| 73 sub.cancel(); | |
| 74 port.close(); | |
| 75 dir.deleteSync(recursive: true); | |
| 76 } | |
| 77 }, onError: (e) { | |
| 78 dir.deleteSync(recursive: true); | |
| 79 throw e; | |
| 80 }); | |
| 81 | |
| 82 file.renameSync(dir.path + '/file2'); | |
| 83 } | |
| 84 | |
| 85 | |
| 86 void testWatchDeleteFile() { | |
| 87 var dir = new Directory('').createTempSync(); | |
| 88 var file = new File(dir.path + '/file'); | |
| 89 file.createSync(); | |
| 90 | |
| 91 var watcher = dir.watch(); | |
| 92 | |
| 93 var port = new ReceivePort(); | |
| 94 var sub; | |
| 95 sub = watcher.listen((event) { | |
| 96 if (event is FileSystemDeleteEvent) { | |
| 97 Expect.isTrue(event.path.endsWith('file')); | |
| 98 sub.cancel(); | |
| 99 port.close(); | |
| 100 dir.deleteSync(recursive: true); | |
| 101 } | |
| 102 }, onDone: () { | |
| 103 Expect.isTrue(gotEvent); | |
| 104 }, onError: (e) { | |
| 105 dir.deleteSync(recursive: true); | |
| 106 throw e; | |
| 107 }); | |
| 108 | |
| 109 file.deleteSync(); | |
| 110 } | |
| 111 | |
| 112 | |
| 113 void testWatchOnlyModifyFile() { | |
| 114 var dir = new Directory('').createTempSync(); | |
| 115 var file = new File(dir.path + '/file'); | |
| 116 | |
| 117 var watcher = dir.watch(events: FileSystemEvent.MODIFY_EVENT); | |
| 118 | |
| 119 var port = new ReceivePort(); | |
| 120 var sub; | |
| 121 sub = watcher.listen((event) { | |
| 122 Expect.isTrue(event is FileSystemModifyEvent); | |
| 123 Expect.isTrue(event.path.endsWith('file')); | |
| 124 sub.cancel(); | |
| 125 port.close(); | |
| 126 dir.deleteSync(recursive: true); | |
| 127 }, onError: (e) { | |
| 128 dir.deleteSync(recursive: true); | |
| 129 throw e; | |
| 130 }); | |
| 131 | |
| 132 file.createSync(); | |
| 133 file.writeAsStringSync('a'); | |
| 134 } | |
| 135 | |
| 136 | |
| 137 void testMultipleEvents() { | |
| 138 var dir = new Directory('').createTempSync(); | |
| 139 var file = new File(dir.path + '/file'); | |
| 140 var file2 = new File(dir.path + '/file2'); | |
| 141 | |
| 142 var watcher = dir.watch(); | |
| 143 | |
| 144 var port = new ReceivePort(); | |
| 145 int state = 0; | |
| 146 var sub; | |
| 147 sub = watcher.listen((event) { | |
| 148 switch (state) { | |
| 149 case 0: | |
| 150 Expect.isTrue(event is FileSystemCreateEvent); | |
| 151 state = 1; | |
| 152 break; | |
| 153 | |
| 154 case 1: | |
| 155 if (event is FileSystemCreateEvent) break; | |
| 156 Expect.isTrue(event is FileSystemModifyEvent); | |
| 157 state = 2; | |
| 158 break; | |
| 159 | |
| 160 case 2: | |
| 161 if (event is FileSystemModifyEvent) break; | |
| 162 Expect.isTrue(event is FileSystemMoveEvent); | |
| 163 state = 3; | |
| 164 break; | |
| 165 | |
| 166 case 3: | |
| 167 if (event is FileSystemMoveEvent) break; | |
| 168 Expect.isTrue(event is FileSystemDeleteEvent); | |
| 169 sub.cancel(); | |
| 170 port.close(); | |
| 171 dir.deleteSync(); | |
| 172 break; | |
| 173 } | |
| 174 }); | |
| 175 | |
| 176 file.createSync(); | |
| 177 file.writeAsStringSync('a'); | |
| 178 file.renameSync(file2.path); | |
| 179 file2.deleteSync(); | |
| 180 } | |
| 181 | |
| 182 | |
| 183 void main() { | |
| 184 testWatchCreateFile(); | |
| 185 testWatchModifyFile(); | |
| 186 testWatchMoveFile(); | |
| 187 testWatchDeleteFile(); | |
| 188 testWatchOnlyModifyFile(); | |
| 189 testMultipleEvents(); | |
| 190 } | |
| OLD | NEW |