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 |