12
#include <Ecore_File.h>
16
#include "eio_test_common.h"
22
static int test_count = 0;
25
_filter_cb(void *data EINA_UNUSED, Eio_File *handler EINA_UNUSED, const char *file)
27
char *last_slash = strrchr(file, '/');
30
if (last_slash != NULL && strlen(last_slash) > 1 && last_slash[1] == '.')
37
_delete_filter_cb(void *data EINA_UNUSED, Eio_File *handler EINA_UNUSED,
38
const Eina_File_Direct_Info *info EINA_UNUSED)
44
_main_cb(void *data, Eio_File *handler EINA_UNUSED, const char *file EINA_UNUSED)
46
int *number_of_listed_files = (int *)data;
48
(*number_of_listed_files)++;
52
_direct_filter_cb(void *data EINA_UNUSED, Eio_File *handler EINA_UNUSED,
53
const Eina_File_Direct_Info *info)
55
char *last_slash = strrchr(info->path, '/');
58
if (last_slash != NULL && strlen(last_slash) > 1 && last_slash[1] == '.')
65
_direct_main_cb(void *data, Eio_File *handler EINA_UNUSED, const Eina_File_Direct_Info *info EINA_UNUSED)
67
int *number_of_listed_files = (int *)data;
69
(*number_of_listed_files)++;
73
_progress_cb(void *data, Eio_File *handler EINA_UNUSED, const Eio_Progress *info EINA_UNUSED)
75
int *number_of_listed_files = (int *)data;
77
(*number_of_listed_files)++;
81
_stat_done_cb(void *data, Eio_File *handler EINA_UNUSED, const Eina_Stat *stat)
84
Eina_Bool *is_dir = (Eina_Bool *)data;
85
fail_if(eio_file_is_dir(stat) != *is_dir);
86
fail_if(eio_file_is_lnk(stat));
87
rights = stat->mode & (S_IRWXU | S_IRWXG | S_IRWXO);
88
fail_if(rights != default_rights);
89
ecore_main_loop_quit();
93
_done_cb(void *data, Eio_File *handler EINA_UNUSED)
95
int *number_of_listed_files = (int *)data;
96
fail_if((*number_of_listed_files) != test_count);
97
ecore_main_loop_quit();
101
_error_cb(void *data EINA_UNUSED, Eio_File *handler EINA_UNUSED, int error)
103
fprintf(stderr, "Something has gone wrong:%s\n", strerror(error));
104
ecore_main_loop_quit();
108
_open_done_cb(void *data, Eio_File *handler EINA_UNUSED, Eina_File *file)
110
Eina_Bool *opened = (Eina_Bool *)data;
112
eina_file_close(file);
113
ecore_main_loop_quit();
116
EFL_START_TEST(eio_file_test_ls)
118
int number_of_listed_files = 0;
119
const char *new_dir = "new_dir";
121
Eina_Tmpstr *test_dirname = get_eio_test_file_tmp_dir();
122
Eina_Tmpstr *nested_dirname = create_test_dirs(test_dirname);
123
Eina_Tmpstr *nested_filename = get_full_path(test_dirname, files[3]);
124
Eina_Tmpstr *new_dirname = get_full_path(test_dirname, new_dir);
126
eio_file_ls(test_dirname, _filter_cb, _main_cb, _done_cb, _error_cb,
127
&number_of_listed_files);
129
fail_if(number_of_listed_files != 0);
130
ecore_main_loop_begin();
132
number_of_listed_files = 0;
134
eio_file_direct_ls(test_dirname, _direct_filter_cb, _direct_main_cb, _done_cb,
135
_error_cb, &number_of_listed_files);
137
eio_file_stat_ls(test_dirname, _direct_filter_cb, _direct_main_cb, _done_cb,
138
_error_cb, &number_of_listed_files);
141
fail_if(number_of_listed_files != 0);
142
ecore_main_loop_begin();
144
number_of_listed_files = 0;
146
eio_dir_direct_ls(test_dirname, _direct_filter_cb, _direct_main_cb, _done_cb,
147
_error_cb, &number_of_listed_files);
149
eio_dir_stat_ls(test_dirname, _direct_filter_cb, _direct_main_cb, _done_cb,
150
_error_cb, &number_of_listed_files);
153
fail_if(number_of_listed_files != 0);
154
ecore_main_loop_begin();
157
eio_file_unlink(nested_filename, _done_cb, _error_cb, &test_count);
158
ecore_main_loop_begin();
161
eio_file_mkdir(new_dirname, default_rights, _done_cb, _error_cb, &test_count);
162
ecore_main_loop_begin();
164
number_of_listed_files = 0;
165
eio_dir_unlink(nested_dirname, _delete_filter_cb, _progress_cb, _done_cb,
166
_error_cb, &number_of_listed_files);
168
fail_if(number_of_listed_files != 0);
169
ecore_main_loop_begin();
171
number_of_listed_files = 0;
172
eio_dir_unlink(test_dirname, _delete_filter_cb, _progress_cb, _done_cb,
173
_error_cb, &number_of_listed_files);
175
fail_if(number_of_listed_files != 0);
176
ecore_main_loop_begin();
178
eina_tmpstr_del(nested_dirname);
179
eina_tmpstr_del(test_dirname);
180
eina_tmpstr_del(nested_filename);
181
eina_tmpstr_del(new_dirname);
185
EFL_START_TEST(eio_file_test_file)
187
int number_of_listed_files = 0, ret;
189
const char * new_file = "new_file";
191
ret = ecore_file_init();
195
Eina_Tmpstr *test_dirname = get_eio_test_file_tmp_dir();
196
Eina_Tmpstr *nested_dirname = create_test_dirs(test_dirname);
197
Eina_Tmpstr *nested_filename = get_full_path(test_dirname, files[3]);
198
Eina_Tmpstr *new_filename = get_full_path(nested_dirname, new_file);
199
Eina_Tmpstr *new_dirname = get_full_path(test_dirname, new_file);
202
eio_file_direct_stat(nested_dirname, _stat_done_cb, _error_cb, &is_dir);
203
ecore_main_loop_begin();
206
default_rights = 0766;
207
eio_file_chmod(nested_filename, default_rights, _done_cb, _error_cb, &test_count);
208
ecore_main_loop_begin();
211
eio_file_direct_stat(nested_filename, _stat_done_cb, _error_cb, &is_dir);
212
ecore_main_loop_begin();
213
default_rights = DEFAULT_RIGHTS;
216
eio_file_move(nested_filename, new_filename, _progress_cb, _done_cb,
217
_error_cb, &test_count);
218
ecore_main_loop_begin();
220
fail_if(ecore_file_exists(nested_filename));
221
eio_file_ls(nested_dirname, _filter_cb, _main_cb, _done_cb, _error_cb,
222
&number_of_listed_files);
224
fail_if(number_of_listed_files != 0);
225
ecore_main_loop_begin();
227
number_of_listed_files = 0;
228
eio_file_ls(test_dirname, _filter_cb, _main_cb, _done_cb, _error_cb,
229
&number_of_listed_files);
231
fail_if(number_of_listed_files != 0);
232
ecore_main_loop_begin();
235
eio_file_copy(new_filename, nested_filename, _progress_cb, _done_cb,
236
_error_cb, &test_count);
237
ecore_main_loop_begin();
239
number_of_listed_files = 0;
240
eio_file_ls(nested_dirname, _filter_cb, _main_cb, _done_cb, _error_cb,
241
&number_of_listed_files);
243
fail_if(number_of_listed_files != 0);
244
ecore_main_loop_begin();
246
number_of_listed_files = 0;
247
eio_file_ls(test_dirname, _filter_cb, _main_cb, _done_cb, _error_cb,
248
&number_of_listed_files);
250
fail_if(number_of_listed_files != 0);
251
ecore_main_loop_begin();
253
number_of_listed_files = 0;
254
eio_dir_move(nested_dirname, new_dirname, _direct_filter_cb, _progress_cb,
255
_done_cb, _error_cb, &number_of_listed_files);
257
fail_if(number_of_listed_files != 0);
258
ecore_main_loop_begin();
259
fail_if(ecore_file_is_dir(nested_dirname));
260
fail_if(!ecore_file_is_dir(new_dirname));
262
number_of_listed_files = 0;
263
eio_dir_copy(new_dirname, nested_dirname, _direct_filter_cb, _progress_cb,
264
_done_cb, _error_cb, &number_of_listed_files);
266
fail_if(number_of_listed_files != 0);
267
ecore_main_loop_begin();
268
fail_if(!ecore_file_is_dir(nested_dirname));
269
fail_if(!ecore_file_is_dir(new_dirname));
271
number_of_listed_files = 0;
272
eio_dir_unlink(nested_dirname, _delete_filter_cb, _progress_cb, _done_cb,
273
_error_cb, &number_of_listed_files);
275
fail_if(number_of_listed_files != 0);
276
ecore_main_loop_begin();
277
fail_if(ecore_file_is_dir(nested_dirname));
279
fail_if(!ecore_file_recursive_rm(test_dirname));
280
fail_if(ecore_file_is_dir(new_dirname));
282
eina_tmpstr_del(nested_dirname);
283
eina_tmpstr_del(test_dirname);
284
eina_tmpstr_del(nested_filename);
285
eina_tmpstr_del(new_filename);
286
eina_tmpstr_del(new_dirname);
287
ecore_file_shutdown();
291
EFL_START_TEST(eio_file_test_open)
293
Eina_Bool opened_file;
296
ret = ecore_file_init();
300
Eina_Tmpstr *test_dirname = get_eio_test_file_tmp_dir();
301
Eina_Tmpstr *nested_dirname = create_test_dirs(test_dirname);
302
Eina_Tmpstr *nested_filename = get_full_path(test_dirname, files[3]);
304
opened_file = EINA_FALSE;
305
eio_file_open(nested_filename, EINA_FALSE, _open_done_cb, _error_cb, &opened_file);
306
ecore_main_loop_begin();
307
fail_if(!opened_file);
310
fail_if(!ecore_file_recursive_rm(test_dirname));
312
eina_tmpstr_del(nested_dirname);
313
eina_tmpstr_del(test_dirname);
314
eina_tmpstr_del(nested_filename);
315
ecore_file_shutdown();
320
eio_test_file(TCase *tc)
322
tcase_add_test(tc, eio_file_test_ls);
323
tcase_add_test(tc, eio_file_test_file);
324
tcase_add_test(tc, eio_file_test_open);