libuv/test
Joran Dirk Greef e0250b7d5c win: fix path for removed and renamed fs events
Previous behavior on Windows was to set the path to NULL for removed
and renamed fs events. This was because the path provided by
ReadDirectoryChangesW might (in rare cases) be an 8.3 short name which
could then no longer be converted to a long name after the path had
been removed or renamed. This meant that the user had to detect which
path was actually deleted or renamed and required the user to rescan
the entire watched subtree, taking several seconds or more for large
subtrees.

However, ReadDirectoryChangesW is publicly documented to emit 8.3
short names if the original handle for the changed path was opened
using an 8.3 short name, and libuv may already emit 8.3 short names for
other events if the path cannot be explicitly resolved to a long name.

This commit fixes the path for removed and renamed fs events, and does
not set the path to NULL, even if the path might be an 8.3 short name.
This makes it possible for the user to do a partial scan of the
subtree, restricting the scan to paths which match the long form or 8.3
short name (even if some of these are false positive matches). This
means that deletes and renames can now be detected accurately on
Windows within a few milliseconds.

Fixes: https://github.com/libuv/libuv/issues/634
Refs: https://github.com/libuv/libuv/pull/199
PR-URL: https://github.com/libuv/libuv/pull/639
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2015-12-07 16:16:46 +01:00
..
fixtures win, unix: add uv_dlerror() and uv_dlerror_free() 2012-03-02 16:39:21 +01:00
benchmark-async-pummel.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
benchmark-async.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
benchmark-fs-stat.c unix,windows: allow NULL loop for sync fs requests 2015-08-18 15:39:21 +02:00
benchmark-getaddrinfo.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
benchmark-list.h bench: add 'million async handles' benchmark 2012-12-24 12:19:10 +01:00
benchmark-loop-count.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
benchmark-million-async.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
benchmark-million-timers.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
benchmark-multi-accept.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
benchmark-ping-pongs.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
benchmark-pound.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
benchmark-pump.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
benchmark-sizes.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
benchmark-spawn.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
benchmark-tcp-write-batch.c include: merge uv_tcp_connect and uv_tcp_connect6 2013-09-04 03:16:36 +02:00
benchmark-thread.c Make the thread_create benchmark not time out 2012-03-09 17:53:48 +01:00
benchmark-udp-pummel.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
blackhole-server.c tcp: uv_tcp_dualstack() 2014-01-19 23:07:42 +00:00
dns-server.c tcp: uv_tcp_dualstack() 2014-01-19 23:07:42 +00:00
echo-server.c unix,windows: allow NULL loop for sync fs requests 2015-08-18 15:39:21 +02:00
run-benchmarks.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
run-tests.c win: remove UV_HANDLE_CONNECTED 2015-07-07 09:45:48 +02:00
runner-unix.c test: plug small memory leak in unix test runner 2015-08-18 15:39:18 +02:00
runner-unix.h
runner-win.c test: canonicalize test runner path 2014-12-01 16:20:51 +01:00
runner-win.h win: use the MSVC provided snprintf where possible 2015-09-29 09:01:33 +02:00
runner.c pipe: enable inprocess uv_write2 on Windows 2015-11-06 09:33:15 +01:00
runner.h test: canonicalize test runner path 2014-12-01 16:20:51 +01:00
task.h win: use the MSVC provided snprintf where possible 2015-09-29 09:01:33 +02:00
test-active.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-async-null-cb.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-async.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-barrier.c Revert "test: make barrier test more rigorous" 2014-07-02 00:16:50 +02:00
test-callback-order.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-callback-stack.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-close-fd.c unix: set non-block mode in uv_{pipe,tcp,udp}_open 2015-01-14 19:46:54 +01:00
test-close-order.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-condvar.c unix, windows: return error codes directly 2013-07-07 09:51:00 +02:00
test-connection-fail.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-cwd-and-chdir.c test: fix cwd_and_chdir test on Unix 2014-12-16 08:12:46 +01:00
test-default-loop-close.c test: add test for closing and recreating default loop 2014-09-15 21:34:09 +02:00
test-delayed-accept.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-dlerror.c test: check dlerror is "no error" in no error case 2014-12-14 20:33:43 +01:00
test-embed.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-emfile.c test: don't abort on setrlimit() failure 2015-10-08 21:47:48 +02:00
test-error.c unix, windows: return error codes directly 2013-07-07 09:51:00 +02:00
test-fail-always.c
test-fs-event.c win: fix path for removed and renamed fs events 2015-12-07 16:16:46 +01:00
test-fs-poll.c fs, pipe: no trailing terminator in exact sized buffers 2015-01-27 11:31:16 +01:00
test-fs.c fs: add uv_fs_realpath() 2015-12-05 11:32:58 +01:00
test-get-currentexe.c linux: fix uv_exepath(size=1) UV_EINVAL error 2015-01-03 23:40:31 +01:00
test-get-loadavg.c test: fix -Wtautological-pointer-compare warnings 2015-11-18 22:37:16 +01:00
test-get-memory.c Tests: don't use %zu placeholder in printf statements 2012-04-11 22:54:02 +02:00
test-getaddrinfo.c test: use FQDN in getaddrinfo_fail test 2015-10-23 18:28:51 +02:00
test-getnameinfo.c test: fix -Wtautological-pointer-compare warnings 2015-11-18 22:37:16 +01:00
test-getsockname.c unix, win: add send_queue_size and send_queue_count to uv_udp_t 2014-07-04 18:28:18 +02:00
test-handle-fileno.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
test-homedir.c unix,win: add uv_os_homedir() 2015-05-21 17:31:35 +02:00
test-hrtime.c test: allow 80 ms intervals in hrtime test 2012-07-03 22:33:10 +02:00
test-idle.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
test-ip4-addr.c test: remove C++ style comment 2013-12-13 22:37:14 +04:00
test-ip6-addr.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
test-ipc-send-recv.c pipe: enable inprocess uv_write2 on Windows 2015-11-06 09:33:15 +01:00
test-ipc.c test,freebsd: fix ipc_listen_xx_write tests 2015-09-08 10:45:10 +02:00
test-list.h fs: add uv_fs_realpath() 2015-12-05 11:32:58 +01:00
test-loop-alive.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-loop-close.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-loop-configure.c linux: fix epoll_pwait() sigmask size calculation 2014-12-25 14:37:02 +01:00
test-loop-handles.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
test-loop-stop.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-loop-time.c windows: add uv_backend_timeout 2014-08-04 23:18:38 +02:00
test-multiple-listen.c tcp: uv_tcp_dualstack() 2014-01-19 23:07:42 +00:00
test-mutexes.c test: add tests for the uv_rwlock implementation 2015-09-22 11:17:49 -04:00
test-osx-select.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
test-pass-always.c
test-ping-pong.c test: skip ipv6 tests when ipv6 is not supported 2014-12-29 17:14:48 +01:00
test-pipe-bind-error.c unix, windows: return error codes directly 2013-07-07 09:51:00 +02:00
test-pipe-close-stdout-read-stdin.c test: fix compilation warnings when building with Clang 2014-12-13 20:57:43 +01:00
test-pipe-connect-error.c unix, windows: return error codes directly 2013-07-07 09:51:00 +02:00
test-pipe-connect-multiple.c win: fix replacing pipe handle for pipe servers 2015-08-24 23:20:35 +02:00
test-pipe-connect-prepare.c unix: don't block for io if any io handle is primed 2015-05-12 07:37:26 +02:00
test-pipe-getsockname.c win, unix: add pipe_peername implementation 2015-01-28 21:40:32 +01:00
test-pipe-pending-instances.c win: fix setting pipe pending instances after bind 2015-08-24 23:20:35 +02:00
test-pipe-sendmsg.c pipe: allow queueing pending handles 2014-03-04 00:34:29 +04:00
test-pipe-server-close.c test: make test-pipe-server-close pass on linux 2013-12-21 02:34:44 -08:00
test-pipe-set-non-blocking.c test: fix race condition in multithreaded test 2015-03-11 15:42:34 +01:00
test-platform-output.c test: fix platform_output netmask printing. 2015-05-28 11:09:25 +02:00
test-poll-close-doesnt-corrupt-stack.c win: fix compilation of tests 2014-12-10 16:44:27 +01:00
test-poll-close.c code style: strip trailing whitespace 2013-12-20 19:38:37 -08:00
test-poll-closesocket.c windows: fix compilation of tests 2014-11-26 08:32:59 +01:00
test-poll.c Revert "stream: squelch ECONNRESET error if already closed" 2015-08-07 14:19:08 +02:00
test-process-title.c test: skip process_title for AIX 2015-11-11 22:37:33 +01:00
test-ref.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-run-nowait.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-run-once.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-semaphore.c unix, windows: return error codes directly 2013-07-07 09:51:00 +02:00
test-shutdown-close.c unix, windows: make uv_is_*() always return 0 or 1 2013-09-12 13:30:06 +02:00
test-shutdown-eof.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-shutdown-twice.c unix: correct error when calling uv_shutdown twice 2014-02-15 16:55:06 +01:00
test-signal-multiple-loops.c test: Fix two memory leaks 2015-08-11 13:35:34 +02:00
test-signal.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-socket-buffer-size.c unix, windows: add uv_recv_buffer_size and uv_send_buffer_size 2014-08-09 11:36:35 +02:00
test-spawn.c win: use the MSVC provided snprintf where possible 2015-09-29 09:01:33 +02:00
test-stdio-over-pipes.c unix: sanity-check fds before closing 2013-10-01 03:55:54 +02:00
test-tcp-bind6-error.c test: skip ipv6 tests when ipv6 is not supported 2014-12-29 17:14:48 +01:00
test-tcp-bind-error.c unix, windows: validate flags on uv_udp|tcp_bind 2014-04-22 22:57:01 +02:00
test-tcp-close-accept.c test: disable tcp_close_accept on Windows 2014-08-05 00:14:26 +02:00
test-tcp-close-while-connecting.c tests: skip some tests when network is unreachable 2015-07-13 10:28:46 +02:00
test-tcp-close.c tcp: uv_tcp_dualstack() 2014-01-19 23:07:42 +00:00
test-tcp-connect6-error.c include: merge uv_tcp_connect and uv_tcp_connect6 2013-09-04 03:16:36 +02:00
test-tcp-connect-error-after-write.c include: merge uv_tcp_connect and uv_tcp_connect6 2013-09-04 03:16:36 +02:00
test-tcp-connect-error.c include: merge uv_tcp_connect and uv_tcp_connect6 2013-09-04 03:16:36 +02:00
test-tcp-connect-timeout.c tests: skip some tests when network is unreachable 2015-07-13 10:28:46 +02:00
test-tcp-create-socket-early.c unix, win: add ability to create tcp/udp sockets early 2015-06-19 09:37:19 +02:00
test-tcp-flags.c unix, windows: rename uv_run2 to uv_run 2013-01-16 23:35:29 +01:00
test-tcp-oob.c Revert "test: fix tcp_oob occassionally timing out" 2015-04-07 11:15:49 +02:00
test-tcp-open.c Revert "stream: squelch ECONNRESET error if already closed" 2015-08-07 14:19:08 +02:00
test-tcp-read-stop.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-tcp-shutdown-after-write.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-tcp-try-write.c stream: support empty uv_try_write on unix 2015-10-04 18:06:08 -04:00
test-tcp-unexpected-read.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-tcp-write-after-connect.c unix: fix tcp write after bad connect freezing 2014-08-21 16:23:43 +02:00
test-tcp-write-fail.c win, test: fix compilation warning 2015-09-29 09:57:27 +02:00
test-tcp-write-queue-order.c test: use less requests on tcp-write-queue-order 2014-09-04 18:45:39 +02:00
test-tcp-write-to-half-open-connection.c tcp: uv_tcp_dualstack() 2014-01-19 23:07:42 +00:00
test-tcp-writealot.c include: merge uv_tcp_connect and uv_tcp_connect6 2013-09-04 03:16:36 +02:00
test-thread-equal.c unix, windows: add uv_thread_equal 2014-10-20 09:51:49 +02:00
test-thread.c unix, windows: add uv_loop_init and uv_loop_close 2014-02-21 09:56:13 +01:00
test-threadpool-cancel.c fs: add uv_fs_realpath() 2015-12-05 11:32:58 +01:00
test-threadpool.c unix, windows: return error codes directly 2013-07-07 09:51:00 +02:00
test-timer-again.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
test-timer-from-check.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-timer.c unix, windows: don't allow a NULL callback on timers 2014-09-05 16:59:18 +02:00
test-tty.c test: fix test/test-tty.c for AIX 2015-11-24 21:54:48 +01:00
test-udp-bind.c unix, windows: do not set SO_REUSEADDR by default on udp 2014-04-02 01:21:35 +02:00
test-udp-create-socket-early.c unix, win: add ability to create tcp/udp sockets early 2015-06-19 09:37:19 +02:00
test-udp-dgram-too-big.c include: merge uv_udp_send and uv_udp_send6 2013-09-04 03:17:29 +02:00
test-udp-ipv6.c test,freebsd: skip udp_dual_stack if not supported 2015-11-17 09:31:26 +01:00
test-udp-multicast-interface6.c test: skip ipv6 tests when ipv6 is not supported 2014-12-29 17:14:48 +01:00
test-udp-multicast-interface.c tests: skip some tests when network is unreachable 2015-07-13 10:28:46 +02:00
test-udp-multicast-join6.c test: conditionally skip udp_ipv6_multicast_join6 2015-06-29 09:35:26 +02:00
test-udp-multicast-join.c tests: skip some tests when network is unreachable 2015-07-13 10:28:46 +02:00
test-udp-multicast-ttl.c tests: skip some tests when network is unreachable 2015-07-13 10:28:46 +02:00
test-udp-open.c unix, win: prevent replacing fd in uv_{udp,tcp,pipe}_t 2015-06-19 09:36:41 +02:00
test-udp-options.c test: skip udp_options6 if there no IPv6 support 2015-01-05 12:32:57 +01:00
test-udp-send-and-recv.c unix, win: add send_queue_size and send_queue_count to uv_udp_t 2014-07-04 18:28:18 +02:00
test-udp-send-immediate.c unix: remove incorrect assert 2014-07-11 22:53:59 +02:00
test-udp-send-unreachable.c windows: fix buffer leak after failed udp send 2014-08-28 08:41:43 +02:00
test-udp-try-send.c unix, win: add uv_udp_try_send 2014-07-04 18:30:33 +02:00
test-walk-handles.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-watcher-cross-stop.c test: fix watcher_cross_stop on Windows 2014-08-21 23:34:51 +02:00