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

Side by Side Diff: pkg/watcher/test/no_subscription_test.dart

Issue 46843003: Wrap Directory.watch on linux for the watcher package. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: code review 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 | « pkg/watcher/test/no_subscription/shared.dart ('k') | pkg/watcher/test/ready/linux_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // BSD-style license that can be found in the LICENSE file.
4
5 import 'dart:async';
6
7 import 'package:scheduled_test/scheduled_test.dart';
8 import 'package:watcher/watcher.dart';
9
10 import 'utils.dart';
11
12 main() {
13 initConfig();
14
15 setUp(createSandbox);
16
17 test('does not notify for changes when there were no subscribers', () {
18 // Note that this test doesn't rely as heavily on the test functions in
19 // utils.dart because it needs to be very explicit about when the event
20 // stream is and is not subscribed.
21 var watcher = createWatcher();
22
23 // Subscribe to the events.
24 var completer = new Completer();
25 var subscription = watcher.events.listen(wrapAsync((event) {
26 expect(event.type, equals(ChangeType.ADD));
27 expect(event.path, endsWith("file.txt"));
28 completer.complete();
29 }));
30
31 writeFile("file.txt");
32
33 // Then wait until we get an event for it.
34 schedule(() => completer.future);
35
36 // Unsubscribe.
37 schedule(() {
38 subscription.cancel();
39 });
40
41 // Now write a file while we aren't listening.
42 writeFile("unwatched.txt");
43
44 // Then start listening again.
45 schedule(() {
46 completer = new Completer();
47 subscription = watcher.events.listen(wrapAsync((event) {
48 // We should get an event for the third file, not the one added while
49 // we weren't subscribed.
50 expect(event.type, equals(ChangeType.ADD));
51 expect(event.path, endsWith("added.txt"));
52 completer.complete();
53 }));
54 });
55
56 // The watcher will have been cancelled and then resumed in the middle of
57 // its pause between polling loops. That means the second scan to skip
58 // what changed while we were unsubscribed won't happen until after that
59 // delay is done. Wait long enough for that to happen.
60 //
61 // We're doing * 4 here because that seems to give the slower bots enough
62 // time for this to complete.
63 schedule(() => new Future.delayed(watcher.pollingDelay * 4));
64
65 // And add a third file.
66 writeFile("added.txt");
67
68 // Wait until we get an event for the third file.
69 schedule(() => completer.future);
70
71 schedule(() {
72 subscription.cancel();
73 });
74 });
75 }
OLDNEW
« no previous file with comments | « pkg/watcher/test/no_subscription/shared.dart ('k') | pkg/watcher/test/ready/linux_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698