eio: Fix eio_test_job_xattr test

Test wasn't enabled when modifications to function prototypes to
eio_job_file_xattr_list and eio_job_file_xattr properties were
made, so it got pushed inadvertidly without the necessary
changes to user code.
This commit is contained in:
Felipe Magno de Almeida 2016-05-30 15:54:01 -03:00
parent ab23a53094
commit ad0166f792
2 changed files with 40 additions and 39 deletions

View File

@ -6,16 +6,16 @@
#include "../efl_check.h" #include "../efl_check.h"
static const Efl_Test_Case etc[] = { static const Efl_Test_Case etc[] = {
/* {"Eio_Monitor", eio_test_monitor}, */ {"Eio_Monitor", eio_test_monitor},
/* {"Eio_Sentry", eio_test_sentry}, */ {"Eio_Sentry", eio_test_sentry},
/* {"Eio Model", eio_model_test_file}, */ {"Eio Model", eio_model_test_file},
/* {"Eio Model Monitor", eio_model_test_monitor_add}, */ {"Eio Model Monitor", eio_model_test_monitor_add},
/* {"Eio File", eio_test_file}, */ {"Eio File", eio_test_file},
{"Eio Job", eio_test_job}, {"Eio Job", eio_test_job},
/* #ifdef XATTR_TEST_DIR */ #ifdef XATTR_TEST_DIR
/* {"Eio_Xattr", eio_test_xattr}, */ {"Eio_Xattr", eio_test_xattr},
/* {"Eio Job Xattr", eio_test_job_xattr}, */ {"Eio Job Xattr", eio_test_job_xattr},
/* #endif */ #endif
{NULL, NULL} {NULL, NULL}
}; };

View File

@ -15,7 +15,10 @@
#include "eio_test_common.h" #include "eio_test_common.h"
#ifdef XATTR_TEST_DIR #ifndef XATTR_TEST_DIR
#define DISABLE_XATTR_TEST
#define XATTR_TEST_DIR ""
#endif
static const char *attribute[] = static const char *attribute[] =
{ {
@ -30,12 +33,6 @@ static const char *attr_data[] =
"This file has extra attributes" "This file has extra attributes"
}; };
struct eina_iterator
{
Eina_Iterator* success_iterator;
Eina_Iterator* failure_iterator;
};
int total_attributes = sizeof(attribute)/sizeof(attribute[0]); int total_attributes = sizeof(attribute)/sizeof(attribute[0]);
static Eina_Bool static Eina_Bool
@ -47,8 +44,9 @@ _filter_cb(void *data EINA_UNUSED, const Eo_Event *event)
} }
static void static void
_main_cb(void *data, const char *attr) _main_cb(void *data, void *v)
{ {
const char* attr = v;
int *num_of_attr = (int *)data; int *num_of_attr = (int *)data;
unsigned int i; unsigned int i;
@ -62,7 +60,7 @@ _main_cb(void *data, const char *attr)
} }
static void static void
_done_cb(void *data, void *value EINA_UNUSED) _done_cb(void *data, void *value EINA_UNUSED, Eina_Promise* promise EINA_UNUSED)
{ {
int *num_of_attr = (int *)data; int *num_of_attr = (int *)data;
@ -73,12 +71,13 @@ _done_cb(void *data, void *value EINA_UNUSED)
} }
static void static void
_done_get_cb(void *data EINA_UNUSED, struct eina_iterator* it) _done_get_cb(void *data EINA_UNUSED, void* v, Eina_Promise* promise EINA_UNUSED)
{ {
Eina_Iterator** it = (Eina_Iterator**)v;
int i = 0; int i = 0;
Eio_Xattr_Data *get_data; Eio_Xattr_Data *get_data;
while (eina_iterator_next(it->success_iterator, (void**)&get_data)) while (eina_iterator_next((*it), (void**)&get_data))
{ {
fail_if(!get_data); fail_if(!get_data);
fail_if(strcmp(get_data->data, attr_data[i]) != 0); fail_if(strcmp(get_data->data, attr_data[i]) != 0);
@ -91,11 +90,12 @@ _done_get_cb(void *data EINA_UNUSED, struct eina_iterator* it)
} }
static void static void
_done_set_cb(void *data, struct eina_iterator* it) _done_set_cb(void *data, void* v, Eina_Promise* promise EINA_UNUSED)
{ {
Eina_Iterator** it = (Eina_Iterator**)v;
int *placeholder; int *placeholder;
int *num_of_attr = data; int *num_of_attr = data;
while(eina_iterator_next(it->success_iterator, (void**)&placeholder)) while(eina_iterator_next((*it), (void**)&placeholder))
*num_of_attr += 1; *num_of_attr += 1;
fail_if(*num_of_attr != total_attributes); fail_if(*num_of_attr != total_attributes);
@ -104,10 +104,10 @@ _done_set_cb(void *data, struct eina_iterator* it)
} }
static void static void
_error_cb(void *data EINA_UNUSED, Eina_Error *error) _error_cb(void *data EINA_UNUSED, Eina_Error error, Eina_Promise* promise EINA_UNUSED)
{ {
fprintf(stderr, "Something has gone wrong:%s\n", strerror(*error)); fprintf(stderr, "Something has gone wrong:%s\n", eina_error_msg_get(error));
abort(); abort();
ecore_main_loop_quit(); ecore_main_loop_quit();
@ -127,6 +127,8 @@ START_TEST(eio_test_job_xattr_set)
eina_init(); eina_init();
eio_init(); eio_init();
fprintf(stderr, "eio_test_job_xattr_set\n"); fflush(stderr);
job = eo_add(EIO_JOB_CLASS, NULL); job = eo_add(EIO_JOB_CLASS, NULL);
test_file_path = get_full_path(XATTR_TEST_DIR, filename); test_file_path = get_full_path(XATTR_TEST_DIR, filename);
@ -135,20 +137,20 @@ START_TEST(eio_test_job_xattr_set)
S_IRWXU | S_IRWXG | S_IRWXO); S_IRWXU | S_IRWXG | S_IRWXO);
fail_if(fd == 0); fail_if(fd == 0);
attrib_promises = (Eina_Promise **)calloc(total_attributes + 1, sizeof(Eina_Promise*)); attrib_promises = (Eina_Promise**)calloc(total_attributes + 1, sizeof(Eina_Promise*));
attrib_promises[total_attributes] = NULL; attrib_promises[total_attributes] = NULL;
for (i = 0; i < sizeof(attribute) / sizeof(attribute[0]); ++i) for (i = 0; i < sizeof(attribute) / sizeof(attribute[0]); ++i)
{ {
eio_job_file_xattr_set(job, test_file_path, attribute[i], attrib_promises[i] = eio_job_file_xattr_set
attr_data[i], strlen(attr_data[i]), (job, test_file_path, attribute[i],
EINA_XATTR_INSERT, attr_data[i], strlen(attr_data[i]),
&attrib_promises[i]); EINA_XATTR_INSERT);
fail_if(num_of_attr != 0); // test asynchronous fail_if(num_of_attr != 0); // test asynchronous
} }
eina_promise_then(eina_promise_all(eina_carray_iterator_new((void**)attrib_promises)), eina_promise_then(eina_promise_all(eina_carray_iterator_new((void**)attrib_promises)),
(Eina_Promise_Cb)_done_set_cb, (Eina_Promise_Error_Cb)_error_cb, &num_of_attr); &_done_set_cb, _error_cb, &num_of_attr);
ecore_main_loop_begin(); ecore_main_loop_begin();
@ -156,25 +158,25 @@ START_TEST(eio_test_job_xattr_set)
num_of_attr = 0; num_of_attr = 0;
attrib_promises = (Eina_Promise **)calloc(total_attributes + 1, sizeof(Eina_Promise*)); attrib_promises = (Eina_Promise**)calloc(total_attributes + 1, sizeof(Eina_Promise*));
attrib_promises[total_attributes] = NULL; attrib_promises[total_attributes] = NULL;
for (i = 0; i < sizeof(attribute) / sizeof(attribute[0]); ++i) for (i = 0; i < sizeof(attribute) / sizeof(attribute[0]); ++i)
{ {
eio_job_file_xattr_get(job, test_file_path, attribute[i], &attrib_promises[i]); attrib_promises[i] = eio_job_file_xattr_get(job, test_file_path, attribute[i]);
} }
eina_promise_then(eina_promise_all(eina_carray_iterator_new((void**)attrib_promises)), eina_promise_then(eina_promise_all(eina_carray_iterator_new((void**)attrib_promises)),
(Eina_Promise_Cb)_done_get_cb, (Eina_Promise_Error_Cb)_error_cb, &num_of_attr); _done_get_cb, _error_cb, &num_of_attr);
ecore_main_loop_begin(); ecore_main_loop_begin();
num_of_attr = 0; num_of_attr = 0;
eo_event_callback_add(job, EIO_JOB_EVENT_XATTR, _filter_cb, NULL); eo_event_callback_add(job, EIO_JOB_EVENT_XATTR, _filter_cb, NULL);
eio_job_file_xattr(job, test_file_path, &list_promise); list_promise = eio_job_file_xattr_list_get(job, test_file_path);
eina_promise_progress_cb_add(list_promise, (Eina_Promise_Progress_Cb)_main_cb, &num_of_attr, NULL); eina_promise_progress_cb_add(list_promise, _main_cb, &num_of_attr, NULL);
eina_promise_then(list_promise, (Eina_Promise_Cb)_done_cb, (Eina_Promise_Error_Cb)_error_cb, &num_of_attr); eina_promise_then(list_promise, _done_cb, _error_cb, &num_of_attr);
fail_if(num_of_attr != 0); fail_if(num_of_attr != 0);
@ -192,13 +194,12 @@ START_TEST(eio_test_job_xattr_set)
} }
END_TEST END_TEST
#endif
void eio_test_job_xattr(TCase *tc) void eio_test_job_xattr(TCase *tc)
{ {
#ifdef XATTR_TEST_DIR #ifndef DISABLE_XATTR_TEST
tcase_add_test(tc, eio_test_job_xattr_set); tcase_add_test(tc, eio_test_job_xattr_set);
#else #else
(void)eio_test_job_xattr_set;
(void)tc; (void)tc;
#endif #endif
} }