| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | |
| // for details. All rights reserved. Use of this source code is governed by a | |
| // BSD-style license that can be found in the LICENSE file. | |
| import 'dart:async'; | |
| import 'package:async/async.dart'; | |
| import 'package:test/test.dart'; | |
| import 'package:watcher/watcher.dart'; | |
| import '../utils.dart'; | |
| void sharedTests() { | |
| test('does not notify for changes when there are no subscribers', () async { | |
| // Note that this test doesn't rely as heavily on the test functions in | |
| // utils.dart because it needs to be very explicit about when the event | |
| // stream is and is not subscribed. | |
| var watcher = createWatcher(); | |
| var queue = StreamQueue(watcher.events); | |
| unawaited(queue.hasNext); | |
| var future = expectLater( | |
| queue, | |
| emits(isWatchEvent(ChangeType.ADD, 'file.txt')), | |
| ); | |
| expect(queue, neverEmits(anything)); | |
| await watcher.ready; | |
| writeFile('file.txt'); | |
| await future; | |
| // Unsubscribe. | |
| await queue.cancel(immediate: true); | |
| // Now write a file while we aren't listening. | |
| writeFile('unwatched.txt'); | |
| queue = StreamQueue(watcher.events); | |
| future = expectLater( | |
| queue, | |
| emits(isWatchEvent(ChangeType.ADD, 'added.txt')), | |
| ); | |
| expect(queue, neverEmits(isWatchEvent(ChangeType.ADD, 'unwatched.txt'))); | |
| // Wait until the watcher is ready to dispatch events again. | |
| await watcher.ready; | |
| // And add a third file. | |
| writeFile('added.txt'); | |
| // Wait until we get an event for the third file. | |
| await future; | |
| await queue.cancel(immediate: true); | |
| }); | |
| } |