Browse Source

Allow to use a different server to download the "check" unit test framework

Use the environment variable "CHECK_URL" to specify a different server (mirror) than GitHub.
In case GitHub is not available (no internet connection), allow to use a local server
(yes, this could be another instance of CivetWeb).

Also allow to store stdout and stderr in files
bel2125 5 năm trước cách đây
mục cha
commit
26e3a331cb
2 tập tin đã thay đổi với 47 bổ sung11 xóa
  1. 27 0
      cmake/check/check_run.patch
  2. 20 11
      unittest/CMakeLists.txt

+ 27 - 0
cmake/check/check_run.patch

@@ -0,0 +1,27 @@
+--- check_run.c.orig	2020-01-12 03:06:59.992434700 +0100
++++ check_run.c.new	2020-01-12 04:40:42.224635800 +0100
+@@ -28,6 +28,8 @@
+ #include <stdarg.h>
+ #include <signal.h>
+ #include <setjmp.h>
++#include <sys/stat.h>
++#include <fcntl.h>
+ 
+ #include "check.h"
+ #include "check_error.h"
+@@ -486,6 +488,15 @@
+         eprintf("Error in call to fork:", __FILE__, __LINE__ - 2);
+     if(pid == 0)
+     {
++char fn[256];
++int fd1, fd2;
++sprintf(fn, "%s.stdout", srunner_log_fname(sr));
++fd1 = open(fn, O_WRONLY|O_CREAT, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
++dup2(fd1, 1);
++sprintf(fn, "%s.stderr", srunner_log_fname(sr));
++fd2 = open(fn, O_WRONLY|O_CREAT, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
++dup2(fd2, 2);
++
+         setpgid(0, 0);
+         group_pid = getpgrp();
+         tr = tcase_run_checked_setup(sr, tc);

+ 20 - 11
unittest/CMakeLists.txt

@@ -7,15 +7,23 @@ endif()
 
 # We use the check unit testing framework for our C unit tests
 include(ExternalProject)
-#if(NOT WIN32)
-#  # Apply the patch to check to fix CMake building on OS X
-#  set(CHECK_PATCH_COMMAND patch
-#     ${CIVETWEB_THIRD_PARTY_DIR}/src/check-unit-test-framework/CMakeLists.txt
-#     ${CMAKE_SOURCE_DIR}/cmake/check/c82fe8888aacfe784476112edd3878256d2e30bc.patch
-#   )
-#else()
-#  set(CHECK_PATCH_COMMAND "")
-#endif()
+if(NOT WIN32)
+  # Apply the patch to check to fix CMake building on OS X
+  set(CHECK_PATCH_COMMAND patch
+     ${CIVETWEB_THIRD_PARTY_DIR}/src/check-unit-test-framework/src/check_run.c
+     ${CMAKE_SOURCE_DIR}/cmake/check/check_run.patch
+   )
+else()
+  set(CHECK_PATCH_COMMAND "")
+endif()
+
+IF (DEFINED ENV{CHECK_URL})
+SET (CHECK_URL $ENV{CHECK_URL})
+ELSE()
+SET (CHECK_URL "https://github.com/civetweb/check/archive/master.zip")
+ENDIF()
+
+
 ExternalProject_Add(check-unit-test-framework
   DEPENDS civetweb-c-library
 
@@ -25,9 +33,9 @@ ExternalProject_Add(check-unit-test-framework
 #  URL_MD5 ${CIVETWEB_CHECK_MD5_HASH}
 
 ## Use a civetweb specific patched version
-URL "https://github.com/civetweb/check/archive/master.zip"
+
+URL ${CHECK_URL}
 DOWNLOAD_NAME "master.zip"
-# <Edit this file to flush AppVeyor build cache and force reloading check>
 
   PREFIX "${CIVETWEB_THIRD_PARTY_DIR}"
   BUILD_IN_SOURCE 1
@@ -248,3 +256,4 @@ if (${CMAKE_BUILD_TYPE} MATCHES "[Cc]overage")
       "  --coverage flag: ${C_FLAG_COVERAGE_MESSAGE}")
   endif()
 endif()
+