libuv 2.0.1 → 2.0.2
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.
- checksums.yaml +4 -4
- data/ext/libuv/AUTHORS +4 -0
- data/ext/libuv/ChangeLog +41 -0
- data/ext/libuv/appveyor.yml +1 -1
- data/ext/libuv/configure.ac +1 -1
- data/ext/libuv/docs/src/errors.rst +4 -2
- data/ext/libuv/docs/src/stream.rst +2 -0
- data/ext/libuv/include/uv-version.h +1 -1
- data/ext/libuv/src/unix/fs.c +53 -30
- data/ext/libuv/src/unix/stream.c +20 -0
- data/ext/libuv/src/unix/udp.c +4 -2
- data/ext/libuv/src/uv-common.c +17 -5
- data/ext/libuv/src/win/fs.c +25 -20
- data/ext/libuv/src/win/tcp.c +9 -0
- data/ext/libuv/test/benchmark-fs-stat.c +1 -1
- data/ext/libuv/test/echo-server.c +1 -1
- data/ext/libuv/test/runner-unix.c +3 -7
- data/ext/libuv/test/test-fs-event.c +148 -137
- data/ext/libuv/test/test-fs.c +171 -154
- data/ext/libuv/test/test-list.h +2 -0
- data/ext/libuv/test/test-signal-multiple-loops.c +1 -0
- data/ext/libuv/test/test-spawn.c +18 -17
- data/ext/libuv/test/test-threadpool-cancel.c +4 -2
- data/lib/libuv/mixins/listener.rb +2 -8
- data/lib/libuv/mixins/stream.rb +2 -1
- data/lib/libuv/version.rb +1 -1
- metadata +2 -2
@@ -37,14 +37,15 @@
|
|
37
37
|
|
38
38
|
static uv_fs_event_t fs_event;
|
39
39
|
static const char file_prefix[] = "fsevent-";
|
40
|
+
static const int fs_event_file_count = 16;
|
40
41
|
#if defined(__APPLE__) || defined(_WIN32)
|
41
42
|
static const char file_prefix_in_subdir[] = "subdir";
|
42
43
|
#endif
|
43
44
|
static uv_timer_t timer;
|
44
45
|
static int timer_cb_called;
|
45
46
|
static int close_cb_called;
|
46
|
-
static const int fs_event_file_count = 128;
|
47
47
|
static int fs_event_created;
|
48
|
+
static int fs_event_removed;
|
48
49
|
static int fs_event_cb_called;
|
49
50
|
#if defined(PATH_MAX)
|
50
51
|
static char fs_event_filename[PATH_MAX];
|
@@ -53,49 +54,45 @@ static char fs_event_filename[1024];
|
|
53
54
|
#endif /* defined(PATH_MAX) */
|
54
55
|
static int timer_cb_touch_called;
|
55
56
|
|
56
|
-
static void
|
57
|
-
static void fs_event_unlink_files_in_subdir(uv_timer_t* handle);
|
58
|
-
|
59
|
-
static void create_dir(uv_loop_t* loop, const char* name) {
|
57
|
+
static void create_dir(const char* name) {
|
60
58
|
int r;
|
61
59
|
uv_fs_t req;
|
62
|
-
r = uv_fs_mkdir(
|
60
|
+
r = uv_fs_mkdir(NULL, &req, name, 0755, NULL);
|
63
61
|
ASSERT(r == 0 || r == UV_EEXIST);
|
64
62
|
uv_fs_req_cleanup(&req);
|
65
63
|
}
|
66
64
|
|
67
|
-
static void create_file(
|
65
|
+
static void create_file(const char* name) {
|
68
66
|
int r;
|
69
67
|
uv_file file;
|
70
68
|
uv_fs_t req;
|
71
69
|
|
72
|
-
r = uv_fs_open(
|
73
|
-
S_IWUSR | S_IRUSR, NULL);
|
70
|
+
r = uv_fs_open(NULL, &req, name, O_WRONLY | O_CREAT, S_IWUSR | S_IRUSR, NULL);
|
74
71
|
ASSERT(r >= 0);
|
75
72
|
file = r;
|
76
73
|
uv_fs_req_cleanup(&req);
|
77
|
-
r = uv_fs_close(
|
74
|
+
r = uv_fs_close(NULL, &req, file, NULL);
|
78
75
|
ASSERT(r == 0);
|
79
76
|
uv_fs_req_cleanup(&req);
|
80
77
|
}
|
81
78
|
|
82
|
-
static void touch_file(
|
79
|
+
static void touch_file(const char* name) {
|
83
80
|
int r;
|
84
81
|
uv_file file;
|
85
82
|
uv_fs_t req;
|
86
83
|
uv_buf_t buf;
|
87
84
|
|
88
|
-
r = uv_fs_open(
|
85
|
+
r = uv_fs_open(NULL, &req, name, O_RDWR, 0, NULL);
|
89
86
|
ASSERT(r >= 0);
|
90
87
|
file = r;
|
91
88
|
uv_fs_req_cleanup(&req);
|
92
89
|
|
93
90
|
buf = uv_buf_init("foo", 4);
|
94
|
-
r = uv_fs_write(
|
91
|
+
r = uv_fs_write(NULL, &req, file, &buf, 1, -1, NULL);
|
95
92
|
ASSERT(r >= 0);
|
96
93
|
uv_fs_req_cleanup(&req);
|
97
94
|
|
98
|
-
r = uv_fs_close(
|
95
|
+
r = uv_fs_close(NULL, &req, file, NULL);
|
99
96
|
ASSERT(r == 0);
|
100
97
|
uv_fs_req_cleanup(&req);
|
101
98
|
}
|
@@ -123,6 +120,56 @@ static void fs_event_cb_dir(uv_fs_event_t* handle, const char* filename,
|
|
123
120
|
uv_close((uv_handle_t*)handle, close_cb);
|
124
121
|
}
|
125
122
|
|
123
|
+
static const char* fs_event_get_filename(int i) {
|
124
|
+
snprintf(fs_event_filename,
|
125
|
+
sizeof(fs_event_filename),
|
126
|
+
"watch_dir/%s%d",
|
127
|
+
file_prefix,
|
128
|
+
i);
|
129
|
+
return fs_event_filename;
|
130
|
+
}
|
131
|
+
|
132
|
+
static void fs_event_create_files(uv_timer_t* handle) {
|
133
|
+
/* Make sure we're not attempting to create files we do not intend */
|
134
|
+
ASSERT(fs_event_created < fs_event_file_count);
|
135
|
+
|
136
|
+
/* Create the file */
|
137
|
+
create_file(fs_event_get_filename(fs_event_created));
|
138
|
+
|
139
|
+
if (++fs_event_created < fs_event_file_count) {
|
140
|
+
/* Create another file on a different event loop tick. We do it this way
|
141
|
+
* to avoid fs events coalescing into one fs event. */
|
142
|
+
ASSERT(0 == uv_timer_start(&timer, fs_event_create_files, 1, 0));
|
143
|
+
}
|
144
|
+
}
|
145
|
+
|
146
|
+
static void fs_event_unlink_files(uv_timer_t* handle) {
|
147
|
+
int r;
|
148
|
+
int i;
|
149
|
+
|
150
|
+
/* NOTE: handle might be NULL if invoked not as timer callback */
|
151
|
+
if (handle == NULL) {
|
152
|
+
/* Unlink all files */
|
153
|
+
for (i = 0; i < 16; i++) {
|
154
|
+
r = remove(fs_event_get_filename(i));
|
155
|
+
if (handle != NULL)
|
156
|
+
ASSERT(r == 0);
|
157
|
+
}
|
158
|
+
} else {
|
159
|
+
/* Make sure we're not attempting to remove files we do not intend */
|
160
|
+
ASSERT(fs_event_removed < fs_event_file_count);
|
161
|
+
|
162
|
+
/* Remove the file */
|
163
|
+
ASSERT(0 == remove(fs_event_get_filename(fs_event_removed)));
|
164
|
+
|
165
|
+
if (++fs_event_removed < fs_event_file_count) {
|
166
|
+
/* Remove another file on a different event loop tick. We do it this way
|
167
|
+
* to avoid fs events coalescing into one fs event. */
|
168
|
+
ASSERT(0 == uv_timer_start(&timer, fs_event_unlink_files, 1, 0));
|
169
|
+
}
|
170
|
+
}
|
171
|
+
}
|
172
|
+
|
126
173
|
static void fs_event_cb_dir_multi_file(uv_fs_event_t* handle,
|
127
174
|
const char* filename,
|
128
175
|
int events,
|
@@ -130,48 +177,21 @@ static void fs_event_cb_dir_multi_file(uv_fs_event_t* handle,
|
|
130
177
|
fs_event_cb_called++;
|
131
178
|
ASSERT(handle == &fs_event);
|
132
179
|
ASSERT(status == 0);
|
133
|
-
ASSERT(events == UV_RENAME);
|
180
|
+
ASSERT(events == UV_CHANGE || UV_RENAME);
|
134
181
|
ASSERT(filename == NULL ||
|
135
182
|
strncmp(filename, file_prefix, sizeof(file_prefix) - 1) == 0);
|
136
183
|
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
184
|
+
if (fs_event_created + fs_event_removed == fs_event_file_count) {
|
185
|
+
/* Once we've processed all create events, delete all files */
|
186
|
+
ASSERT(0 == uv_timer_start(&timer, fs_event_unlink_files, 1, 0));
|
187
|
+
} else if (fs_event_cb_called == 2 * fs_event_file_count) {
|
188
|
+
/* Once we've processed all create and delete events, stop watching */
|
189
|
+
uv_close((uv_handle_t*) &timer, close_cb);
|
141
190
|
uv_close((uv_handle_t*) handle, close_cb);
|
142
191
|
}
|
143
192
|
}
|
144
193
|
|
145
194
|
#if defined(__APPLE__) || defined(_WIN32)
|
146
|
-
static void fs_event_cb_dir_multi_file_in_subdir(uv_fs_event_t* handle,
|
147
|
-
const char* filename,
|
148
|
-
int events,
|
149
|
-
int status) {
|
150
|
-
fs_event_cb_called++;
|
151
|
-
ASSERT(handle == &fs_event);
|
152
|
-
ASSERT(status == 0);
|
153
|
-
ASSERT(events == UV_RENAME || events == UV_CHANGE);
|
154
|
-
ASSERT(filename == NULL ||
|
155
|
-
strncmp(filename, file_prefix_in_subdir, sizeof(file_prefix_in_subdir) - 1) == 0);
|
156
|
-
|
157
|
-
/* Stop watching dir when received events about all files:
|
158
|
-
* both create and close events */
|
159
|
-
if (fs_event_cb_called == 2 * fs_event_file_count) {
|
160
|
-
ASSERT(0 == uv_fs_event_stop(handle));
|
161
|
-
uv_close((uv_handle_t*) handle, close_cb);
|
162
|
-
}
|
163
|
-
}
|
164
|
-
#endif
|
165
|
-
|
166
|
-
static const char* fs_event_get_filename(int i) {
|
167
|
-
snprintf(fs_event_filename,
|
168
|
-
sizeof(fs_event_filename),
|
169
|
-
"watch_dir/%s%d",
|
170
|
-
file_prefix,
|
171
|
-
i);
|
172
|
-
return fs_event_filename;
|
173
|
-
}
|
174
|
-
|
175
195
|
static const char* fs_event_get_filename_in_subdir(int i) {
|
176
196
|
snprintf(fs_event_filename,
|
177
197
|
sizeof(fs_event_filename),
|
@@ -181,75 +201,68 @@ static const char* fs_event_get_filename_in_subdir(int i) {
|
|
181
201
|
return fs_event_filename;
|
182
202
|
}
|
183
203
|
|
184
|
-
static void fs_event_create_files(uv_timer_t* handle) {
|
185
|
-
int i;
|
186
|
-
|
187
|
-
/* Already created all files */
|
188
|
-
if (fs_event_created == fs_event_file_count) {
|
189
|
-
uv_close((uv_handle_t*) &timer, close_cb);
|
190
|
-
return;
|
191
|
-
}
|
192
|
-
|
193
|
-
/* Create all files */
|
194
|
-
for (i = 0; i < 16; i++, fs_event_created++)
|
195
|
-
create_file(handle->loop, fs_event_get_filename(i));
|
196
|
-
|
197
|
-
/* And unlink them */
|
198
|
-
ASSERT(0 == uv_timer_start(&timer, fs_event_unlink_files, 50, 0));
|
199
|
-
}
|
200
|
-
|
201
204
|
static void fs_event_create_files_in_subdir(uv_timer_t* handle) {
|
202
|
-
|
203
|
-
|
204
|
-
/* Already created all files */
|
205
|
-
if (fs_event_created == fs_event_file_count) {
|
206
|
-
uv_close((uv_handle_t*) &timer, close_cb);
|
207
|
-
return;
|
208
|
-
}
|
205
|
+
/* Make sure we're not attempting to create files we do not intend */
|
206
|
+
ASSERT(fs_event_created < fs_event_file_count);
|
209
207
|
|
210
|
-
/* Create
|
211
|
-
|
212
|
-
create_file(handle->loop, fs_event_get_filename_in_subdir(i));
|
208
|
+
/* Create the file */
|
209
|
+
create_file(fs_event_get_filename_in_subdir(fs_event_created));
|
213
210
|
|
214
|
-
|
215
|
-
|
211
|
+
if (++fs_event_created < fs_event_file_count) {
|
212
|
+
/* Create another file on a different event loop tick. We do it this way
|
213
|
+
* to avoid fs events coalescing into one fs event. */
|
214
|
+
ASSERT(0 == uv_timer_start(&timer, fs_event_create_files_in_subdir, 1, 0));
|
215
|
+
}
|
216
216
|
}
|
217
217
|
|
218
|
-
void fs_event_unlink_files_in_subdir(uv_timer_t* handle) {
|
218
|
+
static void fs_event_unlink_files_in_subdir(uv_timer_t* handle) {
|
219
219
|
int r;
|
220
220
|
int i;
|
221
221
|
|
222
222
|
/* NOTE: handle might be NULL if invoked not as timer callback */
|
223
|
+
if (handle == NULL) {
|
224
|
+
/* Unlink all files */
|
225
|
+
for (i = 0; i < 16; i++) {
|
226
|
+
r = remove(fs_event_get_filename_in_subdir(i));
|
227
|
+
if (handle != NULL)
|
228
|
+
ASSERT(r == 0);
|
229
|
+
}
|
230
|
+
} else {
|
231
|
+
/* Make sure we're not attempting to remove files we do not intend */
|
232
|
+
ASSERT(fs_event_removed < fs_event_file_count);
|
223
233
|
|
224
|
-
|
225
|
-
|
226
|
-
r = remove(fs_event_get_filename_in_subdir(i));
|
227
|
-
if (handle != NULL)
|
228
|
-
ASSERT(r == 0);
|
229
|
-
}
|
234
|
+
/* Remove the file */
|
235
|
+
ASSERT(0 == remove(fs_event_get_filename_in_subdir(fs_event_removed)));
|
230
236
|
|
231
|
-
|
232
|
-
|
233
|
-
|
237
|
+
if (++fs_event_removed < fs_event_file_count) {
|
238
|
+
/* Remove another file on a different event loop tick. We do it this way
|
239
|
+
* to avoid fs events coalescing into one fs event. */
|
240
|
+
ASSERT(0 == uv_timer_start(&timer, fs_event_unlink_files_in_subdir, 1, 0));
|
241
|
+
}
|
242
|
+
}
|
234
243
|
}
|
235
244
|
|
236
|
-
void
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
245
|
+
static void fs_event_cb_dir_multi_file_in_subdir(uv_fs_event_t* handle,
|
246
|
+
const char* filename,
|
247
|
+
int events,
|
248
|
+
int status) {
|
249
|
+
fs_event_cb_called++;
|
250
|
+
ASSERT(handle == &fs_event);
|
251
|
+
ASSERT(status == 0);
|
252
|
+
ASSERT(events == UV_CHANGE || UV_RENAME);
|
253
|
+
ASSERT(filename == NULL ||
|
254
|
+
strncmp(filename, file_prefix_in_subdir, sizeof(file_prefix_in_subdir) - 1) == 0);
|
241
255
|
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
256
|
+
if (fs_event_created + fs_event_removed == fs_event_file_count) {
|
257
|
+
/* Once we've processed all create events, delete all files */
|
258
|
+
ASSERT(0 == uv_timer_start(&timer, fs_event_unlink_files_in_subdir, 1, 0));
|
259
|
+
} else if (fs_event_cb_called == 2 * fs_event_file_count) {
|
260
|
+
/* Once we've processed all create and delete events, stop watching */
|
261
|
+
uv_close((uv_handle_t*) &timer, close_cb);
|
262
|
+
uv_close((uv_handle_t*) handle, close_cb);
|
247
263
|
}
|
248
|
-
|
249
|
-
/* And create them again */
|
250
|
-
if (handle != NULL)
|
251
|
-
ASSERT(0 == uv_timer_start(&timer, fs_event_create_files, 50, 0));
|
252
264
|
}
|
265
|
+
#endif
|
253
266
|
|
254
267
|
static void fs_event_cb_file(uv_fs_event_t* handle, const char* filename,
|
255
268
|
int events, int status) {
|
@@ -295,16 +308,16 @@ static void timer_cb_file(uv_timer_t* handle) {
|
|
295
308
|
++timer_cb_called;
|
296
309
|
|
297
310
|
if (timer_cb_called == 1) {
|
298
|
-
touch_file(
|
311
|
+
touch_file("watch_dir/file1");
|
299
312
|
} else {
|
300
|
-
touch_file(
|
313
|
+
touch_file("watch_dir/file2");
|
301
314
|
uv_close((uv_handle_t*)handle, close_cb);
|
302
315
|
}
|
303
316
|
}
|
304
317
|
|
305
318
|
static void timer_cb_touch(uv_timer_t* timer) {
|
306
319
|
uv_close((uv_handle_t*)timer, NULL);
|
307
|
-
touch_file(
|
320
|
+
touch_file("watch_file");
|
308
321
|
timer_cb_touch_called++;
|
309
322
|
}
|
310
323
|
|
@@ -324,7 +337,7 @@ TEST_IMPL(fs_event_watch_dir) {
|
|
324
337
|
remove("watch_dir/file2");
|
325
338
|
remove("watch_dir/file1");
|
326
339
|
remove("watch_dir/");
|
327
|
-
create_dir(
|
340
|
+
create_dir("watch_dir");
|
328
341
|
|
329
342
|
r = uv_fs_event_init(loop, &fs_event);
|
330
343
|
ASSERT(r == 0);
|
@@ -337,8 +350,7 @@ TEST_IMPL(fs_event_watch_dir) {
|
|
337
350
|
|
338
351
|
uv_run(loop, UV_RUN_DEFAULT);
|
339
352
|
|
340
|
-
ASSERT(fs_event_cb_called ==
|
341
|
-
ASSERT(fs_event_created == fs_event_file_count);
|
353
|
+
ASSERT(fs_event_cb_called == fs_event_created + fs_event_removed);
|
342
354
|
ASSERT(close_cb_called == 2);
|
343
355
|
|
344
356
|
/* Cleanup */
|
@@ -363,8 +375,8 @@ TEST_IMPL(fs_event_watch_dir_recursive) {
|
|
363
375
|
remove("watch_dir/file1");
|
364
376
|
remove("watch_dir/subdir");
|
365
377
|
remove("watch_dir/");
|
366
|
-
create_dir(
|
367
|
-
create_dir(
|
378
|
+
create_dir("watch_dir");
|
379
|
+
create_dir("watch_dir/subdir");
|
368
380
|
|
369
381
|
r = uv_fs_event_init(loop, &fs_event);
|
370
382
|
ASSERT(r == 0);
|
@@ -377,8 +389,7 @@ TEST_IMPL(fs_event_watch_dir_recursive) {
|
|
377
389
|
|
378
390
|
uv_run(loop, UV_RUN_DEFAULT);
|
379
391
|
|
380
|
-
ASSERT(fs_event_cb_called ==
|
381
|
-
ASSERT(fs_event_created == fs_event_file_count);
|
392
|
+
ASSERT(fs_event_cb_called == fs_event_created + fs_event_removed);
|
382
393
|
ASSERT(close_cb_called == 2);
|
383
394
|
|
384
395
|
/* Cleanup */
|
@@ -404,9 +415,9 @@ TEST_IMPL(fs_event_watch_file) {
|
|
404
415
|
remove("watch_dir/file2");
|
405
416
|
remove("watch_dir/file1");
|
406
417
|
remove("watch_dir/");
|
407
|
-
create_dir(
|
408
|
-
create_file(
|
409
|
-
create_file(
|
418
|
+
create_dir("watch_dir");
|
419
|
+
create_file("watch_dir/file1");
|
420
|
+
create_file("watch_dir/file2");
|
410
421
|
|
411
422
|
r = uv_fs_event_init(loop, &fs_event);
|
412
423
|
ASSERT(r == 0);
|
@@ -462,7 +473,7 @@ TEST_IMPL(fs_event_watch_file_current_dir) {
|
|
462
473
|
|
463
474
|
/* Setup */
|
464
475
|
remove("watch_file");
|
465
|
-
create_file(
|
476
|
+
create_file("watch_file");
|
466
477
|
|
467
478
|
r = uv_fs_event_init(loop, &fs_event);
|
468
479
|
ASSERT(r == 0);
|
@@ -503,8 +514,8 @@ TEST_IMPL(fs_event_no_callback_after_close) {
|
|
503
514
|
/* Setup */
|
504
515
|
remove("watch_dir/file1");
|
505
516
|
remove("watch_dir/");
|
506
|
-
create_dir(
|
507
|
-
create_file(
|
517
|
+
create_dir("watch_dir");
|
518
|
+
create_file("watch_dir/file1");
|
508
519
|
|
509
520
|
r = uv_fs_event_init(loop, &fs_event);
|
510
521
|
ASSERT(r == 0);
|
@@ -516,7 +527,7 @@ TEST_IMPL(fs_event_no_callback_after_close) {
|
|
516
527
|
|
517
528
|
|
518
529
|
uv_close((uv_handle_t*)&fs_event, close_cb);
|
519
|
-
touch_file(
|
530
|
+
touch_file("watch_dir/file1");
|
520
531
|
uv_run(loop, UV_RUN_DEFAULT);
|
521
532
|
|
522
533
|
ASSERT(fs_event_cb_called == 0);
|
@@ -537,8 +548,8 @@ TEST_IMPL(fs_event_no_callback_on_close) {
|
|
537
548
|
/* Setup */
|
538
549
|
remove("watch_dir/file1");
|
539
550
|
remove("watch_dir/");
|
540
|
-
create_dir(
|
541
|
-
create_file(
|
551
|
+
create_dir("watch_dir");
|
552
|
+
create_file("watch_dir/file1");
|
542
553
|
|
543
554
|
r = uv_fs_event_init(loop, &fs_event);
|
544
555
|
ASSERT(r == 0);
|
@@ -611,8 +622,8 @@ TEST_IMPL(fs_event_close_with_pending_event) {
|
|
611
622
|
|
612
623
|
loop = uv_default_loop();
|
613
624
|
|
614
|
-
create_dir(
|
615
|
-
create_file(
|
625
|
+
create_dir("watch_dir");
|
626
|
+
create_file("watch_dir/file");
|
616
627
|
|
617
628
|
r = uv_fs_event_init(loop, &fs_event);
|
618
629
|
ASSERT(r == 0);
|
@@ -620,7 +631,7 @@ TEST_IMPL(fs_event_close_with_pending_event) {
|
|
620
631
|
ASSERT(r == 0);
|
621
632
|
|
622
633
|
/* Generate an fs event. */
|
623
|
-
touch_file(
|
634
|
+
touch_file("watch_dir/file");
|
624
635
|
|
625
636
|
uv_close((uv_handle_t*)&fs_event, close_cb);
|
626
637
|
|
@@ -668,12 +679,12 @@ TEST_IMPL(fs_event_close_in_callback) {
|
|
668
679
|
|
669
680
|
loop = uv_default_loop();
|
670
681
|
|
671
|
-
create_dir(
|
672
|
-
create_file(
|
673
|
-
create_file(
|
674
|
-
create_file(
|
675
|
-
create_file(
|
676
|
-
create_file(
|
682
|
+
create_dir("watch_dir");
|
683
|
+
create_file("watch_dir/file1");
|
684
|
+
create_file("watch_dir/file2");
|
685
|
+
create_file("watch_dir/file3");
|
686
|
+
create_file("watch_dir/file4");
|
687
|
+
create_file("watch_dir/file5");
|
677
688
|
|
678
689
|
r = uv_fs_event_init(loop, &fs_event);
|
679
690
|
ASSERT(r == 0);
|
@@ -681,11 +692,11 @@ TEST_IMPL(fs_event_close_in_callback) {
|
|
681
692
|
ASSERT(r == 0);
|
682
693
|
|
683
694
|
/* Generate a couple of fs events. */
|
684
|
-
touch_file(
|
685
|
-
touch_file(
|
686
|
-
touch_file(
|
687
|
-
touch_file(
|
688
|
-
touch_file(
|
695
|
+
touch_file("watch_dir/file1");
|
696
|
+
touch_file("watch_dir/file2");
|
697
|
+
touch_file("watch_dir/file3");
|
698
|
+
touch_file("watch_dir/file4");
|
699
|
+
touch_file("watch_dir/file5");
|
689
700
|
|
690
701
|
uv_run(loop, UV_RUN_DEFAULT);
|
691
702
|
|
@@ -714,7 +725,7 @@ TEST_IMPL(fs_event_start_and_close) {
|
|
714
725
|
|
715
726
|
loop = uv_default_loop();
|
716
727
|
|
717
|
-
create_dir(
|
728
|
+
create_dir("watch_dir");
|
718
729
|
|
719
730
|
r = uv_fs_event_init(loop, &fs_event1);
|
720
731
|
ASSERT(r == 0);
|
@@ -744,7 +755,7 @@ TEST_IMPL(fs_event_getpath) {
|
|
744
755
|
char buf[1024];
|
745
756
|
size_t len;
|
746
757
|
|
747
|
-
create_dir(
|
758
|
+
create_dir("watch_dir");
|
748
759
|
|
749
760
|
r = uv_fs_event_init(loop, &fs_event);
|
750
761
|
ASSERT(r == 0);
|
@@ -806,7 +817,7 @@ TEST_IMPL(fs_event_error_reporting) {
|
|
806
817
|
TEST_FILE_LIMIT(ARRAY_SIZE(loops) * 3);
|
807
818
|
|
808
819
|
remove("watch_dir/");
|
809
|
-
create_dir(
|
820
|
+
create_dir("watch_dir");
|
810
821
|
|
811
822
|
/* Create a lot of loops, and start FSEventStream in each of them.
|
812
823
|
* Eventually, this should create enough streams to make FSEventStreamStart()
|