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"
static const Efl_Test_Case etc[] = {
/* {"Eio_Monitor", eio_test_monitor}, */
/* {"Eio_Sentry", eio_test_sentry}, */
/* {"Eio Model", eio_model_test_file}, */
/* {"Eio Model Monitor", eio_model_test_monitor_add}, */
/* {"Eio File", eio_test_file}, */
{"Eio_Monitor", eio_test_monitor},
{"Eio_Sentry", eio_test_sentry},
{"Eio Model", eio_model_test_file},
{"Eio Model Monitor", eio_model_test_monitor_add},
{"Eio File", eio_test_file},
{"Eio Job", eio_test_job},
/* #ifdef XATTR_TEST_DIR */
/* {"Eio_Xattr", eio_test_xattr}, */
/* {"Eio Job Xattr", eio_test_job_xattr}, */
/* #endif */
#ifdef XATTR_TEST_DIR
{"Eio_Xattr", eio_test_xattr},
{"Eio Job Xattr", eio_test_job_xattr},
#endif
{NULL, NULL}
};

View File

@ -15,7 +15,10 @@
#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[] =
{
@ -30,12 +33,6 @@ static const char *attr_data[] =
"This file has extra attributes"
};
struct eina_iterator
{
Eina_Iterator* success_iterator;
Eina_Iterator* failure_iterator;
};
int total_attributes = sizeof(attribute)/sizeof(attribute[0]);
static Eina_Bool
@ -47,8 +44,9 @@ _filter_cb(void *data EINA_UNUSED, const Eo_Event *event)
}
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;
unsigned int i;
@ -62,7 +60,7 @@ _main_cb(void *data, const char *attr)
}
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;
@ -73,12 +71,13 @@ _done_cb(void *data, void *value EINA_UNUSED)
}
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;
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(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
_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 *num_of_attr = data;
while(eina_iterator_next(it->success_iterator, (void**)&placeholder))
while(eina_iterator_next((*it), (void**)&placeholder))
*num_of_attr += 1;
fail_if(*num_of_attr != total_attributes);
@ -104,10 +104,10 @@ _done_set_cb(void *data, struct eina_iterator* it)
}
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();
ecore_main_loop_quit();
@ -127,6 +127,8 @@ START_TEST(eio_test_job_xattr_set)
eina_init();
eio_init();
fprintf(stderr, "eio_test_job_xattr_set\n"); fflush(stderr);
job = eo_add(EIO_JOB_CLASS, NULL);
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);
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;
for (i = 0; i < sizeof(attribute) / sizeof(attribute[0]); ++i)
{
eio_job_file_xattr_set(job, test_file_path, attribute[i],
attr_data[i], strlen(attr_data[i]),
EINA_XATTR_INSERT,
&attrib_promises[i]);
attrib_promises[i] = eio_job_file_xattr_set
(job, test_file_path, attribute[i],
attr_data[i], strlen(attr_data[i]),
EINA_XATTR_INSERT);
fail_if(num_of_attr != 0); // test asynchronous
}
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();
@ -156,25 +158,25 @@ START_TEST(eio_test_job_xattr_set)
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;
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_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();
num_of_attr = 0;
eo_event_callback_add(job, EIO_JOB_EVENT_XATTR, _filter_cb, NULL);
eio_job_file_xattr(job, test_file_path, &list_promise);
eina_promise_progress_cb_add(list_promise, (Eina_Promise_Progress_Cb)_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);
list_promise = eio_job_file_xattr_list_get(job, test_file_path);
eina_promise_progress_cb_add(list_promise, _main_cb, &num_of_attr, NULL);
eina_promise_then(list_promise, _done_cb, _error_cb, &num_of_attr);
fail_if(num_of_attr != 0);
@ -192,13 +194,12 @@ START_TEST(eio_test_job_xattr_set)
}
END_TEST
#endif
void eio_test_job_xattr(TCase *tc)
{
#ifdef XATTR_TEST_DIR
#ifndef DISABLE_XATTR_TEST
tcase_add_test(tc, eio_test_job_xattr_set);
#else
(void)eio_test_job_xattr_set;
(void)tc;
#endif
}