Ecore File : Added test suite for Ecore File module
authorkabeer khan <kabeer.khan@samsung.com>
Tue, 18 Nov 2014 09:26:43 +0000 (10:26 +0100)
committerStefan Schmidt <s.schmidt@samsung.com>
Tue, 18 Nov 2014 09:51:42 +0000 (10:51 +0100)
Summary:
Added 3 test cases. First to test initialise, shutdown Ecore_File module.
Second to test all file operation functions defined in the module.
Third to test ecore file monitor

Signed-off-by: kabeer khan <kabeer.khan@samsung.com>
Reviewers: devilhorns, stefan_schmidt

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D1662

src/Makefile_Ecore.am
src/tests/ecore/ecore_suite.c
src/tests/ecore/ecore_suite.h
src/tests/ecore/ecore_test_ecore_file.c [new file with mode: 0644]

index 67452c6..94d472c 100644 (file)
@@ -178,6 +178,7 @@ tests/ecore/ecore_test_ecore_evas.c \
 tests/ecore/ecore_test_animator.c \
 tests/ecore/ecore_test_ecore_thread_eina_thread_queue.c \
 tests/ecore/ecore_test_ecore_input.c \
+tests/ecore/ecore_test_ecore_file.c \
 tests/ecore/ecore_suite.h
 
 tests_ecore_ecore_suite_CPPFLAGS = -I$(top_builddir)/src/lib/efl \
index 44a3e62..8fbc4b7 100644 (file)
@@ -40,6 +40,7 @@ static const Ecore_Test_Case etc[] = {
   { "Ecore_Fb", ecore_test_ecore_fb },
 #endif
   { "Ecore_Input", ecore_test_ecore_input },
+  { "Ecore_File", ecore_test_ecore_file },
   { NULL, NULL }
 };
 
index 803f8f7..11e101d 100644 (file)
@@ -17,5 +17,6 @@ void ecore_test_ecore_wayland(TCase *tc);
 void ecore_test_ecore_drm(TCase *tc);
 void ecore_test_ecore_fb(TCase *tc);
 void ecore_test_ecore_input(TCase *tc);
+void ecore_test_ecore_file(TCase *tc);
 
 #endif /* _ECORE_SUITE_H */
diff --git a/src/tests/ecore/ecore_test_ecore_file.c b/src/tests/ecore/ecore_test_ecore_file.c
new file mode 100644 (file)
index 0000000..d850e1c
--- /dev/null
@@ -0,0 +1,280 @@
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+
+#include <Ecore_File.h>
+#include <Ecore.h>
+#include <Eina.h>
+
+#include "ecore_suite.h"
+
+#define MAXSIZE 256
+
+void
+_writeToFile(const char *filePath, char *text)
+{
+   FILE *f = fopen(filePath, "r+");
+   if (f == NULL)
+     f = fopen(filePath, "w");
+   fail_if(f == NULL);
+   fprintf(f, "%s\n", text);
+   fclose(f);
+}
+
+Eina_Tmpstr*
+get_tmp_dir()
+{
+   Eina_Tmpstr *tmp_dir;
+
+   Eina_Bool created = eina_file_mkdtemp("EcoreFileTestXXXXXX", &tmp_dir);
+
+   if (!created)
+     {
+        return NULL;
+     }
+
+   return tmp_dir;
+}
+
+Eina_Tmpstr*
+get_tmp_file()
+{
+   Eina_Tmpstr *tmp_file;
+
+   Eina_Bool created = eina_file_mkstemp("EcoreFileTestXXXXXX", &tmp_file);
+
+   if (!created)
+     {
+        return NULL;
+     }
+
+   return tmp_file;
+}
+
+static void
+file_monitor_cb(void *data EINA_UNUSED, Ecore_File_Monitor *em EINA_UNUSED,
+                Ecore_File_Event event, const char *path)
+{
+   switch (event)
+     {
+        case ECORE_FILE_EVENT_NONE:
+        case ECORE_FILE_EVENT_CREATED_FILE:
+          fprintf(stderr, "File created in %s", path);
+          break;
+        case ECORE_FILE_EVENT_DELETED_FILE:
+          fprintf(stderr, "File deleted in %s", path);
+          break;
+        case ECORE_FILE_EVENT_MODIFIED:
+          fprintf(stderr, "File modified in %s", path);
+          break;
+        case ECORE_FILE_EVENT_CLOSED:
+          fprintf(stderr, "File closed in %s", path);
+          break;
+        case ECORE_FILE_EVENT_DELETED_DIRECTORY:
+          fprintf(stderr, "Directory deleted in %s", path);
+          break;
+        case ECORE_FILE_EVENT_CREATED_DIRECTORY:
+          fprintf(stderr, "Directory created in %s", path);
+          break;
+        case ECORE_FILE_EVENT_DELETED_SELF:
+          fprintf(stderr, "Path %s deleted", path);
+          break;
+     }
+}
+
+START_TEST(ecore_test_ecore_file_init)
+{
+   int ret;
+
+   ret = ecore_file_init();
+   fail_if(ret != 1);
+
+   ret = ecore_file_shutdown();
+   fail_if(ret != 0);
+}
+END_TEST
+
+START_TEST(ecore_test_ecore_file_operations)
+{
+   const char* dirs[] = {"b", "b/c", "b/c/d", "d", 0};
+   const char *src_dir, *src_file, *dest_file;
+   const char *tmpdir = NULL;
+   char *random_text = "This is random test String";
+   char dir[MAXSIZE] = {'\0'};
+   unsigned int ret;
+   Eina_Bool res;
+   Eina_List *list;
+
+#ifndef HAVE_EVIL
+#if defined(HAVE_GETUID) && defined(HAVE_GETEUID)
+   if (getuid() == geteuid())
+#endif
+     {
+        tmpdir = getenv("TMPDIR");
+        if (!tmpdir) tmpdir = getenv("XDG_RUNTIME_DIR");
+     }
+   if (!tmpdir) tmpdir = "/tmp";
+#else
+   tmpdir = (char *)evil_tmpdir_get();
+#endif /* ! HAVE_EVIL */
+
+   ret = ecore_file_init();
+   fail_if(ret != 1);
+
+   src_dir = get_tmp_dir();
+   fail_if(!src_dir);
+
+   src_file = get_tmp_file();
+   fail_if(!src_file);
+
+   res = ecore_file_exists(src_file);
+   fail_if(res != EINA_TRUE);
+   res = ecore_file_is_dir(src_file);
+   fail_if(res != EINA_FALSE);
+   res = ecore_file_remove(src_file);
+   fail_if(res != EINA_TRUE);
+
+   res = ecore_file_is_dir(src_dir);
+   fail_if(res != EINA_TRUE);
+   ret = ecore_file_dir_is_empty(src_dir);
+   fail_if(ret != 1);
+   res = ecore_file_mkdir(src_dir);
+   fail_if(res != EINA_FALSE);
+   res = ecore_file_remove(src_dir);
+   fail_if(res != EINA_TRUE);
+
+   src_dir = get_tmp_dir();
+   fail_if(!src_dir);
+   ret = ecore_file_mksubdirs(src_dir, dirs);
+   fail_if(ret != 4);
+   list = ecore_file_ls(src_dir);
+   fail_if(!list);
+   fail_if(eina_list_count(list) != 2);
+   res = ecore_file_recursive_rm(src_dir);
+   fail_if(res != EINA_TRUE);
+
+   src_dir = get_tmp_dir();
+   fail_if(!src_dir);
+   strcat(dir, src_dir);
+   strcat(dir, "/");
+   strcat(dir, dirs[2]);
+   res = ecore_file_mkpath(dir);
+   fail_if(res != EINA_TRUE);
+   res = ecore_file_recursive_rm(src_dir);
+   fail_if(res != EINA_TRUE);
+
+   src_file = get_tmp_file();
+   fail_if(!src_file);
+   _writeToFile(src_file, random_text);
+
+   ret = ecore_file_size(src_file);
+   fail_if(ret != strlen(random_text)+1);
+   ret = ecore_file_is_dir(src_file);
+   fail_if(ret != EINA_FALSE);
+
+   dest_file = get_tmp_file();
+   fail_if(!dest_file);
+   res = ecore_file_cp(src_file, dest_file);
+   fail_if(res != EINA_TRUE);
+   res = ecore_file_exists(dest_file);
+   fail_if(res != EINA_TRUE);
+   fail_if(ecore_file_size(src_file) != ecore_file_size(dest_file));
+   res = ecore_file_remove(dest_file);
+   fail_if(res != EINA_TRUE);
+
+   res = ecore_file_symlink(src_file, dest_file);
+   fail_if(res != EINA_TRUE);
+   ck_assert_str_eq(ecore_file_readlink(dest_file), src_file);
+   ck_assert_str_eq(ecore_file_realpath(dest_file), src_file);
+   res = ecore_file_unlink(dest_file);
+   fail_if(res != EINA_TRUE);
+
+   dest_file = get_tmp_file();
+   fail_if(!dest_file);
+   res = ecore_file_mv(src_file, dest_file);
+   fail_if(res != EINA_TRUE);
+   res = ecore_file_exists(dest_file);
+   fail_if(res != EINA_TRUE);
+   res = ecore_file_exists(src_file);
+   fail_if(res != EINA_FALSE);
+
+   ck_assert_str_eq(ecore_file_dir_get(dest_file), tmpdir);
+   ck_assert_str_eq(ecore_file_realpath(dest_file), dest_file);
+   fail_if(ecore_file_mod_time(dest_file) == 0);
+   fail_if(ecore_file_can_read(dest_file) != EINA_TRUE);
+   fail_if(ecore_file_can_write(dest_file) != EINA_TRUE);
+   fail_if(ecore_file_can_exec(dest_file) != EINA_FALSE);
+   res = ecore_file_remove(dest_file);
+   fail_if(res != EINA_TRUE);
+
+   ret = ecore_file_shutdown();
+   fail_if(ret != 0);
+
+}
+END_TEST
+
+START_TEST(ecore_test_ecore_file_monitor)
+{
+   Ecore_File_Monitor *mon;
+   const char *src_dir;
+   const char *file = "EcoreFileDest";
+   const char *sub_dir[] = {"subdir1", 0};
+   char dir_name[MAXSIZE] = {'\0'};
+   char file_name[MAXSIZE] = {'\0'};
+   char *random_text = "This is random test String";
+   char *realp;
+   Eina_Bool res;
+   int ret;
+
+   ret = ecore_file_init();
+   fail_if(ret != 1);
+
+   src_dir = get_tmp_dir();
+   fail_if(!src_dir);
+
+   realp = ecore_file_realpath(src_dir);
+   fail_if(!realp);
+   mon = ecore_file_monitor_add(realp, file_monitor_cb, NULL);
+   fail_if(mon == NULL);
+
+   strcat(file_name, src_dir);
+   strcat(file_name, "/");
+   strcat(file_name, file);
+   _writeToFile(file_name, random_text);
+   _writeToFile(file_name, random_text);
+
+   ck_assert_str_eq(ecore_file_monitor_path_get(mon), realp);
+
+   ret = ecore_file_mksubdirs(src_dir, sub_dir);
+   fail_if(ret != 1);
+
+   res = ecore_file_remove(file_name);
+   fail_if(res != EINA_TRUE);
+
+   strcat(dir_name, src_dir);
+   strcat(dir_name, "/");
+   strcat(dir_name, sub_dir[0]);
+   res = ecore_file_rmdir(dir_name);
+   fail_if(res != EINA_TRUE);
+
+   res = ecore_file_recursive_rm(src_dir);
+   fail_if(res != EINA_TRUE);
+
+   ecore_file_monitor_del(mon);
+
+   ret = ecore_file_shutdown();
+   fail_if(ret != 0);
+
+}
+END_TEST
+
+void ecore_test_ecore_file(TCase *tc)
+{
+   tcase_add_test(tc, ecore_test_ecore_file_init);
+   tcase_add_test(tc, ecore_test_ecore_file_operations);
+   tcase_add_test(tc, ecore_test_ecore_file_monitor);
+}