ecore: add utc_ecore for single binary
authorYeongJong Lee <yj34.lee@samsung.com>
Mon, 18 Jun 2018 02:10:01 +0000 (11:10 +0900)
committerYeongjong Lee <yj34.lee@samsung.com>
Fri, 13 Jul 2018 10:51:56 +0000 (19:51 +0900)
Change-Id: I1a79771f6bbf57578f92fad1f106504516c4b02c

TC/ecore/Makefile
TC/ecore/build.sh [new file with mode: 0755]
TC/ecore/template.c [deleted file]
TC/ecore/utc_ecore.c [new file with mode: 0644]
TC/ecore/utc_ecore_common.h [new file with mode: 0644]

index b31b523d74022e832a1cbaf8c5c2997336ae33d3..ec60eb5ce0ca666e143f30a214db59fc03edf111 100644 (file)
@@ -2,20 +2,22 @@ CC ?= gcc
 
 C_FILES = $(shell cat tslist)
 
-PKGS = eina ecore ecore-con eet ecore-file ecore-ipc check
+PKGS = eina ecore ecore-con eet ecore-file ecore-ipc check ecore-evas evas ecore-input ecore-imf ecore-fb ecore-buffer ecore-imf-evas
 
 LDFLAGS = `pkg-config --libs $(PKGS)`
 
 CFLAGS = -I. `pkg-config --cflags $(PKGS)`
-CFLAGS += -Wall
+CFLAGS += -Wall -lm
 
 #TARGETS = $(C_FILES:%.c=tc-%)
 TCS := $(shell ls -1 *.c | cut -d. -f1)
 
+RESOURCES := $(shell find . -name '*.o')
+
 all: $(TCS)
 
 %: %.c
-       $(CC) -o $@ $< $(CFLAGS) $(LDFLAGS)
+       $(CC) -g -O0 -o $@ $< $(RESOURCES) $(CFLAGS) $(LDFLAGS)
 
 clean:
        rm -f $(TCS)
diff --git a/TC/ecore/build.sh b/TC/ecore/build.sh
new file mode 100755 (executable)
index 0000000..349e2fa
--- /dev/null
@@ -0,0 +1,49 @@
+#!/bin/bash
+
+function make_arr()
+{
+   for dir in */; do
+      cd $dir
+      for filename in *.o; do
+         echo $filename
+         if [[ "$filename" == "*.o" ]]; then
+           continue
+         elif [[ "$filename" =~ "eina_module_dummy" ]]; then
+           continue
+         fi
+         filename=(${filename//./ })
+         printf "  { \"%s\", _%s },\n" $filename $filename >> "../"$HEADER_NAME
+      done
+      cd ..
+   done
+}
+
+function make_def()
+{
+   for dir in */; do
+      cd $dir
+      for filename in *.o; do
+         if [[ "$filename" == "*.o" ]]; then
+           continue
+         elif [[ "$filename" =~ "eina_module_dummy" ]]; then
+           continue
+         fi
+         filename=(${filename//./ })
+         printf "TCase *_%s();\n" $filename >> "../"$HEADER_NAME
+      done
+      cd ..
+   done
+}
+HEADER_NAME=utc_eina.h
+rm $HEADER_NAME
+touch $HEADER_NAME
+printf "#include <check.h>\n" >> $HEADER_NAME
+printf "#include \"../utc_negative_unitest.h\"\n\n" >> $HEADER_NAME
+
+make_def
+printf "const Efl_Test_Case %s[] = {\n" "utc" >> $HEADER_NAME
+make_arr
+printf "  { NULL, NULL }\n" >> $HEADER_NAME
+printf "};" >> $HEADER_NAME
+
+make
diff --git a/TC/ecore/template.c b/TC/ecore/template.c
deleted file mode 100644 (file)
index 6ffd5e4..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-#include <check.h>
-#include <Eina.h>
-#include <Ecore.h>
-
-static void
-setup(void)
-{
-   printf(" ============ Startup ============ \n");
-   ecore_init();
-}
-
-static void
-teardown(void)
-{
-   printf(" ============ Cleanup ============ \n");
-   ecore_shutdown();
-}
-
-Eina_Bool _idle_enterer_cb(void* data)
-{
-   return ECORE_CALLBACK_CANCEL;
-}
-
-START_TEST(utc_ecore_idle_enterer_add_p)
-{
-   Ecore_Idle_Enterer* eie;
-
-
-   eie = ecore_idle_enterer_add(_idle_enterer_cb, NULL);
-
-   if (eie == NULL)
-     {
-        ck_abort_msg("[TEST_FAIL]:: %s[%d] : Test has failed..", __FILE__, __LINE__);
-        return;
-     }
-   ecore_idle_enterer_del(eie);
-   printf("[TEST_PASS]:: %s[%d] : Test has passed..\n", __FILE__, __LINE__);
-}
-END_TEST
-
-START_TEST(utc_ecore_idle_enterer_add_n)
-{
-   Ecore_Idle_Enterer* eie;
-
-   /* Produce segfault */
-   int* pointer = 12345;
-   *(pointer) = 12345;
-   /* ---- */
-
-   eie = ecore_idle_enterer_add(NULL, NULL);
-
-   if (eie != NULL)
-     {
-        ck_abort_msg("[TEST_FAIL]:: %s[%d] : Test has failed..", __FILE__, __LINE__);
-        return;
-     }
-   printf("[TEST_PASS]:: %s[%d] : Test has passed..\n", __FILE__, __LINE__);
-}
-END_TEST
-Suite *
-test_suite(void)
-{
-   Suite *suite = suite_create("template");
-
-   TCase *tcase = tcase_create("TCase");
-   tcase_set_timeout(tcase, 30);
-   tcase_add_checked_fixture(tcase, setup, teardown);
-   tcase_add_test(tcase, utc_ecore_idle_enterer_add_p);
-   tcase_add_test(tcase, utc_ecore_idle_enterer_add_n);
-   suite_add_tcase(suite, tcase);
-
-   return suite;
-}
-
-int
-main()
-{
-   int number_failed;
-
-   Suite *suite = test_suite();
-   SRunner *srunner = srunner_create(suite);
-   srunner_set_log(srunner, "template.log");
-   srunner_set_xml(srunner, "template.xml");
-   srunner_run_all(srunner, CK_NORMAL);
-   number_failed = srunner_ntests_failed(srunner);
-   srunner_free(srunner);
-
-   return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
-}
diff --git a/TC/ecore/utc_ecore.c b/TC/ecore/utc_ecore.c
new file mode 100644 (file)
index 0000000..3bf0f0f
--- /dev/null
@@ -0,0 +1,85 @@
+#include <check.h>
+#include <Ecore.h>
+#include "utc_ecore.h"
+#include "utc_ecore_common.h"
+#include "../utc_negative_unitest.h"
+
+pid_t elm_main_pid;
+static char exception_list[100][100];
+
+static int
+test_case_validate(const char *tname)
+{
+   int i = 0;
+   for (i = 0; exception_list[i][0]; i++)
+     {
+        if (!strcmp(exception_list[i], tname)) return -1;
+     }
+
+   return 1;
+}
+
+static void
+tcase_get(Suite *s, const char **argv)
+{
+   int i;
+   FILE *fp;
+
+   if (argv[1])
+     {
+        for (i = 0; utc[i].test_case; i++)
+          {
+             if (!strcmp(argv[1], utc[i].test_case))
+               {
+                  suite_add_tcase(s, utc[i].tc_get());
+                  return;
+               }
+          }
+     }
+
+   fp = fopen("ecore_exception_list", "r");
+   if (fp)
+     {
+        for (i = 0; ; i++)
+          {
+             if (fscanf(fp, "%s", exception_list[i]) < 0)
+               {
+                  exception_list[i][0] = 0;
+                  break;
+               }
+          }
+        fclose(fp);
+     }
+   for (i = 0; utc[i].test_case; i++)
+     {
+        if (test_case_validate(utc[i].test_case) < 0) continue;
+        suite_add_tcase(s, utc[i].tc_get());
+     }
+   return;
+}
+
+int
+main(int argc, const char **argv)
+{
+   int number_failed;
+
+   elm_main_pid = getpid();
+
+   Suite *suite = suite_create("utc_ecore");
+   tcase_get(suite, argv);
+   SRunner *srunner = srunner_create(suite);
+   srunner_set_log(srunner, "utc_ecore.log");
+   srunner_set_xml(srunner, "utc_ecore.xml");
+   if (srunner_fork_status(srunner) == CK_FORK)
+     {
+        ecore_init();
+        signal(SIGCHLD, SIG_DFL);
+     }
+
+   srunner_run_all(srunner, CK_NORMAL);
+   number_failed = srunner_ntests_failed(srunner);
+   srunner_free(srunner);
+   ecore_shutdown();
+
+   return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+}
diff --git a/TC/ecore/utc_ecore_common.h b/TC/ecore/utc_ecore_common.h
new file mode 100644 (file)
index 0000000..f0e3d99
--- /dev/null
@@ -0,0 +1,13 @@
+
+#ifndef UTC_ECORE_COMMON_H_
+#define UTC_ECORE_COMMON_H_
+
+#include <stdlib.h>
+
+extern pid_t ecore_main_pid;
+
+#define UTC_ECORE_INIT() \
+           if (getpid() != elm_main_pid) ecore_fork_reset(); \
+           else ecore_init();
+
+#endif /* UTC_ECORE_COMMON_H_ */