Index: packages/watcher/test/directory_watcher/mac_os_test.dart |
diff --git a/packages/watcher/test/directory_watcher/mac_os_test.dart b/packages/watcher/test/directory_watcher/mac_os_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..2c82f34c5db1b5b7ccd32e4223fe528d6df8ebda |
--- /dev/null |
+++ b/packages/watcher/test/directory_watcher/mac_os_test.dart |
@@ -0,0 +1,59 @@ |
+// Copyright (c) 2013, 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. |
+ |
+@TestOn('mac-os') |
+ |
+import 'package:scheduled_test/scheduled_test.dart'; |
+import 'package:watcher/src/directory_watcher/mac_os.dart'; |
+import 'package:watcher/watcher.dart'; |
+ |
+import 'shared.dart'; |
+import '../utils.dart'; |
+ |
+void main() { |
+ watcherFactory = (dir) => new MacOSDirectoryWatcher(dir); |
+ |
+ setUp(createSandbox); |
+ |
+ sharedTests(); |
+ |
+ test('DirectoryWatcher creates a MacOSDirectoryWatcher on Mac OS', () { |
+ expect(new DirectoryWatcher('.'), |
+ new isInstanceOf<MacOSDirectoryWatcher>()); |
+ }); |
+ |
+ test('does not notify about the watched directory being deleted and ' |
+ 'recreated immediately before watching', () { |
+ createDir("dir"); |
+ writeFile("dir/old.txt"); |
+ deleteDir("dir"); |
+ createDir("dir"); |
+ |
+ startWatcher(path: "dir"); |
+ writeFile("dir/newer.txt"); |
+ expectAddEvent("dir/newer.txt"); |
+ }); |
+ |
+ test('emits events for many nested files moved out then immediately back in', |
+ () { |
+ withPermutations((i, j, k) => |
+ writeFile("dir/sub/sub-$i/sub-$j/file-$k.txt")); |
+ |
+ startWatcher(path: "dir"); |
+ |
+ renameDir("dir/sub", "sub"); |
+ renameDir("sub", "dir/sub"); |
+ |
+ allowEither(() { |
+ inAnyOrder(withPermutations((i, j, k) => |
+ isRemoveEvent("dir/sub/sub-$i/sub-$j/file-$k.txt"))); |
+ |
+ inAnyOrder(withPermutations((i, j, k) => |
+ isAddEvent("dir/sub/sub-$i/sub-$j/file-$k.txt"))); |
+ }, () { |
+ inAnyOrder(withPermutations((i, j, k) => |
+ isModifyEvent("dir/sub/sub-$i/sub-$j/file-$k.txt"))); |
+ }); |
+ }); |
+} |