Sfoglia il codice sorgente

fix: 修复run_code程序无法退出log的问题

SongZihuan 3 anni fa
parent
commit
4ecddbb090
5 ha cambiato i file con 36 aggiunte e 9 eliminazioni
  1. 0 1
      src/CMakeLists.txt
  2. 1 0
      src/core/core_init.c
  3. 3 2
      test/src/CMakeLists.txt
  4. 26 0
      test/src/logger.c
  5. 6 6
      test/src/run_code.c

+ 0 - 1
src/CMakeLists.txt

@@ -31,7 +31,6 @@ endif()
 foreach(tgt IN LISTS aFunList)
     target_sources(${tgt} PRIVATE ${source} ${private_h} ${include_h})
     target_include_directories(${tgt} PRIVATE ${PROJECT_SOURCE_DIR}/include)
-    get_target_property(tmp ${tgt} COMPILE_DEFINITIONS)
     set_target_properties(${tgt} PROPERTIES PUBLIC_HEADER "${include_h}")
     define_FILENAME(${tgt})
 endforeach()

+ 1 - 0
src/core/core_init.c

@@ -75,6 +75,7 @@ bool aFunCoreInit(aFunCoreInitInfo *info) {
     } else
         HT_initaFunGetText(NULL);
     writeDebugLog(aFunCoreLogger, "aFunCore init success");
+    printf("aFunCoreInit: %p\n", initLogSystem);
     return true;
 }
 

+ 3 - 2
test/src/CMakeLists.txt

@@ -3,8 +3,9 @@
 
 foreach(src IN LISTS src_list)
     cmake_path(GET src STEM file_name)
-    add_executable(${file_name} ${src})
-    target_link_libraries(${file_name} aFun-ct-libs)  # 链接静态库 (导出所有符号)
+    add_executable(${file_name})
+    target_sources(${file_name} PRIVATE ${src})
+    target_link_libraries(${file_name} PUBLIC aFun-ct-libs)  # 链接静态库 (导出所有符号)
     set_target_properties(${file_name}
                           PROPERTIES OUTPUT_NAME "test_${file_name}")
     target_compile_definitions(${file_name} PRIVATE IN_CTEST)

+ 26 - 0
test/src/logger.c

@@ -0,0 +1,26 @@
+#include "aFun.h"
+
+int main(int argc, char **argv){
+    jmp_buf main_buf;
+    char *base_path = getExedir(1);
+    if (base_path == NULL)
+        goto INIT_ERROR;
+
+    if (setjmp(main_buf) == 1)
+        aFunExit(aFunExitFail);
+
+    aFunInitInfo info = {.base_dir=base_path,
+            .level=log_track,
+            .log_asyn=true,
+            .buf=&main_buf,
+    };
+
+    if (!aFunInit(&info)) {
+INIT_ERROR:
+        printf_stderr(0, "aFunlang init error.");
+        aFunExit(aFunExitFail);
+    }
+
+    aFunDestruct();
+    return 0;
+}

+ 6 - 6
test/src/run_code.c

@@ -1306,8 +1306,8 @@ INIT_ERROR:
 #ifndef IN_CTEST
     getc(stdin);
 #endif
-    aFunCoreDestruct();
-    return 0;
+    aFunDestruct();
+    aFunExit(0);
 
 RETURN_1:
     undefRunEnv(&ri);
@@ -1315,8 +1315,8 @@ RETURN_1:
 #ifndef IN_CTEST
     getc(stdin);
 #endif
-    aFunCoreDestruct();
-    return 1;
+    aFunDestruct();
+    aFunExit(1);
 
 RETURN_2:
     undefRunEnv(&ri);
@@ -1324,6 +1324,6 @@ RETURN_2:
 #ifndef IN_CTEST
     getc(stdin);
 #endif
-    aFunCoreDestruct();
-    return 2;
+    aFunDestruct();
+    aFunExit(2);
 }