Fix the Mac OS directory watcher tests on the bots. R=rnystrom@google.com BUG=15024 Review URL: https://codereview.chromium.org//58903015 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart/pkg/watcher@30328 260f80e4-7a28-3924-810f-c04153c831b5
diff --git a/pkgs/watcher/test/directory_watcher/mac_os_test.dart b/pkgs/watcher/test/directory_watcher/mac_os_test.dart index 78ff889..b6a65e6 100644 --- a/pkgs/watcher/test/directory_watcher/mac_os_test.dart +++ b/pkgs/watcher/test/directory_watcher/mac_os_test.dart
@@ -50,6 +50,29 @@ () { withPermutations((i, j, k) => writeFile("dir/sub/sub-$i/sub-$j/file-$k.txt")); + + // We sleep here because a narrow edge case caused by two interacting bugs + // can produce events that aren't expected if we start the watcher too + // soon after creating the files above. Here's what happens: + // + // * We create "dir/sub" and its contents above. + // + // * We initialize the watcher watching "dir". + // + // * Due to issue 14373, the watcher can receive native events describing + // the creation of "dir/sub" and its contents despite the fact that they + // occurred before the watcher was started. + // + // * Usually the above events will occur while the watcher is doing its + // initial scan of "dir/sub" and be ignored, but occasionally they will + // occur afterwards. + // + // * When processing the bogus CREATE events, the watcher has to assume that + // they could mean something other than CREATE (issue 14793). Thus it + // assumes that the files or directories in question could have changed + // and emits CHANGE events or additional REMOVE/CREATE pairs for them. + schedule(() => new Future.delayed(new Duration(seconds: 2))); + startWatcher(dir: "dir"); renameDir("dir/sub", "sub");