asyncengine 0.0.1.testing1 → 0.0.2.alpha1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (251) hide show
  1. data/README.markdown +3 -0
  2. data/Rakefile +38 -0
  3. data/asyncengine.gemspec +8 -4
  4. data/ext/asyncengine/ae_call_from_other_thread.c +106 -0
  5. data/ext/asyncengine/ae_call_from_other_thread.h +12 -0
  6. data/ext/asyncengine/ae_handle_common.c +193 -48
  7. data/ext/asyncengine/ae_handle_common.h +40 -13
  8. data/ext/asyncengine/ae_ip_utils.c +246 -0
  9. data/ext/asyncengine/ae_ip_utils.h +25 -0
  10. data/ext/asyncengine/ae_next_tick.c +81 -21
  11. data/ext/asyncengine/ae_next_tick.h +4 -2
  12. data/ext/asyncengine/ae_resolver.c +156 -0
  13. data/ext/asyncengine/ae_resolver.h +10 -0
  14. data/ext/asyncengine/ae_tcp.c +908 -0
  15. data/ext/asyncengine/ae_tcp.h +20 -0
  16. data/ext/asyncengine/ae_timer.c +355 -81
  17. data/ext/asyncengine/ae_timer.h +11 -4
  18. data/ext/asyncengine/ae_udp.c +579 -13
  19. data/ext/asyncengine/ae_udp.h +15 -2
  20. data/ext/asyncengine/ae_utils.c +192 -0
  21. data/ext/asyncengine/ae_utils.h +16 -0
  22. data/ext/asyncengine/asyncengine_ruby.c +469 -26
  23. data/ext/asyncengine/asyncengine_ruby.h +49 -11
  24. data/ext/asyncengine/debug.h +68 -0
  25. data/ext/asyncengine/extconf.rb +26 -2
  26. data/ext/asyncengine/ip_parser.c +5954 -0
  27. data/ext/asyncengine/ip_parser.h +16 -0
  28. data/ext/asyncengine/libuv/AUTHORS +16 -0
  29. data/ext/asyncengine/libuv/common.gypi +4 -4
  30. data/ext/asyncengine/libuv/config-mingw.mk +6 -6
  31. data/ext/asyncengine/libuv/config-unix.mk +13 -13
  32. data/ext/asyncengine/libuv/gyp_uv +5 -1
  33. data/ext/asyncengine/libuv/ibc_tests/exec_test.sh +8 -0
  34. data/ext/asyncengine/libuv/ibc_tests/uv_shutdown_write_issue.c +171 -0
  35. data/ext/asyncengine/libuv/ibc_tests/uv_tcp_close_while_connecting.c +102 -0
  36. data/ext/asyncengine/libuv/include/uv-private/ngx-queue.h +3 -1
  37. data/ext/asyncengine/libuv/include/uv-private/uv-unix.h +103 -50
  38. data/ext/asyncengine/libuv/include/uv-private/uv-win.h +76 -24
  39. data/ext/asyncengine/libuv/include/uv.h +353 -88
  40. data/ext/asyncengine/libuv/src/ares/ares__close_sockets.o +0 -0
  41. data/ext/asyncengine/libuv/src/ares/ares__get_hostent.o +0 -0
  42. data/ext/asyncengine/libuv/src/ares/ares__read_line.o +0 -0
  43. data/ext/asyncengine/libuv/src/ares/ares__timeval.o +0 -0
  44. data/ext/asyncengine/libuv/src/ares/ares_cancel.o +0 -0
  45. data/ext/asyncengine/libuv/src/ares/ares_data.o +0 -0
  46. data/ext/asyncengine/libuv/src/ares/ares_destroy.o +0 -0
  47. data/ext/asyncengine/libuv/src/ares/ares_expand_name.o +0 -0
  48. data/ext/asyncengine/libuv/src/ares/ares_expand_string.o +0 -0
  49. data/ext/asyncengine/libuv/src/ares/ares_fds.o +0 -0
  50. data/ext/asyncengine/libuv/src/ares/ares_free_hostent.o +0 -0
  51. data/ext/asyncengine/libuv/src/ares/ares_free_string.o +0 -0
  52. data/ext/asyncengine/libuv/src/ares/ares_gethostbyaddr.o +0 -0
  53. data/ext/asyncengine/libuv/src/ares/ares_gethostbyname.o +0 -0
  54. data/ext/asyncengine/libuv/src/ares/ares_getnameinfo.o +0 -0
  55. data/ext/asyncengine/libuv/src/ares/ares_getopt.o +0 -0
  56. data/ext/asyncengine/libuv/src/ares/ares_getsock.o +0 -0
  57. data/ext/asyncengine/libuv/src/ares/ares_init.o +0 -0
  58. data/ext/asyncengine/libuv/src/ares/ares_library_init.o +0 -0
  59. data/ext/asyncengine/libuv/src/ares/ares_llist.o +0 -0
  60. data/ext/asyncengine/libuv/src/ares/ares_mkquery.o +0 -0
  61. data/ext/asyncengine/libuv/src/ares/ares_nowarn.o +0 -0
  62. data/ext/asyncengine/libuv/src/ares/ares_options.o +0 -0
  63. data/ext/asyncengine/libuv/src/ares/ares_parse_a_reply.o +0 -0
  64. data/ext/asyncengine/libuv/src/ares/ares_parse_aaaa_reply.o +0 -0
  65. data/ext/asyncengine/libuv/src/ares/ares_parse_mx_reply.o +0 -0
  66. data/ext/asyncengine/libuv/src/ares/ares_parse_ns_reply.o +0 -0
  67. data/ext/asyncengine/libuv/src/ares/ares_parse_ptr_reply.o +0 -0
  68. data/ext/asyncengine/libuv/src/ares/ares_parse_srv_reply.o +0 -0
  69. data/ext/asyncengine/libuv/src/ares/ares_parse_txt_reply.o +0 -0
  70. data/ext/asyncengine/libuv/src/ares/ares_process.o +0 -0
  71. data/ext/asyncengine/libuv/src/ares/ares_query.o +0 -0
  72. data/ext/asyncengine/libuv/src/ares/ares_search.o +0 -0
  73. data/ext/asyncengine/libuv/src/ares/ares_send.o +0 -0
  74. data/ext/asyncengine/libuv/src/ares/ares_strcasecmp.o +0 -0
  75. data/ext/asyncengine/libuv/src/ares/ares_strdup.o +0 -0
  76. data/ext/asyncengine/libuv/src/ares/ares_strerror.o +0 -0
  77. data/ext/asyncengine/libuv/src/ares/ares_timeout.o +0 -0
  78. data/ext/asyncengine/libuv/src/ares/ares_version.o +0 -0
  79. data/ext/asyncengine/libuv/src/ares/ares_writev.o +0 -0
  80. data/ext/asyncengine/libuv/src/ares/bitncmp.o +0 -0
  81. data/ext/asyncengine/libuv/src/ares/inet_net_pton.o +0 -0
  82. data/ext/asyncengine/libuv/src/ares/inet_ntop.o +0 -0
  83. data/ext/asyncengine/libuv/src/cares.c +225 -0
  84. data/ext/asyncengine/libuv/src/cares.o +0 -0
  85. data/ext/asyncengine/libuv/src/fs-poll.c +237 -0
  86. data/ext/asyncengine/libuv/src/fs-poll.o +0 -0
  87. data/ext/asyncengine/libuv/src/unix/async.c +78 -17
  88. data/ext/asyncengine/libuv/src/unix/async.o +0 -0
  89. data/ext/asyncengine/libuv/src/unix/core.c +305 -213
  90. data/ext/asyncengine/libuv/src/unix/core.o +0 -0
  91. data/ext/asyncengine/libuv/src/unix/cygwin.c +1 -1
  92. data/ext/asyncengine/libuv/src/unix/darwin.c +2 -1
  93. data/ext/asyncengine/libuv/src/unix/dl.c +36 -44
  94. data/ext/asyncengine/libuv/src/unix/dl.o +0 -0
  95. data/ext/asyncengine/libuv/src/unix/eio/eio.o +0 -0
  96. data/ext/asyncengine/libuv/src/unix/error.c +6 -0
  97. data/ext/asyncengine/libuv/src/unix/error.o +0 -0
  98. data/ext/asyncengine/libuv/src/unix/ev/ev.c +8 -4
  99. data/ext/asyncengine/libuv/src/unix/ev/ev.o +0 -0
  100. data/ext/asyncengine/libuv/src/unix/freebsd.c +1 -1
  101. data/ext/asyncengine/libuv/src/unix/fs.c +25 -33
  102. data/ext/asyncengine/libuv/src/unix/fs.o +0 -0
  103. data/ext/asyncengine/libuv/src/unix/internal.h +50 -31
  104. data/ext/asyncengine/libuv/src/unix/kqueue.c +2 -7
  105. data/ext/asyncengine/libuv/src/unix/linux/core.o +0 -0
  106. data/ext/asyncengine/libuv/src/unix/linux/inotify.c +12 -14
  107. data/ext/asyncengine/libuv/src/unix/linux/inotify.o +0 -0
  108. data/ext/asyncengine/libuv/src/unix/linux/{core.c → linux-core.c} +1 -1
  109. data/ext/asyncengine/libuv/src/unix/linux/linux-core.o +0 -0
  110. data/ext/asyncengine/libuv/src/unix/linux/syscalls.c +147 -1
  111. data/ext/asyncengine/libuv/src/unix/linux/syscalls.h +39 -2
  112. data/ext/asyncengine/libuv/src/unix/linux/syscalls.o +0 -0
  113. data/ext/asyncengine/libuv/src/unix/loop-watcher.c +63 -0
  114. data/ext/asyncengine/libuv/src/unix/loop-watcher.o +0 -0
  115. data/ext/asyncengine/libuv/src/unix/loop.c +29 -6
  116. data/ext/asyncengine/libuv/src/unix/loop.o +0 -0
  117. data/ext/asyncengine/libuv/src/unix/netbsd.c +1 -1
  118. data/ext/asyncengine/libuv/src/unix/openbsd.c +1 -1
  119. data/ext/asyncengine/libuv/src/unix/pipe.c +31 -36
  120. data/ext/asyncengine/libuv/src/unix/pipe.o +0 -0
  121. data/ext/asyncengine/libuv/src/unix/poll.c +116 -0
  122. data/ext/asyncengine/libuv/src/unix/poll.o +0 -0
  123. data/ext/asyncengine/libuv/src/unix/process.c +193 -115
  124. data/ext/asyncengine/libuv/src/unix/process.o +0 -0
  125. data/ext/asyncengine/libuv/src/unix/stream.c +146 -153
  126. data/ext/asyncengine/libuv/src/unix/stream.o +0 -0
  127. data/ext/asyncengine/libuv/src/unix/sunos.c +45 -36
  128. data/ext/asyncengine/libuv/src/unix/tcp.c +6 -5
  129. data/ext/asyncengine/libuv/src/unix/tcp.o +0 -0
  130. data/ext/asyncengine/libuv/src/unix/thread.c +82 -25
  131. data/ext/asyncengine/libuv/src/unix/thread.o +0 -0
  132. data/ext/asyncengine/libuv/src/unix/timer.c +69 -58
  133. data/ext/asyncengine/libuv/src/unix/timer.o +0 -0
  134. data/ext/asyncengine/libuv/src/unix/tty.c +3 -3
  135. data/ext/asyncengine/libuv/src/unix/tty.o +0 -0
  136. data/ext/asyncengine/libuv/src/unix/udp.c +57 -66
  137. data/ext/asyncengine/libuv/src/unix/udp.o +0 -0
  138. data/ext/asyncengine/libuv/src/unix/uv-eio.c +33 -50
  139. data/ext/asyncengine/libuv/src/unix/uv-eio.o +0 -0
  140. data/ext/asyncengine/libuv/src/uv-common.c +68 -38
  141. data/ext/asyncengine/libuv/src/uv-common.h +104 -20
  142. data/ext/asyncengine/libuv/src/uv-common.o +0 -0
  143. data/ext/asyncengine/libuv/src/win/async.c +20 -17
  144. data/ext/asyncengine/libuv/src/win/core.c +44 -31
  145. data/ext/asyncengine/libuv/src/win/dl.c +40 -36
  146. data/ext/asyncengine/libuv/src/win/error.c +21 -1
  147. data/ext/asyncengine/libuv/src/win/fs-event.c +19 -21
  148. data/ext/asyncengine/libuv/src/win/fs.c +541 -189
  149. data/ext/asyncengine/libuv/src/win/getaddrinfo.c +56 -63
  150. data/ext/asyncengine/libuv/src/win/handle-inl.h +145 -0
  151. data/ext/asyncengine/libuv/src/win/handle.c +26 -101
  152. data/ext/asyncengine/libuv/src/win/internal.h +92 -107
  153. data/ext/asyncengine/libuv/src/win/loop-watcher.c +6 -14
  154. data/ext/asyncengine/libuv/src/win/pipe.c +78 -64
  155. data/ext/asyncengine/libuv/src/win/poll.c +618 -0
  156. data/ext/asyncengine/libuv/src/win/process-stdio.c +479 -0
  157. data/ext/asyncengine/libuv/src/win/process.c +147 -274
  158. data/ext/asyncengine/libuv/src/win/req-inl.h +225 -0
  159. data/ext/asyncengine/libuv/src/win/req.c +0 -149
  160. data/ext/asyncengine/libuv/src/{unix/check.c → win/stream-inl.h} +31 -42
  161. data/ext/asyncengine/libuv/src/win/stream.c +9 -43
  162. data/ext/asyncengine/libuv/src/win/tcp.c +200 -82
  163. data/ext/asyncengine/libuv/src/win/thread.c +42 -2
  164. data/ext/asyncengine/libuv/src/win/threadpool.c +3 -2
  165. data/ext/asyncengine/libuv/src/win/timer.c +13 -63
  166. data/ext/asyncengine/libuv/src/win/tty.c +26 -20
  167. data/ext/asyncengine/libuv/src/win/udp.c +26 -17
  168. data/ext/asyncengine/libuv/src/win/util.c +312 -167
  169. data/ext/asyncengine/libuv/src/win/winapi.c +16 -1
  170. data/ext/asyncengine/libuv/src/win/winapi.h +33 -9
  171. data/ext/asyncengine/libuv/src/win/winsock.c +88 -1
  172. data/ext/asyncengine/libuv/src/win/winsock.h +36 -3
  173. data/ext/asyncengine/libuv/test/benchmark-ares.c +16 -17
  174. data/ext/asyncengine/libuv/test/benchmark-fs-stat.c +164 -0
  175. data/ext/asyncengine/libuv/test/benchmark-list.h +9 -0
  176. data/ext/asyncengine/libuv/{src/unix/prepare.c → test/benchmark-loop-count.c} +42 -33
  177. data/ext/asyncengine/libuv/test/benchmark-million-timers.c +65 -0
  178. data/ext/asyncengine/libuv/test/benchmark-pound.c +1 -1
  179. data/ext/asyncengine/libuv/test/benchmark-sizes.c +2 -0
  180. data/ext/asyncengine/libuv/test/benchmark-spawn.c +7 -1
  181. data/ext/asyncengine/libuv/test/benchmark-udp-packet-storm.c +1 -1
  182. data/ext/asyncengine/libuv/test/echo-server.c +8 -0
  183. data/ext/asyncengine/libuv/test/run-tests.c +30 -0
  184. data/ext/asyncengine/libuv/test/runner-unix.c +6 -26
  185. data/ext/asyncengine/libuv/test/runner-win.c +5 -63
  186. data/ext/asyncengine/libuv/test/runner.c +10 -1
  187. data/ext/asyncengine/libuv/test/task.h +0 -8
  188. data/ext/asyncengine/libuv/test/test-async.c +43 -141
  189. data/ext/asyncengine/libuv/test/test-callback-order.c +76 -0
  190. data/ext/asyncengine/libuv/test/test-counters-init.c +2 -3
  191. data/ext/asyncengine/libuv/test/test-dlerror.c +17 -8
  192. data/ext/asyncengine/libuv/test/test-fs-event.c +31 -39
  193. data/ext/asyncengine/libuv/test/test-fs-poll.c +146 -0
  194. data/ext/asyncengine/libuv/test/test-fs.c +114 -2
  195. data/ext/asyncengine/libuv/test/test-gethostbyname.c +8 -8
  196. data/ext/asyncengine/libuv/test/test-hrtime.c +18 -15
  197. data/ext/asyncengine/libuv/test/test-ipc.c +8 -2
  198. data/ext/asyncengine/libuv/test/test-list.h +59 -9
  199. data/ext/asyncengine/libuv/test/test-loop-handles.c +2 -25
  200. data/ext/asyncengine/libuv/{src/unix/idle.c → test/test-poll-close.c} +37 -39
  201. data/ext/asyncengine/libuv/test/test-poll.c +573 -0
  202. data/ext/asyncengine/libuv/test/test-ref.c +79 -63
  203. data/ext/asyncengine/libuv/test/test-run-once.c +15 -11
  204. data/ext/asyncengine/libuv/test/test-semaphore.c +111 -0
  205. data/ext/asyncengine/libuv/test/test-spawn.c +368 -20
  206. data/ext/asyncengine/libuv/test/test-stdio-over-pipes.c +25 -35
  207. data/ext/asyncengine/libuv/test/test-tcp-close-while-connecting.c +80 -0
  208. data/ext/asyncengine/libuv/test/test-tcp-close.c +1 -1
  209. data/ext/asyncengine/libuv/test/test-tcp-connect-error-after-write.c +95 -0
  210. data/ext/asyncengine/libuv/test/test-tcp-connect-timeout.c +85 -0
  211. data/ext/asyncengine/libuv/test/test-tcp-shutdown-after-write.c +131 -0
  212. data/ext/asyncengine/libuv/test/test-tcp-write-error.c +2 -2
  213. data/ext/asyncengine/libuv/test/test-tcp-writealot.c +29 -54
  214. data/ext/asyncengine/libuv/test/test-timer-again.c +1 -1
  215. data/ext/asyncengine/libuv/test/test-timer.c +23 -1
  216. data/ext/asyncengine/libuv/test/test-udp-options.c +1 -1
  217. data/ext/asyncengine/libuv/test/{test-eio-overflow.c → test-walk-handles.c} +31 -44
  218. data/ext/asyncengine/libuv/uv.gyp +26 -9
  219. data/ext/asyncengine/rb_utilities.c +54 -0
  220. data/ext/asyncengine/rb_utilities.h +63 -0
  221. data/lib/asyncengine.rb +45 -38
  222. data/lib/asyncengine/asyncengine_ext.so +0 -0
  223. data/lib/asyncengine/debug.rb +37 -0
  224. data/lib/asyncengine/handle.rb +9 -0
  225. data/lib/asyncengine/tcp.rb +28 -0
  226. data/lib/asyncengine/timer.rb +18 -28
  227. data/lib/asyncengine/udp.rb +29 -0
  228. data/lib/asyncengine/utils.rb +32 -0
  229. data/lib/asyncengine/uv_error.rb +17 -0
  230. data/lib/asyncengine/version.rb +9 -1
  231. data/test/ae_test_helper.rb +62 -0
  232. data/test/test_basic.rb +169 -0
  233. data/test/test_call_from_other_thread.rb +55 -0
  234. data/test/test_error.rb +92 -0
  235. data/test/test_ip_utils.rb +44 -0
  236. data/test/test_next_tick.rb +37 -0
  237. data/test/test_resolver.rb +51 -0
  238. data/test/test_threads.rb +69 -0
  239. data/test/test_timer.rb +95 -0
  240. data/test/test_udp.rb +216 -0
  241. data/test/test_utils.rb +49 -0
  242. metadata +84 -57
  243. data/ext/asyncengine/libuv/mkmf.log +0 -24
  244. data/ext/asyncengine/libuv/src/unix/cares.c +0 -194
  245. data/ext/asyncengine/libuv/src/unix/cares.o +0 -0
  246. data/ext/asyncengine/libuv/src/unix/check.o +0 -0
  247. data/ext/asyncengine/libuv/src/unix/idle.o +0 -0
  248. data/ext/asyncengine/libuv/src/unix/prepare.o +0 -0
  249. data/ext/asyncengine/libuv/src/win/cares.c +0 -290
  250. data/lib/asyncengine/errors.rb +0 -5
  251. data/lib/asyncengine/next_tick.rb +0 -24
@@ -0,0 +1,146 @@
1
+ /* Copyright Joyent, Inc. and other Node contributors. All rights reserved.
2
+ *
3
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ * of this software and associated documentation files (the "Software"), to
5
+ * deal in the Software without restriction, including without limitation the
6
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7
+ * sell copies of the Software, and to permit persons to whom the Software is
8
+ * furnished to do so, subject to the following conditions:
9
+ *
10
+ * The above copyright notice and this permission notice shall be included in
11
+ * all copies or substantial portions of the Software.
12
+ *
13
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
18
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
19
+ * IN THE SOFTWARE.
20
+ */
21
+
22
+ #include "uv.h"
23
+ #include "task.h"
24
+
25
+ #include <string.h>
26
+
27
+ #define FIXTURE "testfile"
28
+
29
+ static void timer_cb(uv_timer_t* handle, int status);
30
+ static void close_cb(uv_handle_t* handle);
31
+ static void poll_cb(uv_fs_poll_t* handle,
32
+ int status,
33
+ const uv_statbuf_t* prev,
34
+ const uv_statbuf_t* curr);
35
+
36
+ static uv_fs_poll_t poll_handle;
37
+ static uv_timer_t timer_handle;
38
+ static uv_loop_t* loop;
39
+
40
+ static int poll_cb_called;
41
+ static int timer_cb_called;
42
+ static int close_cb_called;
43
+
44
+
45
+ static void touch_file(const char* path) {
46
+ static int count;
47
+ FILE* fp;
48
+ int i;
49
+
50
+ ASSERT((fp = fopen(FIXTURE, "w+")));
51
+
52
+ /* Need to change the file size because the poller may not pick up
53
+ * sub-second mtime changes.
54
+ */
55
+ i = ++count;
56
+
57
+ while (i--)
58
+ fputc('*', fp);
59
+
60
+ fclose(fp);
61
+ }
62
+
63
+
64
+ static void close_cb(uv_handle_t* handle) {
65
+ close_cb_called++;
66
+ }
67
+
68
+
69
+ static void timer_cb(uv_timer_t* handle, int status) {
70
+ touch_file(FIXTURE);
71
+ timer_cb_called++;
72
+ }
73
+
74
+
75
+ static void poll_cb(uv_fs_poll_t* handle,
76
+ int status,
77
+ const uv_statbuf_t* prev,
78
+ const uv_statbuf_t* curr) {
79
+ const static uv_statbuf_t zero_statbuf;
80
+
81
+ ASSERT(handle == &poll_handle);
82
+ ASSERT(uv_is_active((uv_handle_t*)handle));
83
+ ASSERT(prev != NULL);
84
+ ASSERT(curr != NULL);
85
+
86
+ switch (poll_cb_called++) {
87
+ case 0:
88
+ ASSERT(status == -1);
89
+ ASSERT(uv_last_error(loop).code == UV_ENOENT);
90
+ ASSERT(0 == memcmp(prev, &zero_statbuf, sizeof(zero_statbuf)));
91
+ ASSERT(0 == memcmp(curr, &zero_statbuf, sizeof(zero_statbuf)));
92
+ touch_file(FIXTURE);
93
+ break;
94
+
95
+ case 1:
96
+ ASSERT(status == 0);
97
+ ASSERT(0 == memcmp(prev, &zero_statbuf, sizeof(zero_statbuf)));
98
+ ASSERT(0 != memcmp(curr, &zero_statbuf, sizeof(zero_statbuf)));
99
+ ASSERT(0 == uv_timer_start(&timer_handle, timer_cb, 20, 0));
100
+ break;
101
+
102
+ case 2:
103
+ ASSERT(status == 0);
104
+ ASSERT(0 != memcmp(prev, &zero_statbuf, sizeof(zero_statbuf)));
105
+ ASSERT(0 != memcmp(curr, &zero_statbuf, sizeof(zero_statbuf)));
106
+ ASSERT(0 == uv_timer_start(&timer_handle, timer_cb, 200, 0));
107
+ break;
108
+
109
+ case 3:
110
+ ASSERT(status == 0);
111
+ ASSERT(0 != memcmp(prev, &zero_statbuf, sizeof(zero_statbuf)));
112
+ ASSERT(0 != memcmp(curr, &zero_statbuf, sizeof(zero_statbuf)));
113
+ remove(FIXTURE);
114
+ break;
115
+
116
+ case 4:
117
+ ASSERT(status == -1);
118
+ ASSERT(0 != memcmp(prev, &zero_statbuf, sizeof(zero_statbuf)));
119
+ ASSERT(0 == memcmp(curr, &zero_statbuf, sizeof(zero_statbuf)));
120
+ ASSERT(uv_last_error(loop).code == UV_ENOENT);
121
+ uv_close((uv_handle_t*)handle, close_cb);
122
+ break;
123
+
124
+ default:
125
+ ASSERT(0);
126
+ }
127
+ }
128
+
129
+
130
+ TEST_IMPL(fs_poll) {
131
+ loop = uv_default_loop();
132
+
133
+ remove(FIXTURE);
134
+
135
+ ASSERT(0 == uv_timer_init(loop, &timer_handle));
136
+ ASSERT(0 == uv_fs_poll_init(loop, &poll_handle));
137
+ ASSERT(0 == uv_fs_poll_start(&poll_handle, poll_cb, FIXTURE, 100));
138
+ ASSERT(0 == uv_run(loop));
139
+
140
+ ASSERT(poll_cb_called == 5);
141
+ ASSERT(timer_cb_called == 2);
142
+ ASSERT(close_cb_called == 1);
143
+ uv_loop_delete(loop);
144
+
145
+ return 0;
146
+ }
@@ -46,6 +46,7 @@
46
46
  #endif
47
47
 
48
48
  #define TOO_LONG_NAME_LENGTH 65536
49
+ #define PATHMAX 1024
49
50
 
50
51
  typedef struct {
51
52
  const char* path;
@@ -1223,10 +1224,10 @@ TEST_IMPL(fs_symlink) {
1223
1224
  * We just pass the test and bail out early if we get ENOTSUP.
1224
1225
  */
1225
1226
  return 0;
1226
- } else if (uv_last_error(loop).sys_errno_ == ERROR_PRIVILEGE_NOT_HELD) {
1227
+ } else if (uv_last_error(loop).code == UV_EPERM) {
1227
1228
  /*
1228
1229
  * Creating a symlink is only allowed when running elevated.
1229
- * We pass the test and bail out early if we get ERROR_PRIVILEGE_NOT_HELD.
1230
+ * We pass the test and bail out early if we get UV_EPERM.
1230
1231
  */
1231
1232
  return 0;
1232
1233
  }
@@ -1301,6 +1302,117 @@ TEST_IMPL(fs_symlink) {
1301
1302
  }
1302
1303
 
1303
1304
 
1305
+ TEST_IMPL(fs_symlink_dir) {
1306
+ uv_fs_t req;
1307
+ int r;
1308
+ char* test_dir;
1309
+
1310
+ /* set-up */
1311
+ unlink("test_dir/file1");
1312
+ unlink("test_dir/file2");
1313
+ rmdir("test_dir");
1314
+ rmdir("test_dir_symlink");
1315
+
1316
+ loop = uv_default_loop();
1317
+
1318
+ uv_fs_mkdir(loop, &req, "test_dir", 0777, NULL);
1319
+ uv_fs_req_cleanup(&req);
1320
+
1321
+ #ifdef _WIN32
1322
+ {
1323
+ static char src_path_buf[PATHMAX];
1324
+ strcpy(src_path_buf, "\\\\?\\");
1325
+ uv_cwd(src_path_buf + 4, sizeof(src_path_buf));
1326
+ strcat(src_path_buf, "\\test_dir\\");
1327
+ test_dir = src_path_buf;
1328
+ }
1329
+ #else
1330
+ test_dir = "test_dir";
1331
+ #endif
1332
+
1333
+ r = uv_fs_symlink(loop, &req, test_dir, "test_dir_symlink",
1334
+ UV_FS_SYMLINK_JUNCTION, NULL);
1335
+ ASSERT(r == 0);
1336
+ ASSERT(req.result == 0);
1337
+ uv_fs_req_cleanup(&req);
1338
+
1339
+ r = uv_fs_stat(loop, &req, "test_dir_symlink", NULL);
1340
+ ASSERT(r == 0);
1341
+ ASSERT(((struct stat*)req.ptr)->st_mode & S_IFDIR);
1342
+ uv_fs_req_cleanup(&req);
1343
+
1344
+ r = uv_fs_lstat(loop, &req, "test_dir_symlink", NULL);
1345
+ ASSERT(r == 0);
1346
+ ASSERT(((struct stat*)req.ptr)->st_mode & S_IFLNK);
1347
+ #ifdef _WIN32
1348
+ ASSERT(((struct stat*)req.ptr)->st_size == strlen(test_dir + 4));
1349
+ #else
1350
+ ASSERT(((struct stat*)req.ptr)->st_size == strlen(test_dir));
1351
+ #endif
1352
+ uv_fs_req_cleanup(&req);
1353
+
1354
+ r = uv_fs_readlink(loop, &req, "test_dir_symlink", NULL);
1355
+ ASSERT(r == 0);
1356
+ #ifdef _WIN32
1357
+ ASSERT(strcmp(req.ptr, test_dir + 4) == 0);
1358
+ #else
1359
+ ASSERT(strcmp(req.ptr, test_dir) == 0);
1360
+ #endif
1361
+ uv_fs_req_cleanup(&req);
1362
+
1363
+ r = uv_fs_open(loop, &open_req1, "test_dir/file1", O_WRONLY | O_CREAT,
1364
+ S_IWRITE | S_IREAD, NULL);
1365
+ ASSERT(r != -1);
1366
+ uv_fs_req_cleanup(&open_req1);
1367
+ r = uv_fs_close(loop, &close_req, open_req1.result, NULL);
1368
+ ASSERT(r == 0);
1369
+ uv_fs_req_cleanup(&close_req);
1370
+
1371
+ r = uv_fs_open(loop, &open_req1, "test_dir/file2", O_WRONLY | O_CREAT,
1372
+ S_IWRITE | S_IREAD, NULL);
1373
+ ASSERT(r != -1);
1374
+ uv_fs_req_cleanup(&open_req1);
1375
+ r = uv_fs_close(loop, &close_req, open_req1.result, NULL);
1376
+ ASSERT(r == 0);
1377
+ uv_fs_req_cleanup(&close_req);
1378
+
1379
+ r = uv_fs_readdir(loop, &readdir_req, "test_dir_symlink", 0, NULL);
1380
+ ASSERT(r == 2);
1381
+ ASSERT(readdir_req.result == 2);
1382
+ ASSERT(readdir_req.ptr);
1383
+ ASSERT(memcmp(readdir_req.ptr, "file1\0file2\0", 12) == 0
1384
+ || memcmp(readdir_req.ptr, "file2\0file1\0", 12) == 0);
1385
+ uv_fs_req_cleanup(&readdir_req);
1386
+ ASSERT(!readdir_req.ptr);
1387
+
1388
+ /* unlink will remove the directory symlink */
1389
+ r = uv_fs_unlink(loop, &req, "test_dir_symlink", NULL);
1390
+ ASSERT(r == 0);
1391
+ uv_fs_req_cleanup(&req);
1392
+
1393
+ r = uv_fs_readdir(loop, &readdir_req, "test_dir_symlink", 0, NULL);
1394
+ ASSERT(r == -1);
1395
+ uv_fs_req_cleanup(&readdir_req);
1396
+
1397
+ r = uv_fs_readdir(loop, &readdir_req, "test_dir", 0, NULL);
1398
+ ASSERT(r == 2);
1399
+ ASSERT(readdir_req.result == 2);
1400
+ ASSERT(readdir_req.ptr);
1401
+ ASSERT(memcmp(readdir_req.ptr, "file1\0file2\0", 12) == 0
1402
+ || memcmp(readdir_req.ptr, "file2\0file1\0", 12) == 0);
1403
+ uv_fs_req_cleanup(&readdir_req);
1404
+ ASSERT(!readdir_req.ptr);
1405
+
1406
+ /* clean-up */
1407
+ unlink("test_dir/file1");
1408
+ unlink("test_dir/file2");
1409
+ rmdir("test_dir");
1410
+ rmdir("test_dir_symlink");
1411
+
1412
+ return 0;
1413
+ }
1414
+
1415
+
1304
1416
  TEST_IMPL(fs_utime) {
1305
1417
  utime_check_t checkme;
1306
1418
  const char* path = "test_file";
@@ -26,14 +26,14 @@
26
26
  #include <stdio.h>
27
27
  #include <string.h> /* strlen */
28
28
 
29
- ares_channel channel;
30
- struct ares_options options;
31
- int optmask;
32
-
33
- int ares_bynamecallbacks;
34
- int bynamecallbacksig;
35
- int ares_byaddrcallbacks;
36
- int byaddrcallbacksig;
29
+ static ares_channel channel;
30
+ static struct ares_options options;
31
+ static int optmask;
32
+
33
+ static int ares_bynamecallbacks;
34
+ static int bynamecallbacksig;
35
+ static int ares_byaddrcallbacks;
36
+ static int byaddrcallbacksig;
37
37
 
38
38
  static void aresbynamecallback( void *arg,
39
39
  int status,
@@ -27,25 +27,28 @@
27
27
  #endif
28
28
 
29
29
  #ifndef NANOSEC
30
- # define NANOSEC 1000000000
30
+ # define NANOSEC ((uint64_t) 1e9)
31
31
  #endif
32
32
 
33
33
 
34
34
  TEST_IMPL(hrtime) {
35
35
  uint64_t a, b, diff;
36
-
37
- a = uv_hrtime();
38
- uv_sleep(100);
39
- b = uv_hrtime();
40
-
41
- diff = b - a;
42
-
43
- printf("diff = %llu\n", (unsigned long long int) diff);
44
-
45
- /* The windows Sleep() function has only a resolution of 10-20 ms. */
46
- /* Check that the difference between the two hrtime values is somewhat in */
47
- /* the range we expect it to be. */
48
- ASSERT(diff > (uint64_t) 80 * NANOSEC / MILLISEC);
49
- ASSERT(diff < (uint64_t) 120 * NANOSEC / MILLISEC);
36
+ int i = 75;
37
+ while (i > 0) {
38
+ a = uv_hrtime();
39
+ uv_sleep(45);
40
+ b = uv_hrtime();
41
+
42
+ diff = b - a;
43
+
44
+ /* printf("i= %d diff = %llu\n", i, (unsigned long long int) diff); */
45
+
46
+ /* The windows Sleep() function has only a resolution of 10-20 ms. */
47
+ /* Check that the difference between the two hrtime values is somewhat in */
48
+ /* the range we expect it to be. */
49
+ ASSERT(diff > (uint64_t) 25 * NANOSEC / MILLISEC);
50
+ ASSERT(diff < (uint64_t) 60 * NANOSEC / MILLISEC);
51
+ --i;
52
+ }
50
53
  return 0;
51
54
  }
@@ -200,6 +200,7 @@ void spawn_helper(uv_pipe_t* channel,
200
200
  char exepath[1024];
201
201
  char* args[3];
202
202
  int r;
203
+ uv_stdio_container_t stdio[1];
203
204
 
204
205
  r = uv_pipe_init(uv_default_loop(), channel, 1);
205
206
  ASSERT(r == 0);
@@ -218,7 +219,12 @@ void spawn_helper(uv_pipe_t* channel,
218
219
  options.file = exepath;
219
220
  options.args = args;
220
221
  options.exit_cb = exit_cb;
221
- options.stdin_stream = channel;
222
+
223
+ options.stdio = stdio;
224
+ options.stdio[0].flags = UV_CREATE_PIPE |
225
+ UV_READABLE_PIPE | UV_WRITABLE_PIPE;
226
+ options.stdio[0].data.stream = (uv_stream_t*)channel;
227
+ options.stdio_count = 1;
222
228
 
223
229
  r = uv_spawn(uv_default_loop(), process, options);
224
230
  ASSERT(r == 0);
@@ -611,4 +617,4 @@ int ipc_helper_tcp_connection() {
611
617
  ASSERT(close_cb_called == 4);
612
618
 
613
619
  return 0;
614
- }
620
+ }
@@ -20,6 +20,11 @@
20
20
  */
21
21
 
22
22
  TEST_DECLARE (platform_output)
23
+ TEST_DECLARE (callback_order)
24
+ TEST_DECLARE (run_once)
25
+ TEST_DECLARE (semaphore_1)
26
+ TEST_DECLARE (semaphore_2)
27
+ TEST_DECLARE (semaphore_3)
23
28
  TEST_DECLARE (tty)
24
29
  TEST_DECLARE (stdio_over_pipes)
25
30
  TEST_DECLARE (ipc_listen_before_write)
@@ -35,6 +40,8 @@ TEST_DECLARE (pipe_ping_pong)
35
40
  TEST_DECLARE (delayed_accept)
36
41
  TEST_DECLARE (multiple_listen)
37
42
  TEST_DECLARE (tcp_writealot)
43
+ TEST_DECLARE (tcp_connect_error_after_write)
44
+ TEST_DECLARE (tcp_shutdown_after_write)
38
45
  TEST_DECLARE (tcp_bind_error_addrinuse)
39
46
  TEST_DECLARE (tcp_bind_error_addrnotavail_1)
40
47
  TEST_DECLARE (tcp_bind_error_addrnotavail_2)
@@ -42,6 +49,9 @@ TEST_DECLARE (tcp_bind_error_fault)
42
49
  TEST_DECLARE (tcp_bind_error_inval)
43
50
  TEST_DECLARE (tcp_bind_localhost_ok)
44
51
  TEST_DECLARE (tcp_listen_without_bind)
52
+ TEST_DECLARE (tcp_connect_error_fault)
53
+ TEST_DECLARE (tcp_connect_timeout)
54
+ TEST_DECLARE (tcp_close_while_connecting)
45
55
  TEST_DECLARE (tcp_close)
46
56
  TEST_DECLARE (tcp_flags)
47
57
  TEST_DECLARE (tcp_write_error)
@@ -73,9 +83,11 @@ TEST_DECLARE (callback_stack)
73
83
  TEST_DECLARE (error_message)
74
84
  TEST_DECLARE (timer)
75
85
  TEST_DECLARE (timer_again)
86
+ TEST_DECLARE (timer_start_twice)
76
87
  TEST_DECLARE (idle_starvation)
77
88
  TEST_DECLARE (loop_handles)
78
89
  TEST_DECLARE (get_loadavg)
90
+ TEST_DECLARE (walk_handles)
79
91
  TEST_DECLARE (ref)
80
92
  TEST_DECLARE (idle_ref)
81
93
  TEST_DECLARE (async_ref)
@@ -85,11 +97,11 @@ TEST_DECLARE (unref_in_prepare_cb)
85
97
  TEST_DECLARE (timer_ref)
86
98
  TEST_DECLARE (timer_ref2)
87
99
  TEST_DECLARE (fs_event_ref)
100
+ TEST_DECLARE (fs_poll_ref)
88
101
  TEST_DECLARE (tcp_ref)
89
102
  TEST_DECLARE (tcp_ref2)
90
103
  TEST_DECLARE (tcp_ref3)
91
104
  TEST_DECLARE (tcp_ref4)
92
- TEST_DECLARE (tcp_ref5)
93
105
  TEST_DECLARE (udp_ref)
94
106
  TEST_DECLARE (udp_ref2)
95
107
  TEST_DECLARE (udp_ref3)
@@ -97,7 +109,6 @@ TEST_DECLARE (pipe_ref)
97
109
  TEST_DECLARE (pipe_ref2)
98
110
  TEST_DECLARE (pipe_ref3)
99
111
  TEST_DECLARE (pipe_ref4)
100
- TEST_DECLARE (pipe_ref5)
101
112
  TEST_DECLARE (process_ref)
102
113
  TEST_DECLARE (async)
103
114
  TEST_DECLARE (get_currentexe)
@@ -115,9 +126,16 @@ TEST_DECLARE (pass_always)
115
126
  TEST_DECLARE (spawn_exit_code)
116
127
  TEST_DECLARE (spawn_stdout)
117
128
  TEST_DECLARE (spawn_stdin)
129
+ TEST_DECLARE (spawn_stdio_greater_than_3)
130
+ TEST_DECLARE (spawn_ignored_stdio)
118
131
  TEST_DECLARE (spawn_and_kill)
132
+ TEST_DECLARE (spawn_detached)
119
133
  TEST_DECLARE (spawn_and_kill_with_std)
120
134
  TEST_DECLARE (spawn_and_ping)
135
+ TEST_DECLARE (spawn_setuid_fails)
136
+ TEST_DECLARE (spawn_setgid_fails)
137
+ TEST_DECLARE (spawn_stdout_to_file)
138
+ TEST_DECLARE (fs_poll)
121
139
  TEST_DECLARE (kill)
122
140
  TEST_DECLARE (fs_file_noent)
123
141
  TEST_DECLARE (fs_file_nametoolong)
@@ -131,6 +149,7 @@ TEST_DECLARE (fs_chmod)
131
149
  TEST_DECLARE (fs_chown)
132
150
  TEST_DECLARE (fs_link)
133
151
  TEST_DECLARE (fs_symlink)
152
+ TEST_DECLARE (fs_symlink_dir)
134
153
  TEST_DECLARE (fs_utime)
135
154
  TEST_DECLARE (fs_futime)
136
155
  TEST_DECLARE (fs_file_open_append)
@@ -142,14 +161,13 @@ TEST_DECLARE (fs_event_watch_file_current_dir)
142
161
  TEST_DECLARE (fs_event_no_callback_on_close)
143
162
  TEST_DECLARE (fs_event_immediate_close)
144
163
  TEST_DECLARE (fs_event_close_with_pending_event)
145
- TEST_DECLARE (fs_event_close_in_callback);
164
+ TEST_DECLARE (fs_event_close_in_callback)
146
165
  TEST_DECLARE (fs_readdir_empty_dir)
147
166
  TEST_DECLARE (fs_readdir_file)
148
167
  TEST_DECLARE (fs_open_dir)
149
168
  TEST_DECLARE (fs_rename_to_existing_file)
150
169
  TEST_DECLARE (threadpool_queue_work_simple)
151
170
  TEST_DECLARE (threadpool_multiple_event_loops)
152
- TEST_DECLARE (eio_overflow)
153
171
  TEST_DECLARE (thread_mutex)
154
172
  TEST_DECLARE (thread_rwlock)
155
173
  TEST_DECLARE (thread_create)
@@ -157,6 +175,9 @@ TEST_DECLARE (strlcpy)
157
175
  TEST_DECLARE (strlcat)
158
176
  TEST_DECLARE (counters_init)
159
177
  TEST_DECLARE (dlerror)
178
+ TEST_DECLARE (poll_duplex)
179
+ TEST_DECLARE (poll_unidirectional)
180
+ TEST_DECLARE (poll_close)
160
181
  #ifdef _WIN32
161
182
  TEST_DECLARE (spawn_detect_pipe_name_collisions_on_windows)
162
183
  TEST_DECLARE (argument_escaping)
@@ -164,6 +185,8 @@ TEST_DECLARE (environment_creation)
164
185
  TEST_DECLARE (listen_with_simultaneous_accepts)
165
186
  TEST_DECLARE (listen_no_simultaneous_accepts)
166
187
  TEST_DECLARE (fs_stat_root)
188
+ #else
189
+ TEST_DECLARE (spawn_setuid_setgid)
167
190
  #endif
168
191
  HELPER_DECLARE (tcp4_echo_server)
169
192
  HELPER_DECLARE (tcp6_echo_server)
@@ -174,6 +197,14 @@ HELPER_DECLARE (pipe_echo_server)
174
197
  TASK_LIST_START
175
198
  TEST_OUTPUT_ENTRY (platform_output)
176
199
 
200
+ #if 0
201
+ TEST_ENTRY (callback_order)
202
+ #endif
203
+ TEST_ENTRY (run_once)
204
+ TEST_ENTRY (semaphore_1)
205
+ TEST_ENTRY (semaphore_2)
206
+ TEST_ENTRY (semaphore_3)
207
+
177
208
  TEST_ENTRY (pipe_connect_bad_name)
178
209
  TEST_ENTRY (pipe_connect_to_file)
179
210
 
@@ -202,6 +233,10 @@ TASK_LIST_START
202
233
  TEST_ENTRY (tcp_writealot)
203
234
  TEST_HELPER (tcp_writealot, tcp4_echo_server)
204
235
 
236
+ TEST_ENTRY (tcp_shutdown_after_write)
237
+ TEST_HELPER (tcp_shutdown_after_write, tcp4_echo_server)
238
+
239
+ TEST_ENTRY (tcp_connect_error_after_write)
205
240
  TEST_ENTRY (tcp_bind_error_addrinuse)
206
241
  TEST_ENTRY (tcp_bind_error_addrnotavail_1)
207
242
  TEST_ENTRY (tcp_bind_error_addrnotavail_2)
@@ -209,6 +244,9 @@ TASK_LIST_START
209
244
  TEST_ENTRY (tcp_bind_error_inval)
210
245
  TEST_ENTRY (tcp_bind_localhost_ok)
211
246
  TEST_ENTRY (tcp_listen_without_bind)
247
+ TEST_ENTRY (tcp_connect_error_fault)
248
+ TEST_ENTRY (tcp_connect_timeout)
249
+ TEST_ENTRY (tcp_close_while_connecting)
212
250
  TEST_ENTRY (tcp_close)
213
251
  TEST_ENTRY (tcp_flags)
214
252
  TEST_ENTRY (tcp_write_error)
@@ -251,11 +289,13 @@ TASK_LIST_START
251
289
 
252
290
  TEST_ENTRY (timer)
253
291
  TEST_ENTRY (timer_again)
292
+ TEST_ENTRY (timer_start_twice)
254
293
 
255
294
  TEST_ENTRY (idle_starvation)
256
295
 
257
296
  TEST_ENTRY (ref)
258
297
  TEST_ENTRY (idle_ref)
298
+ TEST_ENTRY (fs_poll_ref)
259
299
  TEST_ENTRY (async_ref)
260
300
  TEST_ENTRY (prepare_ref)
261
301
  TEST_ENTRY (check_ref)
@@ -269,8 +309,6 @@ TASK_LIST_START
269
309
  TEST_HELPER (tcp_ref3, tcp4_echo_server)
270
310
  TEST_ENTRY (tcp_ref4)
271
311
  TEST_HELPER (tcp_ref4, tcp4_echo_server)
272
- TEST_ENTRY (tcp_ref5)
273
- TEST_HELPER (tcp_ref5, tcp4_echo_server)
274
312
  TEST_ENTRY (udp_ref)
275
313
  TEST_ENTRY (udp_ref2)
276
314
  TEST_ENTRY (udp_ref3)
@@ -281,11 +319,10 @@ TASK_LIST_START
281
319
  TEST_HELPER (pipe_ref3, pipe_echo_server)
282
320
  TEST_ENTRY (pipe_ref4)
283
321
  TEST_HELPER (pipe_ref4, pipe_echo_server)
284
- TEST_ENTRY (pipe_ref5)
285
- TEST_HELPER (pipe_ref5, pipe_echo_server)
286
322
  TEST_ENTRY (process_ref)
287
323
 
288
324
  TEST_ENTRY (loop_handles)
325
+ TEST_ENTRY (walk_handles)
289
326
 
290
327
  TEST_ENTRY (async)
291
328
 
@@ -310,12 +347,23 @@ TASK_LIST_START
310
347
  TEST_ENTRY (getsockname_tcp)
311
348
  TEST_ENTRY (getsockname_udp)
312
349
 
350
+ TEST_ENTRY (poll_duplex)
351
+ TEST_ENTRY (poll_unidirectional)
352
+ TEST_ENTRY (poll_close)
353
+
313
354
  TEST_ENTRY (spawn_exit_code)
314
355
  TEST_ENTRY (spawn_stdout)
315
356
  TEST_ENTRY (spawn_stdin)
357
+ TEST_ENTRY (spawn_stdio_greater_than_3)
358
+ TEST_ENTRY (spawn_ignored_stdio)
316
359
  TEST_ENTRY (spawn_and_kill)
360
+ TEST_ENTRY (spawn_detached)
317
361
  TEST_ENTRY (spawn_and_kill_with_std)
318
362
  TEST_ENTRY (spawn_and_ping)
363
+ TEST_ENTRY (spawn_setuid_fails)
364
+ TEST_ENTRY (spawn_setgid_fails)
365
+ TEST_ENTRY (spawn_stdout_to_file)
366
+ TEST_ENTRY (fs_poll)
319
367
  TEST_ENTRY (kill)
320
368
  #ifdef _WIN32
321
369
  TEST_ENTRY (spawn_detect_pipe_name_collisions_on_windows)
@@ -324,6 +372,8 @@ TASK_LIST_START
324
372
  TEST_ENTRY (listen_with_simultaneous_accepts)
325
373
  TEST_ENTRY (listen_no_simultaneous_accepts)
326
374
  TEST_ENTRY (fs_stat_root)
375
+ #else
376
+ TEST_ENTRY (spawn_setuid_setgid)
327
377
  #endif
328
378
 
329
379
  TEST_ENTRY (fs_file_noent)
@@ -339,6 +389,7 @@ TASK_LIST_START
339
389
  TEST_ENTRY (fs_utime)
340
390
  TEST_ENTRY (fs_futime)
341
391
  TEST_ENTRY (fs_symlink)
392
+ TEST_ENTRY (fs_symlink_dir)
342
393
  TEST_ENTRY (fs_stat_missing_path)
343
394
  TEST_ENTRY (fs_read_file_eof)
344
395
  TEST_ENTRY (fs_file_open_append)
@@ -355,7 +406,6 @@ TASK_LIST_START
355
406
  TEST_ENTRY (fs_rename_to_existing_file)
356
407
  TEST_ENTRY (threadpool_queue_work_simple)
357
408
  TEST_ENTRY (threadpool_multiple_event_loops)
358
- TEST_ENTRY (eio_overflow)
359
409
  TEST_ENTRY (thread_mutex)
360
410
  TEST_ENTRY (thread_rwlock)
361
411
  TEST_ENTRY (thread_create)